bug 394969: Fixed ConcurrentModificationException thrown during closing context managers.
diff --git a/framework/src/main/java/org/eclipse/gemini/naming/ContextManagerServiceFactoryImpl.java b/framework/src/main/java/org/eclipse/gemini/naming/ContextManagerServiceFactoryImpl.java
index 34b6813..443679e 100644
--- a/framework/src/main/java/org/eclipse/gemini/naming/ContextManagerServiceFactoryImpl.java
+++ b/framework/src/main/java/org/eclipse/gemini/naming/ContextManagerServiceFactoryImpl.java
@@ -56,10 +56,14 @@
protected void closeAll() {
synchronized(m_mapOfManagers) {
- Iterator iterator = m_mapOfManagers.keySet().iterator();
+ Iterator iterator = m_mapOfManagers.entrySet().iterator();
while(iterator.hasNext()) {
- Bundle bundleKey = (Bundle)iterator.next();
- closeContextManager(bundleKey);
+ Map.Entry currentMapEntry = (Map.Entry) iterator.next();
+ Object currentMapEntryValue = currentMapEntry.getValue();
+ if (currentMapEntryValue != null){
+ ((CloseableContextManager)currentMapEntryValue).close();
+ iterator.remove();
+ }
}
}
}