You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ol...@apache.org on 2013/02/06 23:40:31 UTC

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

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 );
         }