Java Code Examples for javax.script.CompiledScript

The following are top voted examples for showing how to use javax.script.CompiledScript. These examples are extracted from open source projects. You can vote up the examples you like and your votes will be used in our system to generate more good examples.
Example 1
Project: openjdk-jdk10   File: ScopeTest.java   View source code 7 votes vote down vote up
@Test
public void invokeFunctionWithCustomScriptContextTest() throws Exception {
    final ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");

    // create an engine and a ScriptContext, but don't set it as default
    final ScriptContext scriptContext = new SimpleScriptContext();

    // Set some value in the context
    scriptContext.setAttribute("myString", "foo", ScriptContext.ENGINE_SCOPE);

    // Evaluate script with custom context and get back a function
    final String script = "function (c) { return myString.indexOf(c); }";
    final CompiledScript compiledScript = ((Compilable)engine).compile(script);
    final Object func = compiledScript.eval(scriptContext);

    // Invoked function should be able to see context it was evaluated with
    final Object result = ((Invocable) engine).invokeMethod(func, "call", func, "o", null);
    assertTrue(((Number)result).intValue() == 1);
}
 
Example 2
Project: incubator-netbeans   File: OQLEngineImpl.java   View source code 6 votes vote down vote up
private void init(Snapshot snapshot) throws RuntimeException {
    this.snapshot = snapshot;
    try {
        ScriptEngineManager manager = new ScriptEngineManager();
        engine = manager.getEngineByName("JavaScript"); // NOI18N
        InputStream strm = getInitStream();
        CompiledScript cs = ((Compilable)engine).compile(new InputStreamReader(strm));
        cs.eval();
        Object heap = ((Invocable)engine).invokeFunction("wrapHeapSnapshot", snapshot); // NOI18N
        engine.put("heap", heap); // NOI18N
        engine.put("cancelled", cancelled); // NOI18N
    } catch (Exception ex) {
        LOGGER.log(Level.SEVERE, "Error initializing snapshot", ex); // NOI18N
        throw new RuntimeException(ex);
    }
}
 
Example 3
Project: neoscada   File: SetExternalNameWizard.java   View source code 6 votes vote down vote up
public void setExternalName ( final CompiledScript script ) throws Exception
{
    final CompoundManager manager = new CompoundManager ();

    for ( final ExternalValue v : SelectionHelper.iterable ( this.selection, ExternalValue.class ) )
    {
        final EditingDomain domain = AdapterFactoryEditingDomain.getEditingDomainFor ( v );
        if ( domain == null )
        {
            continue;
        }
        final String name = evalName ( script, v );
        manager.append ( domain, SetCommand.create ( domain, v, ComponentPackage.Literals.EXTERNAL_VALUE__SOURCE_NAME, name ) );
    }

    manager.executeAll ();
}
 
Example 4
Project: neoscada   File: SetExternalNameWizard.java   View source code 6 votes vote down vote up
public static String evalName ( final CompiledScript script, final ExternalValue v ) throws Exception
{
    final SimpleScriptContext ctx = new SimpleScriptContext ();

    ctx.setAttribute ( "item", v, ScriptContext.ENGINE_SCOPE ); //$NON-NLS-1$

    final Object result = Scripts.executeWithClassLoader ( Activator.class.getClassLoader (), new Callable<Object> () {

        @Override
        public Object call () throws Exception
        {
            return script.eval ( ctx );
        }
    } );

    if ( result == null )
    {
        return null;
    }

    return result.toString ();
}
 
Example 5
Project: mynlp   File: Java8Tester.java   View source code 6 votes vote down vote up
public static void main(String args[]) throws Exception {
    ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
    ScriptEngine nashorn = scriptEngineManager.getEngineByName("nashorn");
    String name = "Mahesh";

    System.out.println(nashorn.getClass());

    Integer result = null;
    try {
        nashorn.eval("print('" + name + "')");
        result = (Integer) nashorn.eval("10 + 2");
    } catch (ScriptException e) {
        System.out.println("Error executing script: " + e.getMessage());
    }

    jdk.nashorn.api.scripting.NashornScriptEngine x = (jdk.nashorn.api.scripting.NashornScriptEngine)
            nashorn;

    CompiledScript v = x.compile("1+2");

    System.out.println(v.eval());


}
 
