Repository: karaf
Updated Branches:
  refs/heads/karaf-2.3.x c016e739e -> 45e7f3cee


[KARAF-2842] Add a new option to just install bundles (without starting) while 
installing a feature


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

Branch: refs/heads/karaf-2.3.x
Commit: 45e7f3cee3d5ae99d002c2b441baeecc7d95293a
Parents: c016e73
Author: Jean-Baptiste Onofré <[email protected]>
Authored: Tue Apr 8 15:27:54 2014 +0200
Committer: Jean-Baptiste Onofré <[email protected]>
Committed: Tue Apr 8 15:29:29 2014 +0200

----------------------------------------------------------------------
 .../features/command/InstallFeatureCommand.java |  5 ++++
 .../apache/karaf/features/FeaturesService.java  |  1 +
 .../features/internal/FeaturesServiceImpl.java  |  4 ++-
 .../management/FeaturesServiceMBean.java        |  4 +++
 .../internal/FeaturesServiceMBeanImpl.java      | 28 ++++++++++++++++++++
 5 files changed, 41 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/45e7f3ce/features/command/src/main/java/org/apache/karaf/features/command/InstallFeatureCommand.java
----------------------------------------------------------------------
diff --git 
a/features/command/src/main/java/org/apache/karaf/features/command/InstallFeatureCommand.java
 
