*** empty log message ***
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/core/IWorkspaceModelManager.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/core/IWorkspaceModelManager.java
index a9f5969..8a18410 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/core/IWorkspaceModelManager.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/core/IWorkspaceModelManager.java
@@ -18,6 +18,7 @@
 	boolean getAllEditableModelsUnused(Class modelClass);
 	IModel getWorkspaceModel(IProject project);
 	IPluginModelBase[] getAllModels();
+	boolean isLocked();
 	void removeModelProviderListener(IModelProviderListener listener);
 	void reset();
 }
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PluginModelManager.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PluginModelManager.java
index 82d0587..4932270 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PluginModelManager.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PluginModelManager.java
@@ -54,12 +54,14 @@
 	public boolean isEmpty() {
 		if (entries == null)
 			initializeTable();
+		if (entries==null) return true;
 		return entries.isEmpty();
 	}
 
 	public ModelEntry[] getEntries() {
 		if (entries == null)
 			initializeTable();
+		if (entries==null) return new ModelEntry[0];
 		Collection values = entries.values();
 		return (ModelEntry[]) values.toArray(new ModelEntry[values.size()]);
 	}
@@ -67,6 +69,7 @@
 	public IPluginModelBase [] getPlugins() {
 		if (entries == null)
 			initializeTable();
+		if (entries==null) return new IPluginModelBase[0];
 		Collection values = entries.values();
 		IPluginModelBase [] plugins = new IPluginModelBase[values.size()];
 		int i=0;
@@ -79,6 +82,7 @@
 	
 	public ModelEntry findEntry(IProject project) {
 		if (entries==null) initializeTable();
+		if (entries==null) return null;
 		IModel model = workspaceManager.getWorkspaceModel(project);
 		if (model==null) return null;
 		if (!(model instanceof IPluginModelBase))
@@ -90,11 +94,13 @@
 	
 	public ModelEntry findEntry(String id, String version) {
 		if (entries == null) initializeTable();
+		if (entries==null) return null;
 		return (ModelEntry)entries.get(id);
 	}
 	
 	public ModelEntry findEntry(String id, String version, int match) {
 		if (entries == null) initializeTable();
+		if (entries==null) return null;
 		return (ModelEntry)entries.get(id);
 	}
 	
@@ -199,6 +205,7 @@
 	}
 	
 	private void initializeTable() {
+		if (workspaceManager.isLocked()) return;
 		entries = new Hashtable();
 		IPluginModelBase[] models = workspaceManager.getAllModels();
 		addToTable(models, true);
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/WorkspaceModelManager.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/WorkspaceModelManager.java
index 4d73969..1dc9143 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/WorkspaceModelManager.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/WorkspaceModelManager.java
@@ -34,6 +34,7 @@
 	private Vector workspaceFeatureModels = null;
 	private Vector modelChanges = null;
 	private static final boolean DEBUG = false;
+	private boolean modelsLocked=false;
 
 	class ModelChange {
 		IModel model;
@@ -61,6 +62,9 @@
 	public boolean isInitialized() {
 		return initialized;
 	}
+	public boolean isLocked() {
+		return modelsLocked;
+	}
 	public void addModelProviderListener(IModelProviderListener listener) {
 		listeners.add(listener);
 	}
@@ -468,6 +472,7 @@
 	}
 	private void initializeWorkspacePluginModels() {
 		long start = System.currentTimeMillis();
+		modelsLocked=true;
 		workspaceModels = new Vector();
 		workspaceFragmentModels = new Vector();
 		workspaceFeatureModels = new Vector();
@@ -498,6 +503,7 @@
 		initialized = true;
 		long stop = System.currentTimeMillis();
 		if (DEBUG) System.out.println("Workspace plugins loaded in "+(stop-start)+"ms");
+		modelsLocked = false;
 	}
 
 	public static boolean isPluginProject(IProject project) {
diff --git a/ui/org.eclipse.pde.core/src_OSGi/org/eclipse/pde/internal/core/osgi/OSGiWorkspaceModelManager.java b/ui/org.eclipse.pde.core/src_OSGi/org/eclipse/pde/internal/core/osgi/OSGiWorkspaceModelManager.java
index dfa904c..ce8a077 100644
--- a/ui/org.eclipse.pde.core/src_OSGi/org/eclipse/pde/internal/core/osgi/OSGiWorkspaceModelManager.java
+++ b/ui/org.eclipse.pde.core/src_OSGi/org/eclipse/pde/internal/core/osgi/OSGiWorkspaceModelManager.java
@@ -38,6 +38,7 @@
 	private Vector workspaceFeatureModels = null;
 	private Vector modelChanges = null;
 	private static final boolean DEBUG = false;
+	private boolean modelsLocked=false;
 
 	class ModelChange {
 		IModel model;
@@ -72,6 +73,10 @@
 	public boolean isInitialized() {
 		return initialized;
 	}
+	
+	public boolean isLocked() {
+		return modelsLocked;
+	}
 	public void addModelProviderListener(IModelProviderListener listener) {
 		listeners.add(listener);
 	}
@@ -624,6 +629,7 @@
 	}
 	private void initializeWorkspacePluginModels() {
 		long start = System.currentTimeMillis();
+		modelsLocked=true;
 		workspaceModels = new Vector();
 		workspaceFragmentModels = new Vector();
 		workspaceFeatureModels = new Vector();
@@ -656,6 +662,7 @@
 				| IResourceChangeEvent.PRE_DELETE
 				| IResourceChangeEvent.PRE_AUTO_BUILD);
 		initialized = true;
+		modelsLocked=false;
 		long stop = System.currentTimeMillis();
 		if (DEBUG)
 			System.out.println(