Repository: karaf
Updated Branches:
  refs/heads/master 63c7b3796 -> 18c31df22


[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/18c31df2
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/18c31df2
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/18c31df2

Branch: refs/heads/master
Commit: 18c31df228c542c42079bb71e84b2e35220e5791
Parents: 63c7b37
Author: Jean-Baptiste Onofré <[email protected]>
Authored: Tue Apr 8 14:16:26 2014 +0200
Committer: Jean-Baptiste Onofré <[email protected]>
Committed: Tue Apr 8 14:16:26 2014 +0200

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


http://git-wip-us.apache.org/repos/asf/karaf/blob/18c31df2/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 e47edf0..b73dd3f 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
@@ -40,6 +40,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 
start the bundles", required = false, multiValued = false)
+    boolean noStart;
     @Option(name = "-v", aliases = "--verbose", description = "Explain what is 
being done", required = false, multiValued = false)
     boolean verbose;
 
@@ -55,6 +57,9 @@ public class InstallFeatureCommand extends 
FeaturesCommandSupport {
                 version = DEFAULT_VERSION;
            }
             EnumSet<FeaturesService.Option> options = 
EnumSet.of(FeaturesService.Option.PrintBundlesToRefresh);
+            if (noStart) {
+                options.add(FeaturesService.Option.NoAutoStartBundles);
+            }
             if (noRefresh) {
                 options.add(FeaturesService.Option.NoAutoRefreshBundles);
             }

http://git-wip-us.apache.org/repos/asf/karaf/blob/18c31df2/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 2a1a3fa..a62c684 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/18c31df2/features/core/src/main/java/org/apache/karaf/features/internal/management/FeaturesServiceMBeanImpl.java
----------------------------------------------------------------------
diff --git 
a/features/core/src/main/java/org/apache/karaf/features/internal/management/FeaturesServiceMBeanImpl.java
 
b/features/core/src/main/java/org/apache/karaf/features/internal/management/FeaturesServiceMBeanImpl.java
index 350679f..0e37ded 100644
--- 
a/features/core/src/main/java/org/apache/karaf/features/internal/management/FeaturesServiceMBeanImpl.java
+++ 
b/features/core/src/main/java/org/apache/karaf/features/internal/management/FeaturesServiceMBeanImpl.java
@@ -150,6 +150,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<org.apache.karaf.features.FeaturesService.Option> options = 
EnumSet.noneOf(org.apache.karaf.features.FeaturesService.Option.class);
+        if (noClean) {
+            
options.add(org.apache.karaf.features.FeaturesService.Option.NoCleanIfFailure);
+        }
+        if (noRefresh) {
+            
options.add(org.apache.karaf.features.FeaturesService.Option.NoAutoRefreshBundles);
+        }
+        if (noStart) {
+            
options.add(org.apache.karaf.features.FeaturesService.Option.NoAutoStartBundles);
+        }
+        featuresService.installFeature(name, options);
+    }
+
     public void installFeature(String name, String version) throws Exception {
         featuresService.installFeature(name, version);
     }
@@ -165,6 +179,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<org.apache.karaf.features.FeaturesService.Option> options = 
EnumSet.noneOf(org.apache.karaf.features.FeaturesService.Option.class);
+        if (noClean) {
+            
options.add(org.apache.karaf.features.FeaturesService.Option.NoCleanIfFailure);
+        }
+        if (noRefresh) {
+            
options.add(org.apache.karaf.features.FeaturesService.Option.NoAutoRefreshBundles);
+        }
+        if (noStart) {
+            
options.add(org.apache.karaf.features.FeaturesService.Option.NoAutoStartBundles);
+        }
+        featuresService.installFeature(name, version, options);
+    }
+
     public TabularData infoFeature(String name) throws Exception {
         try {
             Feature feature = featuresService.getFeature(name);

http://git-wip-us.apache.org/repos/asf/karaf/blob/18c31df2/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java
 
b/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java
index 457b5e1..e5f5992 100644
--- 
a/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java
+++ 
b/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java
@@ -686,6 +686,8 @@ public class FeaturesServiceImpl implements FeaturesService 
{
         // TODO: make this configurable at runtime
         boolean noRefresh = false;
 
+        boolean noStart = options.contains(Option.NoAutoStartBundles);
+
         // TODO: make this configurable  through ConfigAdmin
         // TODO: though opening it as some important effects
         String featureResolutionRange = "${range;[====,====]}";
@@ -987,7 +989,9 @@ public class FeaturesServiceImpl implements FeaturesService 
{
                 for (Bundle bundle : bs) {
                     LOGGER.info("  " + bundle.getSymbolicName() + " / " + 
bundle.getVersion());
                     try {
-                        bundle.start();
+                        if (!noStart) {
+                            bundle.start();
+                        }
                     } catch (BundleException e) {
                         exceptions.add(e);
                     }

http://git-wip-us.apache.org/repos/asf/karaf/blob/18c31df2/features/core/src/main/java/org/apache/karaf/features/management/FeaturesServiceMBean.java
----------------------------------------------------------------------
diff --git 
a/features/core/src/main/java/org/apache/karaf/features/management/FeaturesServiceMBean.java
 
b/features/core/src/main/java/org/apache/karaf/features/management/FeaturesServiceMBean.java
index 284f465..ee68d21 100644
--- 
a/features/core/src/main/java/org/apache/karaf/features/management/FeaturesServiceMBean.java
+++ 
b/features/core/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;

Reply via email to