[272345] Prevent Re-entrant access in ModelProviderManager
diff --git a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/model/ModelProviderManager.java b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/model/ModelProviderManager.java index 408a913..58c885a 100644 --- a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/model/ModelProviderManager.java +++ b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/model/ModelProviderManager.java
@@ -245,8 +245,11 @@ private static void initProviders() { - providers = new HashMap(); - registry = J2EEModelProviderRegistry.getInstance(); + //Make sure both variables are null to prevent re-entrant behavior + if (registry == null && providers == null) { + providers = new HashMap(); + registry = J2EEModelProviderRegistry.getInstance(); + } } private static void startListeningToResourceSet(IProject project) { @@ -313,7 +316,7 @@ return null; } - private static HashMap<ModelProviderKey, IModelProviderFactory> getProviders() { + private synchronized static HashMap<ModelProviderKey, IModelProviderFactory> getProviders() { if (registry == null) initProviders(); return providers;