Blame SOURCES/eclipse-pde-tp-support-droplets.patch

11dc0f
From 72e58be8c9c5fbc6f6527318b4381a58cebfc120 Mon Sep 17 00:00:00 2001
11dc0f
From: Roland Grunberg <rgrunber@redhat.com>
11dc0f
Date: Thu, 7 Apr 2016 10:23:49 -0400
11dc0f
Subject: [PATCH] Support reading BundleInfo from p2 Droplets enabled
11dc0f
 installations.
11dc0f
11dc0f
- Additionally support reading source bundles from p2 Droplets location
11dc0f
---
11dc0f
 ui/org.eclipse.pde.core/META-INF/MANIFEST.MF       |  3 +-
11dc0f
 .../src/org/eclipse/pde/internal/core/P2Utils.java | 48 +++++++++++++++++++---
11dc0f
 2 files changed, 45 insertions(+), 6 deletions(-)
11dc0f
11dc0f
diff --git eclipse.pde.ui/ui/org.eclipse.pde.core/META-INF/MANIFEST.MF eclipse.pde.ui/ui/org.eclipse.pde.core/META-INF/MANIFEST.MF
11dc0f
index 7c20994..ab702e3 100644
11dc0f
--- eclipse.pde.ui/ui/org.eclipse.pde.core/META-INF/MANIFEST.MF
11dc0f
+++ eclipse.pde.ui/ui/org.eclipse.pde.core/META-INF/MANIFEST.MF
11dc0f
@@ -104,6 +104,7 @@ Require-Bundle:
11dc0f
  org.eclipse.core.filesystem;bundle-version="[1.0.0,2.0.0)"
11dc0f
 Eclipse-LazyStart: true
11dc0f
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
11dc0f
-Import-Package: com.ibm.icu.util
11dc0f
+Import-Package: com.ibm.icu.util,
11dc0f
+ org.eclipse.equinox.internal.simpleconfigurator.utils
11dc0f
 Bundle-ActivationPolicy: lazy
11dc0f
 Automatic-Module-Name: org.eclipse.pde.core
11dc0f
diff --git eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/P2Utils.java eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/P2Utils.java
11dc0f
index fbd4b81..55cd40e 100644
11dc0f
--- eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/P2Utils.java
11dc0f
+++ eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/P2Utils.java
11dc0f
@@ -17,8 +17,9 @@
11dc0f
 import java.io.File;
11dc0f
 import java.io.FileNotFoundException;
11dc0f
 import java.io.IOException;
11dc0f
-import java.net.MalformedURLException;
11dc0f
-import java.net.URL;
11dc0f
+import java.net.*;
11dc0f
+import java.nio.file.Paths;
11dc0f
+import java.util.Arrays;
11dc0f
 import java.util.ArrayList;
11dc0f
 import java.util.Collection;
11dc0f
 import java.util.HashMap;
11dc0f
@@ -31,7 +32,9 @@
11dc0f
 import org.eclipse.core.runtime.NullProgressMonitor;
11dc0f
 import org.eclipse.core.runtime.Path;
11dc0f
 import org.eclipse.core.runtime.Status;
11dc0f
+import org.eclipse.core.runtime.URIUtil;
11dc0f
 import org.eclipse.equinox.frameworkadmin.BundleInfo;
11dc0f
+import org.eclipse.equinox.internal.simpleconfigurator.utils.SimpleConfiguratorUtils;
11dc0f
 import org.eclipse.equinox.p2.core.IProvisioningAgent;
11dc0f
 import org.eclipse.equinox.p2.core.IProvisioningAgentProvider;
11dc0f
 import org.eclipse.equinox.p2.engine.IEngine;
11dc0f
@@ -60,6 +63,7 @@
11dc0f
 import org.eclipse.pde.core.plugin.TargetPlatform;
11dc0f
 import org.eclipse.pde.internal.build.BundleHelper;
11dc0f
 import org.eclipse.pde.internal.core.plugin.PluginBase;
11dc0f
+import org.eclipse.pde.internal.core.util.ManifestUtils;
11dc0f
 import org.osgi.framework.Constants;
11dc0f
 
