X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.osgi.boot%2Fsrc%2Forg%2Fargeo%2Fosgi%2Fboot%2FOsgiBoot.java;h=34fe9ec91bbc12113e2427bb376edadd8b9cd150;hb=34596b63f0611aa77c29c6cafea752af6e5201c2;hp=300ebb82dd48ba2802b3328cd832fd3a3dc1dbbe;hpb=575dfe19b8516b1213b6d56d9f34fc3bcdb62026;p=lgpl%2Fargeo-commons.git
diff --git a/org.argeo.osgi.boot/src/org/argeo/osgi/boot/OsgiBoot.java b/org.argeo.osgi.boot/src/org/argeo/osgi/boot/OsgiBoot.java
index 300ebb82d..34fe9ec91 100644
--- a/org.argeo.osgi.boot/src/org/argeo/osgi/boot/OsgiBoot.java
+++ b/org.argeo.osgi.boot/src/org/argeo/osgi/boot/OsgiBoot.java
@@ -15,11 +15,8 @@
*/
package org.argeo.osgi.boot;
-import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -38,41 +35,40 @@ import org.argeo.osgi.boot.internal.springutil.SystemPropertyUtils;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.BundleException;
-import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
import org.osgi.service.packageadmin.ExportedPackage;
import org.osgi.service.packageadmin.PackageAdmin;
/**
* Basic provisioning of an OSGi runtime via file path patterns and system
- * properties. Java 1.4 compatible.
- * The approach is to generate list of URLs based on various methods, configured
- * via system properties.
+ * properties. The approach is to generate list of URLs based on various
+ * methods, configured via properties.
*/
public class OsgiBoot {
- public final static String SYMBOLIC_NAME_OSGI_BOOT = "org.argeo.osgi.boot";
- public final static String SYMBOLIC_NAME_EQUINOX = "org.eclipse.osgi";
- public final static String PROP_OSGI_STARTLEVEL = "osgi.startLevel";
public final static String PROP_OSGI_BUNDLES_DEFAULTSTARTLEVEL = "osgi.bundles.defaultStartLevel";
public final static String PROP_ARGEO_OSGI_DATA_DIR = "argeo.osgi.data.dir";
public final static String PROP_ARGEO_OSGI_START = "argeo.osgi.start";
public final static String PROP_ARGEO_OSGI_BUNDLES = "argeo.osgi.bundles";
- public final static String PROP_ARGEO_OSGI_LOCATIONS = "argeo.osgi.locations";
+ // public final static String PROP_ARGEO_OSGI_LOCATIONS =
+ // "argeo.osgi.locations";
public final static String PROP_ARGEO_OSGI_BASE_URL = "argeo.osgi.baseUrl";
- /** @deprecated */
- public final static String PROP_ARGEO_OSGI_MODULES_URL = "argeo.osgi.modulesUrl";
+ // public final static String PROP_ARGEO_OSGI_MODULES_URL =
+ // "argeo.osgi.modulesUrl";
public final static String PROP_ARGEO_OSGI_DISTRIBUTION_URL = "argeo.osgi.distributionUrl";
// booleans
public final static String PROP_ARGEO_OSGI_BOOT_DEBUG = "argeo.osgi.boot.debug";
public final static String PROP_ARGEO_OSGI_BOOT_EXCLUDE_SVN = "argeo.osgi.boot.excludeSvn";
- public final static String PROP_ARGEO_OSGI_BOOT_INSTALL_IN_LEXICOGRAPHIC_ORDER = "argeo.osgi.boot.installInLexicographicOrder";
+ // public final static String
+ // PROP_ARGEO_OSGI_BOOT_INSTALL_IN_LEXICOGRAPHIC_ORDER =
+ // "argeo.osgi.boot.installInLexicographicOrder";
public final static String PROP_ARGEO_OSGI_BOOT_DEFAULT_TIMEOUT = "argeo.osgi.boot.defaultTimeout";
- public final static String PROP_ARGEO_OSGI_BOOT_MODULES_URL_SEPARATOR = "argeo.osgi.boot.modulesUrlSeparator";
+ // public final static String PROP_ARGEO_OSGI_BOOT_MODULES_URL_SEPARATOR =
+ // "argeo.osgi.boot.modulesUrlSeparator";
public final static String PROP_ARGEO_OSGI_BOOT_SYSTEM_PROPERTIES_FILE = "argeo.osgi.boot.systemPropertiesFile";
public final static String PROP_ARGEO_OSGI_BOOT_APPCLASS = "argeo.osgi.boot.appclass";
public final static String PROP_ARGEO_OSGI_BOOT_APPARGS = "argeo.osgi.boot.appargs";
@@ -81,9 +77,14 @@ public class OsgiBoot {
public final static String EXCLUDES_SVN_PATTERN = "**/.svn/**";
// OSGi system properties
+ public final static String PROP_OSGI_STARTLEVEL = "osgi.startLevel";
public final static String INSTANCE_AREA_PROP = "osgi.instance.area";
public final static String INSTANCE_AREA_DEFAULT_PROP = "osgi.instance.area.default";
+ // Symbolic names
+ public final static String SYMBOLIC_NAME_OSGI_BOOT = "org.argeo.osgi.boot";
+ public final static String SYMBOLIC_NAME_EQUINOX = "org.eclipse.osgi";
+
private boolean debug = Boolean.valueOf(
System.getProperty(PROP_ARGEO_OSGI_BOOT_DEBUG, "false"))
.booleanValue();
@@ -92,23 +93,11 @@ public class OsgiBoot {
System.getProperty(PROP_ARGEO_OSGI_BOOT_EXCLUDE_SVN, "false"))
.booleanValue();
- /**
- * The {@link #installUrls(List)} methods won't follow the list order but
- * order the urls according to the alphabetical order of the file names
- * (last part of the URL). The goal is to stay closer from Eclipse PDE way
- * of installing target platform bundles.
- */
- private boolean installInLexicographicOrder = Boolean
- .valueOf(
- System.getProperty(
- PROP_ARGEO_OSGI_BOOT_INSTALL_IN_LEXICOGRAPHIC_ORDER,
- "true")).booleanValue();;
-
/** Default is 10s (set in constructor) */
private long defaultTimeout;
/** Default is ',' (set in constructor) */
- private String modulesUrlSeparator = ",";
+ // private String modulesUrlSeparator = ",";
private final BundleContext bundleContext;
@@ -120,8 +109,8 @@ public class OsgiBoot {
this.bundleContext = bundleContext;
defaultTimeout = Long.parseLong(OsgiBootUtils.getProperty(
PROP_ARGEO_OSGI_BOOT_DEFAULT_TIMEOUT, "10000"));
- modulesUrlSeparator = OsgiBootUtils.getProperty(
- PROP_ARGEO_OSGI_BOOT_MODULES_URL_SEPARATOR, ",");
+ // modulesUrlSeparator = OsgiBootUtils.getProperty(
+ // PROP_ARGEO_OSGI_BOOT_MODULES_URL_SEPARATOR, ",");
initSystemProperties();
}
@@ -162,8 +151,8 @@ public class OsgiBoot {
+ System.getProperty(PROP_ARGEO_OSGI_DATA_DIR)
+ " (set as system property " + PROP_ARGEO_OSGI_DATA_DIR + ")");
installUrls(getBundlesUrls());
- installUrls(getLocationsUrls());
- installUrls(getModulesUrls());
+ // installUrls(getLocationsUrls());
+ // installUrls(getModulesUrls());
installUrls(getDistributionUrls());
checkUnresolved();
startBundles();
@@ -174,15 +163,15 @@ public class OsgiBoot {
// display packages exported twice
if (debug) {
- Map /* > */duplicatePackages = findPackagesExportedTwice();
+ Map> duplicatePackages = findPackagesExportedTwice();
if (duplicatePackages.size() > 0) {
OsgiBootUtils.info("Packages exported twice:");
- Iterator it = duplicatePackages.keySet().iterator();
+ Iterator it = duplicatePackages.keySet().iterator();
while (it.hasNext()) {
- String pkgName = it.next().toString();
+ String pkgName = it.next();
OsgiBootUtils.info(pkgName);
- Set bdles = (Set) duplicatePackages.get(pkgName);
- Iterator bdlesIt = bdles.iterator();
+ Set bdles = duplicatePackages.get(pkgName);
+ Iterator bdlesIt = bdles.iterator();
while (bdlesIt.hasNext())
OsgiBootUtils.info(" " + bdlesIt.next());
}
@@ -197,48 +186,48 @@ public class OsgiBoot {
*/
/** Install a single url. Convenience method. */
public Bundle installUrl(String url) {
- List urls = new ArrayList();
+ List urls = new ArrayList();
urls.add(url);
installUrls(urls);
return (Bundle) getBundlesByLocation().get(url);
}
/** Install the bundles at this URL list. */
- public void installUrls(List urls) {
- Map installedBundles = getBundlesByLocation();
-
- if (installInLexicographicOrder) {
- SortedMap map = new TreeMap();
- // reorder
- for (int i = 0; i < urls.size(); i++) {
- String url = (String) urls.get(i);
- int index = url.lastIndexOf('/');
- String fileName;
- if (index >= 0)
- fileName = url.substring(index + 1);
- else
- fileName = url;
- map.put(fileName, url);
- }
-
- // install
- Iterator keys = map.keySet().iterator();
- while (keys.hasNext()) {
- Object key = keys.next();
- String url = map.get(key).toString();
- installUrl(url, installedBundles);
- }
- } else {
- for (int i = 0; i < urls.size(); i++) {
- String url = (String) urls.get(i);
- installUrl(url, installedBundles);
- }
+ public void installUrls(List urls) {
+ Map installedBundles = getBundlesByLocation();
+
+ // if (installInLexicographicOrder) {
+ // SortedMap map = new TreeMap();
+ // // reorder
+ // for (int i = 0; i < urls.size(); i++) {
+ // String url = (String) urls.get(i);
+ // int index = url.lastIndexOf('/');
+ // String fileName;
+ // if (index >= 0)
+ // fileName = url.substring(index + 1);
+ // else
+ // fileName = url;
+ // map.put(fileName, url);
+ // }
+ //
+ // // install
+ // Iterator keys = map.keySet().iterator();
+ // while (keys.hasNext()) {
+ // Object key = keys.next();
+ // String url = map.get(key).toString();
+ // installUrl(url, installedBundles);
+ // }
+ // } else {
+ for (int i = 0; i < urls.size(); i++) {
+ String url = (String) urls.get(i);
+ installUrl(url, installedBundles);
}
+ // }
}
/** Actually install the provided URL */
- protected void installUrl(String url, Map installedBundles) {
+ protected void installUrl(String url, Map installedBundles) {
try {
if (installedBundles.containsKey(url)) {
Bundle bundle = (Bundle) installedBundles.get(url);
@@ -278,14 +267,14 @@ public class OsgiBoot {
Integer activeStartLevel = new Integer(OsgiBootUtils.getProperty(
PROP_OSGI_STARTLEVEL, "6"));
- SortedMap/* > */startLevels = new TreeMap();
+ SortedMap> startLevels = new TreeMap>();
computeStartLevels(startLevels, System.getProperties(),
defaultStartLevel);
- Iterator/* */levels = startLevels.keySet().iterator();
+ Iterator levels = startLevels.keySet().iterator();
while (levels.hasNext()) {
Integer level = (Integer) levels.next();
- boolean allStarted = startBundles((List) startLevels.get(level));
+ boolean allStarted = startBundles(startLevels.get(level));
if (!allStarted)
OsgiBootUtils
.warn("Not all bundles started for level " + level);
@@ -296,7 +285,7 @@ public class OsgiBoot {
}
public static void computeStartLevels(
- SortedMap/* > */startLevels,
+ SortedMap> startLevels,
Properties properties, Integer defaultStartLevel) {
// default (and previously, only behaviour)
@@ -304,10 +293,10 @@ public class OsgiBoot {
properties.getProperty(PROP_ARGEO_OSGI_START, ""));
// list argeo.osgi.start.* system properties
- Iterator/* */keys = properties.keySet().iterator();
+ Iterator