Example 6
Project: VirtualChest   File: VirtualChestItem.java   View source code 6 votes vote down vote up
public static VirtualChestItem deserialize(VirtualChestPlugin plugin, DataView data) throws InvalidDataException
{
    DataView serializedStack = data.getView(ITEM).orElseThrow(() -> new InvalidDataException("Expected Item"));

    String requirementString = data.getString(REQUIREMENTS).orElse("");
    Tuple<String, CompiledScript> requirements = plugin.getScriptManager().prepare(requirementString);

    List<DataView> primaryList = getViewListOrSingletonList(PRIMARY_ACTION, data);
    VirtualChestActionDispatcher primaryAction = new VirtualChestActionDispatcher(primaryList);

    List<DataView> secondaryList = getViewListOrSingletonList(SECONDARY_ACTION, data);
    VirtualChestActionDispatcher secondaryAction = new VirtualChestActionDispatcher(secondaryList);

    List<DataView> primaryShiftList = getViewListOrSingletonList(PRIMARY_SHIFT_ACTION, data);
    List<DataView> primaryShiftListFinal = primaryShiftList.isEmpty() ? primaryList : primaryShiftList;
    VirtualChestActionDispatcher primaryShiftAction = new VirtualChestActionDispatcher(primaryShiftListFinal);

    List<DataView> secondaryShiftList = getViewListOrSingletonList(SECONDARY_SHIFT_ACTION, data);
    List<DataView> secondaryShiftListFinal = secondaryShiftList.isEmpty() ? secondaryList : secondaryShiftList;
    VirtualChestActionDispatcher secondaryShiftAction = new VirtualChestActionDispatcher(secondaryShiftListFinal);

    List<String> ignoredPermissions = data.getStringList(IGNORED_PERMISSIONS).orElse(ImmutableList.of());

    return new VirtualChestItem(plugin, serializedStack, requirements,
            primaryAction, secondaryAction, primaryShiftAction, secondaryShiftAction, ignoredPermissions);
}
 
Example 7
Project: VirtualChest   File: VirtualChestItem.java   View source code 6 votes vote down vote up
private VirtualChestItem(
        VirtualChestPlugin plugin,
        DataView serializedStack,
        Tuple<String, CompiledScript> requirements,
        VirtualChestActionDispatcher primaryAction,
        VirtualChestActionDispatcher secondaryAction,
        VirtualChestActionDispatcher primaryShiftAction,
        VirtualChestActionDispatcher secondaryShiftAction,
        List<String> ignoredPermissions)
{
    this.plugin = plugin;
    this.serializer = new VirtualChestItemStackSerializer(plugin);

    this.serializedStack = serializedStack;
    this.requirements = requirements;
    this.primaryAction = primaryAction;
    this.secondaryAction = secondaryAction;
    this.primaryShiftAction = primaryShiftAction;
    this.secondaryShiftAction = secondaryShiftAction;
    this.ignoredPermissions = ignoredPermissions;
}
 
Example 8
Project: scipio-erp   File: ScriptUtil.java   View source code 6 votes vote down vote up
/**
 * Executes a compiled script and returns the result.
 * 
 * @param script Compiled script.
 * @param functionName Optional function or method to invoke.
 * @param scriptContext Script execution context.
 * @return The script result.
 * @throws IllegalArgumentException
 */
public static Object executeScript(CompiledScript script, String functionName, ScriptContext scriptContext, Object[] args) throws ScriptException, NoSuchMethodException {
    Assert.notNull("script", script, "scriptContext", scriptContext);
    Object result = script.eval(scriptContext);
    if (UtilValidate.isNotEmpty(functionName)) {
        if (Debug.verboseOn()) {
            Debug.logVerbose("Invoking function/method " + functionName, module);
        }
        ScriptEngine engine = script.getEngine();
        try {
            Invocable invocableEngine = (Invocable) engine;
            result = invocableEngine.invokeFunction(functionName, args == null ? EMPTY_ARGS : args);
        } catch (ClassCastException e) {
            throw new ScriptException("Script engine " + engine.getClass().getName() + " does not support function/method invocations");
        }
    }
    return result;
}
 
Example 9
Project: csvsum   File: ScriptEngineTest.java   View source code 6 votes vote down vote up
@Test
public final void test() throws Exception {
	String csvMapperScript = "mapFunction = function(inputHeaders, inputField, inputValue, outputField, line) return inputValue end";
	String simpleScript = "return inputValue";
	CompiledScript compiledScript = (CompiledScript) ((Compilable) scriptEngine).compile(simpleScript);
	Bindings bindings = scriptEngine.createBindings();
	// inputHeaders, inputField, inputValue, outputField, line
	bindings.put("inputHeaders", "");
	bindings.put("inputField", "");
	bindings.put("inputValue", "testreturnvalue");
	bindings.put("outputField", "");
	bindings.put("line", "");
	String result = (String) compiledScript.eval(bindings);
	System.out.println(result);
	assertEquals("testreturnvalue", result);
}
 
