Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ProfileBundleContainer.java11
-rw-r--r--ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/target/ProfileContainerTests.java27
2 files changed, 28 insertions, 10 deletions
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ProfileBundleContainer.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ProfileBundleContainer.java
index 2e3bc0cdf3..901b8f82a5 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ProfileBundleContainer.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/ProfileBundleContainer.java
@@ -128,7 +128,7 @@ public class ProfileBundleContainer extends AbstractBundleContainer {
BundleInfo[] infos = P2Utils.readBundles(home, configurationArea);
if (infos == null) {
if (configurationArea != null) {
- Collection<TargetBundle> osgiBundles = readBundleInfosFromConfigIni(configurationArea);
+ Collection<TargetBundle> osgiBundles = readBundleInfosFromConfigIni(configurationArea, new File(home));
if (!osgiBundles.isEmpty()) {
return osgiBundles.toArray(new TargetBundle[0]);
}
@@ -167,7 +167,7 @@ public class ProfileBundleContainer extends AbstractBundleContainer {
}).filter(Objects::nonNull).toArray(TargetBundle[]::new);
}
- private Collection<TargetBundle> readBundleInfosFromConfigIni(File configArea) {
+ private Collection<TargetBundle> readBundleInfosFromConfigIni(File configArea, File home) {
File configIni = new File(configArea, CONFIG_INI);
if (!configIni.isFile()) {
return emptyList();
@@ -180,7 +180,7 @@ public class ProfileBundleContainer extends AbstractBundleContainer {
return emptyList();
}
- List<File> bundleFiles = parseBundlesFromConfigIni(configProps);
+ List<File> bundleFiles = parseBundlesFromConfigIni(configProps, home);
ArrayList<TargetBundle> bundles = new ArrayList<>();
for (File file : bundleFiles) {
if (!file.exists()) {
@@ -197,7 +197,7 @@ public class ProfileBundleContainer extends AbstractBundleContainer {
return bundles;
}
- public static List<File> parseBundlesFromConfigIni(Properties configProps) {
+ public static List<File> parseBundlesFromConfigIni(Properties configProps, File home) {
String osgiBundles = configProps.getProperty("osgi.bundles"); //$NON-NLS-1$
if (osgiBundles == null || osgiBundles.isEmpty()) {
return emptyList();
@@ -209,6 +209,9 @@ public class ProfileBundleContainer extends AbstractBundleContainer {
String osgiFramework = configProps.getProperty("osgi.framework"); //$NON-NLS-1$
if (osgiFramework != null) {
File frameworkBundle = parseBundleLocation(osgiFramework);
+ if (!frameworkBundle.isAbsolute()) {
+ frameworkBundle = new File(home, frameworkBundle.getPath());
+ }
bundles.add(frameworkBundle);
baseDir = frameworkBundle.getParentFile();
}
diff --git a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/target/ProfileContainerTests.java b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/target/ProfileContainerTests.java
index fb1c79afc8..755df202b7 100644
--- a/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/target/ProfileContainerTests.java
+++ b/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/target/ProfileContainerTests.java
@@ -41,7 +41,7 @@ public class ProfileContainerTests extends AbstractTargetTest {
configIni.put("osgi.bundles", absoluteFile("plugins/some.bundle").toURI() + ","//
+ "reference:" + absoluteFile("plugins/some.bundle_startlevel").toURI() + "@1:start");
- Collection<File> parsedBundles = ProfileBundleContainer.parseBundlesFromConfigIni(configIni);
+ Collection<File> parsedBundles = ProfileBundleContainer.parseBundlesFromConfigIni(configIni, new File("."));
assertEquals(Arrays.asList( //
absoluteFile("plugins/some.bundle"), //
absoluteFile("plugins/some.bundle_startlevel")), //
@@ -55,7 +55,7 @@ public class ProfileContainerTests extends AbstractTargetTest {
+ "reference:file:plugins/some.bundle_startlevel@1:start," //
+ "reference:" + absoluteFile("absolute.bundle").toURI());
- Collection<File> parsedBundles = ProfileBundleContainer.parseBundlesFromConfigIni(configIni);
+ Collection<File> parsedBundles = ProfileBundleContainer.parseBundlesFromConfigIni(configIni, new File("."));
assertEquals(Arrays.asList( //
new File("plugins/some.bundle"), //
new File("plugins/some.bundle_startlevel"), //
@@ -71,15 +71,30 @@ public class ProfileContainerTests extends AbstractTargetTest {
+ "reference:" + absoluteFile("absolute.bundle").toURI());
configIni.put("osgi.framework", "file:plugins/o.e.osgi.jar");
- Collection<File> parsedBundles = ProfileBundleContainer.parseBundlesFromConfigIni(configIni);
+ Collection<File> parsedBundles = ProfileBundleContainer.parseBundlesFromConfigIni(configIni, new File("/home"));
assertEquals(Arrays.asList( //
- new File("plugins/o.e.osgi.jar"), //
- new File("plugins/some.bundle"), //
- new File("plugins/some.bundle_startlevel"), //
+ new File("/home/plugins/o.e.osgi.jar"), //
+ new File("/home/plugins/some.bundle"), //
+ new File("/home/plugins/some.bundle_startlevel"), //
absoluteFile("absolute.bundle")), //
parsedBundles);
}
+ @Test
+ public void testParseBundleInfoFromConfigIni_relativeToAbsoluteFramework() {
+ Properties configIni = new Properties();
+ configIni.put("osgi.bundles", "reference:file:some.bundle," //
+ + "reference:file:some.bundle_startlevel@1:start");
+ configIni.put("osgi.framework", absoluteFile("plugins/o.e.osgi.jar").toURI().toString());
+
+ Collection<File> parsedBundles = ProfileBundleContainer.parseBundlesFromConfigIni(configIni, new File("/home"));
+ assertEquals(Arrays.asList( //
+ absoluteFile("plugins/o.e.osgi.jar"), //
+ absoluteFile("plugins/some.bundle"), //
+ absoluteFile("plugins/some.bundle_startlevel")), //
+ parsedBundles);
+ }
+
private static File absoluteFile(String path) {
return new File(path).getAbsoluteFile();
}

Back to the top