*** 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(