Example 10
Project: Rapture   File: BaseRaptureScript.java   View source code 6 votes vote down vote up
@SuppressWarnings("unchecked")
@Override
public List<Object> runMap(CallingContext context, RaptureScript script, RaptureDataContext data, Map<String, Object> parameters) {
    try {
        ScriptEngine engine = engineRef.get();
        CompiledScript cScript = getMapScript(engine, script);
        addStandardContext(context, engine);
        engine.put(PARAMS, parameters);
        engine.put(DATA, JacksonUtil.getHashFromObject(data));
        Kernel.getKernel().getStat().registerRunScript();

        return (List<Object>) cScript.eval();
    } catch (ScriptException e) {
        Kernel.writeAuditEntry(EXCEPTION, 2, e.getMessage());
        throw RaptureExceptionFactory.create(HttpURLConnection.HTTP_INTERNAL_ERROR, "Error running script " + script.getName(), e);

    }
}
 
Example 11
Project: Rapture   File: BaseRaptureScript.java   View source code 6 votes vote down vote up
@Override
public String runOperation(CallingContext context, RaptureScript script, String ctx, Map<String, Object> params) {
    // Get the script from the implementation bit, set up the helpers into
    // the context and execute...
    try {
        ScriptEngine engine = engineRef.get();
        CompiledScript cScript = getOperationScript(engine, script);
        addStandardContext(context, engine);
        engine.put(PARAMS, params);
        engine.put(CTX, ctx);
        Kernel.getKernel().getStat().registerRunScript();
        return JacksonUtil.jsonFromObject(cScript.eval());
    } catch (ScriptException e) {
        Kernel.writeAuditEntry(EXCEPTION, 2, e.getMessage());
        throw RaptureExceptionFactory.create(HttpURLConnection.HTTP_INTERNAL_ERROR, "Error running script " + script.getName(), e);
    }
}
 
Example 12
Project: Rapture   File: BaseRaptureScript.java   View source code 6 votes vote down vote up
@Override
public String runProgram(CallingContext context, IActivityInfo activity, RaptureScript script, Map<String, Object> extraParams) {
    try {
        ScriptEngine engine = engineRef.get();
        CompiledScript cScript = getProgramScript(engine, script);
        addStandardContext(context, engine);
        for (Map.Entry<String, ?> entry : extraParams.entrySet()) {
            engine.put(entry.getKey(), entry.getValue());
        }
        if (Kernel.getKernel().getStat() != null) {
            Kernel.getKernel().getStat().registerRunScript();
        }
        return JacksonUtil.jsonFromObject(cScript.eval());
    } catch (ScriptException e) {
        Kernel.writeAuditEntry(EXCEPTION, 2, e.getMessage());
        throw RaptureExceptionFactory.create(HttpURLConnection.HTTP_INTERNAL_ERROR, "Error running script " + script.getName(), e);
    }
}
 
Example 13
Project: lookaside_java-1.8.0-openjdk   File: ScopeTest.java   View source code 6 votes vote down vote up
@Test
public void invokeFunctionWithCustomScriptContextTest() throws Exception {
    final ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");

    // create an engine and a ScriptContext, but don't set it as default
    ScriptContext scriptContext = new SimpleScriptContext();

    // Set some value in the context
    scriptContext.setAttribute("myString", "foo", ScriptContext.ENGINE_SCOPE);

    // Evaluate script with custom context and get back a function
    final String script = "function (c) { return myString.indexOf(c); }";
    CompiledScript compiledScript = ((Compilable)engine).compile(script);
    Object func = compiledScript.eval(scriptContext);

    // Invoked function should be able to see context it was evaluated with
    Object result = ((Invocable) engine).invokeMethod(func, "call", func, "o", null);
    assertTrue(((Number)result).intValue() == 1);
}
 
Example 14
Project: jdk8u_nashorn   File: ScopeTest.java   View source code 6 votes vote down vote up
@Test
public void invokeFunctionWithCustomScriptContextTest() throws Exception {
    final ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");

    // create an engine and a ScriptContext, but don't set it as default
    ScriptContext scriptContext = new SimpleScriptContext();

    // Set some value in the context
    scriptContext.setAttribute("myString", "foo", ScriptContext.ENGINE_SCOPE);

    // Evaluate script with custom context and get back a function
    final String script = "function (c) { return myString.indexOf(c); }";
    CompiledScript compiledScript = ((Compilable)engine).compile(script);
    Object func = compiledScript.eval(scriptContext);

    // Invoked function should be able to see context it was evaluated with
    Object result = ((Invocable) engine).invokeMethod(func, "call", func, "o", null);
    assertTrue(((Number)result).intValue() == 1);
}
 
