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