modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
New commits: commit 76267c6d230bd088ebc09d682f113d11a93202fc Author: Jirka Kremser jkremser@redhat.com Date: Fri Feb 1 15:26:25 2013 +0100
[BZ 906754 - It is not possible to delete a resource group which is assigned to more than one roles.] ConcurrentModificationException was thrown when iterating through the set and removing its elements at the same time. I created a copy of the set.
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java index 37a66b9..7fdff89 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java @@ -27,6 +27,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.List; @@ -293,7 +294,10 @@ public class ResourceGroupManagerBean implements ResourceGroupManagerLocal, Reso ResourceGroupDeleteException { ResourceGroup group = getResourceGroupById(subject, groupId, null);
- for (Role doomedRoleRelationship : group.getRoles()) { + // create a copy of the collection in order to avoid ConcurrentModificationException + // (as a consequence of iterating and modifying it at once). + Set<Role> roles = new HashSet<Role>(group.getRoles()); + for (Role doomedRoleRelationship : roles) { group.removeRole(doomedRoleRelationship); entityManager.merge(doomedRoleRelationship); }
rhq-commits@lists.fedorahosted.org