public ScriptBindings(List<Resolver> scriptResolvers, VariableScope variableScope) { this.scriptResolvers = scriptResolvers; this.variableScope = variableScope; this.defaultBindings = new SimpleScriptContext().getBindings(SimpleScriptContext.ENGINE_SCOPE); }
protected Object evaluateExpression(Object expression, Map<String, Object> parameters) { try { Object result = null; StringWriter writer = new StringWriter(); ScriptContext context = new SimpleScriptContext(); for (Map.Entry<String, Object> property : engineProperties.entrySet()) { context.setAttribute(property.getKey(), property.getValue(), ScriptContext.ENGINE_SCOPE); } Bindings bindings = context.getBindings(ScriptContext.ENGINE_SCOPE); bindings.putAll(parameters); context.setBindings(bindings, ScriptContext.ENGINE_SCOPE); context.setWriter(writer); if (expression instanceof CompiledScript) { logger.debug("About to evaluate compiled expression {} with bindings {} on engine", expression, parameters, scriptEngine); result = ((CompiledScript) expression).eval(context); } else { logger.debug("About to evaluate expression {} with bindings {} on engine", expression, parameters, scriptEngine); result = scriptEngine.eval(expression.toString(), context); } if (result == null) { result = writer.toString(); } return result; } catch (ScriptException e) { throw new RuntimeException("Error when evaluating script", e); } }
public static void main(String[] args) throws ScriptException, IOException { StringWriter writer = new StringWriter(); //ouput will be stored here ScriptEngineManager manager = new ScriptEngineManager(); ScriptContext context = new SimpleScriptContext(); context.setWriter(writer); //configures output redirection ScriptEngine engine = manager.getEngineByName("python"); engine.eval(new FileReader("numbers.py"), context); System.out.println(writer.toString()); }
public class MyServlet extends HttpServlet { private ThreadLocal<ScriptEngine> engineHolder; @Override public void init() throws ServletException { engineHolder = new ThreadLocal<ScriptEngine>() { @Override protected ScriptEngine initialValue() { return new ScriptEngineManager().getEngineByName("nashorn"); } }; } @Override public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException { try (PrintWriter writer = res.getWriter()) { ScriptContext newContext = new SimpleScriptContext(); newContext.setBindings(engineHolder.get().createBindings(), ScriptContext.ENGINE_SCOPE); Bindings engineScope = newContext.getBindings(ScriptContext.ENGINE_SCOPE); engineScope.put("writer", writer); Object value = engineHolder.get().eval("writer.print('Hello, World!');", engineScope); writer.close(); } catch (IOException | ScriptException ex) { Logger.getLogger(MyServlet.class.getName()).log(Level.SEVERE, null, ex); } } }
private static void test2() throws ScriptException { NashornScriptEngine engine = createEngine(); engine.eval("function foo() { print('bar') };"); SimpleScriptContext context = new SimpleScriptContext(); engine.eval("print(Function);", context); engine.eval("foo();", context); }
ScriptContext ctx = new SimpleScriptContext();
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); }
private static void test8() throws ScriptException { NashornScriptEngine engine = createEngine(); engine.eval("var obj = { 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("obj", defaultBindings.get("obj")); engine.eval("obj.foo = 44;", context1); engine.eval("print(obj.foo);", context1); engine.eval("print(obj.foo);", context2); }
private static void test6() throws ScriptException { NashornScriptEngine engine = createEngine(); ScriptContext defaultContext = engine.getContext(); defaultContext.getBindings(ScriptContext.GLOBAL_SCOPE).put("foo", "hello"); ScriptContext customContext = new SimpleScriptContext(); customContext.setBindings(defaultContext.getBindings(ScriptContext.ENGINE_SCOPE), ScriptContext.ENGINE_SCOPE); Bindings bindings = new SimpleBindings(); bindings.put("foo", "world"); customContext.setBindings(bindings, ScriptContext.GLOBAL_SCOPE); // engine.eval("foo = 23;"); // overrides foo in all contexts, why??? engine.eval("print(foo)"); // hello engine.eval("print(foo)", customContext); // world engine.eval("print(foo)", defaultContext); // hello }
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")); }
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")); }
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); }
public ScriptBindings(List<Resolver> scriptResolvers, VariableScope variableScope) { this.scriptResolvers = scriptResolvers; this.variableScope = variableScope; this.defaultBindings = new SimpleScriptContext().getBindings(SimpleScriptContext.ENGINE_SCOPE); }
public ScriptBindings(List<Resolver> scriptResolvers, VariableScope variableScope) { this.scriptResolvers = scriptResolvers; this.variableScope = variableScope; this.defaultBindings = new SimpleScriptContext().getBindings(SimpleScriptContext.ENGINE_SCOPE); }
public ScriptBindings(List<Resolver> scriptResolvers, VariableScope variableScope) { this.scriptResolvers = scriptResolvers; this.variableScope = variableScope; this.defaultBindings = new SimpleScriptContext().getBindings(SimpleScriptContext.ENGINE_SCOPE); }
@Override public void initialize(CommandContext context, BufferManager bufferManager, ProcessorDataManager dataMgr) { super.initialize(context, bufferManager, dataMgr); this.scriptContext = new SimpleScriptContext(); }
public ScriptBindings(List<Resolver> scriptResolvers, VariableScope variableScope) { this.scriptResolvers = scriptResolvers; this.variableScope = variableScope; this.defaultBindings = new SimpleScriptContext().getBindings(SimpleScriptContext.ENGINE_SCOPE); }
ScriptContext context = new SimpleScriptContext(); context.setBindings(engine.createBindings(), ScriptContext.ENGINE_SCOPE); //Exception handling omitted for brevity //Evaluate the compiled runtime in our new context compiledRuntime.eval(context); //Evaluate the source in the same context engine.eval(source, context); //Call a function JSObject jsObject = (JSObject) context.getAttribute(function, ScriptContext.ENGINE_SCOPE); jsObject.call(null, args);
private SimpleScriptContext createScriptContext(final NodeModel node, ScriptContext scriptContext, OutputStream outStream) { final SimpleScriptContext context = new SimpleScriptContext(); final OutputStreamWriter outWriter = new OutputStreamWriter(outStream); context.setWriter(outWriter); context.setErrorWriter(outWriter); context.setBindings(createBinding(node, scriptContext), javax.script.ScriptContext.ENGINE_SCOPE); return context; }
@Test public void testArraySyntax() throws Exception { TeiidScriptEngine tse = new TeiidScriptEngine(); CompiledScript cs = tse.compile("root.1.2"); SimpleScriptContext ssc = new SimpleScriptContext(); ssc.setAttribute("root", new Object[] {new Object[] {"x", "y"}}, SimpleScriptContext.ENGINE_SCOPE); assertEquals("y", cs.eval(ssc)); }