Author: jbonofre
Date: Wed Aug 15 04:06:14 2012
New Revision: 1373203
URL: http://svn.apache.org/viewvc?rev=1373203&view=rev
Log:
[KARAF-1726] Add noClean and noRefresh option support in cluster features
install
Modified:
karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/FeaturesEventHandler.java
karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/RemoteFeaturesEvent.java
karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/shell/InstallFeatureCommand.java
karaf/cellar/branches/cellar-2.2.x/management/src/main/java/org/apache/karaf/cellar/management/CellarFeaturesMBean.java
karaf/cellar/branches/cellar-2.2.x/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarFeaturesMBeanImpl.java
Modified:
karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/FeaturesEventHandler.java
URL:
http://svn.apache.org/viewvc/karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/FeaturesEventHandler.java?rev=1373203&r1=1373202&r2=1373203&view=diff
==============================================================================
---
karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/FeaturesEventHandler.java
(original)
+++
karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/FeaturesEventHandler.java
Wed Aug 15 04:06:14 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/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/RemoteFeaturesEvent.java
URL:
http://svn.apache.org/viewvc/karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/RemoteFeaturesEvent.java?rev=1373203&r1=1373202&r2=1373203&view=diff
==============================================================================
---
karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/RemoteFeaturesEvent.java
(original)
+++
karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/RemoteFeaturesEvent.java
Wed Aug 15 04:06:14 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,22 @@ public class RemoteFeaturesEvent extends
return version;
}
+ public Boolean getNoClean() {
+ return noClean;
+ }
+
+ public void setNoClean(Boolean noClean) {
+ this.noClean = noClean;
+ }
+
+ public Boolean getNoRefresh() {
+ return noRefresh;
+ }
+
+ public void setNoRefresh(Boolean noRefresh) {
+ this.noRefresh = noRefresh;
+ }
+
public EventType getType() {
return type;
}
Modified:
karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/shell/InstallFeatureCommand.java
URL:
http://svn.apache.org/viewvc/karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/shell/InstallFeatureCommand.java?rev=1373203&r1=1373202&r2=1373203&view=diff
==============================================================================
---
karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/shell/InstallFeatureCommand.java
(original)
+++
karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/shell/InstallFeatureCommand.java
Wed Aug 15 04:06:14 2012
@@ -13,6 +13,7 @@
*/
package org.apache.karaf.cellar.features.shell;
+import org.apache.felix.gogo.commands.Option;
import org.apache.karaf.cellar.core.CellarSupport;
import org.apache.karaf.cellar.core.Group;
import org.apache.karaf.cellar.core.control.SwitchStatus;
@@ -27,6 +28,12 @@ import org.apache.karaf.features.Feature
@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 +78,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/branches/cellar-2.2.x/management/src/main/java/org/apache/karaf/cellar/management/CellarFeaturesMBean.java
URL:
http://svn.apache.org/viewvc/karaf/cellar/branches/cellar-2.2.x/management/src/main/java/org/apache/karaf/cellar/management/CellarFeaturesMBean.java?rev=1373203&r1=1373202&r2=1373203&view=diff
==============================================================================
---
karaf/cellar/branches/cellar-2.2.x/management/src/main/java/org/apache/karaf/cellar/management/CellarFeaturesMBean.java
(original)
+++
karaf/cellar/branches/cellar-2.2.x/management/src/main/java/org/apache/karaf/cellar/management/CellarFeaturesMBean.java
Wed Aug 15 04:06:14 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/branches/cellar-2.2.x/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarFeaturesMBeanImpl.java
URL:
http://svn.apache.org/viewvc/karaf/cellar/branches/cellar-2.2.x/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarFeaturesMBeanImpl.java?rev=1373203&r1=1373202&r2=1373203&view=diff
==============================================================================
---
karaf/cellar/branches/cellar-2.2.x/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarFeaturesMBeanImpl.java
(original)
+++
karaf/cellar/branches/cellar-2.2.x/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarFeaturesMBeanImpl.java
Wed Aug 15 04:06:14 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 cluster 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, null, 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 cluster group exists
Group group = groupManager.findGroupByName(groupName);