[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