[jboss-cvs] JBossAS SVN: r67129 - projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Nov 15 07:27:37 EST 2007


Author: wolfc
Date: 2007-11-15 07:27:37 -0500 (Thu, 15 Nov 2007)
New Revision: 67129

Modified:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/SecurityRolesMetaData.java
Log:
JBAS-4506: fixed regression on security roles merge

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/SecurityRolesMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/SecurityRolesMetaData.java	2007-11-15 12:08:54 UTC (rev 67128)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/javaee/spec/SecurityRolesMetaData.java	2007-11-15 12:27:37 UTC (rev 67129)
@@ -57,20 +57,8 @@
    {
       super.addNotification(added);
       
-      Set<String> principals = added.getPrincipals();
-      if(principals == null)
-         return;
-      
-      for(String principal : principals)
-      {
-         Set<String> roles = principalVersusRolesMap.get(principal);
-         if(roles == null)
-         {
-            roles = new HashSet<String>();
-            principalVersusRolesMap.put(principal, roles);
-         }
-         roles.add(added.getRoleName());
-      }
+      // update the roles map
+      processSecurityRoleMetaData(added);
    }
    
    public Map<String,Set<String>> getPrincipalVersusRolesMap()
@@ -157,8 +145,43 @@
             }
          }
       }
+      // Take the easy way out
+      rebuildPrincipalsVersusRolesMap();
    }
 
+   /**
+    * Add entries to principalVersusRolesMap for the specified role meta data.
+    * 
+    * @param roleMetaData   the security role meta data
+    */
+   private void processSecurityRoleMetaData(SecurityRoleMetaData roleMetaData)
+   {
+      Set<String> principals = roleMetaData.getPrincipals();
+      if(principals == null)
+         return;
+      
+      for(String principal : principals)
+      {
+         Set<String> roles = principalVersusRolesMap.get(principal);
+         if(roles == null)
+         {
+            roles = new HashSet<String>();
+            principalVersusRolesMap.put(principal, roles);
+         }
+         roles.add(roleMetaData.getRoleName());
+      }
+   }
+   
+   private void rebuildPrincipalsVersusRolesMap()
+   {
+      principalVersusRolesMap.clear();
+      
+      for(SecurityRoleMetaData roleMetaData : this)
+      {
+         processSecurityRoleMetaData(roleMetaData);
+      }
+   }
+   
    @Override
    protected void removeNotification(SecurityRoleMetaData removed)
    {




More information about the jboss-cvs-commits mailing list