Search in sources :

Example 1 with ELContext

use of org.activiti.engine.impl.javax.el.ELContext in project Activiti by Activiti.

the class JuelScriptEngine method createElContext.

private ELContext createElContext(final ScriptContext scriptCtx) {
    // Check if the ELContext is already stored on the ScriptContext
    Object existingELCtx = scriptCtx.getAttribute("elcontext");
    if (existingELCtx instanceof ELContext) {
        return (ELContext) existingELCtx;
    }
    scriptCtx.setAttribute("context", scriptCtx, ScriptContext.ENGINE_SCOPE);
    // Built-in function are added to ScriptCtx
    scriptCtx.setAttribute("out:print", getPrintMethod(), ScriptContext.ENGINE_SCOPE);
    SecurityManager securityManager = System.getSecurityManager();
    if (securityManager == null) {
        scriptCtx.setAttribute("lang:import", getImportMethod(), ScriptContext.ENGINE_SCOPE);
    }
    ELContext elContext = new ELContext() {

        ELResolver resolver = createElResolver();

        VariableMapper varMapper = new ScriptContextVariableMapper(scriptCtx);

        FunctionMapper funcMapper = new ScriptContextFunctionMapper(scriptCtx);

        @Override
        public ELResolver getELResolver() {
            return resolver;
        }

        @Override
        public VariableMapper getVariableMapper() {
            return varMapper;
        }

        @Override
        public FunctionMapper getFunctionMapper() {
            return funcMapper;
        }
    };
    // Store the elcontext in the scriptContext to be able to reuse
    scriptCtx.setAttribute("elcontext", elContext, ScriptContext.ENGINE_SCOPE);
    return elContext;
}
Also used : ELContext(org.activiti.engine.impl.javax.el.ELContext) MapELResolver(org.activiti.engine.impl.javax.el.MapELResolver) ArrayELResolver(org.activiti.engine.impl.javax.el.ArrayELResolver) BeanELResolver(org.activiti.engine.impl.javax.el.BeanELResolver) ResourceBundleELResolver(org.activiti.engine.impl.javax.el.ResourceBundleELResolver) DynamicBeanPropertyELResolver(org.activiti.engine.impl.javax.el.DynamicBeanPropertyELResolver) ELResolver(org.activiti.engine.impl.javax.el.ELResolver) JsonNodeELResolver(org.activiti.engine.impl.javax.el.JsonNodeELResolver) ListELResolver(org.activiti.engine.impl.javax.el.ListELResolver) CompositeELResolver(org.activiti.engine.impl.javax.el.CompositeELResolver) VariableMapper(org.activiti.engine.impl.javax.el.VariableMapper) FunctionMapper(org.activiti.engine.impl.javax.el.FunctionMapper)

Example 2 with ELContext

use of org.activiti.engine.impl.javax.el.ELContext in project Activiti by Activiti.

the class JuelExpression method setValue.

public void setValue(Object value, VariableScope variableScope) {
    ELContext elContext = Context.getProcessEngineConfiguration().getExpressionManager().getElContext(variableScope);
    try {
        ExpressionSetInvocation invocation = new ExpressionSetInvocation(valueExpression, elContext, value);
        Context.getProcessEngineConfiguration().getDelegateInterceptor().handleInvocation(invocation);
    } catch (Exception e) {
        throw new ActivitiException("Error while evaluating expression: " + expressionText, e);
    }
}
Also used : ActivitiException(org.activiti.engine.ActivitiException) ELContext(org.activiti.engine.impl.javax.el.ELContext) ExpressionSetInvocation(org.activiti.engine.impl.delegate.ExpressionSetInvocation) ActivitiException(org.activiti.engine.ActivitiException) PropertyNotFoundException(org.activiti.engine.impl.javax.el.PropertyNotFoundException) MethodNotFoundException(org.activiti.engine.impl.javax.el.MethodNotFoundException) ELException(org.activiti.engine.impl.javax.el.ELException)

Example 3 with ELContext

use of org.activiti.engine.impl.javax.el.ELContext in project Activiti by Activiti.

the class Builder method main.

/**
	 * Dump out abstract syntax tree for a given expression
	 * 
	 * @param args array with one element, containing the expression string
	 */
public static void main(String[] args) {
    if (args.length != 1) {
        System.err.println("usage: java " + Builder.class.getName() + " <expression string>");
        System.exit(1);
    }
    PrintWriter out = new PrintWriter(System.out);
    Tree tree = null;
    try {
        tree = new Builder(Feature.METHOD_INVOCATIONS).build(args[0]);
    } catch (TreeBuilderException e) {
        System.out.println(e.getMessage());
        System.exit(0);
    }
    NodePrinter.dump(out, tree.getRoot());
    if (!tree.getFunctionNodes().iterator().hasNext() && !tree.getIdentifierNodes().iterator().hasNext()) {
        ELContext context = new ELContext() {

            @Override
            public VariableMapper getVariableMapper() {
                return null;
            }

            @Override
            public FunctionMapper getFunctionMapper() {
                return null;
            }

            @Override
            public ELResolver getELResolver() {
                return null;
            }
        };
        out.print(">> ");
        try {
            out.println(tree.getRoot().getValue(new Bindings(null, null), context, null));
        } catch (ELException e) {
            out.println(e.getMessage());
        }
    }
    out.flush();
}
Also used : ELContext(org.activiti.engine.impl.javax.el.ELContext) ELException(org.activiti.engine.impl.javax.el.ELException) PrintWriter(java.io.PrintWriter)

