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 2013/12/18 13:27:45 UTC
[30/50] git commit: [KARAF-2343] Fixed cellar-event support
[KARAF-2343] Fixed cellar-event support
git-svn-id: https://svn.apache.org/repos/asf/karaf/cellar/branches/cellar-2.3.x@1493463 13f79535-47bb-0310-9956-ffa450edef68
Project: http://git-wip-us.apache.org/repos/asf/karaf-cellar/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf-cellar/commit/e9ea518c
Tree: http://git-wip-us.apache.org/repos/asf/karaf-cellar/tree/e9ea518c
Diff: http://git-wip-us.apache.org/repos/asf/karaf-cellar/diff/e9ea518c
Branch: refs/heads/cellar-2.3.x
Commit: e9ea518c70f182180b22346dcec0d9f79cc54a82
Parents: d42adc0
Author: jbonofre <jb...@13f79535-47bb-0310-9956-ffa450edef68>
Authored: Sun Jun 16 06:38:45 2013 +0000
Committer: jbonofre <jb...@13f79535-47bb-0310-9956-ffa450edef68>
Committed: Sun Jun 16 06:38:45 2013 +0000
----------------------------------------------------------------------
.../apache/karaf/cellar/event/EventSupport.java | 17 ++++++++++-------
.../karaf/cellar/event/LocalEventListener.java | 10 +++++++---
2 files changed, 17 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/e9ea518c/event/src/main/java/org/apache/karaf/cellar/event/EventSupport.java
----------------------------------------------------------------------
diff --git a/event/src/main/java/org/apache/karaf/cellar/event/EventSupport.java b/event/src/main/java/org/apache/karaf/cellar/event/EventSupport.java
index 587aa40..819186d 100644
--- a/event/src/main/java/org/apache/karaf/cellar/event/EventSupport.java
+++ b/event/src/main/java/org/apache/karaf/cellar/event/EventSupport.java
@@ -25,7 +25,7 @@ import java.util.Map;
* Generic event support.
*/
public class EventSupport extends CellarSupport {
-
+
protected EventAdmin eventAdmin;
/**
@@ -35,17 +35,20 @@ public class EventSupport extends CellarSupport {
* @return the map.
*/
public Map<String, Serializable> getEventProperties(Event event) {
+
String[] propertyNames = event.getPropertyNames();
Map<String, Serializable> properties = new HashMap<String, Serializable>();
for (String propertyName : propertyNames) {
- Object property = event.getProperty(propertyName);
- if (property instanceof Serializable) {
- properties.put(propertyName, (Serializable) property);
+ // event property (org.osgi.framework.ServiceEvent for instance) contains non serializable objects (like source or service reference)
+ if (!propertyName.equals("event")) {
+ Object property = event.getProperty(propertyName);
+ if (property instanceof Serializable)
+ properties.put(propertyName, (Serializable) property);
}
}
-
+
return properties;
}
@@ -71,7 +74,7 @@ public class EventSupport extends CellarSupport {
/**
* Post events via {@link EventAdmin}.
*
- * @param topicName the topic name.
+ * @param topicName the topic name.
* @param properties the event properties.
*/
public void postEvent(String topicName, Map<String, Serializable> properties) {
@@ -87,7 +90,7 @@ public class EventSupport extends CellarSupport {
/**
* Send events via {@link EventAdmin}.
*
- * @param topicName the topic name.
+ * @param topicName the topic name.
* @param properties the event properties.
*/
public void sendEvent(String topicName, Map<String, Serializable> properties) {
http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/e9ea518c/event/src/main/java/org/apache/karaf/cellar/event/LocalEventListener.java
----------------------------------------------------------------------
diff --git a/event/src/main/java/org/apache/karaf/cellar/event/LocalEventListener.java b/event/src/main/java/org/apache/karaf/cellar/event/LocalEventListener.java
index 4863252..432e960 100644
--- a/event/src/main/java/org/apache/karaf/cellar/event/LocalEventListener.java
+++ b/event/src/main/java/org/apache/karaf/cellar/event/LocalEventListener.java
@@ -23,6 +23,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.Serializable;
+import java.util.HashMap;
import java.util.Map;
import java.util.Set;
@@ -35,6 +36,10 @@ public class LocalEventListener extends EventSupport implements EventHandler {
@Override
public void handleEvent(Event event) {
+ // ignore log entry event
+ if (event.getTopic().startsWith("org/osgi/service/log/LogEntry"))
+ return;
+
// check if the producer is ON
if (eventProducer.getSwitch().getStatus().equals(SwitchStatus.OFF)) {
LOGGER.warn("CELLAR EVENT: cluster event producer is OFF");
@@ -64,12 +69,11 @@ public class LocalEventListener extends EventSupport implements EventHandler {
String topicName = event.getTopic();
Map<String, Serializable> properties = getEventProperties(event);
if (isAllowed(group, Constants.CATEGORY, topicName, EventType.OUTBOUND)) {
- // broascast the event
+ // broadcast the event
ClusterEvent clusterEvent = new ClusterEvent(topicName, properties);
clusterEvent.setSourceGroup(group);
eventProducer.produce(clusterEvent);
- } else if (!topicName.startsWith("org/osgi/service/log/LogEntry/"))
- LOGGER.warn("CELLAR EVENT: event {} is marked as BLOCKED OUTBOUND", topicName);
+ } else LOGGER.warn("CELLAR EVENT: event {} is marked as BLOCKED OUTBOUND", topicName);
}
}
}