Example 15
Project: step   File: Activator.java   View source code 6 votes vote down vote up
public static Boolean evaluateActivationExpression(Bindings bindings, Expression activationExpression) {
	Boolean expressionResult; 
	if(activationExpression!=null) {
		CompiledScript script = activationExpression.compiledScript;
		if(script!=null) {
			try {
				Object evaluationResult = script.eval(bindings);
				if(evaluationResult instanceof Boolean) {
					expressionResult = (Boolean) evaluationResult;
				} else {
					expressionResult = false;
				}
			} catch (ScriptException e) {
				expressionResult = false;
			}
		} else {
			expressionResult = true;
		}
	} else {
		expressionResult = true;
	}
	return expressionResult;
}
 
Example 16
Project: oval   File: ExpressionLanguageScriptEngineImpl.java   View source code 6 votes vote down vote up
public Object evaluate(final String expression, final Map<String, ?> values) throws ExpressionEvaluationException {
    LOG.debug("Evaluating JavaScript expression: {1}", expression);
    try {
        final Bindings scope = engine.createBindings();
        for (final Entry<String, ?> entry : values.entrySet()) {
            scope.put(entry.getKey(), entry.getValue());
        }

        if (compilable != null) {
            CompiledScript compiled = compiledCache.get(expression);
            if (compiled == null) {
                compiled = compilable.compile(expression);
                compiledCache.put(expression, compiled);
            }
            return compiled.eval(scope);
        }
        return engine.eval(expression, scope);
    } catch (final ScriptException ex) {
        throw new ExpressionEvaluationException("Evaluating JavaScript expression failed: " + expression, ex);
    }
}
 
Example 17
Project: openhab-hdl   File: EBusTelegramParser.java   View source code 6 votes vote down vote up
/**
 * Evaluates the compiled script of a entry.
 * @param entry The configuration entry to evaluate
 * @param scopeValues All known values for script scope
 * @return The computed value
 * @throws ScriptException
 */
private Object evaluateScript(Entry<String, Map<String, Object>> entry, Map<String, Object> scopeValues) throws ScriptException {
	
	Object value = null;
	
	// executes compiled script
	if(entry.getValue().containsKey("cscript")) {
		CompiledScript cscript = (CompiledScript) entry.getValue().get("cscript");

		// Add global variables thisValue and keyName to JavaScript context
		Bindings bindings = cscript.getEngine().createBindings();
		bindings.putAll(scopeValues);
		value = cscript.eval(bindings);
	}

	// try to convert the returned value to BigDecimal
	value = ObjectUtils.defaultIfNull(
			NumberUtils.toBigDecimal(value), value);

	// round to two digits, maybe not optimal for any result
	if(value instanceof BigDecimal) {
		((BigDecimal)value).setScale(2, BigDecimal.ROUND_HALF_UP);
	}
	
	return value;
}
 
Example 18
Project: camunda-engine-dmn   File: ExpressionCachingTest.java   View source code 6 votes vote down vote up
@Test
public void testCompiledScriptCaching() throws ScriptException {

  // given
  DmnExpressionImpl expression = createExpression("1 > 2", "groovy");

  // when
  expressionEvaluationHandler.evaluateExpression("groovy", expression, emptyVariableContext());

  // then
  InOrder inOrder = inOrder(expression, scriptEngineSpy);
  inOrder.verify(expression, atLeastOnce()).getCachedCompiledScript();
  inOrder.verify(compilableSpy, times(1)).compile(anyString());
  inOrder.verify(expression, times(1)).cacheCompiledScript(any(CompiledScript.class));

  // when (2)
  expressionEvaluationHandler.evaluateExpression("groovy", expression, emptyVariableContext());

  // then (2)
  inOrder.verify(expression, atLeastOnce()).getCachedCompiledScript();
  inOrder.verify(compilableSpy, times(0)).compile(anyString());
}
 
Example 19
Project: teiid   File: ObjectExecution.java   View source code 6 votes vote down vote up
@Override
public List<Object> next() throws TranslatorException,
		DataNotAvailableException {
	// create and return one row at a time for your resultset.
	if (resultsIt.hasNext()) {
		List<Object> r = new ArrayList<Object>(projects.size());
		Object o = resultsIt.next();
		sc.setAttribute(OBJECT_NAME, o, ScriptContext.ENGINE_SCOPE);
		for (CompiledScript cs : this.projects) {
			if (cs == null) {
				r.add(o);
				continue;
			}
			try {
				r.add(cs.eval(sc));
			} catch (ScriptException e) {
				throw new TranslatorException(e);
			}
		}
		return r;
	}
	return null;
}
 
