You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ad...@apache.org on 2004/07/25 02:57:00 UTC

cvs commit: incubator-geronimo/specs/j2ee-jacc/src/java/javax/security/jacc EJBMethodPermissionCollection.java

adc         2004/07/24 17:57:00

  Modified:    specs/j2ee-jacc/src/java/javax/security/jacc
                        EJBMethodPermissionCollection.java
  Log:
  Changed WILDCARD to String.
  
  Revision  Changes    Path
  1.4       +168 -148  incubator-geronimo/specs/j2ee-jacc/src/java/javax/security/jacc/EJBMethodPermissionCollection.java
  
  Index: EJBMethodPermissionCollection.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/specs/j2ee-jacc/src/java/javax/security/jacc/EJBMethodPermissionCollection.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- EJBMethodPermissionCollection.java	10 Mar 2004 09:59:53 -0000	1.3
  +++ EJBMethodPermissionCollection.java	25 Jul 2004 00:57:00 -0000	1.4
  @@ -21,151 +21,171 @@
   // DO NOT add / change / or delete method signatures!
   //
   
  -package javax.security.jacc;
  -
  -import java.security.PermissionCollection;
  -import java.security.Permission;
  -import java.util.LinkedList;
  -import java.util.HashMap;
  -import java.util.Enumeration;
  -import java.util.Collections;
  -
  -
  -/**
  - *
  - * @version $Revision$ $Date$
  - */
  -public final class EJBMethodPermissionCollection extends PermissionCollection {
  -
  -    private LinkedList collection = new LinkedList();
  -    private HashMap permissions = new HashMap();
  -    private static final Object WILDCARD = new Object();
  -
  -    /**
  -     * Adds a permission object to the current collection of permission objects.
  -     *
  -     * @param permission the Permission object to add.
  -     *
  -     * @exception SecurityException -  if this PermissionCollection object
  -     *                                 has been marked readonly
  -     */
  -    public void add(Permission permission) {
  -        if (isReadOnly()) throw new IllegalArgumentException("Read only collection");
  -
  -        if (!(permission instanceof EJBMethodPermission)) throw new IllegalArgumentException("Wrong permission type");
  -
  -        if (collection.contains(permission)) return;
  -        else collection.add(permission);
  -
  -        EJBMethodPermission p = (EJBMethodPermission)permission;
  -        EJBMethodPermission.MethodSpec spec = p.methodSpec;
  -        Object test =  permissions.get(p.getName());
  -
  -        if (test instanceof Boolean) return;
  -
  -        if (spec.methodName == null && spec.methodInterface == null && spec.methodParams == null) {
  -            permissions.put(p.getName(), new Boolean(true));
  -            return;
  -        }
  -
  -        HashMap methods = (HashMap)test;
  -        if (methods == null) {
  -            methods = new HashMap();
  -            permissions.put(p.getName(), methods);
  -        }
  -
  -        Object methodKey = (spec.methodName == null || spec.methodName.length() == 0? WILDCARD:spec.methodName);
  -        HashMap interfaces = (HashMap)methods.get(methodKey);
  -        if (interfaces == null) {
  -            interfaces = new HashMap();
  -            methods.put(methodKey, interfaces);
  -        }
  -
  -        Object interfaceKey = (spec.methodInterface == null || spec.methodInterface.length() == 0? WILDCARD:spec.methodInterface);
  -        HashMap parameters = (HashMap)interfaces.get(interfaceKey);
  -        if (parameters == null) {
  -            parameters = new HashMap();
  -            interfaces.put(interfaceKey, parameters);
  -        }
  -
  -        // an empty string for a parameter spec indicates a method w/ no parameters
  -        Object parametersKey = (spec.methodParams == null? WILDCARD:spec.methodParams);
  -        Object parameter = parameters.get(parametersKey);
  -        if (parameter == null) {
  -            parameter = new Boolean(true);
  -            parameters.put(parametersKey, parameter);
  -        }
  -    }
  -
  -    /**
  -     * Checks to see if the specified permission is implied by
  -     * the collection of Permission objects held in this PermissionCollection.
  -     *
  -     * @param permission the Permission object to compare.
  -     *
  -     * @return true if "permission" is implied by the  permissions in
  -     * the collection, false if not.
  -     */
  -    public boolean implies(Permission permission) {
  -        if (!(permission instanceof EJBMethodPermission)) return false;
  -
  -        EJBMethodPermission p = (EJBMethodPermission)permission;
  -
  -        EJBMethodPermission.MethodSpec spec = p.methodSpec;
  -        Object test = permissions.get(p.getName());
  -
  -        if (test == null) return false;
  -        if (test instanceof Boolean) return true;
  -
  -        HashMap methods = (HashMap)test;
  -
  -        Object methodKey = (spec.methodName == null || spec.methodName.length() == 0? WILDCARD:spec.methodName);
  -        HashMap interfaces = (HashMap)methods.get(methodKey);
  -
  -        if (methodImplies(interfaces, spec)) return true;
  -        if (methodKey != WILDCARD) {
  -            return methodImplies((HashMap)methods.get(WILDCARD), spec);
  -        }
  -
  -        return false;
  -    }
  -
  -    protected boolean methodImplies(HashMap interfaces, EJBMethodPermission.MethodSpec spec) {
  -        if (interfaces == null) return false;
  -
  -        Object interfaceKey = (spec.methodInterface == null || spec.methodInterface.length() == 0? WILDCARD:spec.methodInterface);
  -        HashMap parameters = (HashMap)interfaces.get(interfaceKey);
  -
  -        if (interfaceImplies(parameters, spec)) return true;
  -        if (interfaceKey != WILDCARD) {
  -            return interfaceImplies((HashMap)interfaces.get(WILDCARD), spec);
  -        }
  -
  -        return false;
  -    }
  -
  -    protected boolean interfaceImplies(HashMap parameters, EJBMethodPermission.MethodSpec spec) {
  -        if (parameters == null) return false;
  -
  -        // An empty string for a parameter spec indicates a method w/ no parameters
  -        // so we won't convert an empty string to a wildcard.
  -        Object parametersKey = (spec.methodParams == null? WILDCARD:spec.methodParams);
  -        Object parameter = parameters.get(parametersKey);
  -
  -        if (parameter != null) return true;
  -        if (parametersKey != WILDCARD) {
  -            return parameters.containsKey(WILDCARD);
  -        }
  -
  -        return false;
  -    }
  -
  -    /**
  -     * Returns an enumeration of all the Permission objects in the collection.
  -     *
  -     * @return an enumeration of all the Permissions.
  -     */
  -    public Enumeration elements() {
  -        return Collections.enumeration(collection);
  -    }
  -}
  +package javax.security.jacc;
  +
  +import java.security.PermissionCollection;
  +
  +import java.security.Permission;
  +
  +import java.util.LinkedList;
  +
  +import java.util.HashMap;
  +
  +import java.util.Enumeration;
  +
  +import java.util.Collections;
  +
  +
  +/**
  + *
  + * @version $Revision$ $Date$
  + */
  +public final class EJBMethodPermissionCollection extends PermissionCollection {
  +
  +    private LinkedList collection = new LinkedList();
  +    private HashMap permissions = new HashMap();
  +    private static final String WILDCARD = new String();
  +
  +    /**
  +     * Adds a permission object to the current collection of permission objects.
  +     *
  +     * @param permission the Permission object to add.
  +     *
  +     * @exception SecurityException -  if this PermissionCollection object
  +     *                                 has been marked readonly
  +     */
  +
  +    public void add(Permission permission) {
  +
  +        if (isReadOnly()) throw new IllegalArgumentException("Read only collection");
  +
  +        if (!(permission instanceof EJBMethodPermission)) throw new IllegalArgumentException("Wrong permission type");
  +
  +        if (collection.contains(permission)) return;
  +        else collection.add(permission);
  +
  +        EJBMethodPermission p = (EJBMethodPermission)permission;
  +        EJBMethodPermission.MethodSpec spec = p.methodSpec;
  +        Object test =  permissions.get(p.getName());
  +
  +        if (test instanceof Boolean) return;
  +
  +        if (spec.methodName == null && spec.methodInterface == null && spec.methodParams == null) {
  +            permissions.put(p.getName(), new Boolean(true));
  +            return;
  +        }
  +
  +        HashMap methods = (HashMap)test;
  +        if (methods == null) {
  +            methods = new HashMap();
  +            permissions.put(p.getName(), methods);
  +        }
  +
  +        Object methodKey = (spec.methodName == null || spec.methodName.length() == 0? WILDCARD:spec.methodName);
  +        HashMap interfaces = (HashMap)methods.get(methodKey);
  +        if (interfaces == null) {
  +            interfaces = new HashMap();
  +            methods.put(methodKey, interfaces);
  +        }
  +
  +        Object interfaceKey = (spec.methodInterface == null || spec.methodInterface.length() == 0? WILDCARD:spec.methodInterface);
  +        HashMap parameters = (HashMap)interfaces.get(interfaceKey);
  +        if (parameters == null) {
  +            parameters = new HashMap();
  +            interfaces.put(interfaceKey, parameters);
  +        }
  +
  +
  +
  +        // an empty string for a parameter spec indicates a method w/ no parameters
  +        Object parametersKey = (spec.methodParams == null? WILDCARD:spec.methodParams);
  +        Object parameter = parameters.get(parametersKey);
  +        if (parameter == null) {
  +            parameter = new Boolean(true);
  +            parameters.put(parametersKey, parameter);
  +        }
  +
  +    }
  +
  +    /**
  +     * Checks to see if the specified permission is implied by
  +     * the collection of Permission objects held in this PermissionCollection.
  +     *
  +     * @param permission the Permission object to compare.
  +     *
  +     * @return true if "permission" is implied by the  permissions in
  +     * the collection, false if not.
  +     */
  +    public boolean implies(Permission permission) {
  +
  +        if (!(permission instanceof EJBMethodPermission)) return false;
  +
  +        EJBMethodPermission p = (EJBMethodPermission)permission;
  +
  +        EJBMethodPermission.MethodSpec spec = p.methodSpec;
  +        Object test = permissions.get(p.getName());
  +
  +        if (test == null) return false;
  +        if (test instanceof Boolean) return true;
  +
  +        HashMap methods = (HashMap)test;
  +
  +        Object methodKey = (spec.methodName == null || spec.methodName.length() == 0? WILDCARD:spec.methodName);
  +        HashMap interfaces = (HashMap)methods.get(methodKey);
  +
  +        if (methodImplies(interfaces, spec)) return true;
  +        if (methodKey != WILDCARD) {
  +            return methodImplies((HashMap)methods.get(WILDCARD), spec);
  +        }
  +
  +        return false;
  +    }
  +
  +
  +
  +    protected boolean methodImplies(HashMap interfaces, EJBMethodPermission.MethodSpec spec) {
  +
  +        if (interfaces == null) return false;
  +
  +        Object interfaceKey = (spec.methodInterface == null || spec.methodInterface.length() == 0? WILDCARD:spec.methodInterface);
  +        HashMap parameters = (HashMap)interfaces.get(interfaceKey);
  +
  +        if (interfaceImplies(parameters, spec)) return true;
  +        if (interfaceKey != WILDCARD) {
  +            return interfaceImplies((HashMap)interfaces.get(WILDCARD), spec);
  +        }
  +
  +        return false;
  +    }
  +
  +
  +
  +    protected boolean interfaceImplies(HashMap parameters, EJBMethodPermission.MethodSpec spec) {
  +
  +        if (parameters == null) return false;
  +
  +        // An empty string for a parameter spec indicates a method w/ no parameters
  +        // so we won't convert an empty string to a wildcard.
  +        Object parametersKey = (spec.methodParams == null? WILDCARD:spec.methodParams);
  +        Object parameter = parameters.get(parametersKey);
  +
  +        if (parameter != null) return true;
  +        if (parametersKey != WILDCARD) {
  +            return parameters.containsKey(WILDCARD);
  +        }
  +
  +        return false;
  +    }
  +
  +
  +
  +    /**
  +     * Returns an enumeration of all the Permission objects in the collection.
  +     *
  +     * @return an enumeration of all the Permissions.
  +     */
  +    public Enumeration elements() {
  +        return Collections.enumeration(collection);
  +    }
  +}
  +