b/features/command/src/main/java/org/apache/karaf/features/command/InstallFeatureCommand.java
index 6120071..43b3dc1 100644
--- 
a/features/command/src/main/java/org/apache/karaf/features/command/InstallFeatureCommand.java
+++ 
b/features/command/src/main/java/org/apache/karaf/features/command/InstallFeatureCommand.java
@@ -35,6 +35,8 @@ public class InstallFeatureCommand extends 
FeaturesCommandSupport {
     boolean noClean;
     @Option(name = "-r", aliases = "--no-auto-refresh", description = "Do not 
automatically refresh bundles", required = false, multiValued = false)
     boolean noRefresh;
+    @Option(name = "-s", aliases = "--no-auto-start", description = "Do not 
automatically start bundles", required = false, multiValued = false)
+    boolean noStart;
     @Option(name = "-v", aliases = "--verbose", description = "Explain what is 
being done", required = false, multiValued = false)
     boolean verbose;
 
@@ -59,6 +61,9 @@ public class InstallFeatureCommand extends 
FeaturesCommandSupport {
             if (verbose) {
                 options.add(FeaturesService.Option.Verbose);
             }
+            if (noStart) {
+                options.add(FeaturesService.Option.NoAutoStartBundles);
+            }
             admin.installFeature(name, version, options);
         }
     }

http://git-wip-us.apache.org/repos/asf/karaf/blob/45e7f3ce/features/core/src/main/java/org/apache/karaf/features/FeaturesService.java
----------------------------------------------------------------------
diff --git 
a/features/core/src/main/java/org/apache/karaf/features/FeaturesService.java 
b/features/core/src/main/java/org/apache/karaf/features/FeaturesService.java
index 62fc96b..181d239 100644
--- a/features/core/src/main/java/org/apache/karaf/features/FeaturesService.java
+++ b/features/core/src/main/java/org/apache/karaf/features/FeaturesService.java
@@ -29,6 +29,7 @@ public interface FeaturesService {
         NoCleanIfFailure,
         PrintBundlesToRefresh,
         NoAutoRefreshBundles,
+        NoAutoStartBundles,
         ContinueBatchOnFailure,
         Verbose
     }

http://git-wip-us.apache.org/repos/asf/karaf/blob/45e7f3ce/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
 
b/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
index 2114692..7a3bc7a 100644
--- 
a/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
+++ 
b/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
@@ -485,7 +485,9 @@ public class FeaturesServiceImpl implements 
FeaturesService, FrameworkListener {
                         BundleInfo bundleInfo = 
state.bundleInfos.get(bundleId);
                         if (bundleInfo == null || bundleInfo.isStart()) {
                             try {
-                                b.start();
+                                if 
(!options.contains(Option.NoAutoStartBundles)) {
+                                    b.start();
+                                }
                             } catch (BundleException be) {
                                 String msg = format("Could not start bundle %s 
in feature(s) %s: %s", b.getLocation(), getFeaturesContainingBundleList(b), 
be.getMessage());
                                 throw new Exception(msg, be);

http://git-wip-us.apache.org/repos/asf/karaf/blob/45e7f3ce/features/management/src/main/java/org/apache/karaf/features/management/FeaturesServiceMBean.java
----------------------------------------------------------------------
diff --git 
a/features/management/src/main/java/org/apache/karaf/features/management/FeaturesServiceMBean.java
 
b/features/management/src/main/java/org/apache/karaf/features/management/FeaturesServiceMBean.java
index da4a36e..bf8768a 100644
--- 
a/features/management/src/main/java/org/apache/karaf/features/management/FeaturesServiceMBean.java
+++ 
b/features/management/src/main/java/org/apache/karaf/features/management/FeaturesServiceMBean.java
@@ -36,10 +36,14 @@ public interface FeaturesServiceMBean {
 
     void installFeature(String name, boolean noClean, boolean noRefresh) 
throws Exception;
 
+    void installFeature(String name, boolean noClean, boolean noRefresh, 
boolean noStart) throws Exception;
+
     void installFeature(String name, String version) throws Exception;
 
     void installFeature(String name, String version, boolean noClean, boolean 
noRefresh) throws Exception;
 
+    void installFeature(String name, String version, boolean noClean, boolean 
noRefresh, boolean noStart) throws Exception;
+
     TabularData infoFeature(String name) throws Exception;
 
     TabularData infoFeature(String name, String version) throws Exception;

http://git-wip-us.apache.org/repos/asf/karaf/blob/45e7f3ce/features/management/src/main/java/org/apache/karaf/features/management/internal/FeaturesServiceMBeanImpl.java
----------------------------------------------------------------------
diff --git 
a/features/management/src/main/java/org/apache/karaf/features/management/internal/FeaturesServiceMBeanImpl.java
 
b/features/management/src/main/java/org/apache/karaf/features/management/internal/FeaturesServiceMBeanImpl.java
index 576da91..063ef46 100644
--- 
a/features/management/src/main/java/org/apache/karaf/features/management/internal/FeaturesServiceMBeanImpl.java
+++ 
b/features/management/src/main/java/org/apache/karaf/features/management/internal/FeaturesServiceMBeanImpl.java
@@ -164,6 +164,20 @@ public class FeaturesServiceMBeanImpl extends 
StandardEmitterMBean implements
         featuresService.installFeature(name, options);
     }
 
+    public void installFeature(String name, boolean noClean, boolean 
noRefresh, boolean noStart) throws Exception {
+        EnumSet<FeaturesService.Option> options = 
EnumSet.noneOf(FeaturesService.Option.class);
+        if (noClean) {
+            options.add(FeaturesService.Option.NoCleanIfFailure);
+        }
+        if (noRefresh) {
+            options.add(FeaturesService.Option.NoAutoRefreshBundles);
+        }
+        if (noStart) {
+            options.add(FeaturesService.Option.NoAutoStartBundles);
+        }
+        featuresService.installFeature(name, options);
+    }
+
     public void installFeature(String name, String version) throws Exception {
         featuresService.installFeature(name, version);
     }
@@ -179,6 +193,20 @@ public class FeaturesServiceMBeanImpl extends 
StandardEmitterMBean implements
         featuresService.installFeature(name, version, options);
     }
 
+    public void installFeature(String name, String version, boolean noClean, 
boolean noRefresh, boolean noStart) throws Exception {
+        EnumSet<FeaturesService.Option> options = 
EnumSet.noneOf(FeaturesService.Option.class);
+        if (noClean) {
+            options.add(FeaturesService.Option.NoCleanIfFailure);
+        }
+        if (noRefresh) {
+            options.add(FeaturesService.Option.NoAutoRefreshBundles);
+        }
+        if (noStart) {
+            options.add(FeaturesService.Option.NoAutoStartBundles);
+        }
+        featuresService.installFeature(name, version, options);
+    }
+
     public TabularData infoFeature(String name) throws Exception {
         Feature feature = featuresService.getFeature(name);
         return infoFeature(feature);

Reply via email to