Bug 559196 - fixed broken migration of new product launch
Migrate SELECTED_*_PLUGINS properties before appending plugins during
upgrade to new application model.
Change-Id: Icec7afea621d15c0d12b32031f9c9533a7fcb373
Signed-off-by: Julian Honnen <julian.honnen@vector.com>
diff --git a/ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/BundleLauncherHelper.java b/ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/BundleLauncherHelper.java
index ac2ea5b..f3c6e49 100644
--- a/ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/BundleLauncherHelper.java
+++ b/ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/BundleLauncherHelper.java
@@ -14,6 +14,8 @@
*******************************************************************************/
package org.eclipse.pde.internal.launching.launcher;
+import static java.util.Collections.emptySet;
+
import java.util.*;
import java.util.Map.Entry;
import org.eclipse.core.runtime.CoreException;
@@ -517,6 +519,10 @@
wc.setAttribute(IPDELauncherConstants.SELECTED_TARGET_PLUGINS, value2);
}
+ convertToSet(wc, IPDELauncherConstants.SELECTED_TARGET_PLUGINS, IPDELauncherConstants.SELECTED_TARGET_BUNDLES);
+ convertToSet(wc, IPDELauncherConstants.SELECTED_WORKSPACE_PLUGINS, IPDELauncherConstants.SELECTED_WORKSPACE_BUNDLES);
+ convertToSet(wc, IPDELauncherConstants.DESELECTED_WORKSPACE_PLUGINS, IPDELauncherConstants.DESELECTED_WORKSPACE_BUNDLES);
+
String version = configuration.getAttribute(IPDEConstants.LAUNCHER_PDE_VERSION, (String) null);
boolean newApp = TargetPlatformHelper.usesNewApplicationModel();
boolean upgrade = !"3.3".equals(version) && newApp; //$NON-NLS-1$
@@ -537,36 +543,27 @@
}
if (!"3.3".equals(version) && newApp) //$NON-NLS-1$
list.add("org.eclipse.equinox.app"); //$NON-NLS-1$
- StringBuilder extensions = new StringBuilder(configuration.getAttribute(IPDELauncherConstants.SELECTED_WORKSPACE_PLUGINS, "")); //$NON-NLS-1$
- StringBuilder target = new StringBuilder(configuration.getAttribute(IPDELauncherConstants.SELECTED_TARGET_PLUGINS, "")); //$NON-NLS-1$
- for (int i = 0; i < list.size(); i++) {
- String plugin = list.get(i).toString();
+ Set<String> extensions = new LinkedHashSet<>(configuration.getAttribute(IPDELauncherConstants.SELECTED_WORKSPACE_BUNDLES, emptySet()));
+ Set<String> target = new LinkedHashSet<>(configuration.getAttribute(IPDELauncherConstants.SELECTED_TARGET_BUNDLES, emptySet()));
+ for (String plugin : list) {
IPluginModelBase model = PluginRegistry.findModel(plugin);
if (model == null)
continue;
if (model.getUnderlyingResource() != null) {
if (automaticAdd)
continue;
- if (extensions.length() > 0)
- extensions.append(","); //$NON-NLS-1$
- extensions.append(plugin);
+ extensions.add(plugin);
} else {
- if (target.length() > 0)
- target.append(","); //$NON-NLS-1$
- target.append(plugin);
+ target.add(plugin);
}
}
- if (extensions.length() > 0)
- wc.setAttribute(IPDELauncherConstants.SELECTED_WORKSPACE_PLUGINS, extensions.toString());
- if (target.length() > 0)
- wc.setAttribute(IPDELauncherConstants.SELECTED_TARGET_PLUGINS, target.toString());
+ if (!extensions.isEmpty())
+ wc.setAttribute(IPDELauncherConstants.SELECTED_WORKSPACE_BUNDLES, extensions);
+ if (!target.isEmpty())
+ wc.setAttribute(IPDELauncherConstants.SELECTED_TARGET_BUNDLES, target);
}
}
- convertToSet(wc, IPDELauncherConstants.SELECTED_TARGET_PLUGINS, IPDELauncherConstants.SELECTED_TARGET_BUNDLES);
- convertToSet(wc, IPDELauncherConstants.SELECTED_WORKSPACE_PLUGINS, IPDELauncherConstants.SELECTED_WORKSPACE_BUNDLES);
- convertToSet(wc, IPDELauncherConstants.DESELECTED_WORKSPACE_PLUGINS, IPDELauncherConstants.DESELECTED_WORKSPACE_BUNDLES);
-
if (wc.isDirty()) {
wc.doSave();
}