You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by pi...@apache.org on 2012/11/09 14:04:28 UTC

svn commit: r1407441 - /karaf/branches/karaf-2.3.x/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java

Author: pieber
Date: Fri Nov  9 13:04:27 2012
New Revision: 1407441

URL: http://svn.apache.org/viewvc?rev=1407441&view=rev
Log:
[KARAF-2007] Fix problem that features without start-level in features.xml are always started first. Thanks to Christoph Gritschenberger for this fix

Signed-off-by: Andreas Pieber <an...@gmail.com>

Modified:
    karaf/branches/karaf-2.3.x/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java

Modified: karaf/branches/karaf-2.3.x/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java?rev=1407441&r1=1407440&r2=1407441&view=diff
==============================================================================
--- karaf/branches/karaf-2.3.x/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java (original)
+++ karaf/branches/karaf-2.3.x/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java Fri Nov  9 13:04:27 2012
@@ -96,6 +96,9 @@ public class FeaturesServiceImpl impleme
 
     private static final Logger LOGGER = LoggerFactory.getLogger(FeaturesServiceImpl.class);
 
+    private static final int KARAF_BUNDLE_START_LEVEL =
+                        Integer.parseInt(System.getProperty("karaf.startlevel.bundle", "80"));
+
     private BundleContext bundleContext;
     private ConfigurationAdmin configAdmin;
     private PackageAdmin packageAdmin;
@@ -451,8 +454,11 @@ public class FeaturesServiceImpl impleme
                 Collections.sort(bundlesSortedByStartLvl, new Comparator<Bundle>() {
                     @Override
                     public int compare(Bundle bundle, Bundle bundle1) {
-                        return state.bundleInfos.get(bundle.getBundleId()).getStartLevel() -
-                                state.bundleInfos.get(bundle1.getBundleId()).getStartLevel();
+                        int startLevel = state.bundleInfos.get(bundle.getBundleId()).getStartLevel();
+                        startLevel = startLevel == 0 ? KARAF_BUNDLE_START_LEVEL : startLevel;
+                        int startLevel1 = state.bundleInfos.get(bundle1.getBundleId()).getStartLevel();
+                        startLevel1 = startLevel1 == 0 ? KARAF_BUNDLE_START_LEVEL : startLevel1;
+                        return startLevel - startLevel1;
                     }
                 });
             }