Java Code Examples for javax.script.ScriptContext#getBindings()

The following examples show how to use javax.script.ScriptContext#getBindings() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ScopeTest.java    From TencentKona-8 with GNU General Public License v2.0 6 votes vote down vote up
@Test
public void userEngineScopeBindingsRetentionTest() throws ScriptException {
    final ScriptEngineManager m = new ScriptEngineManager();
    final ScriptEngine e = m.getEngineByName("nashorn");
    final ScriptContext newContext = new SimpleScriptContext();
    newContext.setBindings(new SimpleBindings(), ScriptContext.ENGINE_SCOPE);
    e.eval("function foo() {}", newContext);

    // definition retained with user's ENGINE_SCOPE Binding
    assertTrue(e.eval("typeof foo", newContext).equals("function"));

    final Bindings oldBindings = newContext.getBindings(ScriptContext.ENGINE_SCOPE);
    // but not in another ENGINE_SCOPE binding
    newContext.setBindings(new SimpleBindings(), ScriptContext.ENGINE_SCOPE);
    assertTrue(e.eval("typeof foo", newContext).equals("undefined"));

    // restore ENGINE_SCOPE and check again
    newContext.setBindings(oldBindings, ScriptContext.ENGINE_SCOPE);
    assertTrue(e.eval("typeof foo", newContext).equals("function"));
}
 
Example 2
Source File: ScopeTest.java    From hottub with GNU General Public License v2.0 6 votes vote down vote up
@Test
public void userEngineScopeBindingsRetentionTest() throws ScriptException {
    final ScriptEngineManager m = new ScriptEngineManager();
    final ScriptEngine e = m.getEngineByName("nashorn");
    final ScriptContext newContext = new SimpleScriptContext();
    newContext.setBindings(new SimpleBindings(), ScriptContext.ENGINE_SCOPE);
    e.eval("function foo() {}", newContext);

    // definition retained with user's ENGINE_SCOPE Binding
    assertTrue(e.eval("typeof foo", newContext).equals("function"));

    final Bindings oldBindings = newContext.getBindings(ScriptContext.ENGINE_SCOPE);
    // but not in another ENGINE_SCOPE binding
    newContext.setBindings(new SimpleBindings(), ScriptContext.ENGINE_SCOPE);
    assertTrue(e.eval("typeof foo", newContext).equals("undefined"));

    // restore ENGINE_SCOPE and check again
    newContext.setBindings(oldBindings, ScriptContext.ENGINE_SCOPE);
    assertTrue(e.eval("typeof foo", newContext).equals("function"));
}
 
Example 3
Source File: MultiScopes.java    From hottub with GNU General Public License v2.0 6 votes vote down vote up
public static void main(final String[] args) throws Exception {
    final ScriptEngineManager manager = new ScriptEngineManager();
    final ScriptEngine engine = manager.getEngineByName("nashorn");

    engine.put("x", "hello");
    // print global variable "x"
    engine.eval("print(x);");
    // the above line prints "hello"

    // Now, pass a different script context
    final ScriptContext newContext = new SimpleScriptContext();
    newContext.setBindings(engine.createBindings(), ScriptContext.ENGINE_SCOPE);
    final Bindings engineScope = newContext.getBindings(ScriptContext.ENGINE_SCOPE);

    // add new variable "x" to the new engineScope
    engineScope.put("x", "world");

    // execute the same script - but this time pass a different script context
    engine.eval("print(x);", newContext);
    // the above line prints "world"
}
 
Example 4
Source File: MultiScopes.java    From jdk8u_nashorn with GNU General Public License v2.0 6 votes vote down vote up
public static void main(final String[] args) throws Exception {
    final ScriptEngineManager manager = new ScriptEngineManager();
    final ScriptEngine engine = manager.getEngineByName("nashorn");

    engine.put("x", "hello");
    // print global variable "x"
    engine.eval("print(x);");
    // the above line prints "hello"

    // Now, pass a different script context
    final ScriptContext newContext = new SimpleScriptContext();
    newContext.setBindings(engine.createBindings(), ScriptContext.ENGINE_SCOPE);
    final Bindings engineScope = newContext.getBindings(ScriptContext.ENGINE_SCOPE);

    // add new variable "x" to the new engineScope
    engineScope.put("x", "world");

    // execute the same script - but this time pass a different script context
    engine.eval("print(x);", newContext);
    // the above line prints "world"
}
 
