dlestrat    2004/09/27 21:23:52

  Modified:    components/security/src/test/org/apache/jetspeed/security/spi
                        TestRoleSecurityHandler.java
               components/security/src/test/org/apache/jetspeed/security
                        TestRdbmsPolicy.java TestPermissionManager.java
                        TestRdbmsPolicyFolder.java
               components/security/src/java/META-INF ojb_repository.xml
               jetspeed-api/src/java/org/apache/jetspeed/security
                        SecurityException.java PermissionManager.java
               components/security/src/java/org/apache/jetspeed/security/spi/impl
                        DefaultRoleSecurityHandler.java
               components/security/src/java/org/apache/jetspeed/security/impl
                        PermissionManagerImpl.java RoleManagerImpl.java
  Log:
  Some progress on.  Cleaned up the permission manager. Leverage the new OJB 1.0.1
  auto-XXX settings.
  
  See http://nagoya.apache.org/jira/browse/JS2-114
  
  OJB 1.0.1 is a real improvement over RC6 at least regarding M:N mapping.  
Particularly
  insteresting is the distinction between link and object for auto-XXXX.  Allowed me to
  clean up the code quite a bit.
  
  Revision  Changes    Path
  1.4       +10 -4     
jakarta-jetspeed-2/components/security/src/test/org/apache/jetspeed/security/spi/TestRoleSecurityHandler.java
  
  Index: TestRoleSecurityHandler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/components/security/src/test/org/apache/jetspeed/security/spi/TestRoleSecurityHandler.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TestRoleSecurityHandler.java      25 Sep 2004 23:03:18 -0000      1.3
  +++ TestRoleSecurityHandler.java      28 Sep 2004 04:23:51 -0000      1.4
  @@ -14,6 +14,7 @@
    */
   package org.apache.jetspeed.security.spi;
   
  +import java.security.Permission;
   import java.security.Permissions;
   import java.security.Principal;
   
  @@ -94,7 +95,7 @@
        * Test <code>removeRolePrincipal</code>.
        * </p>
        */
  -    /*public void testRemoveRolePrincipal() throws Exception
  +    public void testRemoveRolePrincipal() throws Exception
       {
           initMappedRole();
           rsh.removeRolePrincipal(new RolePrincipalImpl("mappedrole"));
  @@ -103,7 +104,7 @@
           // The group should still exist.
           assertTrue(gms.groupExists("mappedgroup"));
           // The permission should still exist.
  -        // TODO Need permissionExists
  +        assertTrue(pms.permissionExists(new PortletPermission("myportlet", 
"view")));
           // The user-role mapping should be gone.
           assertFalse(rms.isUserInRole("mappedroleuser", "mappedrole"));
           // The group-role mapping should be gone.
  @@ -113,7 +114,7 @@
           assertFalse(perms.implies(new PortletPermission("myportlet", "view")));
           
           destroyMappedRole();
  -    }*/
  +    }
       
       /**
        * <p>
  @@ -141,7 +142,11 @@
           rms.addRole("mappedrole");
           rms.addRole("mappedrole.role1");
           gms.addGroup("mappedgroup");
  -        pms.grantPermission(new RolePrincipalImpl("mappedrole"), new 
PortletPermission("myportlet", "view"));
  +        
  +        Permission perm = new PortletPermission("myportlet", "view");
  +        pms.addPermission(perm);
  +        pms.grantPermission(new RolePrincipalImpl("mappedrole"), perm);
  +        
           rms.addRoleToUser("mappedroleuser", "mappedrole");
           rms.addRoleToGroup("mappedrole", "mappedgroup");    
       }
  @@ -150,6 +155,7 @@
       {
           ums.removeUser("mappedroleuser");
           rms.removeRole("mappedrole");
  +        rms.removeRole("mappedrole.role1");
           gms.removeGroup("mappedgroup");
           pms.removePermission(new PortletPermission("myportlet", "view"));   
       }
  
  
  
  1.7       +3 -0      
jakarta-jetspeed-2/components/security/src/test/org/apache/jetspeed/security/TestRdbmsPolicy.java
  
  Index: TestRdbmsPolicy.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/components/security/src/test/org/apache/jetspeed/security/TestRdbmsPolicy.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- TestRdbmsPolicy.java      18 Sep 2004 19:34:52 -0000      1.6
  +++ TestRdbmsPolicy.java      28 Sep 2004 04:23:52 -0000      1.7
  @@ -202,6 +202,9 @@
           PortletPermission perm2 = new PortletPermission("myportlet", "view, edit");
           try
           {
  +            pms.addPermission(perm1);
  +            pms.addPermission(perm2);
  +            
               pms.grantPermission(user, perm1);
               pms.grantPermission(user, perm2);
           }
  
  
  
  1.5       +42 -0     
jakarta-jetspeed-2/components/security/src/test/org/apache/jetspeed/security/TestPermissionManager.java
  
  Index: TestPermissionManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/components/security/src/test/org/apache/jetspeed/security/TestPermissionManager.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TestPermissionManager.java        18 Sep 2004 19:34:52 -0000      1.4
  +++ TestPermissionManager.java        28 Sep 2004 04:23:52 -0000      1.5
  @@ -78,6 +78,7 @@
           try
           {
               ums.addUser(user.getName(), "password");
  +            pms.addPermission(perm);
               pms.grantPermission(user, perm);
           }
           catch (SecurityException sex)
  @@ -112,6 +113,35 @@
       /**
        * <p>Test remove permission.</p>
        */
  +    public void testPermissionExists()
  +    {
  +        PortletPermission perm1 = new PortletPermission("removepermission1", "view, 
edit, secure, minimized, maximized");
  +        PortletPermission perm2 = new PortletPermission("removepermission2", "view, 
edit, minimized, maximized");
  +        try
  +        {
  +            pms.addPermission(perm1);
  +            assertTrue(pms.permissionExists(perm1));
  +        }
  +        catch (SecurityException sex)
  +        {
  +            assertTrue("could not add permission, " + sex, false);
  +        }
  +        assertFalse(pms.permissionExists(perm2));
  +        
  +        //  Cleanup test.
  +        try
  +        {
  +            pms.removePermission(perm1);
  +        }
  +        catch (SecurityException sex)
  +        {
  +            assertTrue("could not remove permission. exception caught: " + sex, 
false);
  +        }
  +    }
  +    
  +    /**
  +     * <p>Test remove permission.</p>
  +     */
       public void testRemovePermission()
       {
           // Init test.
  @@ -123,6 +153,8 @@
           {
               ums.addUser(user.getName(), "password");
               rms.addRole(role.getName());
  +            pms.addPermission(perm1);
  +            pms.addPermission(perm2);
               pms.grantPermission(user, perm1);
               pms.grantPermission(user, perm2);
               pms.grantPermission(role, perm1);
  @@ -184,6 +216,8 @@
           try
           {
               ums.addUser(user2.getName(), "password");
  +            pms.addPermission(perm1);
  +            pms.addPermission(perm2);
           }
           catch (SecurityException sex)
           {
  @@ -261,6 +295,8 @@
           try
           {
               ums.addUser(user.getName(), "password");
  +            pms.addPermission(perm1);
  +            pms.addPermission(perm2);
               pms.grantPermission(user, perm1);
               pms.grantPermission(user, perm2);
           }
  @@ -322,6 +358,10 @@
               rms.addRole(role2.getName());
               gms.addGroup(group1.getName());
               gms.addGroup(group2.getName());
  +            pms.addPermission(perm1);
  +            pms.addPermission(perm2);
  +            pms.addPermission(perm3);
  +            pms.addPermission(perm4);
               pms.grantPermission(role1, perm1);
               pms.grantPermission(role2, perm1);
               pms.grantPermission(role2, perm2);
  @@ -405,6 +445,8 @@
           try
           {
               ums.addUser(user.getName(), "password");
  +            pms.addPermission(perm1);
  +            pms.addPermission(perm2);
               pms.grantPermission(user, perm1);
               pms.grantPermission(user, perm2);
           }
  
  
  
  1.2       +5 -1      
jakarta-jetspeed-2/components/security/src/test/org/apache/jetspeed/security/TestRdbmsPolicyFolder.java
  
  Index: TestRdbmsPolicyFolder.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/components/security/src/test/org/apache/jetspeed/security/TestRdbmsPolicyFolder.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TestRdbmsPolicyFolder.java        18 Sep 2004 05:27:12 -0000      1.1
  +++ TestRdbmsPolicyFolder.java        28 Sep 2004 04:23:52 -0000      1.2
  @@ -277,6 +277,10 @@
           FolderPermission perm3 = new FolderPermission("/files/subfolder2/-", 
"view");
           try
           {
  +            pms.addPermission(perm1);
  +            pms.addPermission(perm2);
  +            pms.addPermission(perm3);
  +            
               pms.grantPermission(user, perm1);
               pms.grantPermission(user, perm2);
               pms.grantPermission(user, perm3);
  
  
  
  1.4       +24 -24    
jakarta-jetspeed-2/components/security/src/java/META-INF/ojb_repository.xml
  
  Index: ojb_repository.xml
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/components/security/src/java/META-INF/ojb_repository.xml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ojb_repository.xml        18 Sep 2004 19:33:21 -0000      1.3
  +++ ojb_repository.xml        28 Sep 2004 04:23:52 -0000      1.4
  @@ -68,8 +68,8 @@
                name="credentials"
                
element-class-ref="org.apache.jetspeed.security.om.impl.InternalCredentialImpl"
                auto-retrieve="true"
  -             auto-update="true"
  -             auto-delete="true"
  +             auto-update="object"
  +             auto-delete="object"
            >
                <documentation>This is the reference to security 
credentials.</documentation>
                <inverse-foreignkey field-ref="credentialId"/>
  @@ -80,8 +80,8 @@
                proxy="true"
                refresh="true"
                auto-retrieve="true"
  -             auto-update="true"
  -             auto-delete="true"
  +             auto-update="link"
  +             auto-delete="link"
                indirection-table="SECURITY_USER_ROLE"
            >
                <documentation>This is the reference to role 
principals.</documentation>
  @@ -94,8 +94,8 @@
                proxy="true"
                refresh="true"
                auto-retrieve="true"
  -             auto-update="true"
  -             auto-delete="true"
  +             auto-update="link"
  +             auto-delete="link"
                indirection-table="SECURITY_USER_GROUP"
            >
                <documentation>This is the reference to group 
principals.</documentation>
  @@ -108,8 +108,8 @@
                proxy="false"
                refresh="false"
                auto-retrieve="false"
  -             auto-update="true"
  -             auto-delete="true"
  +             auto-update="link"
  +             auto-delete="link"
                indirection-table="PRINCIPAL_PERMISSION"
            >
                <documentation>This is the reference to a policy 
permission.</documentation>
  @@ -234,8 +234,8 @@
                proxy="true"
                refresh="true"
                auto-retrieve="true"
  -             auto-update="true"
  -             auto-delete="false"
  +             auto-update="link"
  +             auto-delete="link"
                indirection-table="SECURITY_USER_ROLE"
            >
                <documentation>This is the reference to user 
principals.</documentation>
  @@ -248,8 +248,8 @@
                proxy="true"
                refresh="true"
                auto-retrieve="true"
  -             auto-update="true"
  -             auto-delete="false"
  +             auto-update="link"
  +             auto-delete="link"
                indirection-table="SECURITY_GROUP_ROLE"
            >
                <documentation>This is the reference to group 
principals.</documentation>
  @@ -262,8 +262,8 @@
                proxy="false"
                refresh="false"
                auto-retrieve="false"
  -             auto-update="true"
  -             auto-delete="false"
  +             auto-update="link"
  +             auto-delete="link"
                indirection-table="PRINCIPAL_PERMISSION"
            >
                <documentation>This is the reference to a policy 
permission.</documentation>
  @@ -326,8 +326,8 @@
                proxy="true"
                refresh="true"
                auto-retrieve="true"
  -             auto-update="true"
  -             auto-delete="false"
  +             auto-update="link"
  +             auto-delete="link"
                indirection-table="SECURITY_USER_GROUP"
            >
                <documentation>This is the reference to user 
principals.</documentation>
  @@ -340,8 +340,8 @@
                proxy="true"
                refresh="true"
                auto-retrieve="true"
  -             auto-update="true"
  -             auto-delete="false"
  +             auto-update="link"
  +             auto-delete="link"
                indirection-table="SECURITY_GROUP_ROLE"
            >
                <documentation>This is the reference to group 
principals.</documentation>
  @@ -354,8 +354,8 @@
                proxy="false"
                refresh="false"
                auto-retrieve="false"
  -             auto-update="true"
  -             auto-delete="false"
  +             auto-update="link"
  +             auto-delete="link"
                indirection-table="PRINCIPAL_PERMISSION"
            >
                <documentation>This is the reference to a policy 
permission.</documentation>
  @@ -418,8 +418,8 @@
                proxy="true"
                refresh="true"
                auto-retrieve="true"
  -             auto-update="true"
  -             auto-delete="false"
  +             auto-update="link"
  +             auto-delete="link"
                indirection-table="PRINCIPAL_PERMISSION"
            >
                <documentation>This is the reference to a policy 
permission.</documentation>
  @@ -490,8 +490,8 @@
                proxy="true"
                refresh="true"
                auto-retrieve="true"
  -             auto-update="true"
  -             auto-delete="false"
  +             auto-update="link"
  +             auto-delete="link"
                indirection-table="PRINCIPAL_PERMISSION"
            >
                <documentation>This is the reference to a permission 
principals.</documentation>
  
  
  
  1.2       +3 -0      
jakarta-jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/security/SecurityException.java
  
  Index: SecurityException.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/security/SecurityException.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SecurityException.java    16 Jul 2004 19:31:05 -0000      1.1
  +++ SecurityException.java    28 Sep 2004 04:23:52 -0000      1.2
  @@ -27,6 +27,9 @@
       /** <p>Principal does not exist exception message.</p> */
       public static final String PRINCIPAL_DOES_NOT_EXIST = "The principal does not 
exist.";
   
  +    /** <p>Permission does not exist exception message.</p> */
  +    public static final String PERMISSION_DOES_NOT_EXIST = "The permission does not 
exist.";
  +    
       /** <p>User principal already exists exception message.</p> */
       public static final String USER_ALREADY_EXISTS = "The user already exists.";
   
  
  
  
  1.2       +60 -18    
jakarta-jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/security/PermissionManager.java
  
  Index: PermissionManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/security/PermissionManager.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PermissionManager.java    16 Jul 2004 19:31:05 -0000      1.1
  +++ PermissionManager.java    28 Sep 2004 04:23:52 -0000      1.2
  @@ -20,52 +20,92 @@
   import java.util.Collection;
   
   /**
  - * <p>Describe the interface for managing [EMAIL PROTECTED] Permission} and 
permission
  - * association to [EMAIL PROTECTED] Principal}.  Permissions are used to manage 
Principals
  - * access entitlement on specified resources.</p>
  - * <p>For instance:</p>
  + * <p>
  + * Describe the interface for managing [EMAIL PROTECTED] Permission}and permission
  + * association to [EMAIL PROTECTED] Principal}. Permissions are used to manage 
Principals
  + * access entitlement on specified resources.
  + * </p>
  + * <p>
  + * For instance:
  + * </p>
  + * 
    * <pre><code>
  - * grant principal o.a.j.security.UserPrincipal "theUserPrincipal"
  - * {
  - *     permission o.a.j.security.PortletPermission "myportlet", 
"view,edit,minimize,maximize";
  - * };
  - * </code><pre>
  - * @author <a href="mailto:[EMAIL PROTECTED]">David Le Strat</a>
  + * 
  + *  grant principal o.a.j.security.UserPrincipal &quot;theUserPrincipal&quot;
  + *  {
  + *      permission o.a.j.security.PortletPermission &quot;myportlet&quot;, 
&quot;view,edit,minimize,maximize&quot;;
  + *  };
  + *  
  + * </code>
  + * &lt;pre&gt;
  + *  @author &lt;a href=&quot;mailto:[EMAIL PROTECTED]&quot;&gt;David Le 
Strat&lt;/a&gt;
  + * 
    */
   public interface PermissionManager
   {
   
       /**
  -     * <p>Gets the [EMAIL PROTECTED] Permissions} given a [EMAIL PROTECTED] 
Principal}.
  +     * <p>
  +     * Gets the [EMAIL PROTECTED] Permissions}given a [EMAIL PROTECTED] Principal}.
  +     * 
        * @param principal The principal.
        * @return The permissions.
        */
       Permissions getPermissions(Principal principal);
   
       /**
  -     * <p>Gets the [EMAIL PROTECTED] Permissions} given a collection
  -     * of [EMAIL PROTECTED] Principal}.
  +     * <p>
  +     * Gets the [EMAIL PROTECTED] Permissions}given a collection of [EMAIL 
PROTECTED] Principal}.
  +     * 
        * @param principals A collection of principal.
        * @return The permissions.
        */
       Permissions getPermissions(Collection principals);
   
       /**
  -     * <p>Remove all instances of a given permission.</p>
  +     * <p>
  +     * Adds a permission definition.
  +     * </p>
  +     * 
  +     * @param permission The permission to add.
  +     * @throws Throws a security exception.
  +     */
  +    void addPermission(Permission permission) throws SecurityException;
  +
  +    /**
  +     * <p>
  +     * Remove all instances of a given permission.
  +     * </p>
  +     * 
        * @param permission The permission to remove.
        * @throws Throws a security exception.
        */
       void removePermission(Permission permission) throws SecurityException;
   
       /**
  -     * <p>Remove all permissions for a given principal.</p>
  +     * <p>
  +     * Whether the given permission exists.
  +     * </p>
  +     * 
  +     * @param permission The permission to look for.
  +     * @return Whether the permission exists.
  +     */
  +    boolean permissionExists(Permission permission);
  +
  +    /**
  +     * <p>
  +     * Remove all permissions for a given principal.
  +     * </p>
  +     * 
        * @param principal The principal.
        * @throws Throws a security exception.
        */
       void removePermissions(Principal principal) throws SecurityException;
   
       /**
  -     * <p>Grant a [EMAIL PROTECTED] Permission} to a given [EMAIL PROTECTED] 
Principal}. 
  +     * <p>
  +     * Grant a [EMAIL PROTECTED] Permission}to a given [EMAIL PROTECTED] Principal}.
  +     * 
        * @param principal The principal.
        * @param permission The permission.
        * @throws Throws a security exception if the principal does not exist.
  @@ -73,11 +113,13 @@
       void grantPermission(Principal principal, Permission permission) throws 
SecurityException;
   
       /**
  -     * <p>Revoke a [EMAIL PROTECTED] Permission} from a given [EMAIL PROTECTED] 
Principal}.
  +     * <p>
  +     * Revoke a [EMAIL PROTECTED] Permission}from a given [EMAIL PROTECTED] 
Principal}.
  +     * 
        * @param principal The principal.
        * @param permission The permission.
        * @throws Throws a security exception.
        */
       void revokePermission(Principal principal, Permission permission) throws 
SecurityException;
   
  -}
  +}
  \ No newline at end of file
  
  
  
  1.4       +1 -1      
jakarta-jetspeed-2/components/security/src/java/org/apache/jetspeed/security/spi/impl/DefaultRoleSecurityHandler.java
  
  Index: DefaultRoleSecurityHandler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/components/security/src/java/org/apache/jetspeed/security/spi/impl/DefaultRoleSecurityHandler.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DefaultRoleSecurityHandler.java   25 Sep 2004 23:03:17 -0000      1.3
  +++ DefaultRoleSecurityHandler.java   28 Sep 2004 04:23:52 -0000      1.4
  @@ -73,7 +73,7 @@
        */
       public void removeRolePrincipal(RolePrincipal rolePrincipal) throws 
SecurityException
       {
  -        InternalRolePrincipal internalRole = 
commonQueries.getInternalRolePrincipal(rolePrincipal.getName());
  +        InternalRolePrincipal internalRole = 
commonQueries.getInternalRolePrincipal(rolePrincipal.getFullPath());
           if (null != internalRole)
           {
               commonQueries.removeInternalRolePrincipal(internalRole);
  
  
  
  1.6       +178 -143  
jakarta-jetspeed-2/components/security/src/java/org/apache/jetspeed/security/impl/PermissionManagerImpl.java
  
  Index: PermissionManagerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/components/security/src/java/org/apache/jetspeed/security/impl/PermissionManagerImpl.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- PermissionManagerImpl.java        25 Sep 2004 23:03:17 -0000      1.5
  +++ PermissionManagerImpl.java        28 Sep 2004 04:23:52 -0000      1.6
  @@ -37,34 +37,50 @@
   import org.apache.jetspeed.util.ArgUtil;
   
   /**
  - * <p>Implementation for managing [EMAIL PROTECTED] Permission} and permission
  - * association to [EMAIL PROTECTED] Principal}.  Permissions are used to manage 
Principals
  - * access entitlement on specified resources.</p>
  - * <p>For instance:</p>
  + * <p>
  + * Implementation for managing [EMAIL PROTECTED] Permission}and permission 
association to
  + * [EMAIL PROTECTED] Principal}. Permissions are used to manage Principals access
  + * entitlement on specified resources.
  + * </p>
  + * <p>
  + * For instance:
  + * </p>
  + * 
    * <pre><code>
  - * grant principal o.a.j.security.UserPrincipal "theUserPrincipal"
  - * {
  - *     permission o.a.j.security.PortletPermission "myportlet", 
"view,edit,minimize,maximize";
  - * };
  - * </code><pre>
  - * @author <a href="mailto:[EMAIL PROTECTED]">David Le Strat</a>
  + * 
  + *  
  + *   grant principal o.a.j.security.UserPrincipal &quot;theUserPrincipal&quot;
  + *   {
  + *       permission o.a.j.security.PortletPermission &quot;myportlet&quot;, 
&quot;view,edit,minimize,maximize&quot;;
  + *   };
  + *   
  + *  
  + * </code>
  + * 
  + *  &lt;pre&gt;
  + *   @author &lt;a href=&quot;mailto:[EMAIL PROTECTED]&quot;&gt;David Le 
Strat&lt;/a&gt;
  + * 
  + * 
    */
   public class PermissionManagerImpl implements PermissionManager
   {
       private static final Log log = LogFactory.getLog(PermissionManagerImpl.class);
   
  -    PersistenceStore persistenceStore;
  +    /** The persistence store. */
  +    private PersistenceStore persistenceStore;
   
       /**
  -     * <p>Constructor providing access to the persistence component.</p>
  +     * <p>
  +     * Constructor providing access to the persistence component.
  +     * </p>
        */
       public PermissionManagerImpl(PersistenceStore persistenceStore)
       {
           if (persistenceStore == null)
           {
  -            throw new IllegalArgumentException("persistenceStore cannot be null for 
BaseSecurityImpl");
  +            throw new IllegalArgumentException("persistenceStore cannot be null.");
           }
  -        
  +
           this.persistenceStore = persistenceStore;
       }
   
  @@ -74,16 +90,17 @@
       public Permissions getPermissions(Principal principal)
       {
           String fullPath = SecurityHelper.getPreferencesFullPath(principal);
  -        ArgUtil.notNull(new Object[] { fullPath }, new String[] { "fullPath" }, 
"removePermission(java.security.Principal)");
  +        ArgUtil.notNull(new Object[] { fullPath }, new String[] { "fullPath" },
  +                "removePermission(java.security.Principal)");
   
           // Remove permissions on principal.
  -        InternalPrincipal omPrincipal = getJetspeedPrincipal(fullPath);
  -        Collection omPermissions = new ArrayList();
  -        if (null != omPrincipal)
  +        InternalPrincipal internalPrincipal = getInternalPrincipal(fullPath);
  +        Collection internalPermissions = new ArrayList();
  +        if (null != internalPrincipal)
           {
  -            omPermissions = omPrincipal.getPermissions();
  +            internalPermissions = internalPrincipal.getPermissions();
           }
  -        return getSecurityPermissions(omPermissions);
  +        return getSecurityPermissions(internalPermissions);
       }
   
       /**
  @@ -91,25 +108,25 @@
        */
       public Permissions getPermissions(Collection principals)
       {
  -        ArgUtil.notNull(new Object[] { principals }, new String[] { "principals" }, 
"getPermissions(java.util.Collection)");
  +        ArgUtil.notNull(new Object[] { principals }, new String[] { "principals" },
  +                "getPermissions(java.util.Collection)");
   
           Permissions permissions = new Permissions();
           Collection principalsFullPath = getPrincipalsFullPath(principals);
           if ((null != principalsFullPath) && principalsFullPath.size() > 0)
           {
  -            PersistenceStore store = getPersistenceStore();
  -            Filter filter = store.newFilter();
  +            Filter filter = persistenceStore.newFilter();
               filter.addIn("fullPath", principalsFullPath);
  -            Object query = store.newQuery(InternalPrincipalImpl.class, filter);
  -            Collection omPrincipals = store.getCollectionByQuery(query);
  -            Iterator omPrincipalsIterator = omPrincipals.iterator();
  -            while (omPrincipalsIterator.hasNext())
  -            {
  -                InternalPrincipal omPrincipal = (InternalPrincipal) 
omPrincipalsIterator.next();
  -                Collection omPermissions = omPrincipal.getPermissions();
  -                if (null != omPermissions)
  +            Object query = persistenceStore.newQuery(InternalPrincipalImpl.class, 
filter);
  +            Collection internalPrincipals = 
persistenceStore.getCollectionByQuery(query);
  +            Iterator internalPrincipalsIter = internalPrincipals.iterator();
  +            while (internalPrincipalsIter.hasNext())
  +            {
  +                InternalPrincipal internalPrincipal = (InternalPrincipal) 
internalPrincipalsIter.next();
  +                Collection internalPermissions = internalPrincipal.getPermissions();
  +                if (null != internalPermissions)
                   {
  -                    permissions = getSecurityPermissions(omPermissions);
  +                    permissions = getSecurityPermissions(internalPermissions);
                   }
               }
           }
  @@ -117,7 +134,10 @@
       }
   
       /**
  -     * <p>Get the full path for the [EMAIL PROTECTED] Principal} in the 
collection.</p>
  +     * <p>
  +     * Get the full path for the [EMAIL PROTECTED] Principal}in the collection.
  +     * </p>
  +     * 
        * @param principals The collection of principals.
        * @return The collection of principals names.
        */
  @@ -138,25 +158,28 @@
       }
   
       /**
  -     * <p>Iterate through a collection of [EMAIL PROTECTED] InternalPermission}
  -     * and build a collection of [EMAIL PROTECTED] java.security.Permission}.</p>
  +     * <p>
  +     * Iterate through a collection of [EMAIL PROTECTED] InternalPermission}and 
build a
  +     * collection of [EMAIL PROTECTED] java.security.Permission}.
  +     * </p>
  +     * 
        * @param omPermissions The collection of [EMAIL PROTECTED] InternalPermission}.
        * @return The collection of [EMAIL PROTECTED] java.security.Permission}.
        */
       private Permissions getSecurityPermissions(Collection omPermissions)
       {
           Permissions permissions = new Permissions();
  -        Iterator omPermissionsIterator = omPermissions.iterator();
  -        while (omPermissionsIterator.hasNext())
  +        Iterator internalPermissionsIter = omPermissions.iterator();
  +        while (internalPermissionsIter.hasNext())
           {
  -            InternalPermission omPermission = (InternalPermission) 
omPermissionsIterator.next();
  +            InternalPermission internalPermission = (InternalPermission) 
internalPermissionsIter.next();
               Permission permission = null;
               try
               {
  -                Class permissionClass = Class.forName(omPermission.getClassname());
  +                Class permissionClass = 
Class.forName(internalPermission.getClassname());
                   Class[] parameterTypes = { String.class, String.class };
                   Constructor permissionConstructor = 
permissionClass.getConstructor(parameterTypes);
  -                Object[] initArgs = { omPermission.getName(), 
omPermission.getActions()};
  +                Object[] initArgs = { internalPermission.getName(), 
internalPermission.getActions() };
                   permission = (Permission) 
permissionConstructor.newInstance(initArgs);
                   permissions.add(permission);
               }
  @@ -169,39 +192,51 @@
       }
   
       /**
  +     * @see 
org.apache.jetspeed.security.PermissionManager#addPermission(java.security.Permission)
  +     */
  +    public void addPermission(Permission permission) throws SecurityException
  +    {
  +        ArgUtil.notNull(new Object[] { permission }, new String[] { "permission" },
  +                "addPermission(java.security.Permission)");
  +
  +        InternalPermission internalPermission = new 
InternalPermissionImpl(permission.getClass().getName(), permission
  +                .getName(), permission.getActions());
  +        try
  +        {
  +            persistenceStore.lockForWrite(internalPermission);
  +            persistenceStore.getTransaction().checkpoint();
  +        }
  +        catch (Exception e)
  +        {
  +            String msg = "Unable to add permission.";
  +            log.error(msg, e);
  +            persistenceStore.getTransaction().rollback();
  +            throw new SecurityException(msg, e);
  +        }
  +    }
  +
  +    /**
        * @see 
org.apache.jetspeed.security.PermissionManager#removePermission(java.security.Permission)
        */
       public void removePermission(Permission permission) throws SecurityException
       {
  -        ArgUtil.notNull(new Object[] { permission }, new String[] { "permission" }, 
"removePermission(java.security.Permission)");
  +        ArgUtil.notNull(new Object[] { permission }, new String[] { "permission" },
  +                "removePermission(java.security.Permission)");
   
  -        InternalPermission omPermission = getJetspeedPermission(permission);
  -        if (null != omPermission)
  +        InternalPermission internalPermission = getInternalPermission(permission);
  +        if (null != internalPermission)
           {
  -            Collection omPrincipals = omPermission.getPrincipals();
  -            if (null != omPrincipals)
  -            {
  -                omPrincipals.clear();
  -            }
  -            PersistenceStore store = getPersistenceStore();
               try
               {
  -                // TODO Can this be done in one shot?
  -                // Remove principals.
  -                store.lockForWrite(omPermission);
  -                omPermission.setModifiedDate(new 
Timestamp(System.currentTimeMillis()));
  -                omPermission.setPrincipals(omPrincipals);
  -                store.getTransaction().checkpoint();
  -
                   // Remove permission.
  -                store.deletePersistent(omPermission);
  -                store.getTransaction().checkpoint();
  +                persistenceStore.deletePersistent(internalPermission);
  +                persistenceStore.getTransaction().checkpoint();
               }
               catch (Exception e)
               {
                   String msg = "Unable to lock Permission for update.";
                   log.error(msg, e);
  -                store.getTransaction().rollback();
  +                persistenceStore.getTransaction().rollback();
                   throw new SecurityException(msg, e);
               }
           }
  @@ -213,117 +248,125 @@
       public void removePermissions(Principal principal) throws SecurityException
       {
           String fullPath = SecurityHelper.getPreferencesFullPath(principal);
  -        ArgUtil.notNull(new Object[] { fullPath }, new String[] { "fullPath" }, 
"removePermission(java.security.Principal)");
  +        ArgUtil.notNull(new Object[] { fullPath }, new String[] { "fullPath" },
  +                "removePermission(java.security.Principal)");
   
           // Remove permissions on principal.
  -        InternalPrincipal omPrincipal = getJetspeedPrincipal(fullPath);
  -        if (null != omPrincipal)
  +        InternalPrincipal internalPrincipal = getInternalPrincipal(fullPath);
  +        if (null != internalPrincipal)
           {
  -            Collection omPermissions = omPrincipal.getPermissions();
  -            if (null != omPermissions)
  +            Collection internalPermissions = internalPrincipal.getPermissions();
  +            if (null != internalPermissions)
               {
  -                omPermissions.clear();
  +                internalPermissions.clear();
               }
  -            PersistenceStore store = getPersistenceStore();
               try
               {
  -                store.lockForWrite(omPrincipal);
  -                omPrincipal.setModifiedDate(new 
Timestamp(System.currentTimeMillis()));
  -                omPrincipal.setPermissions(omPermissions);
  -                store.getTransaction().checkpoint();
  +                persistenceStore.lockForWrite(internalPrincipal);
  +                internalPrincipal.setModifiedDate(new 
Timestamp(System.currentTimeMillis()));
  +                internalPrincipal.setPermissions(internalPermissions);
  +                persistenceStore.getTransaction().checkpoint();
               }
               catch (Exception e)
               {
                   String msg = "Unable to lock Principal for update.";
                   log.error(msg, e);
  -                store.getTransaction().rollback();
  +                persistenceStore.getTransaction().rollback();
                   throw new SecurityException(msg, e);
               }
           }
       }
   
       /**
  -     * @see 
org.apache.jetspeed.security.PermissionManager#grantPermission(java.security.Principal,
 java.security.Permission)
  +     * @see 
org.apache.jetspeed.security.PermissionManager#grantPermission(java.security.Principal,
  +     *      java.security.Permission)
        */
       public void grantPermission(Principal principal, Permission permission) throws 
SecurityException
       {
           String fullPath = SecurityHelper.getPreferencesFullPath(principal);
  -        ArgUtil.notNull(
  -            new Object[] { fullPath, permission },
  -            new String[] { "fullPath", "permission" },
  -            "grantPermission(java.security.Principal, java.security.Permission)");
  +        ArgUtil.notNull(new Object[] { fullPath, permission }, new String[] { 
"fullPath", "permission" },
  +                "grantPermission(java.security.Principal, 
java.security.Permission)");
   
           boolean createPermission = true;
  -        Collection omPermissions = new ArrayList();
  +        Collection internalPermissions = new ArrayList();
   
  -        InternalPrincipal omPrincipal = getJetspeedPrincipal(fullPath);
  -        if (null == omPrincipal)
  +        InternalPrincipal internalPrincipal = getInternalPrincipal(fullPath);
  +        if (null == internalPrincipal)
           {
               throw new SecurityException(SecurityException.PRINCIPAL_DOES_NOT_EXIST 
+ ": " + principal.getName());
           }
  -        InternalPermission omPermission = getJetspeedPermission(permission);
  -        if (null == omPermission)
  +        InternalPermission internalPermission = getInternalPermission(permission);
  +        if (null == internalPermission)
           {
  -            omPermission =
  -                new InternalPermissionImpl(permission.getClass().getName(), 
permission.getName(), permission.getActions());
  +            throw new SecurityException(SecurityException.PERMISSION_DOES_NOT_EXIST 
+ ": " + permission.getName());
           }
   
  -        if (null != omPrincipal.getPermissions())
  +        if (null != internalPrincipal.getPermissions())
           {
  -            omPermissions.addAll(omPrincipal.getPermissions());
  +            internalPermissions.addAll(internalPrincipal.getPermissions());
           }
  -        if (!omPermissions.contains(omPermission))
  +        if (!internalPermissions.contains(internalPermission))
           {
  -            omPermissions.add(omPermission);
  +            internalPermissions.add(internalPermission);
           }
  -        PersistenceStore store = getPersistenceStore();
           try
           {
  -            store.lockForWrite(omPrincipal);
  -            omPrincipal.setModifiedDate(new Timestamp(System.currentTimeMillis()));
  -            omPrincipal.setPermissions(omPermissions);
  -            store.getTransaction().checkpoint();
  +            persistenceStore.lockForWrite(internalPrincipal);
  +            internalPrincipal.setModifiedDate(new 
Timestamp(System.currentTimeMillis()));
  +            internalPrincipal.setPermissions(internalPermissions);
  +            persistenceStore.getTransaction().checkpoint();
           }
           catch (Exception e)
           {
               String msg = "Unable to lock Principal for update.";
               log.error(msg, e);
  -            store.getTransaction().rollback();
  +            persistenceStore.getTransaction().rollback();
               throw new SecurityException(msg, e);
           }
       }
  -    
  -    // TODO Add a permissionExists method.
   
       /**
  -     * @see 
org.apache.jetspeed.security.PermissionManager#revokePermission(java.security.Principal,
 java.security.Permission)
  +     * @see 
org.apache.jetspeed.security.PermissionManager#permissionExists(java.security.Permission)
  +     */
  +    public boolean permissionExists(Permission permission)
  +    {
  +        boolean permissionExists = true;
  +        InternalPermission internalPermission = getInternalPermission(permission);
  +        if (null == internalPermission)
  +        {
  +            permissionExists = false;
  +        }
  +        return permissionExists;
  +    }
  +
  +    /**
  +     * @see 
org.apache.jetspeed.security.PermissionManager#revokePermission(java.security.Principal,
  +     *      java.security.Permission)
        */
       public void revokePermission(Principal principal, Permission permission) throws 
SecurityException
       {
           String fullPath = SecurityHelper.getPreferencesFullPath(principal);
  -        ArgUtil.notNull(
  -            new Object[] { fullPath, permission },
  -            new String[] { "fullPath", "permission" },
  -            "revokePermission(java.security.Principal, java.security.Permission)");
  +        ArgUtil.notNull(new Object[] { fullPath, permission }, new String[] { 
"fullPath", "permission" },
  +                "revokePermission(java.security.Principal, 
java.security.Permission)");
   
           // Remove permissions on principal.
  -        InternalPrincipal omPrincipal = getJetspeedPrincipal(fullPath);
  -        if (null != omPrincipal)
  +        InternalPrincipal internalPrincipal = getInternalPrincipal(fullPath);
  +        if (null != internalPrincipal)
           {
  -            Collection omPermissions = omPrincipal.getPermissions();
  -            if (null != omPermissions)
  +            Collection internalPermissions = internalPrincipal.getPermissions();
  +            if (null != internalPermissions)
               {
                   boolean revokePermission = false;
  -                ArrayList newOmPermissions = new ArrayList();
  -                Iterator omPermissionsIterator = omPermissions.iterator();
  -                while (omPermissionsIterator.hasNext())
  +                ArrayList newInternalPermissions = new ArrayList();
  +                Iterator internalPermissionsIter = internalPermissions.iterator();
  +                while (internalPermissionsIter.hasNext())
                   {
  -                    InternalPermission omPermission = (InternalPermission) 
omPermissionsIterator.next();
  -                    if 
(!((omPermission.getClassname().equals(permission.getClass().getName()))
  -                        && (omPermission.getName().equals(permission.getName()))
  -                        && 
(omPermission.getActions().equals(permission.getActions()))))
  +                    InternalPermission internalPermission = (InternalPermission) 
internalPermissionsIter.next();
  +                    if 
(!((internalPermission.getClassname().equals(permission.getClass().getName()))
  +                            && 
(internalPermission.getName().equals(permission.getName())) && 
(internalPermission.getActions()
  +                            .equals(permission.getActions()))))
                       {
  -                        newOmPermissions.add(omPermission);
  +                        newInternalPermissions.add(internalPermission);
                       }
                       else
                       {
  @@ -332,19 +375,18 @@
                   }
                   if (revokePermission)
                   {
  -                    PersistenceStore store = getPersistenceStore();
                       try
                       {
  -                        store.lockForWrite(omPrincipal);
  -                        omPrincipal.setModifiedDate(new 
Timestamp(System.currentTimeMillis()));
  -                        omPrincipal.setPermissions(newOmPermissions);
  -                        store.getTransaction().checkpoint();
  +                        persistenceStore.lockForWrite(internalPrincipal);
  +                        internalPrincipal.setModifiedDate(new 
Timestamp(System.currentTimeMillis()));
  +                        internalPrincipal.setPermissions(newInternalPermissions);
  +                        persistenceStore.getTransaction().checkpoint();
                       }
                       catch (Exception e)
                       {
                           String msg = "Unable to lock Principal for update.";
                           log.error(msg, e);
  -                        store.getTransaction().rollback();
  +                        persistenceStore.getTransaction().rollback();
                           throw new SecurityException(msg, e);
                       }
                   }
  @@ -353,46 +395,39 @@
       }
   
       /**
  -     * <p>Returns the [EMAIL PROTECTED] InternalPrincipal} from the full path.</p>
  +     * <p>
  +     * Returns the [EMAIL PROTECTED] InternalPrincipal}from the full path.
  +     * </p>
  +     * 
        * @param fullPath The full path.
        * @return The [EMAIL PROTECTED] InternalPrincipal}.
        */
  -    InternalPrincipal getJetspeedPrincipal(String fullPath)
  +    InternalPrincipal getInternalPrincipal(String fullPath)
       {
  -        PersistenceStore store = getPersistenceStore();
  -        Filter filter = store.newFilter();
  +        Filter filter = persistenceStore.newFilter();
           filter.addEqualTo("fullPath", fullPath);
  -        Object query = store.newQuery(InternalPrincipalImpl.class, filter);
  -        InternalPrincipal omPrincipal = (InternalPrincipal) 
store.getObjectByQuery(query);
  -        return omPrincipal;
  +        Object query = persistenceStore.newQuery(InternalPrincipalImpl.class, 
filter);
  +        InternalPrincipal internalPrincipal = (InternalPrincipal) 
persistenceStore.getObjectByQuery(query);
  +        return internalPrincipal;
       }
   
       /**
  -     * <p>Returns the [EMAIL PROTECTED] InternalPermission} from the full path.</p>
  +     * <p>
  +     * Returns the [EMAIL PROTECTED] InternalPermission}from the full path.
  +     * </p>
  +     * 
        * @param fullPath The full path.
        * @return The [EMAIL PROTECTED] InternalPermission}.
        */
  -    InternalPermission getJetspeedPermission(Permission permission)
  +    InternalPermission getInternalPermission(Permission permission)
       {
  -        PersistenceStore store = getPersistenceStore();
  -        Filter filter = store.newFilter();
  +        Filter filter = persistenceStore.newFilter();
           filter.addEqualTo("classname", permission.getClass().getName());
           filter.addEqualTo("name", permission.getName());
           filter.addEqualTo("actions", permission.getActions());
  -        Object query = store.newQuery(InternalPermissionImpl.class, filter);
  -        InternalPermission omPermission = (InternalPermission) 
store.getObjectByQuery(query);
  -        return omPermission;
  -    }
  -
  -    /**
  -     * <p>Utility method to get the persistence store and initiate
  -     * the transaction if not open.</p>
  -     * @return The persistence store.
  -     */
  -    PersistenceStore getPersistenceStore()
  -    {
  -    
  -        return persistenceStore;
  +        Object query = persistenceStore.newQuery(InternalPermissionImpl.class, 
filter);
  +        InternalPermission internalPermission = (InternalPermission) 
persistenceStore.getObjectByQuery(query);
  +        return internalPermission;
       }
   
   }
  
  
  
  1.8       +10 -10    
jakarta-jetspeed-2/components/security/src/java/org/apache/jetspeed/security/impl/RoleManagerImpl.java
  
  Index: RoleManagerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/components/security/src/java/org/apache/jetspeed/security/impl/RoleManagerImpl.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- RoleManagerImpl.java      25 Sep 2004 23:03:17 -0000      1.7
  +++ RoleManagerImpl.java      28 Sep 2004 04:23:52 -0000      1.8
  @@ -393,9 +393,9 @@
                   "isUserInRole(java.lang.String, java.lang.String)");
   
           boolean isUserInRole = false;
  -        
  +
           Set rolePrincipals = securityMappingHandler.getRolePrincipals(username);
  -        Principal rolePrincipal = new RolePrincipalImpl(roleFullPathName);       
  +        Principal rolePrincipal = new RolePrincipalImpl(roleFullPathName);
           if (rolePrincipals.contains(rolePrincipal))
           {
               isUserInRole = true;
  @@ -498,21 +498,21 @@
           ArgUtil.notNull(new Object[] { roleFullPathName, groupFullPathName }, new 
String[] { "roleFullPathName",
                   "groupFullPathName" }, "isGroupInRole(java.lang.String, 
java.lang.String)");
   
  +        boolean isGroupInRole = false;
  +
           InternalGroupPrincipal omGroup = 
super.getJetspeedGroupPrincipal(groupFullPathName);
           if (null == omGroup)
           {
               throw new SecurityException(SecurityException.GROUP_DOES_NOT_EXIST + " 
" + groupFullPathName);
           }
           InternalRolePrincipal omRole = 
super.getJetspeedRolePrincipal(roleFullPathName);
  -        if (null == omRole)
  +        if (null != omRole)
           {
  -            throw new SecurityException(SecurityException.ROLE_DOES_NOT_EXIST + " " 
+ roleFullPathName);
  -        }
  -        boolean isGroupInRole = false;
  -        Collection omRoles = omGroup.getRolePrincipals();
  -        if ((null != omRoles) && (omRoles.contains(omRole)))
  -        {
  -            isGroupInRole = true;
  +            Collection omRoles = omGroup.getRolePrincipals();
  +            if ((null != omRoles) && (omRoles.contains(omRole)))
  +            {
  +                isGroupInRole = true;
  +            }
           }
           return isGroupInRole;
       }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to