Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Kaegi2008-04-27 20:01:12 +0000
committerSimon Kaegi2008-04-27 20:01:12 +0000
commit8ec2891df924d26e81c6df45603aef3913ac9a46 (patch)
tree0dfd36e6cfd4e36a77f7015ce7feafc9f0148282 /bundles/org.eclipse.equinox.frameworkadmin.equinox/src
parent12123d085e50591909bcd3b3e36551cab7a7ded7 (diff)
downloadrt.equinox.p2-8ec2891df924d26e81c6df45603aef3913ac9a46.tar.gz
rt.equinox.p2-8ec2891df924d26e81c6df45603aef3913ac9a46.tar.xz
rt.equinox.p2-8ec2891df924d26e81c6df45603aef3913ac9a46.zip
Bug 228998 Support osgi.shared.configuration.area in frameworkadmin
Diffstat (limited to 'bundles/org.eclipse.equinox.frameworkadmin.equinox/src')
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxConstants.java1
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxFwConfigFileParser.java85
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/Messages.java4
-rw-r--r--bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/messages.properties4
4 files changed, 80 insertions, 14 deletions
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxConstants.java b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxConstants.java
index f7b4875ee..f02b86f52 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxConstants.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxConstants.java
@@ -46,6 +46,7 @@ public class EquinoxConstants {
public static final String PROP_OSGI_FW = "osgi.framework"; //$NON-NLS-1$
public static final String PROP_LAUNCHER_PATH = "osgi.launcherPath"; //$NON-NLS-1$
public static final String PROP_LAUNCHER_NAME = "osgi.launcherIni"; //$NON-NLS-1$
+ public static final String PROP_SHARED_CONFIGURATION_AREA = "osgi.sharedConfiguration.area"; //$NON-NLS-1$
public static final String INI_EXTENSION = ".ini"; //$NON-NLS-1$
public static final String EXE_EXTENSION = ".exe"; //$NON-NLS-1$
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxFwConfigFileParser.java b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxFwConfigFileParser.java
index d04e47b76..118b8dcd4 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxFwConfigFileParser.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/EquinoxFwConfigFileParser.java
@@ -240,24 +240,24 @@ public class EquinoxFwConfigFileParser {
LauncherData launcherData = manipulator.getLauncherData();
configData.initialize();
- //Load properties
- Properties props = new Properties();
- InputStream is = null;
- try {
- is = new FileInputStream(inputFile);
- props.load(is);
- } finally {
- try {
- is.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- is = null;
- }
+ // load configuration properties
+ Properties props = loadProperties(inputFile);
//Start figuring out stuffs
URL rootURL = launcherData.getLauncher() != null ? launcherData.getLauncher().getParentFile().toURL() : null;
+ // look for shared configuration to merge
+ String sharedConfigurationArea = props.getProperty(EquinoxConstants.PROP_SHARED_CONFIGURATION_AREA);
+ if (sharedConfigurationArea != null) {
+ File sharedConfigIni = findSharedConfigIniFile(rootURL, sharedConfigurationArea);
+ if (sharedConfigIni != null && sharedConfigIni.exists()) {
+ Properties sharedProps = loadProperties(sharedConfigIni);
+ // merge: shared properties are over-written by user customizations
+ sharedProps.putAll(props);
+ props = sharedProps;
+ }
+ }
+
//Extracting fwkJar location needs to be done first
String launcherName = null;
String launcherPath = null;
@@ -304,6 +304,63 @@ public class EquinoxFwConfigFileParser {
Log.log(LogService.LOG_INFO, NLS.bind(Messages.log_configFile, inputFile.getAbsolutePath()));
}
+ private static Properties loadProperties(File inputFile) throws FileNotFoundException, IOException {
+ Properties props = new Properties();
+ InputStream is = null;
+ try {
+ is = new FileInputStream(inputFile);
+ props.load(is);
+ } finally {
+ try {
+ is.close();
+ } catch (IOException e) {
+ Log.log(LogService.LOG_WARNING, NLS.bind(Messages.log_failed_reading_properties, inputFile));
+ }
+ is = null;
+ }
+ return props;
+ }
+
+ private File findSharedConfigIniFile(URL rootURL, String sharedConfigurationArea) {
+ URL sharedConfigurationURL = null;
+ try {
+ sharedConfigurationURL = new URL(sharedConfigurationArea);
+ } catch (MalformedURLException e) {
+ // unexpected since this was written by the framework
+ Log.log(LogService.LOG_WARNING, NLS.bind(Messages.log_shared_config_url, sharedConfigurationArea));
+ return null;
+ }
+
+ // check for a relative URL
+ if (!sharedConfigurationURL.getPath().startsWith("/")) { //$NON-NLS-1$
+
+ if (!rootURL.getProtocol().equals(sharedConfigurationURL.getProtocol())) {
+ Log.log(LogService.LOG_WARNING, NLS.bind(Messages.log_shared_config_relative_url, rootURL.toExternalForm(), sharedConfigurationArea));
+ return null;
+ }
+ try {
+ sharedConfigurationURL = new URL(rootURL, sharedConfigurationArea);
+ } catch (MalformedURLException e) {
+ // unexpected since this was written by the framework
+ Log.log(LogService.LOG_WARNING, NLS.bind(Messages.log_shared_config_relative_url, rootURL.toExternalForm(), sharedConfigurationArea));
+ return null;
+ }
+ }
+ File sharedConfigurationFolder = new File(sharedConfigurationURL.getPath());
+ if (!sharedConfigurationFolder.isDirectory()) {
+ Log.log(LogService.LOG_WARNING, NLS.bind(Messages.log_shared_config_file_missing, sharedConfigurationFolder));
+ return null;
+ }
+
+ File sharedConfigIni = new File(sharedConfigurationFolder, EquinoxConstants.CONFIG_INI);
+ if (!sharedConfigIni.exists()) {
+ Log.log(LogService.LOG_WARNING, NLS.bind(Messages.log_shared_config_file_missing, sharedConfigIni));
+ return null;
+ }
+
+ return sharedConfigIni;
+ }
+
private static Properties makeRelative(Properties props, URL rootURL, File fwJar, File configArea, File osgiInstallArea) throws IOException {
for (int i = 0; i < PATHS.length; i++) {
String path = props.getProperty(PATHS[i]);
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/Messages.java b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/Messages.java
index 77a80e9be..a8994e0ed 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/Messages.java
+++ b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/Messages.java
@@ -23,6 +23,10 @@ public class Messages extends NLS {
public static String log_configProps;
public static String log_renameSuccessful;
public static String log_fwConfigSave;
+ public static String log_shared_config_url;
+ public static String log_shared_config_relative_url;
+ public static String log_shared_config_file_missing;
+ public static String log_failed_reading_properties;
public static String msg_ConfigFileHeader;
diff --git a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/messages.properties b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/messages.properties
index 1eb78cf51..3b9b8afcb 100644
--- a/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/messages.properties
+++ b/bundles/org.eclipse.equinox.frameworkadmin.equinox/src/org/eclipse/equinox/internal/frameworkadmin/equinox/messages.properties
@@ -18,5 +18,9 @@ log_configFile= Configuration file ({0}) has been read successfully.
log_configProps= Configuration properties is empty.
log_renameSuccessful= Successfully renamed {0} to {1}.
log_fwConfigSave= Framework Configuration was saved successfully in {0}.
+log_shared_config_url=Failed creating shared configuration url for {0}.
+log_shared_config_relative_url=Failed creating shared configuration url for root: {0} and sharedConfiguration: {1}.
+log_shared_config_file_missing=Failed creating shared configuration. File missing: {0}.
+log_failed_reading_properties=Failed reading properties from file: {0}.
msg_ConfigFileHeader= This configuration file was written by {0}. \ No newline at end of file

Back to the top