Example 5
Source File: MultiScopes.java    From openjdk-jdk9 with GNU General Public License v2.0 6 votes vote down vote up
public static void main(final String[] args) throws Exception {
    final ScriptEngineManager manager = new ScriptEngineManager();
    final ScriptEngine engine = manager.getEngineByName("nashorn");

    engine.put("x", "hello");
    // print global variable "x"
    engine.eval("print(x);");
    // the above line prints "hello"

    // Now, pass a different script context
    final ScriptContext newContext = new SimpleScriptContext();
    newContext.setBindings(engine.createBindings(), ScriptContext.ENGINE_SCOPE);
    final Bindings engineScope = newContext.getBindings(ScriptContext.ENGINE_SCOPE);

    // add new variable "x" to the new engineScope
    engineScope.put("x", "world");

    // execute the same script - but this time pass a different script context
    engine.eval("print(x);", newContext);
    // the above line prints "world"
}
 
Example 6
Source File: Nashorn11.java    From java8-tutorial with MIT License 6 votes vote down vote up
private static void test7() throws ScriptException {
    NashornScriptEngine engine = createEngine();

    engine.eval("var foo = 23;");

    ScriptContext defaultContext = engine.getContext();
    Bindings defaultBindings = defaultContext.getBindings(ScriptContext.ENGINE_SCOPE);

    SimpleScriptContext context1 = new SimpleScriptContext();
    context1.setBindings(defaultBindings, ScriptContext.ENGINE_SCOPE);

    SimpleScriptContext context2 = new SimpleScriptContext();
    context2.getBindings(ScriptContext.ENGINE_SCOPE).put("foo", defaultBindings.get("foo"));

    engine.eval("foo = 44;", context1);
    engine.eval("print(foo);", context1);
    engine.eval("print(foo);", context2);
}
 
Example 7
Source File: Nashorn11.java    From java8-tutorial with MIT License 6 votes vote down vote up
private static void test5() throws ScriptException {
    NashornScriptEngine engine = createEngine();

    engine.eval("var obj = { foo: 'foo' };");
    engine.eval("function printFoo() { print(obj.foo) };");

    ScriptContext defaultContext = engine.getContext();
    Bindings defaultBindings = defaultContext.getBindings(ScriptContext.ENGINE_SCOPE);

    SimpleScriptContext context1 = new SimpleScriptContext();
    context1.setBindings(defaultBindings, ScriptContext.ENGINE_SCOPE);

    SimpleScriptContext context2 = new SimpleScriptContext();
    context2.setBindings(defaultBindings, ScriptContext.ENGINE_SCOPE);

    engine.eval("obj.foo = 'bar';", context1);
    engine.eval("printFoo();", context1);
    engine.eval("printFoo();", context2);
}
 
Example 8
Source File: PrismJsHighlighter.java    From asciidoctorj with Apache License 2.0 6 votes vote down vote up
@Override
public HighlightResult highlight(Block node,
                                 String source,
                                 String lang,
                                 Map<String, Object> options) {
    ScriptContext ctx = scriptEngine.getContext();                                     // <4>
    Bindings bindings = ctx.getBindings(ScriptContext.ENGINE_SCOPE);
    bindings.put("text", source);
    bindings.put("language", lang);

    try {
        String result = (String) scriptEngine.eval(
            "Prism.highlight(text, Prism.languages[language], language)", bindings);
        return new HighlightResult(result);
    } catch (ScriptException e) {
        throw new RuntimeException(e);
    }
}
 
Example 9
Source File: Nashorn11.java    From java8-tutorial with MIT License 6 votes vote down vote up
private static void test3() throws ScriptException {
    NashornScriptEngine engine = createEngine();

    ScriptContext defaultContext = engine.getContext();
    Bindings defaultBindings = defaultContext.getBindings(ScriptContext.ENGINE_SCOPE);

    SimpleScriptContext context = new SimpleScriptContext();
    context.setBindings(defaultBindings, ScriptContext.ENGINE_SCOPE);

    engine.eval("function foo() { print('bar') };", context);
    engine.eval("foo();", context);

    Bindings bindings = context.getBindings(ScriptContext.ENGINE_SCOPE);
    System.out.println(bindings.get("foo"));
    System.out.println(context.getAttribute("foo"));
}
 
Example 10
Source File: MultiScopes.java    From openjdk-jdk8u with GNU General Public License v2.0 6 votes vote down vote up
public static void main(final String[] args) throws Exception {
    final ScriptEngineManager manager = new ScriptEngineManager();
    final ScriptEngine engine = manager.getEngineByName("nashorn");

    engine.put("x", "hello");
    // print global variable "x"
    engine.eval("print(x);");
    // the above line prints "hello"

    // Now, pass a different script context
    final ScriptContext newContext = new SimpleScriptContext();
    newContext.setBindings(engine.createBindings(), ScriptContext.ENGINE_SCOPE);
    final Bindings engineScope = newContext.getBindings(ScriptContext.ENGINE_SCOPE);

    // add new variable "x" to the new engineScope
    engineScope.put("x", "world");

    // execute the same script - but this time pass a different script context
    engine.eval("print(x);", newContext);
    // the above line prints "world"
}
 
