X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.init%2Fsrc%2Forg%2Fargeo%2Finit%2Fosgi%2FOsgiBoot.java;h=67ee7b6dffd32189e316f365afbbef6ecc38f7a8;hb=722dc6b20b15014e3d963bd09617ddfd9b63a89f;hp=f5b260caba404735f9f296830bab0e6e29c369bf;hpb=14d78f16b17e152d0f34021fc4771606b12f1604;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.init/src/org/argeo/init/osgi/OsgiBoot.java b/org.argeo.init/src/org/argeo/init/osgi/OsgiBoot.java index f5b260cab..67ee7b6df 100644 --- a/org.argeo.init/src/org/argeo/init/osgi/OsgiBoot.java +++ b/org.argeo.init/src/org/argeo/init/osgi/OsgiBoot.java @@ -20,8 +20,9 @@ import java.util.SortedMap; import java.util.StringTokenizer; import java.util.TreeMap; -import org.argeo.init.a2.A2Source; -import org.argeo.init.a2.ProvisioningManager; +import org.argeo.api.a2.A2Source; +import org.argeo.api.a2.ProvisioningManager; +import org.argeo.api.init.InitConstants; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.BundleException; @@ -37,10 +38,6 @@ import org.osgi.framework.wiring.FrameworkWiring; * methods, configured via properties. */ public class OsgiBoot implements OsgiBootConstants { - public final static String PROP_ARGEO_OSGI_START = "argeo.osgi.start"; - public final static String PROP_ARGEO_OSGI_MAX_START_LEVEL = "argeo.osgi.maxStartLevel"; - public final static String PROP_ARGEO_OSGI_SOURCES = "argeo.osgi.sources"; - @Deprecated final static String PROP_ARGEO_OSGI_BUNDLES = "argeo.osgi.bundles"; final static String PROP_ARGEO_OSGI_BASE_URL = "argeo.osgi.baseUrl"; @@ -59,18 +56,6 @@ public class OsgiBoot implements OsgiBootConstants { public final static String DEFAULT_BASE_URL = "reference:file:"; final static String DEFAULT_MAX_START_LEVEL = "32"; - // OSGi standard properties - final static String PROP_OSGI_BUNDLES_DEFAULTSTARTLEVEL = "osgi.bundles.defaultStartLevel"; - final static String PROP_OSGI_STARTLEVEL = "osgi.startLevel"; - public final static String PROP_OSGI_INSTANCE_AREA = "osgi.instance.area"; - public final static String PROP_OSGI_CONFIGURATION_AREA = "osgi.configuration.area"; - public final static String PROP_OSGI_SHARED_CONFIGURATION_AREA = "osgi.sharedConfiguration.area"; - public final static String PROP_OSGI_USE_SYSTEM_PROPERTIES = "osgi.framework.useSystemProperties"; - - // Symbolic names - final static String SYMBOLIC_NAME_OSGI_BOOT = "org.argeo.init"; - final static String SYMBOLIC_NAME_EQUINOX = "org.eclipse.osgi"; - private final BundleContext bundleContext; private final String localCache; private final ProvisioningManager provisioningManager; @@ -86,7 +71,7 @@ public class OsgiBoot implements OsgiBootConstants { localCache = getProperty(PROP_ARGEO_OSGI_LOCAL_CACHE, homeUri + ".m2/repository/"); provisioningManager = new ProvisioningManager(bundleContext); - String sources = getProperty(PROP_ARGEO_OSGI_SOURCES); + String sources = getProperty(InitConstants.PROP_ARGEO_OSGI_SOURCES); if (sources == null) { provisioningManager.registerDefaultSource(); } else { @@ -141,9 +126,9 @@ public class OsgiBoot implements OsgiBootConstants { long begin = System.currentTimeMillis(); // notify start - String osgiInstancePath = getProperty(PROP_OSGI_INSTANCE_AREA); - String osgiConfigurationPath = getProperty(PROP_OSGI_CONFIGURATION_AREA); - String osgiSharedConfigurationPath = getProperty(PROP_OSGI_CONFIGURATION_AREA); + String osgiInstancePath = getProperty(InitConstants.PROP_OSGI_INSTANCE_AREA); + String osgiConfigurationPath = getProperty(InitConstants.PROP_OSGI_CONFIGURATION_AREA); + String osgiSharedConfigurationPath = getProperty(InitConstants.PROP_OSGI_CONFIGURATION_AREA); OsgiBootUtils.info("OSGi bootstrap starting" // + (osgiInstancePath != null ? " data: " + osgiInstancePath + "" : "") // + (osgiConfigurationPath != null ? " state: " + osgiConfigurationPath + "" : "") // @@ -238,8 +223,8 @@ public class OsgiBoot implements OsgiBootConstants { Bundle bundle = (Bundle) installedBundles.get(url); if (OsgiBootUtils.isDebug()) debug("Bundle " + bundle.getSymbolicName() + " already installed from " + url); - } else if (url.contains("/" + SYMBOLIC_NAME_EQUINOX + "/") - || url.contains("/" + SYMBOLIC_NAME_OSGI_BOOT + "/")) { + } else if (url.contains("/" + InitConstants.SYMBOLIC_NAME_EQUINOX + "/") + || url.contains("/" + InitConstants.SYMBOLIC_NAME_INIT + "/")) { if (OsgiBootUtils.isDebug()) warn("Skip " + url); return; @@ -285,8 +270,8 @@ public class OsgiBoot implements OsgiBootConstants { } catch (BundleException e) { final String ALREADY_INSTALLED = "is already installed"; String message = e.getMessage(); - if ((message.contains("Bundle \"" + SYMBOLIC_NAME_OSGI_BOOT + "\"") - || message.contains("Bundle \"" + SYMBOLIC_NAME_EQUINOX + "\"")) + if ((message.contains("Bundle \"" + InitConstants.SYMBOLIC_NAME_INIT + "\"") + || message.contains("Bundle \"" + InitConstants.SYMBOLIC_NAME_EQUINOX + "\"")) && message.contains(ALREADY_INSTALLED)) { // silent, in order to avoid warnings: we know that both // have already been installed... @@ -317,15 +302,15 @@ public class OsgiBoot implements OsgiBootConstants { if (properties != null) { for (String key : properties.keySet()) { String property = key; - if (property.startsWith(PROP_ARGEO_OSGI_START)) { + if (property.startsWith(InitConstants.PROP_ARGEO_OSGI_START)) { map.put(property, properties.get(property)); } } } // then try all start level until a maximum - int maxStartLevel = Integer.parseInt(getProperty(PROP_ARGEO_OSGI_MAX_START_LEVEL, DEFAULT_MAX_START_LEVEL)); + int maxStartLevel = Integer.parseInt(getProperty(InitConstants.PROP_ARGEO_OSGI_MAX_START_LEVEL, DEFAULT_MAX_START_LEVEL)); for (int i = 1; i <= maxStartLevel; i++) { - String key = PROP_ARGEO_OSGI_START + "." + i; + String key = InitConstants.PROP_ARGEO_OSGI_START + "." + i; String value = getProperty(key); if (value != null) map.put(key, value); @@ -333,7 +318,7 @@ public class OsgiBoot implements OsgiBootConstants { } // finally, override with system properties for (Object key : System.getProperties().keySet()) { - if (key.toString().startsWith(PROP_ARGEO_OSGI_START)) { + if (key.toString().startsWith(InitConstants.PROP_ARGEO_OSGI_START)) { map.put(key.toString(), System.getProperty(key.toString())); } } @@ -348,7 +333,7 @@ public class OsgiBoot implements OsgiBootConstants { if (properties != null) { for (Object key : properties.keySet()) { String property = key.toString(); - if (property.startsWith(PROP_ARGEO_OSGI_START)) { + if (property.startsWith(InitConstants.PROP_ARGEO_OSGI_START)) { map.put(property, properties.get(property).toString()); } } @@ -356,18 +341,18 @@ public class OsgiBoot implements OsgiBootConstants { startBundles(map); } - /** Start bundle based on keys starting with {@link #PROP_ARGEO_OSGI_START}. */ + /** Start bundle based on keys starting with {@link InitConstants#PROP_ARGEO_OSGI_START}. */ protected void doStartBundles(Map properties) { FrameworkStartLevel frameworkStartLevel = bundleContext.getBundle(0).adapt(FrameworkStartLevel.class); // default and active start levels from System properties int initialStartLevel = frameworkStartLevel.getInitialBundleStartLevel(); - int defaultStartLevel = Integer.parseInt(getProperty(PROP_OSGI_BUNDLES_DEFAULTSTARTLEVEL, "4")); - int activeStartLevel = Integer.parseInt(getProperty(PROP_OSGI_STARTLEVEL, "6")); + int defaultStartLevel = Integer.parseInt(getProperty(InitConstants.PROP_OSGI_BUNDLES_DEFAULTSTARTLEVEL, "4")); + int activeStartLevel = Integer.parseInt(getProperty(InitConstants.PROP_OSGI_STARTLEVEL, "6")); if (OsgiBootUtils.isDebug()) { OsgiBootUtils.debug("OSGi default start level: " - + getProperty(PROP_OSGI_BUNDLES_DEFAULTSTARTLEVEL, "") + ", using " + defaultStartLevel); - OsgiBootUtils.debug("OSGi active start level: " + getProperty(PROP_OSGI_STARTLEVEL, "") + + getProperty(InitConstants.PROP_OSGI_BUNDLES_DEFAULTSTARTLEVEL, "") + ", using " + defaultStartLevel); + OsgiBootUtils.debug("OSGi active start level: " + getProperty(InitConstants.PROP_OSGI_STARTLEVEL, "") + ", using " + activeStartLevel); OsgiBootUtils.debug("Framework start level: " + frameworkStartLevel.getStartLevel() + " (initial: " + initialStartLevel + ")"); @@ -454,11 +439,11 @@ public class OsgiBoot implements OsgiBootConstants { Integer defaultStartLevel) { // default (and previously, only behaviour) - appendToStartLevels(startLevels, defaultStartLevel, properties.getOrDefault(PROP_ARGEO_OSGI_START, "")); + appendToStartLevels(startLevels, defaultStartLevel, properties.getOrDefault(InitConstants.PROP_ARGEO_OSGI_START, "")); // list argeo.osgi.start.* system properties Iterator keys = properties.keySet().iterator(); - final String prefix = PROP_ARGEO_OSGI_START + "."; + final String prefix = InitConstants.PROP_ARGEO_OSGI_START + "."; while (keys.hasNext()) { String key = keys.next(); if (key.startsWith(prefix)) {