You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2009/09/29 10:34:49 UTC
svn commit: r819860 -
/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
Author: davsclaus
Date: Tue Sep 29 08:34:48 2009
New Revision: 819860
URL: http://svn.apache.org/viewvc?rev=819860&view=rev
Log:
CAMEL-1912: Fixed removeEndpoints failing due to concurernt modification exception
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java?rev=819860&r1=819859&r2=819860&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java Tue Sep 29 08:34:48 2009
@@ -350,17 +350,24 @@
strategy.onEndpointRemove(oldEndpoint);
}
} else {
+ Collection<Map.Entry> worklist = new ArrayList<Map.Entry>();
for (Map.Entry entry : endpoints.entrySet()) {
oldEndpoint = (Endpoint) entry.getValue();
if (!oldEndpoint.isSingleton() && uri.equals(oldEndpoint.getEndpointUri())) {
- answer.add(oldEndpoint);
- stopServices(oldEndpoint);
- endpoints.remove(entry.getKey());
- for (LifecycleStrategy strategy : lifecycleStrategies) {
- strategy.onEndpointRemove(oldEndpoint);
- }
+ // add to worklist to avoid concurrent modification exception
+ worklist.add(entry);
+ }
+ }
+ for (Map.Entry entry : worklist) {
+ oldEndpoint = (Endpoint) entry.getValue();
+ answer.add(oldEndpoint);
+ stopServices(oldEndpoint);
+ endpoints.remove(entry.getKey());
+ for (LifecycleStrategy strategy : lifecycleStrategies) {
+ strategy.onEndpointRemove(oldEndpoint);
}
}
+
}
}
return answer;