Example 20
Project: dynkt   File: KotlinScriptEngineTest.java   View source code 6 votes vote down vote up
@Test
public void testCompileFromFile2() throws FileNotFoundException, ScriptException {
	InputStreamReader code = getStream("nameread.kt");
	CompiledScript result = ((Compilable) engine).compile(code);
	assertNotNull(result);
	// First time
	Bindings bnd1 = engine.createBindings();
	StringWriter ret1;
	bnd1.put("out", new PrintWriter(ret1 = new StringWriter()));
	assertNotNull(result.eval(bnd1));
	assertEquals("Provide a name", ret1.toString().trim());
	// Second time
	Bindings bnd2 = engine.createBindings();
	bnd2.put(ScriptEngine.ARGV, new String[] { "Amadeus" });
	StringWriter ret2;
	bnd2.put("out", new PrintWriter(ret2 = new StringWriter()));
	assertNotNull(result.eval(bnd2));
	assertEquals("Hello, Amadeus!", ret2.toString().trim());
}
 
Example 21
Project: AutoLoadCache   File: JavaScriptParser.java   View source code 6 votes vote down vote up
@SuppressWarnings("unchecked")
@Override
public <T> T getElValue(String exp, Object target, Object[] arguments, Object retVal, boolean hasRetVal, Class<T> valueType) throws Exception {
    Bindings bindings=new SimpleBindings();
    bindings.put(TARGET, target);
    bindings.put(ARGS, arguments);
    if(hasRetVal) {
        bindings.put(RET_VAL, retVal);
    }
    CompiledScript script=expCache.get(exp);
    if(null != script) {
        return (T)script.eval(bindings);
    }
    if(engine instanceof Compilable) {
        Compilable compEngine=(Compilable)engine;
        script=compEngine.compile(funcs + exp);
        expCache.put(exp, script);
        return (T)script.eval(bindings);
    } else {
        return (T)engine.eval(funcs + exp, bindings);
    }
}
 
Example 22
Project: jsen-js   File: JavaScriptEngine.java   View source code 6 votes vote down vote up
@Override
public CompiledScript compile(Reader script) throws ScriptException {
	CompiledScript compiledScript = null;
	
	Context cx = enterContext();

	try {
		String filename = getFilenameFromReader(script);
		Script rhinoScript = cx.compileReader(script, filename, 1, null);
		compiledScript = new CompiledJavaScript(this, rhinoScript);
	} catch (Exception e) {
		throwWrappedScriptException(e);
	} finally {
		exitContext();
	}
	
	return compiledScript;
}
 
Example 23
Project: elpi   File: ScriptUtil.java   View source code 6 votes vote down vote up
/**
 * Executes a compiled script and returns the result.
 * 
 * @param script Compiled script.
 * @param functionName Optional function or method to invoke.
 * @param scriptContext Script execution context.
 * @return The script result.
 * @throws IllegalArgumentException
 */
public static Object executeScript(CompiledScript script, String functionName, ScriptContext scriptContext, Object[] args) throws ScriptException, NoSuchMethodException {
    Assert.notNull("script", script, "scriptContext", scriptContext);
    Object result = script.eval(scriptContext);
    if (UtilValidate.isNotEmpty(functionName)) {
        if (Debug.verboseOn()) {
            Debug.logVerbose("Invoking function/method " + functionName, module);
        }
        ScriptEngine engine = script.getEngine();
        try {
            Invocable invocableEngine = (Invocable) engine;
            result = invocableEngine.invokeFunction(functionName, args == null ? EMPTY_ARGS : args);
        } catch (ClassCastException e) {
            throw new ScriptException("Script engine " + engine.getClass().getName() + " does not support function/method invocations");
        }
    }
    return result;
}
 
Example 24
Project: ef-orm   File: RhinoScriptEngine.java   View source code 6 votes vote down vote up
@SuppressWarnings("deprecation")
public CompiledScript compile(java.io.Reader script) throws ScriptException {
       CompiledScript ret = null;
       Context cx = enterContext();
       
       try {
           String fileName = (String) get(ScriptEngine.FILENAME);
           if (fileName == null) {
               fileName = "<Unknown Source>";
           }
           
           Scriptable scope = getRuntimeScope(context);
           Script scr = cx.compileReader(scope, script, fileName, 1, null);
           ret = new RhinoCompiledScript(this, scr);
       } catch (Exception e) {
           throw new ScriptException(e);
       } finally {
       	Context.exit();
       }
       return ret;
   }
 
