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