karaf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stephane Chomat (JIRA)" <j...@apache.org>
Subject [jira] Created: (KARAF-334) At startup, Karafi does not support urls like mvn:, obr:.
Date Mon, 20 Dec 2010 10:49:00 GMT
At startup, Karafi does not support urls like mvn:, obr:.
---------------------------------------------------------

                 Key: KARAF-334
                 URL: https://issues.apache.org/jira/browse/KARAF-334
             Project: Karaf
          Issue Type: Improvement
          Components: runtime
    Affects Versions: 2.1.2
            Reporter: Stephane Chomat
             Fix For: 2.1.3


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) {
                 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) {
+                try {
+                    b.start();
+                }
+                catch (Exception ex) {
+                    System.err.println("Auto-properties start: " + ex);
+                }
+            }
         }
         return bundles;
     }


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message