[jboss-cvs] jboss-seam/src/main/org/jboss/seam/jsf ...

Gavin King gavin.king at jboss.com
Wed May 16 11:48:37 EDT 2007


  User: gavin   
  Date: 07/05/16 11:48:37

  Modified:    src/main/org/jboss/seam/jsf  SeamELFunctionMapper.java
  Log:
  use delegation instead
  
  Revision  Changes    Path
  1.5       +19 -7     jboss-seam/src/main/org/jboss/seam/jsf/SeamELFunctionMapper.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: SeamELFunctionMapper.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/jsf/SeamELFunctionMapper.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -b -r1.4 -r1.5
  --- SeamELFunctionMapper.java	3 Apr 2007 22:41:32 -0000	1.4
  +++ SeamELFunctionMapper.java	16 May 2007 15:48:37 -0000	1.5
  @@ -4,27 +4,34 @@
   import java.util.HashMap;
   import java.util.Map;
   
  +import javax.el.FunctionMapper;
  +
   import org.jboss.seam.log.LogProvider;
   import org.jboss.seam.log.Logging;
   import org.jboss.seam.security.SecurityFunctions;
   
  -import org.jboss.el.lang.FunctionMapperImpl;
  -
   /**
    * Resolves Seam EL functions to their corresponding methods.
    *  
    * @author Shane Bryzak
    */
  -public class SeamELFunctionMapper extends FunctionMapperImpl
  +public class SeamELFunctionMapper extends FunctionMapper
   {
      private static final String SEAM_EL_PREFIX = "s";
      
      private static Map<String,Method> methodCache = new HashMap<String,Method>();
      
  -   private static final LogProvider log = Logging
  -   .getLogProvider(SeamELFunctionMapper.class);
  +   private static final LogProvider log = Logging.getLogProvider(SeamELFunctionMapper.class);
  +   
  +   private FunctionMapper functionMapper;
  +   
  +   public SeamELFunctionMapper(FunctionMapper functionMapper)
  +   {
  +      this.functionMapper = functionMapper;
  +   }
      
  -   static {
  +   static 
  +   {
         cacheMethod("hasPermission", SecurityFunctions.class, "hasPermission", 
                  new Class[] {String.class, String.class, Object.class});
         cacheMethod("hasRole", SecurityFunctions.class, "hasRole",
  @@ -35,9 +42,13 @@
      public Method resolveFunction(String prefix, String localName) 
      {
         if (SEAM_EL_PREFIX.equals(prefix))
  +      {
            return methodCache.get(localName);
  +      }
         else
  -         return super.resolveFunction(prefix, localName);
  +      {
  +         return functionMapper.resolveFunction(prefix, localName);
  +      }
      }  
      
      private static void cacheMethod(String localName, Class cls, String name, Class[] params)
  @@ -52,4 +63,5 @@
            log.warn(String.format("Method %s.%s could not be cached", cls.getName(), name));
         }
      }
  +   
   }
  
  
  



More information about the jboss-cvs-commits mailing list