Example 4 with ELContext

use of org.activiti.engine.impl.javax.el.ELContext in project Activiti by Activiti.

the class ExpressionManager method getElContext.

public ELContext getElContext(VariableScope variableScope) {
    ELContext elContext = null;
    if (variableScope instanceof VariableScopeImpl) {
        VariableScopeImpl variableScopeImpl = (VariableScopeImpl) variableScope;
        elContext = variableScopeImpl.getCachedElContext();
    }
    if (elContext == null) {
        elContext = createElContext(variableScope);
        if (variableScope instanceof VariableScopeImpl) {
            ((VariableScopeImpl) variableScope).setCachedElContext(elContext);
        }
    }
    return elContext;
}
Also used : ELContext(org.activiti.engine.impl.javax.el.ELContext) VariableScopeImpl(org.activiti.engine.impl.persistence.entity.VariableScopeImpl)

Example 5 with ELContext

use of org.activiti.engine.impl.javax.el.ELContext in project Activiti by Activiti.

the class JuelExpression method getValue.

public Object getValue(VariableScope variableScope) {
    ELContext elContext = Context.getProcessEngineConfiguration().getExpressionManager().getElContext(variableScope);
    try {
        ExpressionGetInvocation invocation = new ExpressionGetInvocation(valueExpression, elContext);
        Context.getProcessEngineConfiguration().getDelegateInterceptor().handleInvocation(invocation);
        return invocation.getInvocationResult();
    } catch (PropertyNotFoundException pnfe) {
        throw new ActivitiException("Unknown property used in expression: " + expressionText, pnfe);
    } catch (MethodNotFoundException mnfe) {
        throw new ActivitiException("Unknown method used in expression: " + expressionText, mnfe);
    } catch (ELException ele) {
        throw new ActivitiException("Error while evaluating expression: " + expressionText, ele);
    } catch (Exception e) {
        throw new ActivitiException("Error while evaluating expression: " + expressionText, e);
    }
}
Also used : ActivitiException(org.activiti.engine.ActivitiException) ELContext(org.activiti.engine.impl.javax.el.ELContext) PropertyNotFoundException(org.activiti.engine.impl.javax.el.PropertyNotFoundException) ELException(org.activiti.engine.impl.javax.el.ELException) MethodNotFoundException(org.activiti.engine.impl.javax.el.MethodNotFoundException) ExpressionGetInvocation(org.activiti.engine.impl.delegate.ExpressionGetInvocation) ActivitiException(org.activiti.engine.ActivitiException) PropertyNotFoundException(org.activiti.engine.impl.javax.el.PropertyNotFoundException) MethodNotFoundException(org.activiti.engine.impl.javax.el.MethodNotFoundException) ELException(org.activiti.engine.impl.javax.el.ELException)

Aggregations

ELContext (org.activiti.engine.impl.javax.el.ELContext)5 ELException (org.activiti.engine.impl.javax.el.ELException)3 ActivitiException (org.activiti.engine.ActivitiException)2 MethodNotFoundException (org.activiti.engine.impl.javax.el.MethodNotFoundException)2 PropertyNotFoundException (org.activiti.engine.impl.javax.el.PropertyNotFoundException)2 PrintWriter (java.io.PrintWriter)1 ExpressionGetInvocation (org.activiti.engine.impl.delegate.ExpressionGetInvocation)1 ExpressionSetInvocation (org.activiti.engine.impl.delegate.ExpressionSetInvocation)1 ArrayELResolver (org.activiti.engine.impl.javax.el.ArrayELResolver)1 BeanELResolver (org.activiti.engine.impl.javax.el.BeanELResolver)1 CompositeELResolver (org.activiti.engine.impl.javax.el.CompositeELResolver)1 DynamicBeanPropertyELResolver (org.activiti.engine.impl.javax.el.DynamicBeanPropertyELResolver)1 ELResolver (org.activiti.engine.impl.javax.el.ELResolver)1 FunctionMapper (org.activiti.engine.impl.javax.el.FunctionMapper)1 JsonNodeELResolver (org.activiti.engine.impl.javax.el.JsonNodeELResolver)1 ListELResolver (org.activiti.engine.impl.javax.el.ListELResolver)1 MapELResolver (org.activiti.engine.impl.javax.el.MapELResolver)1 ResourceBundleELResolver (org.activiti.engine.impl.javax.el.ResourceBundleELResolver)1 VariableMapper (org.activiti.engine.impl.javax.el.VariableMapper)1 VariableScopeImpl (org.activiti.engine.impl.persistence.entity.VariableScopeImpl)1