User: schulze 
  Date: 00/10/23 16:34:36

  Modified:    src/main/org/jboss/metadata BeanMetaData.java
  Log:
  method-permission in ejb-jar.xml fixed
  (if one method was in more then one method-permission tags listed, only the rules of 
the first method-permission section were applied)
  could need some performance tuning - but the result is cached anyway.
  
  Revision  Changes    Path
  1.10      +14 -4     jboss/src/main/org/jboss/metadata/BeanMetaData.java
  
  Index: BeanMetaData.java
  ===================================================================
  RCS file: /products/cvs/ejboss/jboss/src/main/org/jboss/metadata/BeanMetaData.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- BeanMetaData.java 2000/09/09 02:46:21     1.9
  +++ BeanMetaData.java 2000/10/23 23:34:36     1.10
  @@ -9,8 +9,11 @@
   import java.util.Iterator;
   import java.util.ArrayList;
   import java.util.HashMap;
  +import java.util.HashSet;
   import java.util.Set;
  +import java.util.Collection;
   
  +
   import org.w3c.dom.Element;
   import org.w3c.dom.NodeList;
   
  @@ -21,7 +24,7 @@
    *      
    *   @see <related>
    *   @author <a href="mailto:[EMAIL PROTECTED]">Sebastien Alborini</a>
  - *   @version $Revision: 1.9 $
  + *   @version $Revision: 1.10 $
    */
   public abstract class BeanMetaData extends MetaData {
       // Constants -----------------------------------------------------
  @@ -132,14 +135,21 @@
                return TX_UNKNOWN;
        }
   
  +   // d.s.> PERFORMANCE !!! 
        public Set getMethodPermissions(String methodName, Class[] params, boolean 
remote) {
  -             Iterator iterator = getPermissionMethods();
  +             Set result = new HashSet ();
  +      Iterator iterator = getPermissionMethods();
                while (iterator.hasNext()) {
                        MethodMetaData m = (MethodMetaData)iterator.next();
  -                     if (m.patternMatches(methodName, params, remote)) return 
m.getRoles();
  +                     if (m.patternMatches(methodName, params, remote))
  +         {
  +            Iterator i = m.getRoles().iterator ();
  +            while (i.hasNext ())
  +               result.add (i.next ());
  +         }
                }
                // not found
  -             return null;
  +             return result;
        }
   
        public void importEjbJarXml(Element element) throws DeploymentException {
  
  
  

Reply via email to