epugh       2004/07/07 10:17:29

  Modified:    security/hibernate/src/test DynamicHibernate.hbm.xml
               
security/hibernate/src/java/org/apache/fulcrum/security/hibernate/dynamic
                        HibernateModelManagerImpl.java
  Log:
  Allow dynamic permissions to know about their roles..  Allows revokeAll(permission) 
to be called.
  
  Revision  Changes    Path
  1.2       +8 -3      
jakarta-turbine-fulcrum/security/hibernate/src/test/DynamicHibernate.hbm.xml
  
  Index: DynamicHibernate.hbm.xml
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-fulcrum/security/hibernate/src/test/DynamicHibernate.hbm.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DynamicHibernate.hbm.xml  5 Dec 2003 23:20:24 -0000       1.1
  +++ DynamicHibernate.hbm.xml  7 Jul 2004 17:17:29 -0000       1.2
  @@ -8,15 +8,21 @@
         <id name="id" type="long" column="PERMISSION_ID" unsaved-value="0">
              <generator class="native"/>
           </id>
  -      <property name="name" column="NAME" type="string"/>          
  +      <property name="name" column="NAME" type="string"/>     
  +      
  +      <set name="rolesAsSet" lazy="true" table="ROLE_PERMISSION" inverse="true" 
cascade="none">
  +        <key column="PERMISSION_ID"/>
  +        <many-to-many 
class="org.apache.fulcrum.security.model.dynamic.entity.DynamicRole" 
column="ROLE_ID"/> 
  +      </set>           
       </class>
  +    
       <class name="org.apache.fulcrum.security.model.dynamic.entity.DynamicRole" 
table="ROLE" >
         <id name="id" type="long" column="ROLE_ID" unsaved-value="0">
              <generator class="native"/>
           </id>
         <property name="name" column="NAME" type="string"/>      
         
  -    <set name="permissionsAsSet" lazy="true" table="ROLE_PERMISSION">
  +    <set name="permissionsAsSet" lazy="true" table="ROLE_PERMISSION" cascade="none">
           <key column="ROLE_ID"/>
           <many-to-many 
class="org.apache.fulcrum.security.model.dynamic.entity.DynamicPermission" 
column="PERMISSION_ID"/> 
         </set>
  @@ -56,6 +62,5 @@
           <many-to-many 
class="org.apache.fulcrum.security.model.dynamic.entity.DynamicGroup" 
column="GROUP_ID"/> 
         </set>
       </class>    
  -
       
     </hibernate-mapping>
  
  
  
  1.5       +41 -2     
jakarta-turbine-fulcrum/security/hibernate/src/java/org/apache/fulcrum/security/hibernate/dynamic/HibernateModelManagerImpl.java
  
  Index: HibernateModelManagerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-fulcrum/security/hibernate/src/java/org/apache/fulcrum/security/hibernate/dynamic/HibernateModelManagerImpl.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- HibernateModelManagerImpl.java    29 Mar 2004 07:50:27 -0000      1.4
  +++ HibernateModelManagerImpl.java    7 Jul 2004 17:17:29 -0000       1.5
  @@ -64,6 +64,7 @@
   import org.apache.fulcrum.security.hibernate.AbstractHibernateModelManager;
   import org.apache.fulcrum.security.model.dynamic.DynamicModelManager;
   import org.apache.fulcrum.security.model.dynamic.entity.DynamicGroup;
  +import org.apache.fulcrum.security.model.dynamic.entity.DynamicPermission;
   import org.apache.fulcrum.security.model.dynamic.entity.DynamicRole;
   import org.apache.fulcrum.security.model.dynamic.entity.DynamicUser;
   import org.apache.fulcrum.security.util.DataBackendException;
  @@ -143,7 +144,12 @@
               if (roleExists && permissionExists)
               {
                   ((DynamicRole) role).addPermission(permission);
  -                             getPersistenceHelper().updateEntity(role);
  +                ((DynamicPermission) permission).addRole(role);
  +                Session session = getPersistenceHelper().retrieveSession();
  +                Transaction transaction = session.beginTransaction();
  +                session.update(role);
  +                session.update(permission);
  +                transaction.commit();
                   return;
               }
           }
  @@ -446,4 +452,37 @@
                throw new UnknownEntityException("Unknown group '" + group.getName() + 
"'");
        }
       }
  +    
  +    /**
  +     * Revokes all roles from a permission
  +     * 
  +     * This method is used when deleting a permission.
  +     * 
  +     * @param permission the permission.
  +     * @throws DataBackendException if there was an error accessing the data 
backend.
  +     * @throws UnknownEntityException if the account is not present.
  +     */
  +    public synchronized void revokeAll(Permission permission)
  +     throws DataBackendException, UnknownEntityException
  +     {
  +     boolean permissionExists = false;
  +     permissionExists = getPermissionManager().checkExists(permission);
  +     if (permissionExists)
  +     {
  +             Object roles[] = ((DynamicPermission) permission).getRoles().toArray();
  +             
  +             for (int i = 0; i < roles.length; i++)
  +             {
  +                 Role role = (Role) roles[i];
  +                     revoke(role, permission);
  +             }
  +
  +             
  +             return;
  +     }
  +     else
  +     {
  +             throw new UnknownEntityException("Unknown permission '" + 
permission.getName() + "'");
  +     }
  +    }    
   }
  
  
  

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

Reply via email to