Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Won't Fix
-
2.1.2
-
None
-
None
Description
At startup, Karafi does not support urls like mvn:, obr:.
Imagine that at level 5 you install the bundle pax-url-mvn with karaf.auto.start.5 = "file: pax-url-mvn.jar | pax-url-mvn"
and then at level 10 you install mvn:. ... With karaf.auto.start.10 = "mvn :....| ...."
At the level 6 the url handler 'mvn' is available and you can use it.
This feature does not work with Karaf
I propose this path :
diff -r f0bb11c3d77c src/main/java/org/apache/karaf/main/Main.java
— a/src/main/java/org/apache/karaf/main/Main.java Mon Dec 20 11:05:11 2010 +0100
+++ b/src/main/java/org/apache/karaf/main/Main.java Mon Dec 20 11:46:29 2010 +0100
@@ -485,28 +485,20 @@
// the start level to which the bundles are assigned is specified by
// appending a ".n" to the auto-install property name, where "n" is
// the desired start level for the list of bundles.
- autoInstall(PROPERTY_AUTO_INSTALL, context, sl, convertToMavenUrls);
+ autoInstall(PROPERTY_AUTO_INSTALL, context, sl, convertToMavenUrls, false);
// The auto-start property specifies a space-delimited list of
// bundle URLs to be automatically installed and started into each
// new profile; the start level to which the bundles are assigned
// is specified by appending a ".n" to the auto-start property name,
// where "n" is the desired start level for the list of bundles.
- // The following code starts bundles in two passes, first it installs
- // them, then it starts them.
- List<Bundle> bundlesToStart = autoInstall(PROPERTY_AUTO_START, context, sl, convertToMavenUrls);
- // Now loop through and start the installed bundles.
- for (Bundle b : bundlesToStart) {
- try { - b.start(); - }
- catch (Exception ex) { - System.err.println("Auto-properties start: " + ex); - }
- }
+ // The following code starts bundles in one passes, it installs
+ // and it starts them by level.
+ autoInstall(PROPERTY_AUTO_START, context, sl, convertToMavenUrls, true);
+
}
- private List<Bundle> autoInstall(String propertyPrefix, BundleContext context, StartLevel sl, boolean convertToMavenUrls) {
+ private List<Bundle> autoInstall(String propertyPrefix, BundleContext context, StartLevel sl, boolean convertToMavenUrls, boolean start) {
Map<Integer, String> autoStart = new TreeMap<Integer, String>();
List<Bundle> bundles = new ArrayList<Bundle>();
for (Iterator i = configProps.keySet().iterator(); i.hasNext() { @@ -531,6 +523,7 @@ }for (Integer startLevel : autoStart.keySet()) {
StringTokenizer st = new StringTokenizer(autoStart.get(startLevel), "\" ", true);
+ List<Bundle> bundlesLevel = new ArrayList<Bundle>();
if (st.countTokens() > 0)Unknown macro: { String location = null; do { @@ -541,6 +534,7 @@ Bundle b = context.installBundle(parts[0], new URL(parts[1]).openStream()); sl.setBundleStartLevel(b, startLevel); bundles.add(b); + bundlesLevel.add(b); } catch (Exception ex) { System.err.println("Auto-properties install:" + ex); @@ -549,6 +543,15 @@ } while (location != null); }+ // Now loop through and start the installed bundles.
+ for (Bundle b : bundlesLevel)Unknown macro: {+ try { + b.start(); + }+ catch (Exception ex) { + System.err.println("Auto-properties start: " + ex); + }+ }}
return bundles;
}