- // Perform variable substitution for system properties.
- for (Enumeration e = config.propertyNames(); e.hasMoreElements();) {
- String name = (String) e.nextElement();
- config.setProperty(name, org.apache.felix.main.Main.substVars(
- config.getProperty(name), name, null, config));
+ // System properties have priority.
+ config.putAll(System.getProperties());
+ return config;
+ }
+
+ public static void startEquinox(Properties config) throws Exception {
+ info("java.class.path=" + System.getProperty("java.class.path"));
+
+ File baseDir = new File(System.getProperty("user.dir"))
+ .getCanonicalFile();
+ String equinoxConfigurationPath = baseDir.getPath() + File.separator
+ + "slc-detached" + File.separator + "equinoxConfiguration";
+
+ String equinoxArgsLineDefault = "-console -noExit -clean -debug -configuration "
+ + equinoxConfigurationPath;
+ String equinoxArgsLine = config.getProperty(PROP_SLC_OSGI_EQUINOX_ARGS,
+ equinoxArgsLineDefault);
+ // String[] equinoxArgs = { "-console", "-noExit", "-clean", "-debug",
+ // "-configuration", equinoxConfigurationPath };
+ String[] equinoxArgs = equinoxArgsLine.split(" ");
+
+ BundleContext context = EclipseStarter.startup(equinoxArgs, null);
+
+ List installBundleNames = new ArrayList();
+
+ // Load from class path (dev environment, maven)
+ if (config.getProperty(PROP_SLC_OSGI_SCAN_CLASSPATH, "false").equals(
+ "true")) {
+ StringTokenizer st = new StringTokenizer(System
+ .getProperty("java.class.path"), File.pathSeparator);
+ while (st.hasMoreTokens()) {
+ try {
+ String path = st.nextToken();
+ String url = "reference:file:"
+ + new File(path).getCanonicalPath();
+ Bundle bundle = context.installBundle(url);
+ installBundleNames.add(bundle.getSymbolicName());
+ info("Installed from classpath " + url);
+ } catch (Exception e) {
+ bundleInstallWarn(e.getMessage());
+ }
+ }