16696
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InstallConfiguration.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InstallConfiguration.java
index f44e03b..f998941 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InstallConfiguration.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/InstallConfiguration.java
@@ -328,6 +328,9 @@
configuredFeatureEntries[i]);
}
+ //Unconfigure sites
+ unconfigureSites(configurationSites,runtimeConfiguration);
+
// Write the plugin path, primary feature and platform
// into platform.cfg
for (int i = 0; i < configurationSites.length; i++) {
@@ -368,6 +371,7 @@
/*
* Write the plugin path for each site
+ * Do not check if the site already existed before [16696]
*/
private void savePluginPath(
ConfiguredSite cSite,
@@ -404,22 +408,10 @@
//$NON-NLS-1$
}
- // if the URL already exist, set the policy
+ // create the policy
IPlatformConfiguration.ISiteEntry siteEntry =
- runtimeConfiguration.findConfiguredSite(urlToCheck);
- if (siteEntry != null) {
- siteEntry.setSitePolicy(sitePolicy);
- } else {
- throw Utilities.newCoreException(
- Policy.bind(
- "InstallConfiguration.UnableToFindConfiguredSite",
- urlToCheck.toExternalForm(),
- runtimeConfiguration
- .getConfigurationLocation()
- .toExternalForm()),
- null);
- //$NON-NLS-1$
- }
+ runtimeConfiguration.createSiteEntry(urlToCheck,sitePolicy);
+ runtimeConfiguration.configureSite(siteEntry);
}
/*
@@ -500,6 +492,62 @@
}
/*
+ * Unconfigures all Site entries from platform.cfg
+ * Log if we are about to create a site that didn't exist before
+ * in platform.cfg [16696]
+ */
+ private void unconfigureSites(
+ ConfiguredSiteModel[] configurationSites,
+ IPlatformConfiguration runtimeConfiguration) throws CoreException {
+
+
+ // check all the sites we are about to write already existed
+ // they should have existed either because they were created by
+ // updateManager or because we read them from platform.cfg
+ for (int i = 0; i < configurationSites.length; i++) {
+ // get the URL of the site that matches the one platform.cfg gave us
+ URL urlToCheck = null;
+ try {
+ urlToCheck = new URL(configurationSites[i].getPlatformURLString());
+ } catch (MalformedURLException e) {
+ UpdateManagerPlugin.warn(
+ Policy.bind(
+ "InstallConfiguration.UnableToCreateURL",
+ configurationSites[i].getPlatformURLString()),
+ e);
+ //$NON-NLS-1$
+ } catch (ClassCastException e) {
+ UpdateManagerPlugin.warn(
+ Policy.bind("InstallConfiguration.UnableToCast"),
+ e);
+ //$NON-NLS-1$
+ }
+
+ // if the URL doesn't exits log it
+ IPlatformConfiguration.ISiteEntry siteEntry =
+ runtimeConfiguration.findConfiguredSite(urlToCheck);
+ if (siteEntry == null) {
+ UpdateManagerPlugin.warn(
+ Policy.bind(
+ "Unable to find site {0} in platform configuration {1}.",
+ urlToCheck.toExternalForm(),
+ runtimeConfiguration
+ .getConfigurationLocation()
+ .toExternalForm()));
+ //$NON-NLS-1$
+ }
+ }
+
+
+ // disable all the sites
+ IPlatformConfiguration.ISiteEntry[] platformSites = runtimeConfiguration.getConfiguredSites();
+ for (int i = 0; i < platformSites.length; i++) {
+ runtimeConfiguration.unconfigureSite(platformSites[i]);
+ }
+
+ }
+
+ /*
*
*/
public void saveConfigurationFile(boolean isTransient)
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/messages.properties b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/messages.properties
index bc24546..eaef498 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/messages.properties
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/messages.properties
@@ -148,7 +148,6 @@
InstallConfiguration.UnableToEncodeConfiguration= Unable to encode configuration in {0}.
InstallConfiguration.UnableToCreateURL= Unable to create URL from {0}.
InstallConfiguration.UnableToCast= Internal Error. The Configuration Site object is not a subclass of ConfiguredSiteModel
-InstallConfiguration.UnableToFindConfiguredSite= Unable to find site {0} in platform configuration {1}.
InstallConfiguration.UnableToSavePlatformConfiguration=Unable to save platform configuration in {0}.
InstallConfiguration.DeletedConfiguration= * Deleted Configuration *
InstallConfiguration.AlreadyNativelyLinked=The site is already linked.