From 120b7a8eb3e2c67a1a8969614f2d6b22a137561b Mon Sep 17 00:00:00 2001 From: "david.griffon" Date: Mon, 9 Feb 2026 16:30:24 +0100 Subject: [PATCH] fix: wait for the configuration to activate GraalVMEngine --- .../javascript/modules/engine/jsengine/GraalVMEngine.java | 6 ++++-- .../modules/engine/registrars/ViewsRegistrar.java | 7 +++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/javascript-modules-engine-java/src/main/java/org/jahia/modules/javascript/modules/engine/jsengine/GraalVMEngine.java b/javascript-modules-engine-java/src/main/java/org/jahia/modules/javascript/modules/engine/jsengine/GraalVMEngine.java index ef48ef8d..2baabd4f 100644 --- a/javascript-modules-engine-java/src/main/java/org/jahia/modules/javascript/modules/engine/jsengine/GraalVMEngine.java +++ b/javascript-modules-engine-java/src/main/java/org/jahia/modules/javascript/modules/engine/jsengine/GraalVMEngine.java @@ -53,7 +53,7 @@ /** * Base JS engine based on GraalVM */ -@Component(service = GraalVMEngine.class, immediate = true) +@Component(service = GraalVMEngine.class, immediate = true, configurationPolicy = ConfigurationPolicy.REQUIRE) public class GraalVMEngine { private static final Logger logger = LoggerFactory.getLogger(GraalVMEngine.class); @@ -101,7 +101,7 @@ public void disableJavascriptModule(Bundle bundle) { @Activate public void activate(BundleContext bundleContext, Map props) { - logger.debug("GraalVMEngine.activate"); + logger.info("Registering GraalVMEngine"); this.bundleContext = bundleContext; try { @@ -126,6 +126,7 @@ public void activate(BundleContext bundleContext, Map props) { } sharedEngine = builder.build(); initializePool(poolOptions); + logger.info("Registered GraalVMEngine"); } @Deactivate @@ -134,6 +135,7 @@ public void deactivate() { pool.close(); sharedEngine.close(true); currentContext.remove(); + logger.info("Unregistered GraalVMEngine"); } public T doWithContext(Function callback) { diff --git a/javascript-modules-engine-java/src/main/java/org/jahia/modules/javascript/modules/engine/registrars/ViewsRegistrar.java b/javascript-modules-engine-java/src/main/java/org/jahia/modules/javascript/modules/engine/registrars/ViewsRegistrar.java index ec39cefc..281423a6 100644 --- a/javascript-modules-engine-java/src/main/java/org/jahia/modules/javascript/modules/engine/registrars/ViewsRegistrar.java +++ b/javascript-modules-engine-java/src/main/java/org/jahia/modules/javascript/modules/engine/registrars/ViewsRegistrar.java @@ -30,6 +30,8 @@ import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.service.component.annotations.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.jcr.RepositoryException; import javax.jcr.nodetype.NoSuchNodeTypeException; @@ -40,6 +42,8 @@ @Component(immediate = true, service = {ViewsRegistrar.class, Registrar.class, ScriptResolver.class, JahiaEventListener.class}) public class ViewsRegistrar implements ScriptResolver, TemplateResolver, Registrar, JahiaEventListener { + private static final Logger logger = LoggerFactory.getLogger(ViewsRegistrar.class); + private static final Class[] ACCEPTED_EVENT_TYPES = new Class[] { JahiaTemplateManagerService.TemplatePackageRedeployedEvent.class, JahiaTemplateManagerService.ModuleDeployedOnSiteEvent.class, @@ -65,6 +69,7 @@ public void setGraalVMEngine(GraalVMEngine graalVMEngine) { @Activate public void activate(BundleContext context) { + logger.info("Registering ViewsRegistrar"); List scriptResolvers = new ArrayList<>(renderService.getScriptResolvers()); scriptResolvers.add(0, this); renderService.setScriptResolvers(scriptResolvers); @@ -72,6 +77,7 @@ public void activate(BundleContext context) { List templateResolvers = new ArrayList<>(renderService.getTemplateResolvers()); templateResolvers.add(0, this); renderService.setTemplateResolvers(templateResolvers); + logger.info("Registered ViewsRegistrar"); } @Deactivate @@ -83,6 +89,7 @@ public void deactivate(BundleContext context) { List templateResolvers = new ArrayList<>(renderService.getTemplateResolvers()); templateResolvers.remove(this); renderService.setTemplateResolvers(templateResolvers); + logger.info("Unregistered ViewsRegistrar"); } @Override public void register(Bundle bundle) {