Example 11
Source File: ClojureScriptEngine.java    From localization_nifi with Apache License 2.0 6 votes vote down vote up
@Override
public Object eval(Reader reader, ScriptContext context) throws ScriptException {

    try {
        // Get engine bindings and send them to Clojure
        Bindings engineBindings = context.getBindings(ScriptContext.ENGINE_SCOPE);
        engineBindings.entrySet().forEach((entry) -> Var.intern(Namespace.findOrCreate(NAMESPACE_SYMBOL), Symbol.create(entry.getKey().intern()), entry.getValue(), true));

        Var.pushThreadBindings(
                RT.map(RT.CURRENT_NS, RT.CURRENT_NS.deref(),
                        RT.IN, new LineNumberingPushbackReader(context.getReader()),
                        RT.OUT, context.getWriter(),
                        RT.ERR, context.getErrorWriter()));

        Object result = Compiler.load(reader);
        return result;
    } catch (Exception e) {
        throw new ScriptException(e);
    } finally {
        Namespace.remove(NAMESPACE_SYMBOL);
    }
}
 
Example 12
Source File: MultiScopes.java    From jdk8u60 with GNU General Public License v2.0 6 votes vote down vote up
public static void main(final String[] args) throws Exception {
    final ScriptEngineManager manager = new ScriptEngineManager();
    final ScriptEngine engine = manager.getEngineByName("nashorn");

    engine.put("x", "hello");
    // print global variable "x"
    engine.eval("print(x);");
    // the above line prints "hello"

    // Now, pass a different script context
    final ScriptContext newContext = new SimpleScriptContext();
    newContext.setBindings(engine.createBindings(), ScriptContext.ENGINE_SCOPE);
    final Bindings engineScope = newContext.getBindings(ScriptContext.ENGINE_SCOPE);

    // add new variable "x" to the new engineScope
    engineScope.put("x", "world");

    // execute the same script - but this time pass a different script context
    engine.eval("print(x);", newContext);
    // the above line prints "world"
}
 
Example 13
Source File: SyncOrganization.java    From o2oa with GNU Affero General Public License v3.0 5 votes vote down vote up
private String initPassword(Business business, Person person) throws Exception {
	String str = Config.person().getPassword();
	Pattern pattern = Pattern.compile(com.x.base.core.project.config.Person.REGULAREXPRESSION_SCRIPT);
	Matcher matcher = pattern.matcher(str);
	if (matcher.matches()) {
		String eval = ScriptFactory.functionalization(StringEscapeUtils.unescapeJson(matcher.group(1)));
		ScriptContext scriptContext = new SimpleScriptContext();
		Bindings bindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
		bindings.put("person", person);
		Object o = ScriptFactory.scriptEngine.eval(eval, scriptContext);
		return o.toString();
	} else {
		return str;
	}
}
 
Example 14
Source File: SyncOrganization.java    From o2oa with GNU Affero General Public License v3.0 5 votes vote down vote up
private String initPassword(Business business, Person person) throws Exception {
	String str = Config.person().getPassword();
	Pattern pattern = Pattern.compile(com.x.base.core.project.config.Person.REGULAREXPRESSION_SCRIPT);
	Matcher matcher = pattern.matcher(str);
	if (matcher.matches()) {
		String eval = ScriptFactory.functionalization(StringEscapeUtils.unescapeJson(matcher.group(1)));
		ScriptContext scriptContext = new SimpleScriptContext();
		Bindings bindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
		bindings.put("person", person);
		Object o = ScriptFactory.scriptEngine.eval(eval, scriptContext);
		return o.toString();
	} else {
		return str;
	}
}
 
Example 15
Source File: RsrcLoader.java    From netbeans with Apache License 2.0 5 votes vote down vote up
RsrcLoader(FileObject fo, ScriptContext map) {
    this.fo = fo;
    this.map = map;
    this.engineScope = map.getBindings(ScriptContext.ENGINE_SCOPE);
    setTemplateLoader(this);
    setTemplateExceptionHandler(this);
    Logger.getLogger("freemarker.runtime").setLevel(Level.OFF);
}
 
