Bug 247095 - p2 reconciler not deleting lines associated with removed features/plugins/sites from USER-INCLUDE sites in platform.xml from bundles.info
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxManipulatorImpl.java b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxManipulatorImpl.java
index 963bcac..6461b54 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxManipulatorImpl.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxManipulatorImpl.java
@@ -628,7 +628,16 @@
return urlString;
String rootString = rootURL.toExternalForm();
- return urlString.substring(0, index) + makeRelative(urlString.substring(index), rootString.substring(rootString.indexOf(FILE_PROTOCOL) + 5));
+ IPath one = new Path(urlString.substring(index));
+ IPath two = new Path(rootString.substring(rootString.indexOf(FILE_PROTOCOL) + 5));
+ String deviceOne = one.getDevice();
+ String deviceTwo = two.getDevice();
+ // do checking here because we want to return the exact string we got initially if
+ // we are unable to make it relative.
+ if (deviceOne != deviceTwo && (deviceOne == null || !deviceOne.equalsIgnoreCase(two.getDevice())))
+ return urlString;
+
+ return urlString.substring(0, index) + makeRelative(one, two);
}
public static String makeArrayRelative(String array, URL rootURL) {
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/src/org/eclipse/equinox/internal/simpleconfigurator/manipulator/SimpleConfiguratorManipulatorImpl.java b/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/src/org/eclipse/equinox/internal/simpleconfigurator/manipulator/SimpleConfiguratorManipulatorImpl.java
index 9737137..7e35e66 100644
--- a/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/src/org/eclipse/equinox/internal/simpleconfigurator/manipulator/SimpleConfiguratorManipulatorImpl.java
+++ b/bundles/org.eclipse.equinox.simpleconfigurator.manipulator/src/org/eclipse/equinox/internal/simpleconfigurator/manipulator/SimpleConfiguratorManipulatorImpl.java
@@ -528,7 +528,16 @@
return urlString;
String rootString = rootURL.toExternalForm();
- return urlString.substring(0, index) + makeRelative(new Path(urlString.substring(index)), new Path(rootString.substring(rootString.indexOf(FILE_PROTOCOL) + 5)));
+ IPath one = new Path(urlString.substring(index));
+ IPath two = new Path(rootString.substring(rootString.indexOf(FILE_PROTOCOL) + 5));
+ String deviceOne = one.getDevice();
+ String deviceTwo = two.getDevice();
+ // do checking here because we want to return the exact string we got initially if
+ // we are unable to make it relative.
+ if (deviceOne != deviceTwo && (deviceOne == null || !deviceOne.equalsIgnoreCase(two.getDevice())))
+ return urlString;
+
+ return urlString.substring(0, index) + makeRelative(one, two);
}
public static String makeAbsolute(String original, String rootPath) {