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