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;
+ }
+
}