[seam-commits] Seam SVN: r9383 - trunk/src/main/org/jboss/seam/security/management.

seam-commits at lists.jboss.org seam-commits at lists.jboss.org
Wed Oct 22 21:25:26 EDT 2008


Author: shane.bryzak at jboss.com
Date: 2008-10-22 21:25:25 -0400 (Wed, 22 Oct 2008)
New Revision: 9383

Modified:
   trunk/src/main/org/jboss/seam/security/management/JpaIdentityStore.java
Log:
JBSEAM-3552

Modified: trunk/src/main/org/jboss/seam/security/management/JpaIdentityStore.java
===================================================================
--- trunk/src/main/org/jboss/seam/security/management/JpaIdentityStore.java	2008-10-22 19:01:16 UTC (rev 9382)
+++ trunk/src/main/org/jboss/seam/security/management/JpaIdentityStore.java	2008-10-23 01:25:25 UTC (rev 9383)
@@ -38,6 +38,8 @@
 import org.jboss.seam.log.LogProvider;
 import org.jboss.seam.log.Logging;
 import org.jboss.seam.security.Identity;
+import org.jboss.seam.security.Role;
+import org.jboss.seam.security.SimplePrincipal;
 import org.jboss.seam.util.AnnotatedBeanProperty;
 import org.jboss.seam.util.TypedBeanProperty;
 
@@ -518,6 +520,18 @@
          throw new NoSuchRoleException("Could not delete role, role '" + role + "' does not exist");
       }        
       
+      for (Principal principal : listMembers(role))
+      {
+         if (SimplePrincipal.class.equals(principal.getClass()))
+         {
+            revokeRole(principal.getName(), role);
+         }
+         else if (Role.class.equals(principal.getClass()))
+         {
+            removeRoleFromGroup(principal.getName(), role);
+         }
+      }
+      
       removeEntity(roleToDelete);
       return true;
    }
@@ -843,8 +857,37 @@
    
    public List<Principal> listMembers(String role)
    {
-      // TODO implement
-      return null;
+      List<Principal> members = new ArrayList<Principal>();
+      
+      Object roleEntity = lookupRole(role);
+
+      if (xrefClass == null)
+      {      
+         List<String> users = lookupEntityManager().createQuery("select u." + userPrincipalProperty.getName() + 
+               " from " + userClass.getName() + " u where :role member of u." + userRolesProperty.getName())
+               .setParameter("role", roleEntity)
+               .getResultList();
+         
+         for (String user : users)
+         {
+            members.add(new SimplePrincipal(user));
+         }
+         
+         if (roleGroupsProperty != null)
+         {
+            List<String> roles = lookupEntityManager().createQuery("select r." + roleNameProperty.getName() +
+                  " from " + roleClass.getName() + " r where :role member of r." + roleGroupsProperty.getName())
+                  .setParameter("role", roleEntity)
+                  .getResultList();
+            
+            for (String roleName : roles)
+            {
+               members.add(new Role(roleName));
+            }
+         }
+      }
+
+      return members;
    }
    
    public List<String> listGrantableRoles()




More information about the seam-commits mailing list