[jboss-cvs] jboss-seam/src/main/org/jboss/seam/bpm ...
Gavin King
gavin.king at jboss.com
Sun Jul 15 18:43:13 EDT 2007
User: gavin
Date: 07/07/15 18:43:13
Modified: src/main/org/jboss/seam/bpm Jbpm.java
Added: src/main/org/jboss/seam/bpm JbpmELResolver.java
SeamExpressionEvaluator.java
Log:
start on JBSEAM-1490
Revision Changes Path
1.9 +3 -3 jboss-seam/src/main/org/jboss/seam/bpm/Jbpm.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Jbpm.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/bpm/Jbpm.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- Jbpm.java 15 Jul 2007 21:32:01 -0000 1.8
+++ Jbpm.java 15 Jul 2007 22:43:13 -0000 1.9
@@ -70,9 +70,9 @@
ProcessState.setDefaultSubProcessResolver( new SeamSubProcessResolver() );
installProcessDefinitions();
installPageflowDefinitions();
- JbpmExpressionEvaluator.setVariableResolver( new SeamVariableResolver() );
- JbpmExpressionEvaluator.setFunctionMapper( new SeamFunctionMapper() );
- JbpmExpressionEvaluator.setExpressionEvaluator( new SeamExpressionEvaludator() );
+ //JbpmExpressionEvaluator.setVariableResolver( new SeamVariableResolver() );
+ //JbpmExpressionEvaluator.setFunctionMapper( new SeamFunctionMapper() );
+ JbpmExpressionEvaluator.setExpressionEvaluator( new SeamExpressionEvaluator() );
UserCodeInterceptorConfig.setUserCodeInterceptor( new SeamUserCodeInterceptor() );
}
1.1 date: 2007/07/15 22:43:13; author: gavin; state: Exp;jboss-seam/src/main/org/jboss/seam/bpm/JbpmELResolver.java
Index: JbpmELResolver.java
===================================================================
package org.jboss.seam.bpm;
import java.beans.FeatureDescriptor;
import java.util.Iterator;
import javax.el.ELContext;
import javax.el.ELResolver;
import org.jbpm.jpdl.el.VariableResolver;
/**
* Resolves jBPM variables for Unified EL
*
* @author Gavin King
*
*/
final class JbpmELResolver extends ELResolver
{
private final VariableResolver resolver;
JbpmELResolver(VariableResolver resolver)
{
this.resolver = resolver;
}
@Override
public Object getValue(ELContext context, Object base, Object property)
{
if ( base==null && property!=null )
{
return resolver.resolveVariable( (String) base );
}
else
{
return null;
}
}
@Override
public boolean isReadOnly(ELContext context, Object base, Object property)
{
return true;
}
@Override
public Class<?> getCommonPropertyType(ELContext context, Object base)
{
throw new UnsupportedOperationException();
}
@Override
public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base)
{
throw new UnsupportedOperationException();
}
@Override
public Class<?> getType(ELContext context, Object base, Object property)
{
throw new UnsupportedOperationException();
}
@Override
public void setValue(ELContext context, Object base, Object property, Object value)
{
throw new UnsupportedOperationException();
}
}
1.1 date: 2007/07/15 22:43:13; author: gavin; state: Exp;jboss-seam/src/main/org/jboss/seam/bpm/SeamExpressionEvaluator.java
Index: SeamExpressionEvaluator.java
===================================================================
package org.jboss.seam.bpm;
import javax.el.CompositeELResolver;
import javax.el.ELContext;
import javax.el.MethodExpression;
import javax.el.ValueExpression;
import org.jboss.seam.el.EL;
import org.jbpm.jpdl.el.ELException;
import org.jbpm.jpdl.el.Expression;
import org.jbpm.jpdl.el.ExpressionEvaluator;
import org.jbpm.jpdl.el.FunctionMapper;
import org.jbpm.jpdl.el.VariableResolver;
/**
* Plugs the JBoss EL expression language and Seam
* EL resolvers into jBPM. Note that this current
* implementation does not allow jBPM to see stuff
* defined only by the JSF ELResolvers.
*
* @author Gavin King
*
*/
public class SeamExpressionEvaluator extends ExpressionEvaluator
{
@Override
public Object evaluate(String expression, Class returnType, final VariableResolver resolver, FunctionMapper mapper)
throws ELException
{
return createExpression(expression, returnType).evaluate(resolver);
}
@Override
public Expression parseExpression(final String expression, final Class returnType, FunctionMapper mapper)
throws ELException
{
return createExpression(expression, returnType);
}
private static Expression createExpression(final String expression, final Class returnType)
{
//TODO: integrate SeamFunctionMapper!
return new Expression()
{
private MethodExpression me;
private ValueExpression ve;
private void initMethodExpression()
{
me = EL.EXPRESSION_FACTORY.createMethodExpression(EL.EL_CONTEXT, expression, returnType, new Class[0]);
}
private void initValueExpression()
{
ve = EL.EXPRESSION_FACTORY.createValueExpression(EL.EL_CONTEXT, expression, returnType);
}
@Override
public Object evaluate(VariableResolver resolver) throws ELException
{
try
{
try
{
if (me==null && ve==null) initMethodExpression();
if (me!=null && ve==null) return me.invoke( createELContext(resolver), new Object[0] );
}
catch (javax.el.MethodNotFoundException mnfe)
{
if (ve==null) initValueExpression();
if (ve!=null) return ve.getValue( createELContext(resolver) );
}
throw new ELException();
}
catch (javax.el.ELException vele)
{
throw new ELException(vele);
}
}
};
}
private static ELContext createELContext(VariableResolver resolver)
{
CompositeELResolver composite = new CompositeELResolver();
composite.add(EL.EL_RESOLVER);
composite.add( new JbpmELResolver(resolver) );
return EL.createELContext(composite);
}
}
More information about the jboss-cvs-commits
mailing list