diff options
author | Simon Kaegi | 2009-03-13 01:53:23 +0000 |
---|---|---|
committer | Simon Kaegi | 2009-03-13 01:53:23 +0000 |
commit | b4b3442262a5a9d99aac992595ccee6a26a62478 (patch) | |
tree | 2eff6916099eff5b8875dbb1fbdf1e46a29d0817 | |
parent | c6756a6147dfd2936b26facbd9ad1ffd8e5aca78 (diff) | |
download | rt.equinox.p2-b4b3442262a5a9d99aac992595ccee6a26a62478.tar.gz rt.equinox.p2-b4b3442262a5a9d99aac992595ccee6a26a62478.tar.xz rt.equinox.p2-b4b3442262a5a9d99aac992595ccee6a26a62478.zip |
Bug 266739 [shared] Error updating eclipse with content in dropins
-rw-r--r-- | bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/SimpleConfiguratorImpl.java | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/SimpleConfiguratorImpl.java b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/SimpleConfiguratorImpl.java index d94cd8315..765becdc0 100644 --- a/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/SimpleConfiguratorImpl.java +++ b/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/SimpleConfiguratorImpl.java @@ -10,8 +10,8 @@ package org.eclipse.equinox.internal.simpleconfigurator; import java.io.File; import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; +import java.net.*; +import java.util.List; import org.eclipse.equinox.internal.provisional.configurator.Configurator; import org.eclipse.equinox.internal.simpleconfigurator.utils.*; import org.osgi.framework.Bundle; @@ -45,7 +45,7 @@ public class SimpleConfiguratorImpl implements Configurator { this.bundle = bundle; } - private URL getConfigurationURL() { + private URL getConfigurationURL() throws IOException { String specifiedURL = context.getProperty(SimpleConfiguratorConstants.PROP_KEY_CONFIGURL); if (specifiedURL == null) specifiedURL = "file:" + SimpleConfiguratorConstants.CONFIGURATOR_FOLDER + "/" + SimpleConfiguratorConstants.CONFIG_LIST; @@ -76,6 +76,7 @@ public class SimpleConfiguratorImpl implements Configurator { return url; //if it is an relative file URL, then resolve it against the configuration area + // TODO Support relative file URLs when not on Equinox URL[] configURL = EquinoxUtils.getConfigAreaURL(context); if (configURL != null) { File userConfig = new File(configURL[0].getFile(), url.getFile()); @@ -89,7 +90,15 @@ public class SimpleConfiguratorImpl implements Configurator { if (!sharedConfig.exists()) return userConfig.toURL(); - return (sharedConfig.lastModified() > userConfig.lastModified()) ? sharedConfig.toURL() : userConfig.toURL(); + URI base = EquinoxUtils.getInstallLocationURI(context); + + URL sharedConfigURL = sharedConfig.toURL(); + List sharedBundles = SimpleConfiguratorUtils.readConfiguration(sharedConfigURL, base); + + URL userConfigURL = userConfig.toURL(); + List userBundles = SimpleConfiguratorUtils.readConfiguration(userConfigURL, base); + + return (userBundles.containsAll(sharedBundles)) ? userConfigURL : sharedConfigURL; } } catch (MalformedURLException e) { return null; |