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);
