javax.script.ScriptEngineManager#getEngineByName ( )源码实例Demo

下面列出了javax.script.ScriptEngineManager#getEngineByName ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: openjdk-jdk8u-backup   文件: ScriptEngineTest.java
@Test
public void argumentsTest() {
    final ScriptEngineManager m = new ScriptEngineManager();
    final ScriptEngine e = m.getEngineByName("nashorn");

    final String[] args = new String[] { "hello", "world" };
    try {
        e.put("arguments", args);
        final Object arg0 = e.eval("arguments[0]");
        final Object arg1 = e.eval("arguments[1]");
        assertEquals(args[0], arg0);
        assertEquals(args[1], arg1);
    } catch (final Exception exp) {
        exp.printStackTrace();
        fail(exp.getMessage());
    }
}
 
源代码2 项目: jdk8u_nashorn   文件: InvocableTest.java
@Test
/**
 * Check that we can get interface out of a script object even after
 * switching to use different ScriptContext.
 */
public void getInterfaceDifferentContext() {
    final ScriptEngineManager m = new ScriptEngineManager();
    final ScriptEngine e = m.getEngineByName("nashorn");
    try {
        final Object obj = e.eval("({ run: function() { } })");

        // change script context
        final ScriptContext ctxt = new SimpleScriptContext();
        ctxt.setBindings(e.createBindings(), ScriptContext.ENGINE_SCOPE);
        e.setContext(ctxt);

        final Runnable r = ((Invocable) e).getInterface(obj, Runnable.class);
        r.run();
    } catch (final Exception exp) {
        exp.printStackTrace();
        fail(exp.getMessage());
    }
}
 
源代码3 项目: jdk8u60   文件: PluggableJSObjectTest.java
@Test
// a factory JSObject
public void factoryJSObjectTest() {
    final ScriptEngineManager m = new ScriptEngineManager();
    final ScriptEngine e = m.getEngineByName("nashorn");
    try {
        e.put("Factory", new Factory());

        // check new on Factory
        assertEquals(e.eval("typeof Factory"), "function");
        assertEquals(e.eval("typeof new Factory()"), "object");
        assertEquals(e.eval("(new Factory()) instanceof java.util.Map"), Boolean.TRUE);
    } catch (final Exception exp) {
        exp.printStackTrace();
        fail(exp.getMessage());
    }
}
 
源代码4 项目: hottub   文件: ScriptEngineSecurityTest.java
@Test
public void securityPackagesTest() {
    if (System.getSecurityManager() == null) {
        // pass vacuously
        return;
    }

    final ScriptEngineManager m = new ScriptEngineManager();
    final ScriptEngine e = m.getEngineByName("nashorn");
    try {
        e.eval("var v = Packages.sun.misc.Unsafe;");
        fail("should have thrown SecurityException");
    } catch (final Exception exp) {
        if (exp instanceof SecurityException) {
            log("got " + exp + " as expected");
        } else {
            fail(exp.getMessage());
        }
    }
}
 
源代码5 项目: TencentKona-8   文件: InvocableTest.java
@Test
/**
 * Try passing non-interface Class object for interface implementation.
 */
public void getNonInterfaceGetInterfaceTest() {
    final ScriptEngineManager manager = new ScriptEngineManager();
    final ScriptEngine engine = manager.getEngineByName("nashorn");
    try {
        log(Objects.toString(((Invocable) engine).getInterface(Object.class)));
        fail("Should have thrown IllegalArgumentException");
    } catch (final Exception exp) {
        if (!(exp instanceof IllegalArgumentException)) {
            fail("IllegalArgumentException expected, got " + exp);
        }
    }
}
 
源代码6 项目: TencentKona-8   文件: ScriptEngineTest.java
@Test
public void windowItemTest() {
    final ScriptEngineManager m = new ScriptEngineManager();
    final ScriptEngine e = m.getEngineByName("nashorn");
    final Window window = new Window();

    try {
        e.put("window", window);
        final String item1 = (String)e.eval("window.item(65535)");
        assertEquals(item1, "ffff");
        final String item2 = (String)e.eval("window.item(255)");
        assertEquals(item2, "ff");
    } catch (final Exception exp) {
        exp.printStackTrace();
        fail(exp.getMessage());
    }
}
 
源代码7 项目: jdk8u_nashorn   文件: MultiScopes.java
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"
}
 
源代码8 项目: cerberus-source   文件: StringUtil.java
/**
 * Java function that encodes as string as the JavaScript function:
 * encodeURIComponent() Some characters (", &, #, +) need to be
 *
 * @param stringToEncode string to be encoded
 * @return string encoded
 */
