[jboss-cvs] JBossAS SVN: r109468 - projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Nov 25 08:55:07 EST 2010
Author: alesj
Date: 2010-11-25 08:55:07 -0500 (Thu, 25 Nov 2010)
New Revision: 109468
Modified:
projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/NestedBeanHandler.java
Log:
[JBAS-8664]; concurrent modification error.
Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/NestedBeanHandler.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/NestedBeanHandler.java 2010-11-25 12:15:36 UTC (rev 109467)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/NestedBeanHandler.java 2010-11-25 13:55:07 UTC (rev 109468)
@@ -21,11 +21,7 @@
*/
package org.jboss.beans.metadata.plugins;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
@@ -207,6 +203,9 @@
}
else if (previous instanceof AbstractMapMetaData)
{
+ MetaDataVisitorNode matchingKey = null;
+ Set<MetaDataVisitorNode> matchingValues = new HashSet<MetaDataVisitorNode>();
+
AbstractMapMetaData ammd = (AbstractMapMetaData)previous;
for (Map.Entry<MetaDataVisitorNode, MetaDataVisitorNode> entry : ammd.entrySet())
{
@@ -215,14 +214,19 @@
if (key.equals(bean))
{
- ammd.remove(key);
- ammd.put(injection, value);
+ matchingKey = key;
}
if (value.equals(bean))
{
- ammd.put(key, injection);
+ matchingValues.add(key);
}
}
+ if (matchingKey != null)
+ {
+ ammd.put(injection, ammd.remove(matchingKey));
+ }
+ for (MetaDataVisitorNode key : matchingValues)
+ ammd.put(key, injection);
}
else if (previous instanceof AbstractValueMetaData)
{
More information about the jboss-cvs-commits
mailing list