Search in sources :

Example 6 with ELResolver

use of org.camunda.bpm.engine.impl.javax.el.ELResolver in project camunda-bpm-platform by camunda.

the class DefaultElResolverLookup method lookupResolver.

public static final ELResolver lookupResolver(AbstractProcessApplication processApplication) {
    ServiceLoader<ProcessApplicationElResolver> providers = ServiceLoader.load(ProcessApplicationElResolver.class);
    List<ProcessApplicationElResolver> sortedProviders = new ArrayList<ProcessApplicationElResolver>();
    for (ProcessApplicationElResolver provider : providers) {
        sortedProviders.add(provider);
    }
    if (sortedProviders.isEmpty()) {
        return null;
    } else {
        // sort providers first
        Collections.sort(sortedProviders, new ProcessApplicationElResolver.ProcessApplicationElResolverSorter());
        // add all providers to a composite resolver
        CompositeELResolver compositeResolver = new CompositeELResolver();
        StringBuilder summary = new StringBuilder();
        summary.append(String.format("ElResolvers found for Process Application %s", processApplication.getName()));
        for (ProcessApplicationElResolver processApplicationElResolver : sortedProviders) {
            ELResolver elResolver = processApplicationElResolver.getElResolver(processApplication);
            if (elResolver != null) {
                compositeResolver.add(elResolver);
                summary.append(String.format("Class %s", processApplicationElResolver.getClass().getName()));
            } else {
                LOG.noElResolverProvided(processApplication.getName(), processApplicationElResolver.getClass().getName());
            }
        }
        LOG.paElResolversDiscovered(summary.toString());
        return compositeResolver;
    }
}
Also used : CompositeELResolver(org.camunda.bpm.engine.impl.javax.el.CompositeELResolver) ELResolver(org.camunda.bpm.engine.impl.javax.el.ELResolver) CompositeELResolver(org.camunda.bpm.engine.impl.javax.el.CompositeELResolver) ArrayList(java.util.ArrayList) ProcessApplicationElResolver(org.camunda.bpm.application.ProcessApplicationElResolver)

Example 7 with ELResolver

use of org.camunda.bpm.engine.impl.javax.el.ELResolver in project camunda-bpm-platform by camunda.

the class AbstractElResolverDelegate method getValue.

public Object getValue(ELContext context, Object base, Object property) {
    context.setPropertyResolved(false);
    ELResolver delegate = getElResolverDelegate();
    if (delegate == null) {
        return null;
    } else {
        return delegate.getValue(context, base, property);
    }
}
Also used : ELResolver(org.camunda.bpm.engine.impl.javax.el.ELResolver)

Example 8 with ELResolver

use of org.camunda.bpm.engine.impl.javax.el.ELResolver in project camunda-bpm-platform by camunda.

the class AbstractElResolverDelegate method isReadOnly.

public boolean isReadOnly(ELContext context, Object base, Object property) {
    context.setPropertyResolved(false);
    ELResolver delegate = getElResolverDelegate();
    if (delegate == null) {
        return true;
    } else {
        return delegate.isReadOnly(context, base, property);
    }
}
Also used : ELResolver(org.camunda.bpm.engine.impl.javax.el.ELResolver)

Example 9 with ELResolver

use of org.camunda.bpm.engine.impl.javax.el.ELResolver in project camunda-bpm-platform by camunda.

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.camunda.bpm.engine.impl.javax.el.ELContext) BeanELResolver(org.camunda.bpm.engine.impl.javax.el.BeanELResolver) ResourceBundleELResolver(org.camunda.bpm.engine.impl.javax.el.ResourceBundleELResolver) ListELResolver(org.camunda.bpm.engine.impl.javax.el.ListELResolver) CompositeELResolver(org.camunda.bpm.engine.impl.javax.el.CompositeELResolver) ELResolver(org.camunda.bpm.engine.impl.javax.el.ELResolver) ArrayELResolver(org.camunda.bpm.engine.impl.javax.el.ArrayELResolver) MapELResolver(org.camunda.bpm.engine.impl.javax.el.MapELResolver) VariableMapper(org.camunda.bpm.engine.impl.javax.el.VariableMapper) FunctionMapper(org.camunda.bpm.engine.impl.javax.el.FunctionMapper)

Aggregations

ELResolver (org.camunda.bpm.engine.impl.javax.el.ELResolver)9 CompositeELResolver (org.camunda.bpm.engine.impl.javax.el.CompositeELResolver)4 ArrayELResolver (org.camunda.bpm.engine.impl.javax.el.ArrayELResolver)3 ListELResolver (org.camunda.bpm.engine.impl.javax.el.ListELResolver)3 MapELResolver (org.camunda.bpm.engine.impl.javax.el.MapELResolver)3 ArrayList (java.util.ArrayList)1 ProcessApplicationElResolver (org.camunda.bpm.application.ProcessApplicationElResolver)1 BeanELResolver (org.camunda.bpm.engine.impl.javax.el.BeanELResolver)1 ELContext (org.camunda.bpm.engine.impl.javax.el.ELContext)1 FunctionMapper (org.camunda.bpm.engine.impl.javax.el.FunctionMapper)1 ResourceBundleELResolver (org.camunda.bpm.engine.impl.javax.el.ResourceBundleELResolver)1 VariableMapper (org.camunda.bpm.engine.impl.javax.el.VariableMapper)1