11dc0f
 /**
11dc0f
@@ -139,7 +143,16 @@
11dc0f
 		try {
11dc0f
 			URL bundlesTxt = new URL(configurationArea.getProtocol(), configurationArea.getHost(), new File(configurationArea.getFile(), SimpleConfiguratorManipulator.BUNDLES_INFO_PATH).getAbsolutePath());
11dc0f
 			File home = basePath.toFile();
11dc0f
-			BundleInfo bundles[] = getBundlesFromFile(bundlesTxt, home);
11dc0f
+			List<org.eclipse.equinox.internal.simpleconfigurator.utils.BundleInfo> ibundleList = SimpleConfiguratorUtils.readConfiguration(bundlesTxt, home.toURI());
11dc0f
+			List<BundleInfo> bundleList = new ArrayList<>();
11dc0f
+			for (org.eclipse.equinox.internal.simpleconfigurator.utils.BundleInfo b : ibundleList) {
11dc0f
+				URI location = b.getLocation();
11dc0f
+				if (!location.isAbsolute() && b.getBaseLocation() != null)
11dc0f
+					location = URIUtil.makeAbsolute(location, b.getBaseLocation());
11dc0f
+				BundleInfo binfo = new BundleInfo(b.getSymbolicName(), b.getVersion(), location, b.getStartLevel(), b.isMarkedAsStarted());
11dc0f
+				bundleList.add(binfo);
11dc0f
+			}
11dc0f
+			BundleInfo[] bundles = bundleList.toArray(new BundleInfo[0]);
11dc0f
 			if (bundles == null || bundles.length == 0) {
11dc0f
 				return null;
11dc0f
 			}
11dc0f
@@ -171,11 +184,38 @@
11dc0f
 		try {
11dc0f
 			File home = basePath.toFile();
11dc0f
 			URL srcBundlesTxt = new URL(configurationArea.getProtocol(), configurationArea.getHost(), configurationArea.getFile().concat(SimpleConfiguratorManipulator.SOURCE_INFO_PATH));
11dc0f
+			final List<BundleInfo> allSrcBundles = new ArrayList<>();
11dc0f
+			try {
11dc0f
+				for (File infoFile : SimpleConfiguratorUtils.getInfoFiles()) {
11dc0f
+					File pluginsDir = Paths.get(infoFile.getParent(), "plugins").toFile(); //$NON-NLS-1$
11dc0f
+					File[] sourceJars = pluginsDir.listFiles((dir, name) -> {
11dc0f
+						return name.matches(".*\\.source_.*\\.jar$"); //$NON-NLS-1$
11dc0f
+					});
11dc0f
+					for (File sourceJar : sourceJars) {
11dc0f
+						Map<String, String> manifest;
11dc0f
+						try {
11dc0f
+							manifest = ManifestUtils.loadManifest(sourceJar);
11dc0f
+							final String bsn = manifest.get(Constants.BUNDLE_SYMBOLICNAME);
11dc0f
+							final String version = manifest.get(Constants.BUNDLE_VERSION);
11dc0f
+							BundleInfo info = new BundleInfo(bsn, version, sourceJar.toURI(), -1, false);
11dc0f
+							allSrcBundles.add(info);
11dc0f
+						} catch (CoreException e) {
11dc0f
+							// continue
11dc0f
+						}
11dc0f
+					}
11dc0f
+				}
11dc0f
+			} catch (URISyntaxException e) {
11dc0f
+				// continue
11dc0f
+			}
11dc0f
+
11dc0f
 			BundleInfo srcBundles[] = getBundlesFromFile(srcBundlesTxt, home);
11dc0f
-			if (srcBundles == null || srcBundles.length == 0) {
11dc0f
+			if (srcBundles != null && srcBundles.length > 0) {
11dc0f
+				allSrcBundles.addAll(Arrays.asList(srcBundles));
11dc0f
+			}
11dc0f
+			if (allSrcBundles.size() == 0) {
11dc0f
 				return null;
11dc0f
 			}
11dc0f
-			return srcBundles;
11dc0f
+			return allSrcBundles.toArray(new BundleInfo[0]);
11dc0f
 		} catch (MalformedURLException e) {
11dc0f
 			PDECore.log(e);
11dc0f
 			return null;
11dc0f
-- 
11dc0f
2.7.4