You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by cs...@apache.org on 2016/06/21 15:26:59 UTC

[2/2] karaf git commit: [KARAF-4547] Defer setting startlevel to after bundles are installed

[KARAF-4547] Defer setting startlevel to after bundles are installed


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/2898aba5
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/2898aba5
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/2898aba5

Branch: refs/heads/master
Commit: 2898aba5dbc0966f5b2ee22e7153bb2f7e466c5c
Parents: ba1327b
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Tue Jun 21 17:08:15 2016 +0200
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Tue Jun 21 17:08:58 2016 +0200

----------------------------------------------------------------------
 .../org/apache/karaf/features/internal/service/Deployer.java | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/2898aba5/features/core/src/main/java/org/apache/karaf/features/internal/service/Deployer.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/service/Deployer.java b/features/core/src/main/java/org/apache/karaf/features/internal/service/Deployer.java
index 670985b..39ea762 100644
--- a/features/core/src/main/java/org/apache/karaf/features/internal/service/Deployer.java
+++ b/features/core/src/main/java/org/apache/karaf/features/internal/service/Deployer.java
@@ -723,6 +723,7 @@ public class Deployer {
         }
         if (hasToInstall) {
             print("Installing bundles:", verbose);
+            Map<Bundle, Integer> customStartLevels = new HashMap<Bundle, Integer>();
             for (Map.Entry<String, Deployer.RegionDeployment> entry : deployment.regions.entrySet()) {
                 String name = entry.getKey();
                 Deployer.RegionDeployment regionDeployment = entry.getValue();
@@ -746,7 +747,7 @@ public class Deployer {
                     }
                     Integer startLevel = startLevels.get(resource);
                     if (startLevel != null && startLevel != dstate.initialBundleStartLevel) {
-                        callback.setBundleStartLevel(bundle, startLevel);
+                        customStartLevels.put(bundle, startLevel);
                     }
                     FeatureState reqState = states.get(resource);
                     if (reqState == null) {
@@ -763,6 +764,11 @@ public class Deployer {
                     }
                 }
             }
+            
+            // Set start levels after install to avoid starting before all bundles are installed
+            for (Bundle bundle : customStartLevels.keySet()) {
+                callback.setBundleStartLevel(bundle, customStartLevels.get(bundle));
+            }
         }
 
         //