Author: ningjiang
Date: Mon Dec 29 06:09:09 2008
New Revision: 729892

URL: http://svn.apache.org/viewvc?rev=729892&view=rev
Log:
CAMEL-1207 Fixed the ConcurrentModificationException when stopping the 
camel-osgi bundle

Modified:
    
activemq/camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiComponentResolver.java

Modified: 
activemq/camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiComponentResolver.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiComponentResolver.java?rev=729892&r1=729891&r2=729892&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiComponentResolver.java
 (original)
+++ 
activemq/camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiComponentResolver.java
 Mon Dec 29 06:09:09 2008
@@ -111,12 +111,15 @@
     }
 
     protected synchronized void mayBeRemoveComponentFor(Bundle bundle) {
-        for (ComponentEntry entry : components.values()) {
+        // To avoid the CurrentModificationException, do not use 
components.values directly 
+        ComponentEntry[] entriesArray = components.values().toArray(new 
ComponentEntry[0]);
+        for (ComponentEntry entry : entriesArray) {
             if (entry.bundle == bundle) {
                 if (LOG.isDebugEnabled()) {
                     LOG.debug("Removing entry: " + entry.path + " in bundle " 
+ bundle.getSymbolicName());
                 }
                 components.remove(entry.name);
+                break;
             }
         }
     }


Reply via email to