Example 25
Project: elasticsearch-lang-javascript-nashorn   File: NashornTests.java   View source code 6 votes vote down vote up
@Test
public void intArrayLengthTest() throws ScriptException {
    Map<String, Object> vars = new HashMap<String, Object>();
    Integer[] l = new Integer[] { 1,2,3 };
    vars.put("l", l);
    String script = "l.length";
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("nashorn");
    ScriptContext context = engine.getContext();
    Bindings bindings = context.getBindings(ScriptContext.ENGINE_SCOPE);
    bindings.putAll(vars);
    Compilable compilable = (Compilable)engine;
    CompiledScript compiledScript = compilable.compile(script);
    Object o = compiledScript.eval();
    assertThat(((Number) o).intValue(), equalTo(3));
}
 
Example 26
Project: elasticsearch-lang-javascript-nashorn   File: NashornTests.java   View source code 6 votes vote down vote up
@Test
public void objectArrayTest() throws ScriptException {
    Map<String, Object> vars = new HashMap<String, Object>();
    final Map<String, Object> obj2 = new HashMap<String,Object>() {{
        put("prop2", "value2");
    }};
    final Map<String, Object> obj1 = new HashMap<String,Object>() {{
        put("prop1", "value1");
        put("obj2", obj2);
    }};
    vars.put("l", new Object[] { "1", "2", "3", obj1 });
    String script = "l.length";
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("nashorn");
    Bindings bindings = engine.getBindings(ScriptContext.ENGINE_SCOPE);
    bindings.putAll(vars);
    Compilable compilable = (Compilable)engine;
    CompiledScript compiledScript = compilable.compile(script);
    Object o = compiledScript.eval(bindings);
    assertThat(((Number) o).intValue(), equalTo(4));
}
 
Example 27
Project: o3erp   File: ScriptUtil.java   View source code 6 votes vote down vote up
/**
 * Executes a compiled script and returns the result.
 * 
 * @param script Compiled script.
 * @param functionName Optional function or method to invoke.
 * @param scriptContext Script execution context.
 * @return The script result.
 * @throws IllegalArgumentException
 */
public static Object executeScript(CompiledScript script, String functionName, ScriptContext scriptContext, Object[] args) throws ScriptException, NoSuchMethodException {
    Assert.notNull("script", script, "scriptContext", scriptContext);
    Object result = script.eval(scriptContext);
    if (UtilValidate.isNotEmpty(functionName)) {
        if (Debug.verboseOn()) {
            Debug.logVerbose("Invoking function/method " + functionName, module);
        }
        ScriptEngine engine = script.getEngine();
        try {
            Invocable invocableEngine = (Invocable) engine;
            result = invocableEngine.invokeFunction(functionName, args == null ? EMPTY_ARGS : args);
        } catch (ClassCastException e) {
            throw new ScriptException("Script engine " + engine.getClass().getName() + " does not support function/method invocations");
        }
    }
    return result;
}
 
Example 28
Project: gameserver   File: V8EngineTest.java   View source code 6 votes vote down vote up
public void testInvoke() throws Exception {
	eng = new ScriptEngineManager().getEngineByName("jav8");
	Compilable compiler = (Compilable) this.eng;
	CompiledScript script = compiler.compile(calcFunction);
	
	int max = 100000;
	Bindings binding = this.eng.getBindings(ScriptContext.GLOBAL_SCOPE);
	binding.put("num", 3);
	Object r = script.eval(binding);
	System.out.println(r);
	long startM = System.currentTimeMillis();
	for ( int i=0; i<max; i++ ) {
		script.eval(binding);
	}
	long endM = System.currentTimeMillis();
	System.out.println(" V8 engine loop " + max + ":" + (endM-startM));
}
 
Example 29
Project: OLD-OpenJDK8   File: NashornScriptEngine.java   View source code 6 votes vote down vote up
private CompiledScript asCompiledScript(final Source source) throws ScriptException {
    final ScriptFunction func = compileImpl(source, context);
    return new CompiledScript() {
        @Override
        public Object eval(final ScriptContext ctxt) throws ScriptException {
            final ScriptObject globalObject = getNashornGlobalFrom(ctxt);
            // Are we running the script in the correct global?
            if (func.getScope() == globalObject) {
                return evalImpl(func, ctxt, globalObject);
            }
            // ScriptContext with a different global. Compile again!
            // Note that we may still hit per-global compilation cache.
            return evalImpl(compileImpl(source, ctxt), ctxt, globalObject);
        }
        @Override
        public ScriptEngine getEngine() {
            return NashornScriptEngine.this;
        }
    };
}
 
