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


Reply via email to