Index: modules/pvm/src/main/java/org/jbpm/pvm/internal/el/JbpmElFactoryImpl.java =================================================================== --- modules/pvm/src/main/java/org/jbpm/pvm/internal/el/JbpmElFactoryImpl.java (revision 6412) +++ modules/pvm/src/main/java/org/jbpm/pvm/internal/el/JbpmElFactoryImpl.java (working copy) @@ -32,6 +32,7 @@ import javax.el.FunctionMapper; import javax.el.ListELResolver; import javax.el.MapELResolver; +import javax.el.ResourceBundleELResolver; import javax.enterprise.inject.spi.BeanManager; import javax.naming.InitialContext; import javax.naming.NamingException; @@ -45,24 +46,24 @@ * @author Tom Baeyens */ public class JbpmElFactoryImpl extends JbpmElFactory { - + private static Log log = Log.getLog(JbpmElFactoryImpl.class.getName()); - + Class functionClass = JstlFunction.class; - + /** create ElContext used during parsing time */ public ELContext createElContext() { return createCompositeResolver(null); } - + /** create ElContext used during evaluation time related to an execution */ public ELContext createElContext(ScopeInstanceImpl scopeInstance) { return createCompositeResolver(scopeInstance); } - + protected ELContext createCompositeResolver(ScopeInstanceImpl scopeInstance) { CompositeELResolver compositeELResolver = new CompositeELResolver(); - + if (scopeInstance!=null) { compositeELResolver.add(new JbpmConstantsElResolver(scopeInstance)); compositeELResolver.add(new JbpmVariableElResolver(scopeInstance)); @@ -72,13 +73,13 @@ if (environment!=null) { compositeELResolver.add(new JbpmEnvironmentElResolver(environment)); } - + addCdiResolver(compositeELResolver); addBasicResolvers(compositeELResolver); - + FunctionMapper functionMapper = createFunctionMapper(); - + return createElContext(compositeELResolver, functionMapper); } @@ -105,7 +106,7 @@ } public ExpressionFactory createExpressionFactory() { - // TODO these ExpressionFactory properties could be integrated in the configuration + // TODO these ExpressionFactory properties could be integrated in the configuration Properties properties = new Properties(); properties.setProperty("javax.el.methodInvocations", "true"); ExpressionFactory expressionFactory = ExpressionFactory.newInstance(properties); @@ -114,11 +115,12 @@ if (beanManager!=null) { expressionFactory = beanManager.wrapExpressionFactory(expressionFactory); } - + return expressionFactory; } protected void addBasicResolvers(CompositeELResolver compositeELResolver) { + compositeELResolver.add(new ResourceBundleELResolver()); compositeELResolver.add(new MapELResolver()); compositeELResolver.add(new ListELResolver()); compositeELResolver.add(new ArrayELResolver()); Index: modules/pvm/src/test/java/org/jbpm/pvm/internal/el/ResourceBundleELResovlerTest.java =================================================================== --- modules/pvm/src/test/java/org/jbpm/pvm/internal/el/ResourceBundleELResovlerTest.java (revision 0) +++ modules/pvm/src/test/java/org/jbpm/pvm/internal/el/ResourceBundleELResovlerTest.java (revision 0) @@ -0,0 +1,28 @@ + +package org.jbpm.pvm.internal.el; + +import java.util.*; +import junit.framework.*; +import org.jbpm.pvm.internal.model.*; + +public class ResourceBundleELResovlerTest extends TestCase { + public void testResourceBundleELResovler() { + MyResources myResources = new MyResources(); + ExecutionImpl execution = new ExecutionImpl(); + execution.setVariable("resourceBundle", myResources); + + Expression expr = Expression.create("#{resourceBundle['text.title']}", Expression.LANGUAGE_UEL_VALUE); + Object result = expr.evaluate(execution); + + assertEquals("Title", result); + } + + public static class MyResources extends ListResourceBundle { + public Object[][] getContents() { + return contents; + } + static final Object[][] contents = { + {"text.title", "Title"} + }; + } +}