[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