summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCurtis Windatt2013-07-18 16:50:03 (EDT)
committer Curtis Windatt2013-07-18 16:50:57 (EDT)
commitac71fcdbd75dcbb200796a64f2a89dfb6ab09c67 (patch)
treef832641d87aacbe49126e1d493ba7c7eabffc5d3
parent94121f1382c8a36d769a9ef211ed09725419df46 (diff)
downloadeclipse.pde.ui-ac71fcdbd75dcbb200796a64f2a89dfb6ab09c67.zip
eclipse.pde.ui-ac71fcdbd75dcbb200796a64f2a89dfb6ab09c67.tar.gz
eclipse.pde.ui-ac71fcdbd75dcbb200796a64f2a89dfb6ab09c67.tar.bz2
Bug 283731 - [target] Remove target state dependence on preferencescwindatt/Bug283731_RemoveTargetPreferences
Use target for feature loading, started removing preferences Change-Id: I2d73275c8c223b03f6bb035ffd972e7f3b072b1f
-rw-r--r--ui/org.eclipse.pde.core/src/org/eclipse/pde/core/target/LoadTargetDefinitionJob.java10
-rw-r--r--ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ExternalFeatureModelManager.java180
-rw-r--r--ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ICoreConstants.java20
-rw-r--r--ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PluginModelManager.java47
-rw-r--r--ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/SourceLocationManager.java6
-rw-r--r--ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/TargetPlatformHelper.java68
-rw-r--r--ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/TargetPreferenceModifyListener.java8
-rw-r--r--ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPlatformService.java18
8 files changed, 158 insertions, 199 deletions
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/core/target/LoadTargetDefinitionJob.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/core/target/LoadTargetDefinitionJob.java
index 1f844f6..f8a2d3c 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/core/target/LoadTargetDefinitionJob.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/core/target/LoadTargetDefinitionJob.java
@@ -297,16 +297,6 @@ public class LoadTargetDefinitionJob extends WorkspaceJob {
buffer.setLength(buffer.length() - 1);
pref.setValue(ICoreConstants.ADDITIONAL_LOCATIONS, buffer.toString());
- String newValue = currentPath;
- for (int i = 0; i < 4; i++) {
- String value = pref.getString(ICoreConstants.SAVED_PLATFORM + i);
- pref.setValue(ICoreConstants.SAVED_PLATFORM + i, newValue);
- if (!value.equals(currentPath))
- newValue = value;
- else
- break;
- }
-
handleReload(path, additional, pref, new SubProgressMonitor(monitor, 85));
monitor.done();
}
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ExternalFeatureModelManager.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ExternalFeatureModelManager.java
index 7302123..d4cc66b 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ExternalFeatureModelManager.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ExternalFeatureModelManager.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2012 IBM Corporation and others.
+ * Copyright (c) 2000, 2013 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -17,12 +17,11 @@ import org.eclipse.core.runtime.*;
import org.eclipse.osgi.util.NLS;
import org.eclipse.pde.core.IModelProviderEvent;
import org.eclipse.pde.core.IModelProviderListener;
+import org.eclipse.pde.core.target.ITargetDefinition;
import org.eclipse.pde.core.target.TargetFeature;
import org.eclipse.pde.internal.core.feature.ExternalFeatureModel;
-import org.eclipse.pde.internal.core.ifeature.IFeature;
import org.eclipse.pde.internal.core.ifeature.IFeatureModel;
import org.eclipse.pde.internal.core.target.Messages;
-import org.osgi.framework.Version;
/**
* Manages the features known to the PDE state that come from the target platform.
@@ -60,68 +59,10 @@ public class ExternalFeatureModelManager {
}
}
- public static IFeatureModel[] createModels(String platformHome, ArrayList<String> additionalLocations, IProgressMonitor monitor) {
- if (platformHome != null && platformHome.length() > 0) {
- URL[] featureURLs = PluginPathFinder.getFeaturePaths(platformHome);
-
- if (additionalLocations.size() == 0)
- return createModels(featureURLs, monitor);
-
- File[] dirs = new File[additionalLocations.size()];
- for (int i = 0; i < dirs.length; i++) {
- String directory = additionalLocations.get(i).toString();
- File dir = new File(directory, "features"); //$NON-NLS-1$
- if (!dir.exists())
- dir = new File(directory);
- dirs[i] = dir;
- }
-
- URL[] newUrls = PluginPathFinder.scanLocations(dirs);
-
- URL[] result = new URL[featureURLs.length + newUrls.length];
- System.arraycopy(featureURLs, 0, result, 0, featureURLs.length);
- System.arraycopy(newUrls, 0, result, featureURLs.length, newUrls.length);
- return createModels(result, monitor);
- }
- return new IFeatureModel[0];
- }
-
- private static IFeatureModel[] createModels(URL[] featurePaths, IProgressMonitor monitor) {
- if (monitor == null)
- monitor = new NullProgressMonitor();
- monitor.beginTask("", featurePaths.length); //$NON-NLS-1$
- Map<String, IFeatureModel> uniqueFeatures = new HashMap<String, IFeatureModel>();
- for (int i = 0; i < featurePaths.length; i++) {
- File manifest = new File(featurePaths[i].getFile(), ICoreConstants.FEATURE_FILENAME_DESCRIPTOR);
- if (!manifest.exists() || !manifest.isFile()) {
- monitor.worked(1);
- continue;
- }
- try {
- IFeatureModel model = createModel(manifest);
- if (model != null && model.isLoaded()) {
- IFeature feature = model.getFeature();
- uniqueFeatures.put(feature.getId() + "_" + feature.getVersion(), model); //$NON-NLS-1$
- }
- } catch (CoreException e) {
- PDECore.log(e);
- }
- monitor.worked(1);
- }
- Collection<IFeatureModel> models = uniqueFeatures.values();
- return models.toArray(new IFeatureModel[models.size()]);
- }
-
private ListenerList fListeners = new ListenerList();
private IFeatureModel[] fModels;
- private PDEPreferencesManager fPref;
-
- public ExternalFeatureModelManager() {
- fPref = PDECore.getDefault().getPreferencesManager();
- }
-
public void addModelProviderListener(IModelProviderListener listener) {
fListeners.add(listener);
}
@@ -138,80 +79,67 @@ public class ExternalFeatureModelManager {
* Loads new feature models from preferences and notifies listeners.
*/
public void initialize() {
- // Load all features from the platform path and addditional locations then filter by the list of external features, if available
- String platformHome = fPref.getString(ICoreConstants.PLATFORM_PATH);
- String additionalLocations = fPref.getString(ICoreConstants.ADDITIONAL_LOCATIONS);
- String externalFeaturesString = fPref.getString(ICoreConstants.EXTERNAL_FEATURES);
-
- IFeatureModel[] oldModels = null;
- IFeatureModel[] newModels = null;
// Do the model loading in a synch block in case other changes cause the models to load
+ IFeatureModel[] oldModels = null;
synchronized (this) {
oldModels = fModels != null ? fModels : new IFeatureModel[0];
- IFeatureModel[] allModels = createModels(platformHome, parseAdditionalLocations(additionalLocations), null);
- if (externalFeaturesString == null || externalFeaturesString.trim().length() == 0) {
- fModels = allModels;
- } else {
- // To allow multiple versions of features, create a map of feature ids to a list of models
- Map<String, List<IFeatureModel>> modelMap = new HashMap<String, List<IFeatureModel>>();
- for (int i = 0; i < allModels.length; i++) {
- String id = allModels[i].getFeature().getId();
- if (modelMap.containsKey(id)) {
- List<IFeatureModel> list = modelMap.get(id);
- list.add(allModels[i]);
- } else {
- List<IFeatureModel> list = new ArrayList<IFeatureModel>();
- list.add(allModels[i]);
- modelMap.put(id, list);
- }
- }
-
- // Loop through the filter list, finding an exact match in the available models or highest version match
- Set<IFeatureModel> filteredModels = new HashSet<IFeatureModel>();
- String[] entries = externalFeaturesString.split(","); //$NON-NLS-1$
- for (int i = 0; i < entries.length; i++) {
- String[] parts = entries[i].split("@"); //$NON-NLS-1$
- if (parts.length > 0) {
- String id = parts[0];
- List<?> possibilities = modelMap.get(id);
- if (possibilities != null) {
- IFeatureModel candidate = null;
- for (Iterator<?> iterator = possibilities.iterator(); iterator.hasNext();) {
- IFeatureModel current = (IFeatureModel) iterator.next();
- if (candidate == null) {
- candidate = current;
- } else if (parts.length > 1 && parts[1].equals(current.getFeature().getVersion())) {
- candidate = current;
- } else {
- Version currentVersion = Version.parseVersion(current.getFeature().getVersion());
- Version candidateVersion = Version.parseVersion(candidate.getFeature().getVersion());
- if (currentVersion.compareTo(candidateVersion) == 1) {
- candidate = current;
- }
- }
- }
- if (candidate != null) {
- filteredModels.add(candidate);
- }
- }
- }
- }
- fModels = filteredModels.toArray(new IFeatureModel[filteredModels.size()]);
+ long startTime = System.currentTimeMillis();
+ fModels = getExternalModels();
+ if (PDECore.DEBUG_MODEL) {
+ System.out.println("Time to load features from target platform (ms): " + (System.currentTimeMillis() - startTime)); //$NON-NLS-1$
+ System.out.println("External features loaded: " + fModels.length); //$NON-NLS-1$
}
- newModels = new IFeatureModel[fModels.length];
- System.arraycopy(fModels, 0, newModels, 0, fModels.length);
}
// Release lock when notifying listeners. See bug 270891.
- notifyListeners(oldModels, newModels);
+ notifyListeners(oldModels, fModels);
}
- private ArrayList<String> parseAdditionalLocations(String additionalLocations) {
- ArrayList<String> result = new ArrayList<String>();
- StringTokenizer tokenizer = new StringTokenizer(additionalLocations, ","); //$NON-NLS-1$
- while (tokenizer.hasMoreTokens()) {
- result.add(tokenizer.nextToken().trim());
+ /**
+ * Returns a list of feature models from the target platform or an empty
+ * array if there is a problem.
+ *
+ * @return list of external feature models, possibly empty
+ */
+ private IFeatureModel[] getExternalModels() {
+ ITargetDefinition target = null;
+ try {
+ target = TargetPlatformHelper.getWorkspaceTargetResolved(null);
+ } catch (CoreException e) {
+ PDECore.log(e);
+ return new IFeatureModel[0];
+ }
+
+ // TODO resolution cancelled, can we reschedule?
+ if (target == null) {
+ return new IFeatureModel[0];
+ }
+
+ // TODO Log any known issues with the target platform to warn user, already done in PluginModelManager?
+// if (target.getStatus().getSeverity() == IStatus.ERROR) {
+// PDECore.log(new Status(IStatus.ERROR, PDECore.PLUGIN_ID, "The current target platform contains errors, open Window > Preferences > Plug-in Development > Target Platform for details.", new CoreException(target.getStatus())));
+// }
+
+ List<IFeatureModel> result = new ArrayList<IFeatureModel>();
+ TargetFeature[] features = target.getAllFeatures();
+ if (features != null) {
+ for (int i = 0; i < features.length; i++) {
+ // TODO We assume the target will have removed duplicates
+ String location = features[i].getLocation();
+ File manifest = new File(location, ICoreConstants.FEATURE_FILENAME_DESCRIPTOR);
+ if (!manifest.exists() || !manifest.isFile()) {
+ continue;
+ }
+ try {
+ IFeatureModel model = createModel(manifest);
+ if (model != null && model.isLoaded()) {
+ result.add(model);
+ }
+ } catch (CoreException e) {
+ PDECore.log(e);
+ }
+ }
}
- return result;
+ return result.toArray(new IFeatureModel[result.size()]);
}
private void notifyListeners(IFeatureModel[] oldModels, IFeatureModel[] newFeatureModels) {
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ICoreConstants.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ICoreConstants.java
index 5b7a3f3..66bbcc9 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ICoreConstants.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/ICoreConstants.java
@@ -14,6 +14,7 @@ package org.eclipse.pde.internal.core;
import java.util.Locale;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
+import org.eclipse.pde.core.plugin.TargetPlatform;
import org.eclipse.pde.core.project.IBundleProjectDescription;
import org.eclipse.pde.core.target.ITargetPlatformService;
import org.osgi.framework.Constants;
@@ -21,8 +22,13 @@ import org.osgi.framework.Constants;
public interface ICoreConstants {
// Target Platform
+ /**
+ * Preference key that stores the string path to the root location of the
+ * target platform. Should be accessed through {@link TargetPlatform#getLocation()}.
+ */
String PLATFORM_PATH = "platform_path"; //$NON-NLS-1$
- String SAVED_PLATFORM = "saved_platform"; //$NON-NLS-1$
+
+ // TODO The following will all be deprecated and only used when loading a target from preferences
String TARGET_MODE = "target_mode"; //$NON-NLS-1$
String VALUE_USE_THIS = "useThis"; //$NON-NLS-1$
String VALUE_USE_OTHER = "useOther"; //$NON-NLS-1$
@@ -30,8 +36,6 @@ public interface ICoreConstants {
String VALUE_SAVED_NONE = "[savedNone]"; //$NON-NLS-1$
String VALUE_SAVED_ALL = "[savedAll]"; //$NON-NLS-1$
String VALUE_SAVED_SOME = "savedSome"; //$NON-NLS-1$
- String P_SOURCE_LOCATIONS = "source_locations"; //$NON-NLS-1$
- String P_EXT_LOCATIONS = "ext_locations"; //$NON-NLS-1$
String PROGRAM_ARGS = "program_args"; //$NON-NLS-1$
/**
* Preferences key that stores a String containing additional arguments to
@@ -39,12 +43,11 @@ public interface ICoreConstants {
* @deprecated Since the 4.4 Luna release, target platform information is no longer stored in preferences. Instead use {@link ITargetPlatformService}.
*/
String VM_ARGS = "vm_args"; //$NON-NLS-1$
+ // Not sure about this one:
String VM_LAUNCHER_INI = "vm_launcher_ini"; //$NON-NLS-1$
String IMPLICIT_DEPENDENCIES = "implicit_dependencies"; //$NON-NLS-1$
- String GROUP_PLUGINS_VIEW = "group_plugins"; //$NON-NLS-1$
String ADDITIONAL_LOCATIONS = "additional_locations"; //$NON-NLS-1$
String TARGET_PLATFORM_REALIZATION = "target_platform_realization"; //$NON-NLS-1$
-
/**
* This preference was only used during 3.5, it has been replaced in 3.6
* with POOLED_URLS.
@@ -259,6 +262,13 @@ public interface ICoreConstants {
*/
public final static String TARGET_VERSION_LATEST = TARGET38;
+ /**
+ * Preference key that stores a list of user specified source locations.
+ * No longer supported in the UI.
+ * @deprecated Not supported in the UI.
+ */
+ String P_SOURCE_LOCATIONS = "source_locations"; //$NON-NLS-1$
+
public final static String EQUINOX = "Equinox"; //$NON-NLS-1$
// project preferences
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PluginModelManager.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PluginModelManager.java
index acebb51..0fce003 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PluginModelManager.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/PluginModelManager.java
@@ -26,7 +26,6 @@ import org.eclipse.pde.core.build.IBuild;
import org.eclipse.pde.core.build.IBuildEntry;
import org.eclipse.pde.core.plugin.*;
import org.eclipse.pde.core.target.*;
-import org.eclipse.pde.internal.core.target.IUBundleContainer;
public class PluginModelManager implements IModelProviderListener {
@@ -664,53 +663,17 @@ public class PluginModelManager implements IModelProviderListener {
* @return array of URLs for external bundles
*/
private URL[] getExternalBundles() {
- final ITargetDefinition target;
+ ITargetDefinition target = null;
try {
- ITargetPlatformService service = (ITargetPlatformService) PDECore.getDefault().acquireService(ITargetPlatformService.class.getName());
- if (service == null) {
- throw new CoreException(new Status(IStatus.ERROR, PDECore.PLUGIN_ID, "Could not acquire target platform service"));
- }
- target = service.getWorkspaceTargetDefinition();
+ target = TargetPlatformHelper.getWorkspaceTargetResolved(null);
} catch (CoreException e) {
PDECore.log(e);
return new URL[0];
}
- // Don't resolve again if we don't have to
- if (!target.isResolved()) {
-
- // TODO Performance hack, avoid p2 pinging remote sites or downloading at this time
- ITargetLocation[] locations = target.getTargetLocations();
- for (int i = 0; i < locations.length; i++) {
- if (locations[i] instanceof IUBundleContainer) {
- ((IUBundleContainer) locations[i]).setRemoteFetch(false);
- }
- }
-
- // Resolve the target definition in a separate job to allow cancellation
- Job job = new Job("Loading external bundles from target platform") {
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- return target.resolve(monitor);
- }
- };
- job.schedule();
- try {
- job.join();
- } catch (InterruptedException e1) {
- }
-
- // TODO Performance hack, avoid p2 pinging remote sites or downloading at this time
- for (int i = 0; i < locations.length; i++) {
- if (locations[i] instanceof IUBundleContainer) {
- ((IUBundleContainer) locations[i]).setRemoteFetch(true);
- }
- }
-
- if (job.getResult().getSeverity() == IStatus.CANCEL) {
- // TODO Do we want to schedule a job for later to complete?
- return new URL[0];
- }
+ // TODO resolution cancelled, can we reschedule?
+ if (target == null) {
+ return new URL[0];
}
// Log any known issues with the target platform to warn user
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/SourceLocationManager.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/SourceLocationManager.java
index c238af3..2d5336e 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/SourceLocationManager.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/SourceLocationManager.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2012 IBM Corporation and others.
+ * Copyright (c) 2000, 2013 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -177,8 +177,12 @@ public class SourceLocationManager implements ICoreConstants {
}
/**
+ * While there is no UI to access this feature, we still support additional
+ * source locations being provided via preference.
+ *
* @return array of source locations that have been specified by the user
*/
+ @SuppressWarnings("deprecation")
public List<SourceLocation> getUserLocations() {
List<SourceLocation> userLocations = new ArrayList<SourceLocation>();
String pref = PDECore.getDefault().getPreferencesManager().getString(P_SOURCE_LOCATIONS);
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/TargetPlatformHelper.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/TargetPlatformHelper.java
index 0657fe1..969e952 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/TargetPlatformHelper.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/TargetPlatformHelper.java
@@ -15,12 +15,15 @@ package org.eclipse.pde.internal.core;
import java.io.*;
import java.util.*;
import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jdt.launching.JavaRuntime;
import org.eclipse.jdt.launching.environments.IExecutionEnvironment;
import org.eclipse.osgi.service.resolver.BundleDescription;
import org.eclipse.osgi.service.resolver.State;
import org.eclipse.osgi.util.ManifestElement;
import org.eclipse.pde.core.plugin.*;
+import org.eclipse.pde.core.target.ITargetDefinition;
+import org.eclipse.pde.core.target.ITargetPlatformService;
import org.eclipse.pde.internal.build.IPDEBuildConstants;
import org.eclipse.pde.internal.core.ifeature.IFeatureModel;
import org.eclipse.pde.internal.core.util.CoreUtility;
@@ -422,6 +425,71 @@ public class TargetPlatformHelper {
return getPDEState().getState();
}
+ /**
+ * Utility method to get the workspace active target platform and ensure it
+ * has been resolved. This is potentially a long running operation. If a
+ * monitor is provided, progress is reported to it. If a monitor is not
+ * provided, the resolution will run in a named {@link Job}, but this
+ * thread will join to run synchronously.
+ *
+ * @param monitor optional progress monitor to report progress to
+ * @return a resolved target definition or <code>null</code> if the resolution was cancelled
+ * @throws CoreException if there is a problem accessing the workspace target definition
+ */
+ public static ITargetDefinition getWorkspaceTargetResolved(IProgressMonitor monitor) throws CoreException {
+ ITargetPlatformService service = (ITargetPlatformService) PDECore.getDefault().acquireService(ITargetPlatformService.class.getName());
+ if (service == null) {
+ throw new CoreException(new Status(IStatus.ERROR, PDECore.PLUGIN_ID, "Could not acquire target platform service"));
+ }
+ final ITargetDefinition target = service.getWorkspaceTargetDefinition();
+
+ // Don't resolve again if we don't have to
+ if (!target.isResolved()) {
+
+ // TODO Performance hack, avoid p2 pinging remote sites or downloading at this time
+// ITargetLocation[] locations = target.getTargetLocations();
+// for (int i = 0; i < locations.length; i++) {
+// if (locations[i] instanceof IUBundleContainer) {
+// ((IUBundleContainer) locations[i]).setRemoteFetch(false);
+// }
+// }
+
+ if (monitor == null) {
+ // Resolve the target definition in a separate job to allow cancellation
+ Job job = new Job("Loading target platform") {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ return target.resolve(monitor);
+ }
+ };
+ job.schedule();
+ try {
+ job.join();
+ } catch (InterruptedException e1) {
+ }
+ if (job.getResult().getSeverity() == IStatus.CANCEL) {
+ // TODO Do we want to schedule a job for later to complete? Is returning null the best option
+ return null;
+ }
+
+ } else {
+ target.resolve(monitor);
+ if (monitor.isCanceled()) {
+ return null;
+ }
+ }
+
+ // TODO Performance hack, avoid p2 pinging remote sites or downloading at this time
+// for (int i = 0; i < locations.length; i++) {
+// if (locations[i] instanceof IUBundleContainer) {
+// ((IUBundleContainer) locations[i]).setRemoteFetch(true);
+// }
+// }
+
+ }
+ return target;
+ }
+
public static Map<Long, String> getPatchMap(PDEState state) {
HashMap<Long, String> properties = new HashMap<Long, String>();
IPluginModelBase[] models = PluginRegistry.getActiveModels();
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/TargetPreferenceModifyListener.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/TargetPreferenceModifyListener.java
index 5212dff..c5392e1 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/TargetPreferenceModifyListener.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/TargetPreferenceModifyListener.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 IBM Corporation and others.
+ * Copyright (c) 2009, 2013 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -40,12 +40,6 @@ public class TargetPreferenceModifyListener extends PreferenceModifyListener {
node.remove(ICoreConstants.POOLED_URLS);
node.remove(ICoreConstants.PROGRAM_ARGS);
node.remove(ICoreConstants.OS);
- for (int i = 0; i < 4; i++) {
- StringBuffer key = new StringBuffer();
- key.append(ICoreConstants.SAVED_PLATFORM);
- key.append(i);
- node.remove(key.toString());
- }
node.remove(ICoreConstants.TARGET_MODE);
node.remove(ICoreConstants.TARGET_PLATFORM_REALIZATION);
node.remove(ICoreConstants.TARGET_PROFILE);
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPlatformService.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPlatformService.java
index 20e5b8a..bc53ffb 100644
--- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPlatformService.java
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/TargetPlatformService.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2012 IBM Corporation and others.
+ * Copyright (c) 2008, 2013 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -264,11 +264,12 @@ public class TargetPlatformService implements ITargetPlatformService {
// TODO Go through all uses of this and update to getWorkspaceTargetDefinition
+ // TODO Removing this represents a binary compatible API change
// If the plug-in registry has not been initialized we may not have a target set, getting the start forces the init
- PluginModelManager manager = PDECore.getDefault().getModelManager();
- if (!manager.isInitialized()) {
- manager.getExternalModelManager();
- }
+// PluginModelManager manager = PDECore.getDefault().getModelManager();
+// if (!manager.isInitialized()) {
+// manager.getExternalModelManager();
+// }
PDEPreferencesManager preferences = PDECore.getDefault().getPreferencesManager();
String memento = preferences.getString(ICoreConstants.WORKSPACE_TARGET_HANDLE);
@@ -282,7 +283,8 @@ public class TargetPlatformService implements ITargetPlatformService {
* @see org.eclipse.pde.core.target.ITargetPlatformService#getWorkspaceTargetDefinition()
*/
public synchronized ITargetDefinition getWorkspaceTargetDefinition() throws CoreException {
- if (fWorkspaceTarget != null) {
+ // TODO Check if the preference has changed, might be better to listen for preference changes
+ if (fWorkspaceTarget != null && fWorkspaceTarget.getHandle().equals(getWorkspaceTargetHandle())) {
return fWorkspaceTarget;
}
@@ -312,13 +314,13 @@ public class TargetPlatformService implements ITargetPlatformService {
* active target. If there are no targets that correspond to workspace settings
* a new definition is created.
*/
- private synchronized void initDefaultTargetPlatformDefinition() {
+ private void initDefaultTargetPlatformDefinition() {
String memento = PDECore.getDefault().getPreferencesManager().getString(ICoreConstants.WORKSPACE_TARGET_HANDLE);
if (memento == null || memento.equals("")) { //$NON-NLS-1$
if (PDECore.DEBUG_MODEL) {
System.out.println("No target memento, loading target info from old preferences.");
}
- // no workspace target handle set, check if any targets are equivalent to current settings
+ // no workspace target handle set, check if any known target definitions are equivalent to current settings
ITargetHandle[] targets = getTargets(null);
// create target platform from current workspace settings
TargetDefinition curr = (TargetDefinition) newTarget();