[407219] concurrent modification exception in new GlobalHeirarchyParticipant
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/flat/GlobalHeirarchyParticipant.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/flat/GlobalHeirarchyParticipant.java
index 76d835f..11c6cd3 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/flat/GlobalHeirarchyParticipant.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/flat/GlobalHeirarchyParticipant.java
@@ -30,7 +30,7 @@
* to accept child module nestings it may otherwise be unable to know about.
*/
public class GlobalHeirarchyParticipant extends AbstractFlattenParticipant {
- private ArrayList<IFlattenParticipant> list = new ArrayList<IFlattenParticipant>();
+ private ArrayList<IFlattenParticipant> list = null;
@Override
public boolean isChildModule(IVirtualComponent rootComponent,
@@ -55,7 +55,11 @@
return false;
}
- private void ensureLoaded() {
+ private synchronized void ensureLoaded() {
+ if( list != null )
+ return;
+
+ list = new ArrayList<IFlattenParticipant>();
IExtensionRegistry registry = Platform.getExtensionRegistry();
IConfigurationElement[] cf2 = registry.getConfigurationElementsFor(ModulecorePlugin.PLUGIN_ID, "heirarchyFlattenParticipant"); //$NON-NLS-1$
for( int i = 0; i < cf2.length; i++ ) {