import java.util.SortedMap;
import java.util.StringTokenizer;
import java.util.TreeMap;
+import java.util.concurrent.ForkJoinPool;
import org.argeo.init.a2.A2Source;
import org.argeo.init.a2.ProvisioningManager;
A2Source.SCHEME_A2 + "://" + homePath.toString() + "/.local/share/a2" + queryPart);
provisioningManager.registerSource(A2Source.SCHEME_A2 + ":///usr/local/share/a2" + queryPart);
provisioningManager.registerSource(A2Source.SCHEME_A2 + ":///usr/share/a2" + queryPart);
+ } else if (source.trim().equals(A2Source.DEFAULT_A2_REFERENCE_URI)) {
+ if (Files.exists(homePath))
+ provisioningManager.registerSource(A2Source.SCHEME_A2_REFERENCE + "://" + homePath.toString()
+ + "/.local/share/a2" + queryPart);
+ provisioningManager
+ .registerSource(A2Source.SCHEME_A2_REFERENCE + ":///usr/local/share/a2" + queryPart);
+ provisioningManager.registerSource(A2Source.SCHEME_A2_REFERENCE + ":///usr/share/a2" + queryPart);
} else {
provisioningManager.registerSource(source + queryPart);
}
// default and active start levels from System properties
Integer defaultStartLevel = Integer.parseInt(getProperty(PROP_OSGI_BUNDLES_DEFAULTSTARTLEVEL, "4"));
Integer activeStartLevel = Integer.parseInt(getProperty(PROP_OSGI_STARTLEVEL, "6"));
+ if (OsgiBootUtils.isDebug()) {
+ OsgiBootUtils.debug("OSGi default start level: "
+ + getProperty(PROP_OSGI_BUNDLES_DEFAULTSTARTLEVEL, "<not set>") + ", using " + defaultStartLevel);
+ OsgiBootUtils.debug("OSGi active start level: " + getProperty(PROP_OSGI_STARTLEVEL, "<not set>")
+ + ", using " + activeStartLevel);
+ OsgiBootUtils.debug("Framework start level: " + frameworkStartLevel.getStartLevel() + " (initial: "
+ + frameworkStartLevel.getInitialBundleStartLevel() + ")");
+ }
SortedMap<Integer, List<String>> startLevels = new TreeMap<Integer, List<String>>();
computeStartLevels(startLevels, properties, defaultStartLevel);
}
}
}
- frameworkStartLevel.setStartLevel(activeStartLevel, (FrameworkEvent event) -> {
- if (OsgiBootUtils.isDebug())
- OsgiBootUtils.debug("Framework event: " + event);
- int initialStartLevel = frameworkStartLevel.getInitialBundleStartLevel();
- int startLevel = frameworkStartLevel.getStartLevel();
- OsgiBootUtils.debug("Framework start level: " + startLevel + " (initial: " + initialStartLevel + ")");
+
+ if (OsgiBootUtils.isDebug())
+ OsgiBootUtils.debug("About to set framework start level to " + activeStartLevel + " ...");
+
+ // Start the framework asynchronously
+ ForkJoinPool.commonPool().execute(() -> {
+ frameworkStartLevel.setStartLevel(activeStartLevel, (FrameworkEvent event) -> {
+ if (OsgiBootUtils.isDebug())
+ OsgiBootUtils.debug("Framework event: " + event);
+ int initialStartLevel = frameworkStartLevel.getInitialBundleStartLevel();
+ int startLevel = frameworkStartLevel.getStartLevel();
+ if (OsgiBootUtils.isDebug())
+ OsgiBootUtils
+ .debug("Framework start level: " + startLevel + " (initial: " + initialStartLevel + ")");
+ });
});
}
private void refreshFramework() {
Bundle systemBundle = bundleContext.getBundle(0);
FrameworkWiring frameworkWiring = systemBundle.adapt(FrameworkWiring.class);
+ // TODO deal with refresh breaking native loading (e.g SWT)
frameworkWiring.refreshBundles(null);
}