public static String encodeAsJavaScriptURIComponent(String stringToEncode) {
    try {
        ScriptEngineManager factory = new ScriptEngineManager();
        ScriptEngine engine = factory.getEngineByName("JavaScript");
        //characters we special meaning need to be encoded before applying
        //the javascript function
        stringToEncode = stringToEncode.replace("\"", "%22");
        stringToEncode = stringToEncode.replace("&", "%26");
        stringToEncode = stringToEncode.replace("#", "%23");
        stringToEncode = stringToEncode.replace("+", "%2B");
        stringToEncode = engine.eval("encodeURIComponent(\"" + stringToEncode + "\")").toString();
        //the previous special characteres were encoded and additional %25 were added, therefore 
        //we need to restore them and replace the each adicional %25 with the decoded character %
        stringToEncode = stringToEncode.replace("%2522", "%22");
        stringToEncode = stringToEncode.replace("%2526", "%26");
        stringToEncode = stringToEncode.replace("%2523", "%23");
        stringToEncode = stringToEncode.replace("%252B", "%2B");
    } catch (ScriptException ex) {
        LOG.warn(ex);
    }
    return stringToEncode;
}
 
源代码9 项目: openjdk-jdk8u   文件: ScriptEngineSecurityTest.java
@Test
public void securityPackagesTest() {
    if (System.getSecurityManager() == null) {
        // pass vacuously
        return;
    }

    final ScriptEngineManager m = new ScriptEngineManager();
    final ScriptEngine e = m.getEngineByName("nashorn");
    try {
        e.eval("var v = Packages.sun.misc.Unsafe;");
        fail("should have thrown SecurityException");
    } catch (final Exception exp) {
        if (exp instanceof SecurityException) {
            log("got " + exp + " as expected");
        } else {
            fail(exp.getMessage());
        }
    }
}
 
源代码10 项目: openjdk-jdk8u   文件: InvocableTest.java
@Test
public void invokeMethodTest() {
    final ScriptEngineManager m = new ScriptEngineManager();
    final ScriptEngine e = m.getEngineByName("nashorn");

    try {
        e.eval("var Example = function() { this.hello = function() { return 'Hello World!'; };}; myExample = new Example();");
        final Object obj = e.get("myExample");
        final Object res = ((Invocable) e).invokeMethod(obj, "hello");
        assertEquals(res, "Hello World!");
    } catch (final Exception exp) {
        exp.printStackTrace();
        fail(exp.getMessage());
    }
}
 
源代码11 项目: jdk8u_nashorn   文件: ScopeTest.java
@Test
public static void contextOverwriteTest() throws ScriptException {
    final ScriptEngineManager m = new ScriptEngineManager();
    final ScriptEngine e = m.getEngineByName("nashorn");
    final Bindings b = new SimpleBindings();
    b.put("context", "hello");
    b.put("foo", 32);
    final ScriptContext newCtxt = new SimpleScriptContext();
    newCtxt.setBindings(b, ScriptContext.ENGINE_SCOPE);
    e.setContext(newCtxt);
    assertEquals(e.eval("context"), "hello");
    assertEquals(((Number)e.eval("foo")).intValue(), 32);
}
 
源代码12 项目: java-swing-tips   文件: MainPanel.java
private static ScriptEngine createEngine() {
  ScriptEngineManager manager = new ScriptEngineManager();
  ScriptEngine engine = manager.getEngineByName("JavaScript");
  URL url = MainPanel.class.getResource("prettify.js");
  try (Reader r = new BufferedReader(new InputStreamReader(url.openStream(), StandardCharsets.UTF_8))) {
    engine.eval("var window={}, navigator=null;");
    engine.eval(r);
  } catch (IOException | ScriptException ex) {
    ex.printStackTrace();
    Toolkit.getDefaultToolkit().beep();
  }
  return engine;
}
 
源代码13 项目: netbeans   文件: GraalEnginesTest.java
@Test
public void accessPolyglotBindings() throws Exception {
    ScriptEngineManager man = Scripting.createManager();
    ScriptEngine js = man.getEngineByName("GraalVM:js");
    ScriptEngine python = man.getEngineByName("GraalVM:python");

    List<Integer> scopes = js.getContext().getScopes();
    assertEquals(1, scopes.size());
    assertEquals(ScriptContext.GLOBAL_SCOPE, scopes.get(0).intValue());

    Bindings bindings = js.getBindings(ScriptContext.GLOBAL_SCOPE);
    bindings.put("x", 42);

    js.eval("\n"
        + "var x = Polyglot.import('x');\n"
        + "Polyglot.export('y', x);\n"
        + ""
    );

    Object y = python.eval("\n"
        + "import polyglot;\n"
        + "polyglot.import_value('y')"
    );

    assertTrue("Expecting number, but was: " + y, y instanceof Number);
    assertEquals(42, ((Number)y).intValue());
}
 
源代码14 项目: openjdk-8   文件: ScriptEngineTest.java
@Test
public void typeErrorForGlobalThisCallTest() {
    final ScriptEngineManager m = new ScriptEngineManager();
    final ScriptEngine e = m.getEngineByName("nashorn");
    try {
        e.eval("try { this.foo() } catch(e) { if (! (e instanceof TypeError)) throw 'no type error' }");
    } catch (final Exception exp) {
        exp.printStackTrace();
        fail(exp.getMessage());
    }
}
 
