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