@Override public void setBeanClassLoader(ClassLoader classLoader) { ScriptEngineManager scriptEngineManager = this.scriptEngineManager; if (scriptEngineManager == null) { scriptEngineManager = new ScriptEngineManager(classLoader); this.scriptEngineManager = scriptEngineManager; Bindings bindings = this.globalBindings; if (bindings != null) { scriptEngineManager.setBindings(bindings); } } }
@Override public void setBeanClassLoader(ClassLoader classLoader) { ScriptEngineManager scriptEngineManager = this.scriptEngineManager; if (scriptEngineManager == null) { scriptEngineManager = new ScriptEngineManager(classLoader); this.scriptEngineManager = scriptEngineManager; Bindings bindings = this.globalBindings; if (bindings != null) { scriptEngineManager.setBindings(bindings); } } }
/** * Set the globally scoped bindings on the underlying script engine manager, * shared by all scripts, as an alternative to script argument bindings. * @since 4.2.2 * @see #evaluate(ScriptSource, Map) * @see javax.script.ScriptEngineManager#setBindings(Bindings) * @see javax.script.SimpleBindings */ public void setGlobalBindings(Map<String, Object> globalBindings) { Bindings bindings = StandardScriptUtils.getBindings(globalBindings); this.globalBindings = bindings; ScriptEngineManager scriptEngineManager = this.scriptEngineManager; if (scriptEngineManager != null) { scriptEngineManager.setBindings(bindings); } }
/** * Set the globally scoped bindings on the underlying script engine manager, * shared by all scripts, as an alternative to script argument bindings. * @since 4.2.2 * @see #evaluate(ScriptSource, Map) * @see javax.script.ScriptEngineManager#setBindings(Bindings) * @see javax.script.SimpleBindings */ public void setGlobalBindings(Map<String, Object> globalBindings) { Bindings bindings = StandardScriptUtils.getBindings(globalBindings); this.globalBindings = bindings; ScriptEngineManager scriptEngineManager = this.scriptEngineManager; if (scriptEngineManager != null) { scriptEngineManager.setBindings(bindings); } }
/** * Follows the same behavior of @link javax.script.ScriptEngineManager#setBindings(Bindings) * This means that the same bindings are applied to all the underlying managers. * * @param bindings */ @Override public void setBindings(Bindings bindings) { this.bindings = bindings; for (ScriptEngineManagerInfo info : scriptEngineManagerInfoList) { info.scriptEngineManager.setBindings(bindings); } }
/** * Follows the same behavior of @link javax.script.ScriptEngineManager#setBindings(Bindings) * This means that the same bindings are applied to all the underlying managers. * * @param bindings */ @Override public void setBindings(Bindings bindings) { this.bindings = bindings; for (ScriptEngineManagerInfo info : scriptEngineManagerInfoList) { info.scriptEngineManager.setBindings(bindings); } }
/** * Follows the same behavior of @link javax.script.ScriptEngineManager#setBindings(Bindings) * This means that the same bindings are applied to all the underlying managers. * @param bindings */ public void setBindings(Bindings bindings) { this.bindings=bindings; for(ScriptEngineManager manager: classLoaders.keySet()){ manager.setBindings(bindings); } }
/** * Follows the same behavior of @link javax.script.ScriptEngineManager#setBindings(Bindings) * This means that the same bindings are applied to all the underlying managers. * @param bindings */ public void setBindings(Bindings bindings) { this.bindings=bindings; for(ScriptEngineManager manager: classLoaders.keySet()){ manager.setBindings(bindings); } }
/** * Follows the same behavior of @link javax.script.ScriptEngineManager#setBindings(Bindings) * This means that the same bindings are applied to all the underlying managers. * @param bindings */ public void setBindings(Bindings bindings) { this.bindings=bindings; for(ScriptEngineManager manager: classLoaders.keySet()){ manager.setBindings(bindings); } }
/** * Follows the same behavior of @link * javax.script.ScriptEngineManager#setBindings(Bindings) This means that the * same bindings are applied to all the underlying managers. * * @param bindings */ public void setBindings(Bindings bindings) { this.bindings = bindings; for (ScriptEngineManager manager : classLoaders.keySet()) { manager.setBindings(bindings); } }
@Override public void setBeanClassLoader(ClassLoader classLoader) { ScriptEngineManager scriptEngineManager = this.scriptEngineManager; if (scriptEngineManager == null) { scriptEngineManager = new ScriptEngineManager(classLoader); this.scriptEngineManager = scriptEngineManager; Bindings bindings = this.globalBindings; if (bindings != null) { scriptEngineManager.setBindings(bindings); } } }
private Map<ScriptEngineManager, ClassLoader> findManagers(BundleContext context) { Map<ScriptEngineManager, ClassLoader> managers=new HashMap<ScriptEngineManager, ClassLoader>(); for (ClassLoader classLoader: findClassLoaders(context)){ ScriptEngineManager manager= new ScriptEngineManager(classLoader); manager.setBindings(bindings); managers.put(manager, classLoader); } return managers; }
private Map<ScriptEngineManager, ClassLoader> findManagers(BundleContext context) { Map<ScriptEngineManager, ClassLoader> managers=new HashMap<ScriptEngineManager, ClassLoader>(); for (ClassLoader classLoader: findClassLoaders(context)){ ScriptEngineManager manager= new ScriptEngineManager(classLoader); manager.setBindings(bindings); managers.put(manager, classLoader); } return managers; }
/** * Set the globally scoped bindings on the underlying script engine manager, * shared by all scripts, as an alternative to script argument bindings. * @since 4.2.2 * @see #evaluate(ScriptSource, Map) * @see javax.script.ScriptEngineManager#setBindings(Bindings) * @see javax.script.SimpleBindings */ public void setGlobalBindings(Map<String, Object> globalBindings) { Bindings bindings = StandardScriptUtils.getBindings(globalBindings); this.globalBindings = bindings; ScriptEngineManager scriptEngineManager = this.scriptEngineManager; if (scriptEngineManager != null) { scriptEngineManager.setBindings(bindings); } }
private Map<ScriptEngineManager, ClassLoader> findManagers(BundleContext context) { Map<ScriptEngineManager, ClassLoader> managers=new HashMap<ScriptEngineManager, ClassLoader>(); try { for(String factoryName: findFactoryCandidates(context)){ //We do not really need the class, but we need the classloader ClassLoader factoryLoader=Class.forName(factoryName).getClassLoader(); factoryLoader = new CustomClassLoader(new ClassLoader[] { factoryLoader, this.getClass().getClassLoader() }, factoryLoader); ScriptEngineManager manager=new ScriptEngineManager(factoryLoader); manager.setBindings(bindings); managers.put(manager, factoryLoader); } return managers; } catch (IOException ioe) { throw new RuntimeException(ioe); } catch (ClassNotFoundException cnfe) { throw new RuntimeException(cnfe); } } /**
private Map<ScriptEngineManager, ClassLoader> findManagers( BundleContext context) { Map<ScriptEngineManager, ClassLoader> managers = new HashMap<ScriptEngineManager, ClassLoader>(); for (String factoryName : findFactoryCandidates(context)) { // we do not really need the class, but we need the classloader ClassLoader factoryLoader = tryGetClassLoader(factoryName); if (factoryLoader == null) { continue; } ScriptEngineManager manager = tryCreateScriptEngineManager( factoryName, factoryLoader); if (manager != null) { manager.setBindings(bindings); managers.put(manager, factoryLoader); } } return managers; }
public MutantScriptEngine() throws RuntimeException { this.manager.setBindings(new SimpleBindings()); this.context.setBindings(manager.getBindings(), ScriptContext.GLOBAL_SCOPE); this.context.setBindings(manager.getBindings(), ScriptContext.ENGINE_SCOPE); // for ruby System.setProperty("org.jruby.embed.localvariable.behavior", "persistent"); for (ScriptEngineFactory factory : this.manager.getEngineFactories()) { if (!factory.getEngineName().equals(Tokens.MUTANT)) this.engines.add(new EngineHolder(factory)); } if (this.engines.size() == 0) { throw new RuntimeException("No script engines to load"); } else { this.currentEngine = engines.get(0); } }
private ScriptEngineManagerInfo createScriptEngineManagerInfo(String factoryName, ClassLoader factoryLoader) { try { ScriptEngineManager manager = new ScriptEngineManager(factoryLoader); manager.setBindings(bindings); return new ScriptEngineManagerInfo(manager, factoryLoader); } catch (Exception e) { // May fail if script implementation is not in environment logger.warning("Found ScriptEngineFactory candidate for " + factoryName + ", but could not load ScripEngineManager! -> " + e); if (logger.isFinestEnabled()) { logger.finest(e); } return null; } }
private ScriptEngineManagerInfo createScriptEngineManagerInfo(String factoryName, ClassLoader factoryLoader) { try { ScriptEngineManager manager = new ScriptEngineManager(factoryLoader); manager.setBindings(bindings); return new ScriptEngineManagerInfo(manager, factoryLoader); } catch (Exception e) { // May fail if script implementation is not in environment logger.warning("Found ScriptEngineFactory candidate for " + factoryName + ", but could not load ScripEngineManager! -> " + e); if (logger.isFinestEnabled()) { logger.finest(e); } return null; } }
private static void log(String msg, Object obj) { System.out.println(msg + " " + obj); } public static void main(String[] args) throws ScriptException { ScriptEngineManager manager = new ScriptEngineManager(); Bindings bindings = new SimpleBindings(); bindings.put("a", 3); bindings.put("org", 10); log("bingings-org", bindings.get("org")); manager.setBindings(bindings); ScriptEngine engine = manager.getEngineByName("JavaScript"); log("global-a", engine.getBindings(ScriptContext.GLOBAL_SCOPE).get("a")); log("local-a", engine.get("a")); log("global-org", engine.getBindings(ScriptContext.GLOBAL_SCOPE).get("org")); log("local-org", engine.get("org")); // Use "context" to access GLOBAL_SCOPE "org" from script engine.eval( "var GLOBAL_SCOPE = javax.script.ScriptContext.GLOBAL_SCOPE;\n" + "var g = context.getBindings(GLOBAL_SCOPE);\n" + "print(g.get('org'))"); }