X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fscript%2FCmsScriptRwtApplication.java;h=cc5ea7ff50590959f6b57ce533d63a788ffab262;hb=5fc633a360fe9752da282c8348142b30252e2cf3;hp=280213e0570086f257ed6e513b4db162b27a8dd0;hpb=df4cfa770a23bdd458a0fcf54e69e97156ea3591;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui/src/org/argeo/cms/script/CmsScriptRwtApplication.java b/org.argeo.cms.ui/src/org/argeo/cms/script/CmsScriptRwtApplication.java index 280213e05..cc5ea7ff5 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/script/CmsScriptRwtApplication.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/script/CmsScriptRwtApplication.java @@ -32,20 +32,19 @@ public class CmsScriptRwtApplication implements ApplicationConfiguration { public void init(BundleContext bundleContext) { this.bundleContext = bundleContext; - // System.out.println("bundleContext=" + bundleContext); - // System.out.println("repository=" + repository); ClassLoader bundleCl = bundleContext.getBundle().adapt(BundleWiring.class).getClassLoader(); ClassLoader originalCcl = Thread.currentThread().getContextClassLoader(); try { - Thread.currentThread().setContextClassLoader(bundleCl);// GrallVM needs it to be before creating manager - ScriptEngineManager scriptEngineManager = new ScriptEngineManager(bundleCl); - engine = scriptEngineManager.getEngineByName("JavaScript"); - if (engine == null) {// Nashorn - Thread.currentThread().setContextClassLoader(originalCcl); - scriptEngineManager = new ScriptEngineManager(); - Thread.currentThread().setContextClassLoader(bundleCl); - engine = scriptEngineManager.getEngineByName("JavaScript"); - } +// Thread.currentThread().setContextClassLoader(bundleCl);// GraalVM needs it to be before creating manager +// ScriptEngineManager scriptEngineManager = new ScriptEngineManager(bundleCl); +// engine = scriptEngineManager.getEngineByName("JavaScript"); +// if (engine == null) {// Nashorn +// Thread.currentThread().setContextClassLoader(originalCcl); +// scriptEngineManager = new ScriptEngineManager(); +// Thread.currentThread().setContextClassLoader(bundleCl); +// engine = scriptEngineManager.getEngineByName("JavaScript"); +// } + engine = loadScriptEngine(originalCcl, bundleCl); // Load script URL appUrl = bundleContext.getBundle().getEntry("cms/app.js"); @@ -107,4 +106,16 @@ public class CmsScriptRwtApplication implements ApplicationConfiguration { this.repository = repository; } + private static ScriptEngine loadScriptEngine(ClassLoader originalCcl, ClassLoader bundleCl) { + Thread.currentThread().setContextClassLoader(bundleCl);// GraalVM needs it to be before creating manager + ScriptEngineManager scriptEngineManager = new ScriptEngineManager(bundleCl); + ScriptEngine engine = scriptEngineManager.getEngineByName("JavaScript"); + if (engine == null) {// Nashorn + Thread.currentThread().setContextClassLoader(originalCcl); + scriptEngineManager = new ScriptEngineManager(); + Thread.currentThread().setContextClassLoader(bundleCl); + engine = scriptEngineManager.getEngineByName("JavaScript"); + } + return engine; + } }