@Override public String apply(String s) { Object call = jso.call(jso, s); return call == null ? null : call.toString(); } };
public static String stringify(ScriptObjectMirror mirror) throws ScriptException { ScriptObjectMirror json = (ScriptObjectMirror) stringifyEngineThreadLocal.get().eval("JSON"); return (String) json.callMember("stringify", mirror); } }
public static void main(String[] args) throws ScriptException { NashornScriptEngineFactory factory = new NashornScriptEngineFactory(); ScriptEngine nashorn = factory.getScriptEngine(new NoJavaFilter()); Integer eval = (Integer) nashorn.eval("var HashMap = Java.type('java.util.HashMap')"); System.out.println(eval); }
@Override public String stringify(Object object) { if (object instanceof JSObject) { final JSObject jso = (JSObject) object; if (jso.isFunction()) { Object call = jso.call(jso); return stringify(coerce(call)); } } return super.stringify(object); }
@Override public Object coerce(Object object) { if (object instanceof JSObject) { final JSObject jso = (JSObject) object; if (jso.isFunction()) { return new TemplateFunction() { @Override public String apply(String s) { Object call = jso.call(jso, s); return call == null ? null : call.toString(); } }; } else if (jso.isArray()) { // Let's see what it is really. Maybe it is a list. return new ArrayList(((Map) jso).values()); } } return super.coerce(object); } }
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 static void main(String[] args) throws ScriptException, NoSuchMethodException { NashornScriptEngine engine = (NashornScriptEngine) new ScriptEngineManager().getEngineByName("nashorn"); engine.eval("load('java8-nashorn/src/main/resources/nashorn8.js')"); engine.invokeFunction("evaluate1"); // [object global] engine.invokeFunction("evaluate2"); // [object Object] engine.invokeFunction("evaluate3", "Foobar"); // Foobar engine.invokeFunction("evaluate3", new Person("John", "Doe")); // [object global] <- ??????? }
public static void showcase(Object... args) { Element eShowcase = new Element(); eShowcase.setName("SHOWCASE"); for (Object arg : args) { log.trace("arg: %s", arg); if (((ScriptObjectMirror) arg).isFunction()) { ((ScriptObjectMirror) arg).call(arg, eShowcase); } } } }
public void invoke(RowMap row) { if ( row instanceof HeartbeatRowMap && processHeartbeatFunc != null ) processHeartbeatFunc.call(null, new WrappedHeartbeatMap((HeartbeatRowMap) row)); else if ( row instanceof DDLMap && processDDLFunc != null ) processDDLFunc.call(null, new WrappedDDLMap((DDLMap) row)); else if ( row instanceof RowMap && processRowFunc != null ) processRowFunc.call(null, new WrappedRowMap(row)); }
public static void fun3(ScriptObjectMirror mirror) { System.out.println(mirror.getClassName() + ": " + Arrays.toString(mirror.getOwnKeys(true))); }
private ScriptObjectMirror getFunc(ScriptEngine engine, String fName, String filename) { ScriptObjectMirror f = (ScriptObjectMirror) engine.get(fName); if ( f == null ) return null; else if ( !f.isFunction() ) { throw new RuntimeException("Expected " + fName + " to be a function!"); } else { LOGGER.info("using function " + fName + " from " + filename); } return f; }
public static void fun4(ScriptObjectMirror person) { System.out.println("Full Name is: " + person.callMember("getFullName")); }
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); }
public static void main(String[] args) throws ScriptException, NoSuchMethodException { NashornScriptEngine engine = (NashornScriptEngine) new ScriptEngineManager().getEngineByName("nashorn"); engine.eval("load('java8-nashorn/src/main/resources/nashorn10.js')"); long t0 = System.nanoTime(); for (int i = 0; i < 100000; i++) { engine.invokeFunction("testPerf"); } long took = System.nanoTime() - t0; System.out.format("Elapsed time: %d ms", TimeUnit.NANOSECONDS.toMillis(took)); } }
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); }
public static void main(String[] args) throws ScriptException, NoSuchMethodException { NashornScriptEngine engine = (NashornScriptEngine) new ScriptEngineManager().getEngineByName("nashorn"); engine.eval("load('java8-nashorn/src/main/resources/nashorn9.js')"); long t0 = System.nanoTime(); double result = 0; for (int i = 0; i < 1000; i++) { double num = (double) engine.invokeFunction("testPerf"); result += num; } System.out.println(result > 0); long took = System.nanoTime() - t0; System.out.format("Elapsed time: %d ms", TimeUnit.NANOSECONDS.toMillis(took)); } }
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")); }