Sub-issue of #725 (P3, remainder). The Groovy bridge itself shipped with #697: the operations engine is exported (org.jahia.modules.javascript.modules.engine.contentpatches), reachable via the ContentPatchService OSGi service, with runnable samples (tests/cypress/fixtures/groovy/contentPatchParityOperations.groovy), a guide section, and operation-by-operation parity asserted by contentPatchGroovyParityTest.cy.ts. What remains is the authoring ergonomics for Groovy and Java developers.
Scope
Dependencies
Sub-issue of #725 (P3, remainder). The Groovy bridge itself shipped with #697: the operations engine is exported (
org.jahia.modules.javascript.modules.engine.contentpatches), reachable via theContentPatchServiceOSGi service, with runnable samples (tests/cypress/fixtures/groovy/contentPatchParityOperations.groovy), a guide section, and operation-by-operation parity asserted bycontentPatchGroovyParityTest.cy.ts. What remains is the authoring ergonomics for Groovy and Java developers.Scope
META-INF/patchesGroovy script (executed by core'sGroovyPatcherviaScriptEngineUtils) can statically import the exported API, or whether the dynamicBundleUtils.getOsgiService("…ContentPatchService", null)lookup is the only supported pattern. Document the verdict in the guide either way — the dynamic pattern stays the documented baseline.javascript-modules-engine-java) that gives a Java module's IDE completion onContentPatchOperationsand its option keys while runtime access stays dynamic; decide whether a GDSL file for IntelliJ adds enough value for patch scripts.Dependencies