源代码15 项目: openjdk-jdk9   文件: ScriptObjectMirrorTest.java
@Test
public void mirrorNewObjectGlobalFunctionTest() throws ScriptException {
    final ScriptEngineManager m = new ScriptEngineManager();
    final ScriptEngine e = m.getEngineByName("nashorn");
    final ScriptEngine e2 = m.getEngineByName("nashorn");

    e.eval("function func() {}");
    e2.put("foo", e.get("func"));
    final ScriptObjectMirror e2global = (ScriptObjectMirror)e2.eval("this");
    final Object newObj = ((ScriptObjectMirror)e2global.getMember("foo")).newObject();
    assertTrue(newObj instanceof ScriptObjectMirror);
}
 
源代码16 项目: TencentKona-8   文件: ScriptEngineTest.java
@Test
public void accessGlobalTest() {
    final ScriptEngineManager m = new ScriptEngineManager();
    final ScriptEngine e = m.getEngineByName("nashorn");

    try {
        e.eval("var x = 'hello'");
        assertEquals(e.get("x"), "hello");
    } catch (final ScriptException exp) {
        exp.printStackTrace();
        fail(exp.getMessage());
    }
}
 
源代码17 项目: qaf   文件: StringUtil.java
/**
 * 
 * @param expression
 * @param context
 * @return
 * @throws ScriptException
 */
@SuppressWarnings("unchecked")
public static <T> T eval(String expression, Map<? extends String, ? extends Object> context)
		throws ScriptException {
	ScriptEngineManager engineManager = new ScriptEngineManager();
	ScriptEngine jsEngine = engineManager.getEngineByName("JavaScript");
	jsEngine.getBindings(ScriptContext.ENGINE_SCOPE).putAll(context);
	return (T) jsEngine.eval(expression);
}
 
源代码18 项目: openjdk-jdk8u-backup   文件: EvalFile.java
public static void main(final String[] args) throws Exception {
    // create a script engine manager
    final ScriptEngineManager factory = new ScriptEngineManager();
    // create JavaScript engine
    final ScriptEngine engine = factory.getEngineByName("nashorn");
    // evaluate JavaScript code from given file - specified by first argument
    engine.eval(new java.io.FileReader(args[0]));
}
 
源代码19 项目: hottub   文件: ScriptVars.java
public static void main(final String[] args) throws Exception {
    final ScriptEngineManager manager = new ScriptEngineManager();
    final ScriptEngine engine = manager.getEngineByName("nashorn");

    final File f = new File("test.txt");
    // expose File object as variable to script
    engine.put("file", f);

    // evaluate a script string. The script accesses "file"
    // variable and calls method on it
    engine.eval("print(file.getAbsolutePath())");
}
 
源代码20 项目: openjdk-jdk8u   文件: ScriptEngineTest.java
@Test
public void factoryTests() {
    final ScriptEngineManager m = new ScriptEngineManager();
    final ScriptEngine e = m.getEngineByName("nashorn");
    assertNotNull(e);

    final ScriptEngineFactory fac = e.getFactory();

    assertEquals(fac.getLanguageName(), "ECMAScript");
    assertEquals(fac.getParameter(ScriptEngine.NAME), "javascript");
    assertEquals(fac.getLanguageVersion(), "ECMA - 262 Edition 5.1");
    assertEquals(fac.getEngineName(), "Oracle Nashorn");
    assertEquals(fac.getOutputStatement("context"), "print(context)");
    assertEquals(fac.getProgram("print('hello')", "print('world')"), "print('hello');print('world');");
    assertEquals(fac.getParameter(ScriptEngine.NAME), "javascript");

    boolean seenJS = false;
    for (final String ext : fac.getExtensions()) {
        if (ext.equals("js")) {
            seenJS = true;
        }
    }

    assertEquals(seenJS, true);
    final String str = fac.getMethodCallSyntax("obj", "foo", "x");
    assertEquals(str, "obj.foo(x)");

    boolean seenNashorn = false, seenJavaScript = false, seenECMAScript = false;
    for (final String name : fac.getNames()) {
        switch (name) {
            case "nashorn": seenNashorn = true; break;
            case "javascript": seenJavaScript = true; break;
            case "ECMAScript": seenECMAScript = true; break;
        default:
            break;
        }
    }

    assertTrue(seenNashorn);
    assertTrue(seenJavaScript);
    assertTrue(seenECMAScript);

    boolean seenAppJS = false, seenAppECMA = false, seenTextJS = false, seenTextECMA = false;
    for (final String mime : fac.getMimeTypes()) {
        switch (mime) {
            case "application/javascript": seenAppJS = true; break;
            case "application/ecmascript": seenAppECMA = true; break;
            case "text/javascript": seenTextJS = true; break;
            case "text/ecmascript": seenTextECMA = true; break;
        default:
            break;
        }
    }

    assertTrue(seenAppJS);
    assertTrue(seenAppECMA);
    assertTrue(seenTextJS);
    assertTrue(seenTextECMA);
}