private static final String FUNCTIONS = "function() {" + " return \"Hello\";" + "}"; public static void main(String... args) throws Exception { ScriptEngine engine = new ScriptEngineManager().getEngineByMimeType("text/javascript"); // Compile common functions once CompiledScript compiled = ((Compilable) engine).compile(FUNCTIONS); Object sayHello = compiled.eval(); // Load users' script each time SimpleBindings global = new SimpleBindings(); global.put("sayHello", sayHello); String script = "sayHello()"; System.out.println(engine.eval(script, global)); }
@Override public Result filter(final Logger logger, final Level level, final Marker marker, final Message msg, final Throwable t) { final SimpleBindings bindings = new SimpleBindings(); bindings.put("logger", logger); bindings.put("level", level); bindings.put("marker", marker); bindings.put("message", msg); bindings.put("parameters", null); bindings.put("throwable", t); bindings.putAll(configuration.getProperties()); bindings.put("substitutor", configuration.getStrSubstitutor()); final Object object = configuration.getScriptManager().execute(script.getName(), bindings); return object == null || !Boolean.TRUE.equals(object) ? onMismatch : onMatch; }
logger.info("running {} with engine {}", scriptFile, seng); SimpleBindings bindings = new SimpleBindings(); bindings.put("logger", LoggerFactory.getLogger(scriptFile.getName())); bindings.put("args", options.<List<String>>get("args")); bindings.put("recommender", rec); try (Reader reader = new FileReader(scriptFile)) { seng.eval(reader, bindings);
@Override public Result filter(final Logger logger, final Level level, final Marker marker, final String msg, final Object... params) { final SimpleBindings bindings = new SimpleBindings(); bindings.put("logger", logger); bindings.put("level", level); bindings.put("marker", marker); bindings.put("message", new SimpleMessage(msg)); bindings.put("parameters", params); bindings.put("throwable", null); bindings.putAll(configuration.getProperties()); bindings.put("substitutor", configuration.getStrSubstitutor()); final Object object = configuration.getScriptManager().execute(script.getName(), bindings); return object == null || !Boolean.TRUE.equals(object) ? onMismatch : onMatch; }
/** * Put a varianble into the script environment * @param varName the variable name to add to the environment * @param var the object to bind to the varname * @return this NashornEvaluator, for method chaining */ @Override public NashornEvaluator<T> put(String varName, Object var) { bindings.put(varName, var); return this; }
@Override public Result filter(final Logger logger, final Level level, final Marker marker, final Object msg, final Throwable t) { final SimpleBindings bindings = new SimpleBindings(); bindings.put("logger", logger); bindings.put("level", level); bindings.put("marker", marker); bindings.put("message", msg instanceof String ? new SimpleMessage((String)msg) : new ObjectMessage(msg)); bindings.put("parameters", null); bindings.put("throwable", t); bindings.putAll(configuration.getProperties()); bindings.put("substitutor", configuration.getStrSubstitutor()); final Object object = configuration.getScriptManager().execute(script.getName(), bindings); return object == null || !Boolean.TRUE.equals(object) ? onMismatch : onMatch; }
@Override public Result filter(final LogEvent event) { final SimpleBindings bindings = new SimpleBindings(); bindings.put("logEvent", event); bindings.putAll(configuration.getProperties()); bindings.put("substitutor", configuration.getStrSubstitutor()); final Object object = configuration.getScriptManager().execute(script.getName(), bindings); return object == null || !Boolean.TRUE.equals(object) ? onMismatch : onMatch; }
ScriptEngine scriptEngine = new ScriptEngineManager().getEngineByName("javascript"); SimpleBindings bindings = new SimpleBindings(); bindings.put("a", 0); bindings.put("b", 6); boolean firstEval = (Boolean) scriptEngine.eval("a != 0 && b > 5", bindings); System.out.println(firstEval); bindings.put("a", 2); bindings.put("b", 6); boolean secondEval = (Boolean) scriptEngine.eval("a != 0 && b > 5", bindings); System.out.println(secondEval);
@Override public PatternFormatter[] getFormatters(final LogEvent event) { final SimpleBindings bindings = new SimpleBindings(); bindings.putAll(configuration.getProperties()); bindings.put("substitutor", configuration.getStrSubstitutor()); bindings.put("logEvent", event); final Object object = configuration.getScriptManager().execute(script.getName(), bindings); if (object == null) { return defaultFormatters; } final PatternFormatter[] patternFormatter = formatterMap.get(object.toString()); return patternFormatter == null ? defaultFormatters : patternFormatter; }
FileReader babelScript = new FileReader("babel.js"); ScriptEngine engine = new ScriptEngineManager().getEngineByMimeType("text/javascript"); SimpleBindings bindings = new SimpleBindings(); engine.eval(babelScript, bindings); bindings.put("input", "<Component />"); Object output = engine.eval("Babel.transform(input, { presets: ['react'] }).code", bindings); System.out.println(output);
public static void main(String[] args) throws ScriptException { ScriptEngineManager scriptEngineManager = new ScriptEngineManager(); ScriptEngine nashorn = scriptEngineManager.getEngineByName("nashorn"); int valueIn = 10; SimpleBindings simpleBindings = new SimpleBindings(); simpleBindings.put("globalValue", valueIn); nashorn.eval("print (globalValue)", simpleBindings); nashorn.eval("load('src/eu/zeigermann/nashorn/databinding/dataAccess.js')", simpleBindings); Integer valueOut = (Integer) nashorn.eval("passGlobalValue()", simpleBindings); System.out.println(valueIn == valueOut.intValue()); } }
public void put(String key, Object val) { if (serializableValue(val)) { serializableBindings.put(key, val); } scriptBindings.put(key, val); }
public static void main(String[] args) throws ScriptException { ScriptEngineManager scriptEngineManager = new ScriptEngineManager(); ScriptEngine nashorn = scriptEngineManager.getEngineByName("nashorn"); System.out.println("Value from Java before: " + PassingData.value); nashorn.eval("load('src/eu/zeigermann/nashorn/datapassingComplete/dataAccess.js')"); nashorn.eval("dataAccess(" + value * 2 + ")"); SimpleBindings simpleBindings = new SimpleBindings(); simpleBindings.put("globalNewValue", value * 2); // need to reload, as this creates a new context nashorn.eval("load('src/eu/zeigermann/nashorn/datapassingComplete/dataAccess.js')", simpleBindings); nashorn.eval("storeGlobalValue()", simpleBindings); System.out.println("Value from Java after: " + PassingData.value); } }
public static boolean checkScope(Map<String,String> vars, String str) { ScriptEngineManager mgr = new ScriptEngineManager(null); ScriptEngine engine = mgr.getEngineByName("javascript"); if (engine == null) throw new IllegalStateException("no javascipt engine found"); SimpleBindings bindings = new SimpleBindings(); for (Map.Entry<String,String> t : vars.entrySet()) { bindings.put(t.getKey(), t.getValue()); } try { return ((Boolean)engine.eval(str, bindings)).booleanValue(); } catch (ScriptException e) { throw new RuntimeException(e); } }
@Override public void setup(OperatorContext context) { for (Map.Entry<String, Object> entry : serializableBindings.entrySet()) { scriptBindings.put(entry.getKey(), entry.getValue()); } this.scriptContext.setBindings(scriptBindings, ScriptContext.ENGINE_SCOPE); engine.setContext(this.scriptContext); try { for (String s : setupScripts) { engine.eval(s, this.scriptContext); } } catch (ScriptException ex) { throw new RuntimeException(ex); } }
/** * {@inheritDoc} */ @Override public OnmsNode act(final OnmsNode node) { try { final CompiledScript compiledScript = compileScript(getScript()); if (compiledScript == null) { LOG.warn("No compiled script available for execution."); } else { final SimpleBindings globals = new SimpleBindings(); globals.put("node", node); globals.put("LOG", LOG); return (OnmsNode) compiledScript.eval(globals); } } catch (Exception ex) { LOG.warn("Error applying ScriptPolicy.", ex); } return node; }
@Override public Map<? extends EdgeRef, ? extends Status> getStatusForEdges(EdgeProvider edgeProvider, Collection<EdgeRef> edges, Criteria[] criteria) { return serviceAccessor.getTransactionOperations().execute( t -> this.scripting.compute(edges.stream() .filter(edge -> edge instanceof GraphMLEdge) .map(edge -> (GraphMLEdge) edge), (edge) -> { final SimpleBindings bindings = new SimpleBindings(); bindings.put("edge", edge); bindings.put("sourceNode", getNodeForEdgeVertexConnector(edge.getSource())); bindings.put("targetNode", getNodeForEdgeVertexConnector(edge.getTarget())); bindings.put("measurements", new MeasurementsWrapper(serviceAccessor.getMeasurementsService())); bindings.put("nodeDao", serviceAccessor.getNodeDao()); bindings.put("snmpInterfaceDao", serviceAccessor.getSnmpInterfaceDao()); return bindings; })); }
@Test public void testScriptEngine() throws ScriptException { ScriptEngineManager scriptEngineManager = new ScriptEngineManager(); scriptEngineManager.registerEngineName( "mvel", new MvelScriptEngineFactory()); ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("mvel"); SimpleBindings simpleBindings = new SimpleBindings(); simpleBindings.put("a", 1); simpleBindings.put("b", 2); int c = (Integer) scriptEngine.eval("a + b", simpleBindings); assertEquals(c, 3); }
@Test public void testScriptEngineCompiledScript() throws ScriptException { ScriptEngineManager scriptEngineManager = new ScriptEngineManager(); scriptEngineManager.registerEngineName( "mvel", new MvelScriptEngineFactory()); ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("mvel"); SimpleBindings simpleBindings = new SimpleBindings(); simpleBindings.put("a", 1); simpleBindings.put("b", 2); Compilable compilableScriptEngine = (Compilable) scriptEngine; CompiledScript compiledScript = compilableScriptEngine.compile("a+ b"); int c = (Integer) compiledScript.eval(simpleBindings); assertEquals(c, 3); } }