public CompiledScript compile(String script) throws ScriptException { ValueExpression expr = parse(script, context); return new JuelCompiledScript(expr); }
public Bindings createBindings(VariableScope variableScope, boolean storeScriptVariables) { return new ScriptBindings(createResolvers(variableScope), variableScope, storeScriptVariables); }
public ScriptEngineFactory getFactory() { synchronized (this) { if (scriptEngineFactory == null) { scriptEngineFactory = new JuelScriptEngineFactory(); } } return scriptEngineFactory; }
public void initScriptingEngines() { if (resolverFactories == null) { resolverFactories = new ArrayList<ResolverFactory>(); resolverFactories.add(new VariableScopeResolverFactory()); resolverFactories.add(new BeansResolverFactory()); } if (scriptingEngines == null) { scriptingEngines = new ScriptingEngines(new ScriptBindingsFactory(this, resolverFactories)); } }
public Object evaluate(String script, String language, VariableScope variableScope) { return evaluate(script, language, createBindings(variableScope)); }
public Object eval(String script, ScriptContext scriptContext) throws ScriptException { ValueExpression expr = parse(script, scriptContext); return evaluateExpression(expr, scriptContext); }
public Object get(Object key) { for (Resolver scriptResolver : scriptResolvers) { if (scriptResolver.containsKey(key)) { return scriptResolver.get(key); } } return defaultBindings.get(key); }
/** override to build a spring aware ScriptingEngines */ protected Bindings createBindings(VariableScope variableScope) { return scriptBindingsFactory.createBindings(variableScope); }
public Resolver createResolver(ProcessEngineConfigurationImpl processEngineConfiguration, VariableScope variableScope) { if (variableScope != null) { return new VariableScopeResolver(processEngineConfiguration, variableScope); } return null; }
public Object eval(ScriptContext ctx) throws ScriptException { return evaluateExpression(valueExpression, ctx); } }
public ScriptEngine getScriptEngine() { return new JuelScriptEngine(this); }
protected List<Resolver> createResolvers(VariableScope variableScope) { List<Resolver> scriptResolvers = new ArrayList<Resolver>(); for (ResolverFactory scriptResolverFactory : resolverFactories) { Resolver resolver = scriptResolverFactory.createResolver(processEngineConfiguration, variableScope); if (resolver != null) { scriptResolvers.add(resolver); } } return scriptResolvers; }
@Override public ValueExpression setVariable(String name, ValueExpression value) { ValueExpression previousValue = resolveVariable(name); scriptContext.setAttribute(name, value, ScriptContext.ENGINE_SCOPE); return previousValue; } }
public boolean containsKey(Object key) { for (Resolver scriptResolver : scriptResolvers) { if (scriptResolver.containsKey(key)) { return true; } } return defaultBindings.containsKey(key); }
@Override public Method resolveFunction(String prefix, String localName) { String functionName = getFullFunctionName(prefix, localName); int scope = scriptContext.getAttributesScope(functionName); if (scope != -1) { // Methods are added as variables in the ScriptScope Object attributeValue = scriptContext.getAttribute(functionName); return (attributeValue instanceof Method) ? (Method) attributeValue : null; } else { return null; } } }
public Object evaluate(String script, String language, VariableScope variableScope, boolean storeScriptVariables) { return evaluate(script, language, createBindings(variableScope, storeScriptVariables)); }
public Bindings createBindings(VariableScope variableScope) { return new ScriptBindings(createResolvers(variableScope), variableScope); }
/** override to build a spring aware ScriptingEngines */ protected Bindings createBindings(VariableScope variableScope, boolean storeScriptVariables) { return scriptBindingsFactory.createBindings(variableScope, storeScriptVariables); }