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