Author: rmannibucau
Date: Sun May 13 20:25:02 2012
New Revision: 1337980

URL: http://svn.apache.org/viewvc?rev=1337980&view=rev
Log:
TOMEE-189 avoiding java.util.ConcurrentModificationException (previous commit)

Modified:
    
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java

Modified: 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1337980&r1=1337979&r2=1337980&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
 Sun May 13 20:25:02 2012
@@ -737,22 +737,27 @@ public class TomcatWebAppBuilder impleme
 
     private static void updateInjections(Collection<Injection> injections, 
ClassLoader classLoader, boolean keepInjection) {
         final Iterator<Injection> it = injections.iterator();
-        while (it.hasNext()) { // update not loaded injections for classloader 
issues or remove them
+        final List<Injection> newOnes = new ArrayList<Injection>();
+        while (it.hasNext()) {
             final Injection injection = it.next();
             if (injection.getTarget() == null) {
                 try {
                     final Class<?> target = 
classLoader.loadClass(injection.getClassname());
                     if (keepInjection) {
                         final Injection added = new 
Injection(injection.getJndiName(), injection.getName(), target);
-                        injections.add(added);
+                        newOnes.add(added);
                     } else {
                         injection.setTarget(target);
                     }
                 } catch (ClassNotFoundException cnfe) {
-                    it.remove();
+                    // ignored
                 }
             }
         }
+
+        if (!newOnes.isEmpty()) {
+            injections.addAll(newOnes);
+        }
     }
 
     private static void undeploy(final StandardContext standardContext, final 
ContextInfo contextInfo) {


Reply via email to