@Override public CompiledScript compile(Reader script) throws ScriptException { return ((Compilable)engine).compile(script); }
@Override public CompiledScript compile(String script) throws ScriptException { return ((Compilable)engine).compile(script); }
@Override public CompiledScript compile(Reader script) throws ScriptException { return ((Compilable)engine).compile(script); }
@Override public CompiledScript compile(String script) throws ScriptException { return ((Compilable)engine).compile(script); }
@Override public CompiledScript compile(Reader script) throws ScriptException { return ((Compilable) engine).compile(script); }
@Override public CompiledScript compile(String script) throws ScriptException { return ((Compilable) engine).compile(script); }
@Override public CompiledScript compile(String script) throws ScriptException { return ((Compilable) engine).compile(script); }
@Override public CompiledScript compile(Reader script) throws ScriptException { return ((Compilable) engine).compile(script); }
/** * 编译脚本 * * @param engine 引擎 * @param script 脚本内容 * @return {@link CompiledScript} * @throws ScriptException 脚本异常 */ public static CompiledScript compile(ScriptEngine engine, String script) throws ScriptException { if (engine instanceof Compilable) { Compilable compEngine = (Compilable) engine; return compEngine.compile(script); } return null; } }
/** * 编译脚本 * * @param engine 引擎 * @param script 脚本内容 * @return {@link CompiledScript} * @throws ScriptException 脚本异常 */ public static CompiledScript compile(ScriptEngine engine, String script) throws ScriptException { if (engine instanceof Compilable) { Compilable compEngine = (Compilable) engine; return compEngine.compile(script); } return null; } }
@Override public Object compile(String expression, Map<String, Object> parameters) { if (scriptEngine instanceof Compilable) { logger.debug("Compiling expression {} with engine {}", expression, scriptEngine); try { return ((Compilable) scriptEngine).compile(expression); } catch (ScriptException e) { throw new RuntimeException("Error when compiling script", e); } } logger.debug("Compilation not supported on engine {}", scriptEngine); return expression; }
private SelectorFunction compileSelectorFunction() { final ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript"); try { ((Compilable) engine).compile("var apply = " + function).eval(); return ((Invocable) engine).getInterface(SelectorFunction.class); } catch (ScriptException e) { throw new RuntimeException(e); } }
private void loadJavaScriptSupport(Compilable compilable) throws IOException, ScriptException { // 加载 compilable.compile( IOUtils.toString( GaStringUtils.class.getResourceAsStream("/com/github/ompc/greys/core/res/javascript/gblocking.js"), Charset.forName("UTF-8") ) ).eval(); }
private void loadGreysModule(Compilable compilable) throws IOException, ScriptException { // 加载greys-module.js compilable.compile( IOUtils.toString( GaStringUtils.class.getResourceAsStream("/com/github/ompc/greys/core/res/javascript/greys-module.js"), Charset.forName("UTF-8") ) ).eval(); }
private SelectorFunction compileSelectorFunction() { final ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript"); try { ((Compilable) engine).compile("var apply = " + function).eval(); return ((Invocable) engine).getInterface(SelectorFunction.class); } catch (ScriptException e) { throw Throwables.propagate(e); } }
public static CompiledScript compile(String js) throws ScriptException { ScriptEngineManager factory = new ScriptEngineManager(); ScriptEngine engine = factory.getEngineByName("JavaScript"); U.must(engine instanceof Compilable, "The JavaScript engine cannot compile!"); Compilable compilable = (Compilable) engine; return compilable.compile(js); }
/** * Get the compiled script. * * @param packageAndClassName the package and class name * @return the compiled script */ public CompiledScript getCompiledScript(String packageAndClassName) throws ScriptException { CompiledScript compiledScript = compiledScripts.get(packageAndClassName); if (compiledScript == null) { String source = sources.get(packageAndClassName); final String lang; if (isJavascriptSource(source)) { lang = "javascript"; } else if (isRubySource(source)) { lang = "ruby"; } else { throw new IllegalStateException("Unknown language for " + source); } final Compilable jsEngine = (Compilable) new ScriptEngineManager().getEngineByName(lang); compiledScript = jsEngine.compile(source); compiledScripts.put(packageAndClassName, compiledScript); } return compiledScript; }
@Override public <T> List<Invoker<T>> route(List<Invoker<T>> invokers, URL url, Invocation invocation) throws RpcException { try { Bindings bindings = createBindings(invokers, invocation); Compilable compilable = (Compilable) engine; CompiledScript function = compilable.compile(rule); return getRoutedInvokers(function.eval(bindings)); } catch (ScriptException e) { logger.error("route error, rule has been ignored. rule: " + rule + ", method:" + invocation.getMethodName() + ", url: " + RpcContext.getContext().getUrl(), e); return invokers; } }
@Override public <T> List<Invoker<T>> route(List<Invoker<T>> invokers, URL url, Invocation invocation) throws RpcException { try { Bindings bindings = createBindings(invokers, invocation); Compilable compilable = (Compilable) engine; CompiledScript function = compilable.compile(rule); return getRoutedInvokers(function.eval(bindings)); } catch (ScriptException e) { logger.error("route error, rule has been ignored. rule: " + rule + ", method:" + invocation.getMethodName() + ", url: " + RpcContext.getContext().getUrl(), e); return invokers; } }
@Test public void testCompilable() throws Exception { ScriptEngineManager factory = new ScriptEngineManager(); ScriptEngine engine = factory.getEngineByName("jphp"); CompiledScript script = ((Compilable)engine).compile("<?php return $foo;"); engine.put("foo", "first"); Assert.assertEquals("first", script.eval().toString()); engine.put("foo", "second"); Assert.assertEquals("second", script.eval().toString()); } }