Example 30
Project: fixprotocol-test-suite   File: ScriptRunner.java   View source code 6 votes vote down vote up
public static void main(String[] args) throws Exception {
    ScriptEngineManager factory = new ScriptEngineManager();
    ScriptEngine engine = factory.getEngineByName("JavaScript");

    engine.eval(new FileReader("src/main/javascript/Example.js"));

    Compilable compilingEngine = (Compilable) engine;
    CompiledScript script = compilingEngine.compile(new FileReader(
            "src/main/javascript/Function.js"));

    Bindings bindings = engine.getBindings(ScriptContext.ENGINE_SCOPE);
    bindings.put("date", new Date());
    bindings.put("out", System.out);
    for (Map.Entry me : bindings.entrySet()) {
        System.out.printf("%s: %s\n", me.getKey(),
                String.valueOf(me.getValue()));
    }
    script.eval(bindings);

    Invocable invocable = (Invocable) script.getEngine();
    invocable.invokeFunction("sayhello", "Jose");
}
 
Example 31
Project: nashorn-backport   File: NashornScriptEngine.java   View source code 6 votes vote down vote up
private CompiledScript asCompiledScript(final Source source) throws ScriptException {
    final ScriptFunction func = compileImpl(source, context);
    return new CompiledScript() {
        @Override
        public Object eval(final ScriptContext ctxt) throws ScriptException {
            final ScriptObject global = getNashornGlobalFrom(ctxt);
            // Are we running the script in the correct global?
            if (func.getScope() == global) {
                return evalImpl(func, ctxt, global);
            } else {
                // ScriptContext with a different global. Compile again!
                // Note that we may still hit per-global compilation cache.
                return evalImpl(compileImpl(source, ctxt), ctxt, global);
            }
        }
        @Override
        public ScriptEngine getEngine() {
            return NashornScriptEngine.this;
        }
    };
}
 
Example 32
Project: OC-LuaJ   File: LuaScriptEngine.java   View source code 6 votes vote down vote up
@Override
public CompiledScript compile(Reader script) throws ScriptException {
	try {
		InputStream is = new Utf8Encoder(script);
		try {
			final Globals g = context.globals;
			final LuaFunction f = g.load(script, "script").checkfunction();
			return new LuajCompiledScript(f, g);
		} catch (LuaError lee) {
			throw new ScriptException(lee.getMessage());
		} finally {
			is.close();
		}
	} catch (Exception e) {
		throw new ScriptException("eval threw " + e.toString());
	}
}
 
Example 33
Project: nashorn   File: NashornScriptEngine.java   View source code 6 votes vote down vote up
private CompiledScript asCompiledScript(final Source source) throws ScriptException {
    final ScriptFunction func = compileImpl(source, context);
    return new CompiledScript() {
        @Override
        public Object eval(final ScriptContext ctxt) throws ScriptException {
            final ScriptObject global = getNashornGlobalFrom(ctxt);
            // Are we running the script in the correct global?
            if (func.getScope() == global) {
                return evalImpl(func, ctxt, global);
            } else {
                // ScriptContext with a different global. Compile again!
                // Note that we may still hit per-global compilation cache.
                return evalImpl(compileImpl(source, ctxt), ctxt, global);
            }
        }
        @Override
        public ScriptEngine getEngine() {
            return NashornScriptEngine.this;
        }
    };
}
 
Example 34
Project: ScriptBox   File: WindowJavaScriptEngine.java   View source code 6 votes vote down vote up
@Override
public CompiledScript compile(Reader script) throws ScriptException {
	CompiledScript compiledScript = null;
	
	Context cx = enterContext();

	try {
		String filename = getFilenameFromReader(script);
		Script rhinoScript = cx.compileReader(script, filename, 1, null);
		compiledScript = new CompiledJavaScript(this, rhinoScript);
	} catch (Exception e) {
		throwWrappedScriptException(e);
	} finally {
		exitContext();
	}
	
	return compiledScript;
}
 
Example 35
Project: openhab1-addons   File: EBusTelegramParser.java   View source code 6 votes vote down vote up
/**
 * Evaluates the compiled script of a entry.
 * 
 * @param entry The configuration entry to evaluate
 * @param scopeValues All known values for script scope
 * @return The computed value
 * @throws ScriptException
 */
