Author: olamy
Date: Wed Feb  6 22:40:31 2013
New Revision: 1443251

URL: http://svn.apache.org/viewvc?rev=1443251&view=rev
Log:
prevent possible ConcurrentModificationException

Modified:
    
archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-model/src/main/java/org/apache/archiva/redback/rbac/AbstractRBACManager.java

Modified: 
archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-model/src/main/java/org/apache/archiva/redback/rbac/AbstractRBACManager.java
URL: 
http://svn.apache.org/viewvc/archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-model/src/main/java/org/apache/archiva/redback/rbac/AbstractRBACManager.java?rev=1443251&r1=1443250&r2=1443251&view=diff
==============================================================================
--- 
archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-model/src/main/java/org/apache/archiva/redback/rbac/AbstractRBACManager.java
 (original)
+++ 
archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-model/src/main/java/org/apache/archiva/redback/rbac/AbstractRBACManager.java
 Wed Feb  6 22:40:31 2013
@@ -706,6 +706,9 @@ public abstract class AbstractRBACManage
         boolean childRoleNamesUpdated = false;
 
         Iterator<String> it = role.getChildRoleNames().listIterator();
+
+        List<String> updatedChildRoleList = new ArrayList<String>( 
role.getChildRoleNames().size() );
+
         while ( it.hasNext() )
         {
             String roleName = it.next();
@@ -713,17 +716,19 @@ public abstract class AbstractRBACManage
             {
                 Role child = getRole( roleName );
                 childRoles.put( child.getName(), child );
+                updatedChildRoleList.add( roleName );
             }
             catch ( RbacObjectNotFoundException e )
             {
-                // Found a bad roleName! - remove it.
-                it.remove();
+                // Found a bad roleName! - trigger new List save
+                //it.remove();
                 childRoleNamesUpdated = true;
             }
         }
 
         if ( childRoleNamesUpdated )
         {
+            role.setChildRoleNames( updatedChildRoleList );
             saveRole( role );
         }
 


Reply via email to