Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/QueriedElement.java5
-rw-r--r--bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/DeferredQueryContentProvider.java12
2 files changed, 10 insertions, 7 deletions
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/QueriedElement.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/QueriedElement.java
index 2ae966587..b0fa3fa91 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/QueriedElement.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/model/QueriedElement.java
@@ -34,7 +34,8 @@ public abstract class QueriedElement extends ProvElement {
// that want to eliminate duplicates from the parent hierarchy.
// This cache is *not* used as a general purpose child cache.
private Collection<?> cachedChildren;
-
+ private static final Object[] EMPTY= new Object[0];
+
protected QueriedElement(Object parent) {
super(parent);
}
@@ -158,6 +159,8 @@ public abstract class QueriedElement extends ProvElement {
}
public Object[] getCachedChildren() {
+ if (cachedChildren == null)
+ return EMPTY;
return cachedChildren.toArray();
}
diff --git a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/DeferredQueryContentProvider.java b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/DeferredQueryContentProvider.java
index 1e77c1fa6..485e635e8 100644
--- a/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/DeferredQueryContentProvider.java
+++ b/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/viewers/DeferredQueryContentProvider.java
@@ -14,8 +14,7 @@ package org.eclipse.equinox.internal.p2.ui.viewers;
import java.util.HashMap;
import java.util.HashSet;
import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.equinox.internal.p2.ui.model.QueriedElement;
-import org.eclipse.equinox.internal.p2.ui.model.RemoteQueriedElement;
+import org.eclipse.equinox.internal.p2.ui.model.*;
import org.eclipse.jface.viewers.AbstractTreeViewer;
import org.eclipse.jface.viewers.Viewer;
@@ -109,12 +108,13 @@ public class DeferredQueryContentProvider extends ProvElementContentProvider {
// We rely on the assumption that the queryable is the most expensive
// thing to get vs. the query itself being expensive.
// (loading a repo vs. querying a repo afterward)
- if (element.hasQueryable())
+ if (manager != null && !synchronous && (element instanceof MetadataRepositoryElement || element instanceof MetadataRepositories)) {
+ if (element.getCachedChildren().length == 0)
+ return manager.getChildren(element);
return element.getChildren(element);
-
- if (manager != null && !synchronous) {
- return manager.getChildren(parent);
}
+ if (element.hasQueryable())
+ return element.getChildren(element);
}
return super.getChildren(parent);
}

Back to the top