Blame SOURCES/eclipse-hide-droplets-from-install-wizard.patch

dc388e
From a23545ef5b4cbb94ff048fda2839ba08c3593d50 Mon Sep 17 00:00:00 2001
dc388e
From: Mat Booth <mat.booth@redhat.com>
dc388e
Date: Thu, 3 May 2018 15:58:49 +0100
dc388e
Subject: [PATCH] Bug 534326 - Awkward p2 UI when many droplets are installed
dc388e
 Filter out software site locations where we know that they are p2 droplets in
dc388e
 places we show the list to the user. Change-Id:
dc388e
 I12364223850862783cb7cffd32fb7428fbf6b270 Signed-off-by: Mat Booth
dc388e
 <mat.booth@redhat.com>
dc388e
dc388e
---
dc388e
 .../p2/ui/dialogs/RepositorySelectionGroup.java   | 13 +++++++++++++
dc388e
 .../equinox/p2/ui/RepositoryManipulationPage.java | 15 ++++++++++++++-
dc388e
 2 files changed, 27 insertions(+), 1 deletion(-)
dc388e
dc388e
diff --git a/rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositorySelectionGroup.java b/rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositorySelectionGroup.java
dc388e
index d07be5d43..c666f8fdc 100644
dc388e
--- a/rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositorySelectionGroup.java
dc388e
+++ b/rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositorySelectionGroup.java
dc388e
@@ -303,6 +303,19 @@ public class RepositorySelectionGroup {
dc388e
 	void fillRepoCombo(final String selection) {
dc388e
 		RepositoryTracker tracker = ui.getRepositoryTracker();
dc388e
 		URI[] sites = tracker.getKnownRepositories(ui.getSession());
dc388e
+		// Filter out sites that are actually installed p2 droplets
dc388e
+		String fragments = System.getProperty("p2.fragments"); //$NON-NLS-1$
dc388e
+		ArrayList<URI> filteredSites = new ArrayList<>(Arrays.asList(sites));
dc388e
+		if (fragments != null) {
dc388e
+			for (String root : fragments.split(",")) { //$NON-NLS-1$
dc388e
+				for (URI uri : sites) {
dc388e
+					if (uri.getPath() != null && uri.getPath().startsWith(root)) {
dc388e
+						filteredSites.remove(uri);
dc388e
+					}
dc388e
+				}
dc388e
+			}
dc388e
+		}
dc388e
+		sites = filteredSites.toArray(new URI[0]);
dc388e
 		boolean hasLocalSites = getLocalSites().length > 0;
dc388e
 		final String[] items;
dc388e
 		if (hasLocalSites) {
dc388e
diff --git a/rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java b/rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java
dc388e
index 78fb5398e..b8e724b66 100644
dc388e
--- a/rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java
dc388e
+++ b/rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java
dc388e
@@ -133,9 +133,22 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb
dc388e
 			if (cachedElements == null) {
dc388e
 				Object[] children = super.fetchChildren(o, monitor);
dc388e
 				cachedElements = new Hashtable<>(children.length);
dc388e
+				String fragments = System.getProperty("p2.fragments"); //$NON-NLS-1$
dc388e
 				for (Object element : children) {
dc388e
 					if (element instanceof MetadataRepositoryElement) {
dc388e
-						put((MetadataRepositoryElement) element);
dc388e
+						// Filter out locations that are actually installed p2 droplets
dc388e
+						if (fragments != null) {
dc388e
+							boolean isDroplet = false;
dc388e
+							for (String root : fragments.split(",")) { //$NON-NLS-1$
dc388e
+								URI childLoc = ((MetadataRepositoryElement) element).getLocation();
dc388e
+								if (childLoc.getPath() != null && childLoc.getPath().startsWith(root)) {
dc388e
+									isDroplet = true;
dc388e
+								}
dc388e
+							}
dc388e
+							if (!isDroplet) {
dc388e
+								put((MetadataRepositoryElement) element);
dc388e
+							}
dc388e
+						}
dc388e
 					}
dc388e
 				}
dc388e
 			}
dc388e
-- 
dc388e
2.21.1
dc388e