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

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