You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@turbine.apache.org by ep...@apache.org on 2004/07/07 19:17:29 UTC

cvs commit: jakarta-turbine-fulcrum/security/hibernate/src/java/org/apache/fulcrum/security/hibernate/dynamic HibernateModelManagerImpl.java

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: turbine-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: turbine-dev-help@jakarta.apache.org