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;
