[jboss-cvs] jboss-seam/src/main/org/jboss/seam/bpm ...
Gavin King
gavin.king at jboss.com
Mon Jul 16 06:22:53 EDT 2007
User: gavin
Date: 07/07/16 06:22:53
Modified: src/main/org/jboss/seam/bpm SeamExpressionEvaluator.java
Removed: src/main/org/jboss/seam/bpm SeamFunctionMapper.java
SeamVariableResolver.java
Log:
support SeamFunctionMapper in jbpm el
Revision Changes Path
1.2 +21 -11 jboss-seam/src/main/org/jboss/seam/bpm/SeamExpressionEvaluator.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: SeamExpressionEvaluator.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/bpm/SeamExpressionEvaluator.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- SeamExpressionEvaluator.java 15 Jul 2007 22:43:13 -0000 1.1
+++ SeamExpressionEvaluator.java 16 Jul 2007 10:22:53 -0000 1.2
@@ -1,12 +1,15 @@
package org.jboss.seam.bpm;
+import java.lang.reflect.Method;
+
import javax.el.CompositeELResolver;
import javax.el.ELContext;
import javax.el.MethodExpression;
import javax.el.ValueExpression;
import org.jboss.seam.el.EL;
+import org.jboss.seam.el.SeamFunctionMapper;
import org.jbpm.jpdl.el.ELException;
import org.jbpm.jpdl.el.Expression;
import org.jbpm.jpdl.el.ExpressionEvaluator;
@@ -29,21 +32,18 @@
public Object evaluate(String expression, Class returnType, final VariableResolver resolver, FunctionMapper mapper)
throws ELException
{
-
- return createExpression(expression, returnType).evaluate(resolver);
+ return createExpression(expression, returnType, mapper).evaluate(resolver);
}
@Override
public Expression parseExpression(final String expression, final Class returnType, FunctionMapper mapper)
throws ELException
{
- return createExpression(expression, returnType);
+ return createExpression(expression, returnType, mapper);
}
- private static Expression createExpression(final String expression, final Class returnType)
+ private static Expression createExpression(final String expression, final Class returnType, final FunctionMapper mapper)
{
- //TODO: integrate SeamFunctionMapper!
-
return new Expression()
{
private MethodExpression me;
@@ -67,12 +67,12 @@
try
{
if (me==null && ve==null) initMethodExpression();
- if (me!=null && ve==null) return me.invoke( createELContext(resolver), new Object[0] );
+ if (me!=null && ve==null) return me.invoke( createELContext(resolver, mapper), new Object[0] );
}
catch (javax.el.MethodNotFoundException mnfe)
{
if (ve==null) initValueExpression();
- if (ve!=null) return ve.getValue( createELContext(resolver) );
+ if (ve!=null) return ve.getValue( createELContext(resolver, mapper) );
}
throw new ELException();
}
@@ -80,17 +80,27 @@
{
throw new ELException(vele);
}
-
}
};
}
- private static ELContext createELContext(VariableResolver resolver)
+ private static javax.el.FunctionMapper decorateFunctionMapper(final FunctionMapper functionMapper)
+ {
+ return new SeamFunctionMapper( new javax.el.FunctionMapper() {
+ @Override
+ public Method resolveFunction(String prefix, String localName)
+ {
+ return functionMapper.resolveFunction(prefix, localName);
+ }
+ });
+ }
+
+ private static ELContext createELContext(VariableResolver resolver, FunctionMapper functionMapper)
{
CompositeELResolver composite = new CompositeELResolver();
composite.add(EL.EL_RESOLVER);
composite.add( new JbpmELResolver(resolver) );
- return EL.createELContext(composite);
+ return EL.createELContext(composite, decorateFunctionMapper(functionMapper));
}
}
More information about the jboss-cvs-commits
mailing list