You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2012/09/03 17:09:03 UTC
svn commit: r1380263 - in /karaf/cellar/trunk:
features/src/main/java/org/apache/karaf/cellar/features/
features/src/main/java/org/apache/karaf/cellar/features/shell/
management/src/main/java/org/apache/karaf/cellar/management/
management/src/main/java...
Author: jbonofre
Date: Mon Sep 3 15:09:02 2012
New Revision: 1380263
URL: http://svn.apache.org/viewvc?rev=1380263&view=rev
Log:
[KARAF-1726] Support noClean and noRefresh options for Cellar features installation
Modified:
karaf/cellar/trunk/features/src/main/java/org/apache/karaf/cellar/features/FeaturesEventHandler.java
karaf/cellar/trunk/features/src/main/java/org/apache/karaf/cellar/features/RemoteFeaturesEvent.java
karaf/cellar/trunk/features/src/main/java/org/apache/karaf/cellar/features/shell/InstallFeatureCommand.java
karaf/cellar/trunk/management/src/main/java/org/apache/karaf/cellar/management/CellarFeaturesMBean.java
karaf/cellar/trunk/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarFeaturesMBeanImpl.java
Modified: karaf/cellar/trunk/features/src/main/java/org/apache/karaf/cellar/features/FeaturesEventHandler.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/features/src/main/java/org/apache/karaf/cellar/features/FeaturesEventHandler.java?rev=1380263&r1=1380262&r2=1380263&view=diff
==============================================================================
--- karaf/cellar/trunk/features/src/main/java/org/apache/karaf/cellar/features/FeaturesEventHandler.java (original)
+++ karaf/cellar/trunk/features/src/main/java/org/apache/karaf/cellar/features/FeaturesEventHandler.java Mon Sep 3 15:09:02 2012
@@ -19,9 +19,12 @@ import org.apache.karaf.cellar.core.cont
import org.apache.karaf.cellar.core.event.EventHandler;
import org.apache.karaf.cellar.core.event.EventType;
import org.apache.karaf.features.FeatureEvent;
+import org.apache.karaf.features.FeaturesService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.EnumSet;
+
/**
* Features event handler.
*/
@@ -69,12 +72,21 @@ public class FeaturesEventHandler extend
Boolean isInstalled = isInstalled(name, version);
try {
if (FeatureEvent.EventType.FeatureInstalled.equals(type) && !isInstalled) {
+ boolean noClean = event.getNoClean();
+ boolean noRefresh = event.getNoRefresh();
+ EnumSet<FeaturesService.Option> options = EnumSet.noneOf(FeaturesService.Option.class);
+ if (noClean) {
+ options.add(FeaturesService.Option.NoCleanIfFailure);
+ }
+ if (noRefresh) {
+ options.add(FeaturesService.Option.NoAutoRefreshBundles);
+ }
if (version != null) {
LOGGER.debug("CELLAR FEATURES: installing feature {}/{}", name, version);
- featuresService.installFeature(name, version);
+ featuresService.installFeature(name, version, options);
} else {
LOGGER.debug("CELLAR FEATURES: installing feature {}", name);
- featuresService.installFeature(name);
+ featuresService.installFeature(name, "0.0.0", options);
}
} else if (FeatureEvent.EventType.FeatureUninstalled.equals(type) && isInstalled) {
if (version != null) {
Modified: karaf/cellar/trunk/features/src/main/java/org/apache/karaf/cellar/features/RemoteFeaturesEvent.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/features/src/main/java/org/apache/karaf/cellar/features/RemoteFeaturesEvent.java?rev=1380263&r1=1380262&r2=1380263&view=diff
==============================================================================
--- karaf/cellar/trunk/features/src/main/java/org/apache/karaf/cellar/features/RemoteFeaturesEvent.java (original)
+++ karaf/cellar/trunk/features/src/main/java/org/apache/karaf/cellar/features/RemoteFeaturesEvent.java Mon Sep 3 15:09:02 2012
@@ -25,12 +25,25 @@ public class RemoteFeaturesEvent extends
private String name;
private String version;
+ private Boolean noClean;
+ private Boolean noRefresh;
private EventType type;
public RemoteFeaturesEvent(String name, String version, EventType type) {
super(name + separator + version);
this.name = name;
this.version = version;
+ this.noClean = false;
+ this.noRefresh = false;
+ this.type = type;
+ }
+
+ public RemoteFeaturesEvent(String name, String version, Boolean noClean, Boolean noRefresh, EventType type) {
+ super(name + separator + version);
+ this.name = name;
+ this.version = version;
+ this.noClean = noClean;
+ this.noRefresh = noRefresh;
this.type = type;
}
@@ -42,6 +55,14 @@ public class RemoteFeaturesEvent extends
return version;
}
+ public Boolean getNoClean() {
+ return noClean;
+ }
+
+ public Boolean getNoRefresh() {
+ return noRefresh;
+ }
+
public EventType getType() {
return type;
}
Modified: karaf/cellar/trunk/features/src/main/java/org/apache/karaf/cellar/features/shell/InstallFeatureCommand.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/features/src/main/java/org/apache/karaf/cellar/features/shell/InstallFeatureCommand.java?rev=1380263&r1=1380262&r2=1380263&view=diff
==============================================================================
--- karaf/cellar/trunk/features/src/main/java/org/apache/karaf/cellar/features/shell/InstallFeatureCommand.java (original)
+++ karaf/cellar/trunk/features/src/main/java/org/apache/karaf/cellar/features/shell/InstallFeatureCommand.java Mon Sep 3 15:09:02 2012
@@ -13,7 +13,6 @@
*/
package org.apache.karaf.cellar.features.shell;
-import org.apache.karaf.cellar.core.CellarSupport;
import org.apache.karaf.cellar.core.Group;
import org.apache.karaf.cellar.core.control.SwitchStatus;
import org.apache.karaf.cellar.core.event.EventProducer;
@@ -23,10 +22,17 @@ import org.apache.karaf.cellar.features.
import org.apache.karaf.features.FeatureEvent;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Option;
@Command(scope = "cluster", name = "feature-install", description = "Install a feature assigned to a cluster group.")
public class InstallFeatureCommand extends FeatureCommandSupport {
+ @Option(name = "-c", aliases = { "--no-clean" }, description = "Do not uninstall bundles on failure", required = false, multiValued = false)
+ boolean noClean;
+
+ @Option(name = "-r", aliases = { "--no-auto-refresh" }, description = "Do not automatically refresh bundles", required = false, multiValued = false)
+ boolean noRefresh;
+
@Argument(index = 0, name = "group", description = "The cluster group name.", required = true, multiValued = false)
String groupName;
@@ -71,7 +77,7 @@ public class InstallFeatureCommand exten
updateFeatureStatus(groupName, feature, version, true);
// broadcast the cluster event
- RemoteFeaturesEvent event = new RemoteFeaturesEvent(feature, version, FeatureEvent.EventType.FeatureInstalled);
+ RemoteFeaturesEvent event = new RemoteFeaturesEvent(feature, version, noClean, noRefresh, FeatureEvent.EventType.FeatureInstalled);
event.setSourceGroup(group);
eventProducer.produce(event);
Modified: karaf/cellar/trunk/management/src/main/java/org/apache/karaf/cellar/management/CellarFeaturesMBean.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/management/src/main/java/org/apache/karaf/cellar/management/CellarFeaturesMBean.java?rev=1380263&r1=1380262&r2=1380263&view=diff
==============================================================================
--- karaf/cellar/trunk/management/src/main/java/org/apache/karaf/cellar/management/CellarFeaturesMBean.java (original)
+++ karaf/cellar/trunk/management/src/main/java/org/apache/karaf/cellar/management/CellarFeaturesMBean.java Mon Sep 3 15:09:02 2012
@@ -24,7 +24,9 @@ public interface CellarFeaturesMBean {
void addUrl(String group, String url) throws Exception;
void removeUrl(String group, String url) throws Exception;
void install(String group, String name) throws Exception;
+ void install(String group, String name, boolean noClean, boolean noRefresh) throws Exception;
void install(String group, String name, String version) throws Exception;
+ void install(String group, String name, String version, boolean noClean, boolean noRefresh) throws Exception;
void uninstall(String group, String name) throws Exception;
void uninstall(String group, String name, String version) throws Exception;
Modified: karaf/cellar/trunk/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarFeaturesMBeanImpl.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarFeaturesMBeanImpl.java?rev=1380263&r1=1380262&r2=1380263&view=diff
==============================================================================
--- karaf/cellar/trunk/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarFeaturesMBeanImpl.java (original)
+++ karaf/cellar/trunk/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarFeaturesMBeanImpl.java Mon Sep 3 15:09:02 2012
@@ -88,7 +88,7 @@ public class CellarFeaturesMBeanImpl ext
this.configurationAdmin = configurationAdmin;
}
- public void install(String groupName, String name, String version) throws Exception {
+ public void install(String groupName, String name, String version, boolean noClean, boolean noRefresh) throws Exception {
// check if the group exists
Group group = groupManager.findGroupByName(groupName);
if (group == null) {
@@ -146,15 +146,23 @@ public class CellarFeaturesMBeanImpl ext
}
// broadcast the cluster event
- RemoteFeaturesEvent event = new RemoteFeaturesEvent(name, version, FeatureEvent.EventType.FeatureInstalled);
+ RemoteFeaturesEvent event = new RemoteFeaturesEvent(name, version, noClean, noRefresh, FeatureEvent.EventType.FeatureInstalled);
event.setSourceGroup(group);
eventProducer.produce(event);
}
+ public void install(String groupName, String name, String version) throws Exception {
+ this.install(groupName, name, version, false, false);
+ }
+
public void install(String groupName, String name) throws Exception {
this.install(groupName, name, null);
}
+ public void install(String groupName, String name, boolean noClean, boolean noRefresh) throws Exception {
+ this.install(groupName, name, null, noClean, noRefresh);
+ }
+
public void uninstall(String groupName, String name, String version) throws Exception {
// check if the group exists
Group group = groupManager.findGroupByName(groupName);