[jboss-cvs] jboss-seam/src/ui/org/jboss/seam/ui/facelet ...

Gavin King gavin.king at jboss.com
Thu Oct 12 18:34:01 EDT 2006


  User: gavin   
  Date: 06/10/12 18:34:01

  Modified:    src/ui/org/jboss/seam/ui/facelet  
                        SeamExpressionFactory.java
  Added:       src/ui/org/jboss/seam/ui/facelet  
                        OptionalParameterMethodExpression.java
  Log:
  support (at least in facelets) actionLister=#{foo.bar} where bar() has no ActionEvent parameter
  
  Revision  Changes    Path
  1.2       +10 -0     jboss-seam/src/ui/org/jboss/seam/ui/facelet/SeamExpressionFactory.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: SeamExpressionFactory.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/ui/org/jboss/seam/ui/facelet/SeamExpressionFactory.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- SeamExpressionFactory.java	9 Aug 2006 20:30:09 -0000	1.1
  +++ SeamExpressionFactory.java	12 Oct 2006 22:34:01 -0000	1.2
  @@ -27,6 +27,8 @@
   import javax.el.ExpressionFactory;
   import javax.el.MethodExpression;
   import javax.el.ValueExpression;
  +import javax.faces.event.ActionEvent;
  +
   import org.jboss.seam.actionparam.MethodExpressionParser;
   
   /**
  @@ -78,6 +80,14 @@
               return new ParamMethodExpression(parser, elContext);
           }
           
  +        if (paramTypes.length==1 && ActionEvent.class.equals( paramTypes[0] ) )
  +        {
  +           return new OptionalParameterMethodExpression(
  +                 faceletsExpressionFactory.createMethodExpression(elContext, expression, returnType, paramTypes),
  +                 faceletsExpressionFactory.createMethodExpression(elContext, expression, returnType, new Class[0])
  +              );
  +        }
  +        
           return faceletsExpressionFactory.createMethodExpression(elContext, expression, returnType, paramTypes);
       }
       
  
  
  
  1.1      date: 2006/10/12 22:34:01;  author: gavin;  state: Exp;jboss-seam/src/ui/org/jboss/seam/ui/facelet/OptionalParameterMethodExpression.java
  
  Index: OptionalParameterMethodExpression.java
  ===================================================================
  /**
   * 
   */
  package org.jboss.seam.ui.facelet;
  
  import javax.el.ELContext;
  import javax.el.MethodExpression;
  import javax.el.MethodInfo;
  import javax.el.MethodNotFoundException;
  
  public class OptionalParameterMethodExpression extends MethodExpression
   {
      
      private MethodExpression withParam;
      private MethodExpression withNoParam;
      
     public OptionalParameterMethodExpression(MethodExpression withParam, MethodExpression withNoParam)
     {
        this.withParam = withParam;
        this.withNoParam = withNoParam;
     }
  
     @Override
     public MethodInfo getMethodInfo(ELContext ctx)
     {
        return withParam.getMethodInfo(ctx);
     }
  
     @Override
     public Object invoke(ELContext ctx, Object[] args)
     {
        try
        {
           return withParam.invoke(ctx, args);
        }
        catch (MethodNotFoundException mnfe)
        {
           try
           {
              return withNoParam.invoke(ctx, new Object[0]);
           }
           catch (Exception e)
           {
              throw mnfe;
           }
        }
     }
  
     @Override
     public String getExpressionString()
     {
        return withParam.getExpressionString();
     }
  
     @Override
     public boolean isLiteralText()
     {
        return withParam.isLiteralText();
     }
  
     @Override
     public boolean equals(Object object)
     {
        if ( !(object instanceof OptionalParameterMethodExpression) ) return false;
        OptionalParameterMethodExpression other = (OptionalParameterMethodExpression) object;
        return withParam.equals(other.withParam);
     }
  
     @Override
     public int hashCode()
     {
        return withParam.hashCode();
     }
      
   }
  
  



More information about the jboss-cvs-commits mailing list