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 2015/03/14 18:31:35 UTC

karaf-cellar git commit: [KARAF-3614] Features synchronizer broadcasts cluster event on push

Repository: karaf-cellar
Updated Branches:
  refs/heads/cellar-2.3.x 2c4b692a7 -> 85703afc4


[KARAF-3614] Features synchronizer broadcasts cluster event on push


Project: http://git-wip-us.apache.org/repos/asf/karaf-cellar/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf-cellar/commit/85703afc
Tree: http://git-wip-us.apache.org/repos/asf/karaf-cellar/tree/85703afc
Diff: http://git-wip-us.apache.org/repos/asf/karaf-cellar/diff/85703afc

Branch: refs/heads/cellar-2.3.x
Commit: 85703afc4543f2a7aec212e91b24846082951f5f
Parents: 2c4b692
Author: Jean-Baptiste Onofré <jb...@apache.org>
Authored: Sat Mar 14 18:31:01 2015 +0100
Committer: Jean-Baptiste Onofré <jb...@apache.org>
Committed: Sat Mar 14 18:31:01 2015 +0100

----------------------------------------------------------------------
 .../cellar/features/FeaturesSynchronizer.java   | 22 +++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/85703afc/features/src/main/java/org/apache/karaf/cellar/features/FeaturesSynchronizer.java
----------------------------------------------------------------------
diff --git a/features/src/main/java/org/apache/karaf/cellar/features/FeaturesSynchronizer.java b/features/src/main/java/org/apache/karaf/cellar/features/FeaturesSynchronizer.java
index 128dec2..afd0b59 100644
--- a/features/src/main/java/org/apache/karaf/cellar/features/FeaturesSynchronizer.java
+++ b/features/src/main/java/org/apache/karaf/cellar/features/FeaturesSynchronizer.java
@@ -16,8 +16,10 @@ package org.apache.karaf.cellar.features;
 import org.apache.karaf.cellar.core.Configurations;
 import org.apache.karaf.cellar.core.Group;
 import org.apache.karaf.cellar.core.Synchronizer;
+import org.apache.karaf.cellar.core.event.EventProducer;
 import org.apache.karaf.cellar.core.event.EventType;
 import org.apache.karaf.features.Feature;
+import org.apache.karaf.features.FeatureEvent;
 import org.apache.karaf.features.Repository;
 import org.osgi.service.cm.Configuration;
 import org.slf4j.Logger;
@@ -38,6 +40,8 @@ public class FeaturesSynchronizer extends FeaturesSupport implements Synchronize
 
     private static final transient Logger LOGGER = LoggerFactory.getLogger(FeaturesSynchronizer.class);
 
+    private EventProducer eventProducer;
+
     @Override
     public void init() {
         Set<Group> groups = groupManager.listLocalGroups();
@@ -185,16 +189,24 @@ public class FeaturesSynchronizer extends FeaturesSupport implements Synchronize
                     }
                 }
 
-                // push the local features status to the cluster group
                 if (featuresList != null && featuresList.length > 0) {
                     for (Feature feature : featuresList) {
                         if (isAllowed(group, Constants.CATEGORY, feature.getName(), EventType.OUTBOUND)) {
+                            // push the local features status to the cluster group
                             FeatureState clusterFeatureState = new FeatureState();
                             clusterFeatureState.setName(feature.getName());
                             clusterFeatureState.setVersion(feature.getVersion());
                             clusterFeatureState.setInstalled(featuresService.isInstalled(feature));
                             clusterFeatures.put(feature.getName() + "/" + feature.getVersion(), clusterFeatureState);
                             LOGGER.debug("CELLAR FEATURES: pushing feature {} in cluster group {}", feature.getName(), group.getName());
+                            // broadcast the cluster event
+                            ClusterFeaturesEvent event;
+                            if (featuresService.isInstalled(feature)) {
+                                event = new ClusterFeaturesEvent(feature.getName(), feature.getVersion(), FeatureEvent.EventType.FeatureInstalled);
+                            } else {
+                                event = new ClusterFeaturesEvent(feature.getName(), feature.getVersion(), FeatureEvent.EventType.FeatureUninstalled);
+                            }
+                            eventProducer.produce(event);
                         } else {
                             LOGGER.debug("CELLAR FEATURES: feature {} is marked BLOCKED OUTBOUND for cluster group {}", feature.getName(), group.getName());
                         }
@@ -230,4 +242,12 @@ public class FeaturesSynchronizer extends FeaturesSupport implements Synchronize
         return "disabled";
     }
 
+    public EventProducer getEventProducer() {
+        return eventProducer;
+    }
+
+    public void setEventProducer(EventProducer eventProducer) {
+        this.eventProducer = eventProducer;
+    }
+
 }