Example 16
Source File: KotlinScriptEngine.java    From dynkt with GNU Affero General Public License v3.0 5 votes vote down vote up
@Override
public Object eval(String script, ScriptContext context) throws ScriptException {
	try {
		File file = File.createTempFile("kc_evl", ".kts");
		KotlinCompiledScript scr = new KotlinCompiledScript(this, script, file);
		Bindings ctx = context.getBindings(ScriptContext.ENGINE_SCOPE);
		return scr.eval(ctx);
	} catch (IOException e) {
		throw new ScriptException(e);
	}
}
 
Example 17
Source File: ScriptEngineImpl.java    From es6draft with MIT License 5 votes vote down vote up
private Realm getEvalRealm(ScriptContext context) {
    Bindings bindings = context.getBindings(ScriptContext.ENGINE_SCOPE);
    if (bindings instanceof GlobalBindings) {
        // Return realm from engine scope bindings if compatible, i.e. from the same world instance.
        Realm realm = ((GlobalBindings) bindings).getRealm();
        if (realm.getWorld() == world) {
            return realm;
        }
    }
    // Otherwise create a new realm.
    return newScriptingRealm();
}
 
Example 18
Source File: Nashorn11.java    From java8-tutorial with MIT License 5 votes vote down vote up
private static void test4() throws ScriptException {
    NashornScriptEngine engine = createEngine();

    engine.eval("function foo() { print('bar') };");

    ScriptContext defaultContext = engine.getContext();
    Bindings defaultBindings = defaultContext.getBindings(ScriptContext.ENGINE_SCOPE);

    SimpleScriptContext context = new SimpleScriptContext();
    context.setBindings(defaultBindings, ScriptContext.ENGINE_SCOPE);

    engine.eval("foo();", context);
    System.out.println(context.getAttribute("foo"));
}
 
Example 19
Source File: ActionExecute.java    From o2oa with GNU Affero General Public License v3.0 4 votes vote down vote up
ActionResult<Wo> execute(EffectivePerson effectivePerson, String flag) throws Exception {
	try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
		ActionResult<Wo> result = new ActionResult<>();
		Agent agent = emc.flag(flag, Agent.class);
		if (null == agent) {
			throw new ExceptionAgentNotExist(flag);
		}
		if (LOCK.contains(agent.getId())) {
			throw new ExceptionAgentLastNotEnd(agent.getId(), agent.getName(), agent.getAlias(),
					DateTools.format(agent.getLastStartTime()));
		} else {
			try {
				LOCK.add(agent.getId());
				emc.beginTransaction(Agent.class);
				agent.setLastStartTime(new Date());
				emc.commit();
				ScriptContext scriptContext = new SimpleScriptContext();
				Bindings bindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
				Resources resources = new Resources();
				resources.setEntityManagerContainer(emc);
				resources.setContext(ThisApplication.context());
				resources.setOrganization(new Organization(ThisApplication.context()));
				resources.setApplications(ThisApplication.context().applications());
				resources.setWebservicesClient(new WebservicesClient());
				bindings.put(ScriptFactory.BINDING_NAME_RESOURCES, resources);
				bindings.put(ScriptFactory.BINDING_NAME_APPLICATIONS, ThisApplication.context().applications());
				String cacheKey = ApplicationCache.concreteCacheKey(ActionExecute.class, agent.getId());
				Element element = CACHE.get(cacheKey);
				CompiledScript compiledScript = null;
				if ((null != element) && (null != element.getObjectValue())) {
					logger.print("has agent cache {}", agent.getId());
				}
				compiledScript = ScriptFactory.compile(ScriptFactory.functionalization(agent.getText()));
				CACHE.put(new Element(cacheKey, compiledScript));
				try {
					ScriptFactory.initialServiceScriptText().eval(scriptContext);
					compiledScript.eval(scriptContext);
				} catch (Exception e) {
					throw new ExceptionAgentEval(e, e.getMessage(), agent.getId(), agent.getName(),
							agent.getAlias(), agent.getText());
				}
			} finally {
				LOCK.remove(agent.getId());
			}
		}
		emc.beginTransaction(Agent.class);
		agent.setLastEndTime(new Date());
		emc.commit();
		Wo wo = new Wo();
		wo.setId(agent.getId());
		result.setData(wo);
		return result;
	}
}
 
Example 20
Source File: OpenEJBScripter.java    From tomee with Apache License 2.0 4 votes vote down vote up
private static void bindLocal(final ScriptContext context) {
    final Bindings bindings = context.getBindings(ScriptContext.ENGINE_SCOPE);

    bindings.put("bm", new BeanManagerHelper());
}