private Object evaluateScript(Entry<String, TelegramValue> entry, Map<String, Object> scopeValues)
        throws ScriptException {

    Object value = null;

    // executes compiled script
    if (entry.getValue().getCsript() != null) {
        CompiledScript cscript = entry.getValue().getCsript();

        // Add global variables thisValue and keyName to JavaScript context
        Bindings bindings = cscript.getEngine().createBindings();
        bindings.putAll(scopeValues);
        value = cscript.eval(bindings);
    }

    // try to convert the returned value to BigDecimal
    value = ObjectUtils.defaultIfNull(NumberUtils.toBigDecimal(value), value);

    // round to two digits, maybe not optimal for any result
    if (value instanceof BigDecimal) {
        ((BigDecimal) value).setScale(2, BigDecimal.ROUND_HALF_UP);
    }

    return value;
}
 
Example 36
Project: jvarkit   File: XmlFilterVariantFactory.java   View source code 6 votes vote down vote up
private JSPredigate compileJSPredigate(final String jsExpr) {
final javax.script.ScriptEngineManager manager = new javax.script.ScriptEngineManager();
final javax.script.ScriptEngine engine = manager.getEngineByName("js");
if(engine==null)
	{
	throw new JvarkitException.JavaScriptEngineNotFound();
	}
final javax.script.Compilable compilingEngine = (javax.script.Compilable)engine;
try {
	CompiledScript compiled = compilingEngine.compile(jsExpr);
	return new JSPredigate(compiled);
	}
catch(final Exception err)
	{
	throw new RuntimeException(err);
	}
}
 
Example 37
Project: logging-log4j2   File: ScriptManager.java   View source code 6 votes vote down vote up
public MainScriptRunner(final ScriptEngine scriptEngine, final AbstractScript script) {
    this.script = script;
    this.scriptEngine = scriptEngine;
    CompiledScript compiled = null;
    if (scriptEngine instanceof Compilable) {
        logger.debug("Script {} is compilable", script.getName());
        compiled = AccessController.doPrivileged(new PrivilegedAction<CompiledScript>() {
            @Override
            public CompiledScript run() {
                try {
                    return ((Compilable) scriptEngine).compile(script.getScriptText());
                } catch (final Throwable ex) {
                    /*
                     * ScriptException is what really should be caught here. However, beanshell's ScriptEngine
                     * implements Compilable but then throws Error when the compile method is called!
                     */
                    logger.warn("Error compiling script", ex);
                    return null;
                }
            }
        });
    }
    compiledScript = compiled;
}
 
Example 38
Project: L2jBrasil   File: L2ScriptEngineManager.java   View source code 5 votes vote down vote up
public Object eval(ScriptEngine engine, String script, ScriptContext context) throws ScriptException
{
	if (engine instanceof Compilable && ATTEMPT_COMPILATION)
	{
		Compilable eng = (Compilable) engine;
		CompiledScript cs = eng.compile(script);
		return context != null ? cs.eval(context) : cs.eval();
	} else
		return context != null ? engine.eval(script, context) : engine.eval(script);
}
 
Example 39
Project: L2jBrasil   File: CompiledScriptCache.java   View source code 5 votes vote down vote up
public CompiledScript loadCompiledScript(ScriptEngine engine, File file) throws FileNotFoundException, ScriptException
{
	int len = L2ScriptEngineManager.SCRIPT_FOLDER.getPath().length() + 1;
	String relativeName = file.getPath().substring(len);
	CompiledScriptHolder csh = _compiledScriptCache.get(relativeName);
	if (csh != null && csh.matches(file))
	{
		if (Config.DEBUG)
			LOG.fine("Reusing cached compiled script: " + file);
		return csh.getCompiledScript();
	}
	else
	{
		if (Config.DEBUG)
			LOG.info("Compiling script: " + file);
		Compilable eng = (Compilable) engine;
		BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
		// TODO lock file
		CompiledScript cs = eng.compile(reader);
		if (cs instanceof Serializable)
			synchronized (_compiledScriptCache)
			{
				_compiledScriptCache.put(relativeName, new CompiledScriptHolder(cs, file));
				_modified = true;
			}
		return cs;
	}
}
 
Example 40
Project: L2jBrasil   File: CompiledScriptHolder.java   View source code 5 votes vote down vote up
/**
 * @param compiledScript
 * @param lastModified
 * @param size
 */
public CompiledScriptHolder(CompiledScript compiledScript, long lastModified, long size)
{
	_compiledScript = compiledScript;
	_lastModified = lastModified;
	_size = size;
}