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;
}
}
}