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

Gavin King gavin.king at jboss.com
Tue May 29 20:35:18 EDT 2007


  User: gavin   
  Date: 07/05/29 20:35:18

  Modified:    src/main/org/jboss/seam/el    EL.java
  Added:       src/main/org/jboss/seam/el    SeamFunctionMapper.java
  Removed:     src/main/org/jboss/seam/el    SeamELFunctionMapper.java
  Log:
  rename
  
  Revision  Changes    Path
  1.2       +1 -1      jboss-seam/src/main/org/jboss/seam/el/EL.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: EL.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/el/EL.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- EL.java	30 May 2007 00:19:12 -0000	1.1
  +++ EL.java	30 May 2007 00:35:18 -0000	1.2
  @@ -49,7 +49,7 @@
            @Override
            public FunctionMapper getFunctionMapper()
            {
  -            return new SeamELFunctionMapper( new FunctionMapperImpl() );
  +            return new SeamFunctionMapper( new FunctionMapperImpl() );
            }
   
            @Override
  
  
  
  1.1      date: 2007/05/30 00:35:18;  author: gavin;  state: Exp;jboss-seam/src/main/org/jboss/seam/el/SeamFunctionMapper.java
  
  Index: SeamFunctionMapper.java
  ===================================================================
  package org.jboss.seam.el;
  
  import java.lang.reflect.Method;
  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;
  
  /**
   * Resolves Seam EL functions to their corresponding methods.
   *  
   * @author Shane Bryzak
   */
  public class SeamFunctionMapper 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(SeamFunctionMapper.class);
     
     private FunctionMapper functionMapper;
     
     public SeamFunctionMapper()
     {
        this(null);
     }
     
     public SeamFunctionMapper(FunctionMapper functionMapper)
     {
        this.functionMapper = functionMapper;
     }
     
     static 
     {
        cacheMethod("hasPermission", SecurityFunctions.class, "hasPermission", 
                 new Class[] {String.class, String.class, Object.class});
        cacheMethod("hasRole", SecurityFunctions.class, "hasRole",
                 new Class[] { String.class });      
     }
  
     @Override 
     public Method resolveFunction(String prefix, String localName) 
     {
        if (SEAM_EL_PREFIX.equals(prefix))
        {
           return methodCache.get(localName);
        }
        else if (functionMapper != null)
        {
           return functionMapper.resolveFunction(prefix, localName);
        }
        else
           return null;
     }  
     
     private static void cacheMethod(String localName, Class cls, String name, Class[] params)
     {
        try
        {
           Method m = cls.getMethod(name, params);
           methodCache.put(localName, m);         
        }
        catch (NoSuchMethodException ex)
        {
           log.warn(String.format("Method %s.%s could not be cached", cls.getName(), name));
        }
     }
     
  }
  
  
  



More information about the jboss-cvs-commits mailing list