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/11/02 09:59:19 UTC

svn commit: r1404897 - in /karaf/cellar/trunk: assembly/src/main/resources/ bundle/src/main/java/org/apache/karaf/cellar/bundle/ config/src/main/java/org/apache/karaf/cellar/config/ core/src/main/java/org/apache/karaf/cellar/core/ core/src/main/java/or...

Author: jbonofre
Date: Fri Nov  2 08:59:18 2012
New Revision: 1404897

URL: http://svn.apache.org/viewvc?rev=1404897&view=rev
Log:
[KARAF-1414] Add persistence for event handlers

Modified:
    karaf/cellar/trunk/assembly/src/main/resources/node.cfg
    karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/BundleEventHandler.java
    karaf/cellar/trunk/config/src/main/java/org/apache/karaf/cellar/config/ConfigurationEventHandler.java
    karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/Configurations.java
    karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/control/ConsumerSwitchCommandHandler.java
    karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/control/ManageHandlersCommandHandler.java
    karaf/cellar/trunk/dosgi/src/main/java/org/apache/karaf/cellar/dosgi/RemoteServiceCallHandler.java
    karaf/cellar/trunk/dosgi/src/main/resources/OSGI-INF/blueprint/blueprint.xml
    karaf/cellar/trunk/event/src/main/java/org/apache/karaf/cellar/event/RemoteEventHandler.java
    karaf/cellar/trunk/features/src/main/java/org/apache/karaf/cellar/features/FeaturesEventHandler.java
    karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/QueueConsumer.java
    karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/QueueProducer.java
    karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/TopicConsumer.java
    karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/TopicProducer.java
    karaf/cellar/trunk/hazelcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml
    karaf/cellar/trunk/obr/src/main/java/org/apache/karaf/cellar/obr/ObrBundleEventHandler.java
    karaf/cellar/trunk/obr/src/main/java/org/apache/karaf/cellar/obr/ObrUrlEventHandler.java

Modified: karaf/cellar/trunk/assembly/src/main/resources/node.cfg
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/assembly/src/main/resources/node.cfg?rev=1404897&r1=1404896&r2=1404897&view=diff
==============================================================================
--- karaf/cellar/trunk/assembly/src/main/resources/node.cfg (original)
+++ karaf/cellar/trunk/assembly/src/main/resources/node.cfg Fri Nov  2 08:59:18 2012
@@ -1,3 +1,31 @@
+#
+# Default cluster group for this node
+#
 groups = default
+
+#
+# Cluster event producer
+#
 producer = true
-consumer = true
\ No newline at end of file
+
+#
+# Cluster event consumer
+#
+consumer = true
+
+#
+# Cluster event handlers
+#
+# bundle event handler
+handler.org.apache.karaf.cellar.bundle.BundleEventHandler = true
+# config event handler
+handler.org.apache.karaf.cellar.config.ConfigurationEventHandler = true
+# feature event handler
+handler.org.apache.karaf.cellar.features.FeaturesEventHandler = true
+# DOSGi event handler
+handler.org.apache.karaf.cellar.dosgi.RemoteServiceCallHandler = true
+# OSGi event handler
+handler.org.apache.karaf.cellar.event.RemoteEventHandler = true
+# OBR event handler
+handler.org.apache.karaf.cellar.obr.ObrBundleEventHandler = true
+handler.org.apache.karaf.cellar.obr.ObrUrlEventHandler = true
\ No newline at end of file

Modified: karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/BundleEventHandler.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/BundleEventHandler.java?rev=1404897&r1=1404896&r2=1404897&view=diff
==============================================================================
--- karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/BundleEventHandler.java (original)
+++ karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/BundleEventHandler.java Fri Nov  2 08:59:18 2012
@@ -14,8 +14,11 @@
 package org.apache.karaf.cellar.bundle;
 
 import org.apache.karaf.cellar.core.Configurations;
+<<<<<<< HEAD
 import org.apache.karaf.cellar.core.Group;
 import org.apache.karaf.cellar.core.Node;
+=======
+>>>>>>> 3a649a9... [KARAF-1414] Add persistence for event handlers
 import org.apache.karaf.cellar.core.control.BasicSwitch;
 import org.apache.karaf.cellar.core.control.Switch;
 import org.apache.karaf.cellar.core.control.SwitchStatus;
@@ -23,6 +26,7 @@ import org.apache.karaf.cellar.core.even
 import org.apache.karaf.cellar.core.event.EventType;
 import org.osgi.framework.BundleEvent;
 import org.osgi.framework.BundleException;
+import org.osgi.service.cm.Configuration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -42,8 +46,9 @@ public class BundleEventHandler extends 
      * @param event
      */
     public void handle(RemoteBundleEvent event) {
-        // check if the handler is ON
-        if (eventSwitch.getStatus().equals(SwitchStatus.OFF)) {
+
+        // check if the handler switch is ON
+        if (this.getSwitch().getStatus().equals(SwitchStatus.OFF)) {
             LOGGER.warn("CELLAR BUNDLE: {} switch is OFF, cluster event is not handled", SWITCH_ID);
             return;
         }
@@ -94,6 +99,20 @@ public class BundleEventHandler extends 
     }
 
     public Switch getSwitch() {
+        // load the switch status from the config
+        try {
+            Configuration configuration = configurationAdmin.getConfiguration(Configurations.NODE);
+            if (configuration != null) {
+                Boolean status = new Boolean((String) configuration.getProperties().get(Configurations.HANDLER + "." + this.getClass().getName()));
+                if (status) {
+                    eventSwitch.turnOn();
+                } else {
+                    eventSwitch.turnOff();
+                }
+            }
+        } catch (Exception e) {
+            // ignore
+        }
         return eventSwitch;
     }
 

Modified: karaf/cellar/trunk/config/src/main/java/org/apache/karaf/cellar/config/ConfigurationEventHandler.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/config/src/main/java/org/apache/karaf/cellar/config/ConfigurationEventHandler.java?rev=1404897&r1=1404896&r2=1404897&view=diff
==============================================================================
--- karaf/cellar/trunk/config/src/main/java/org/apache/karaf/cellar/config/ConfigurationEventHandler.java (original)
+++ karaf/cellar/trunk/config/src/main/java/org/apache/karaf/cellar/config/ConfigurationEventHandler.java Fri Nov  2 08:59:18 2012
@@ -44,8 +44,8 @@ public class ConfigurationEventHandler e
     public void handle(RemoteConfigurationEvent event) {
 
         // check if the handler is ON
-        if (eventSwitch.getStatus().equals(SwitchStatus.OFF)) {
-            LOGGER.warn("CELLAR CONFIG: {} switch is OFF, cluster event is not handled", SWITCH_ID);
+        if (this.getSwitch().getStatus().equals(SwitchStatus.OFF)) {
+            LOGGER.warn("CELLAR CONFIG: {} switch is OFF, cluster event not handled", SWITCH_ID);
             return;
         }
 
@@ -106,6 +106,20 @@ public class ConfigurationEventHandler e
     }
 
     public Switch getSwitch() {
+        // load the switch status from the config
+        try {
+            Configuration configuration = configurationAdmin.getConfiguration(Configurations.NODE);
+            if (configuration != null) {
+                Boolean status = new Boolean((String) configuration.getProperties().get(Configurations.HANDLER + "." + this.getClass().getName()));
+                if (status) {
+                    eventSwitch.turnOn();
+                } else {
+                    eventSwitch.turnOff();
+                }
+            }
+        } catch (Exception e) {
+            // ignore
+        }
         return eventSwitch;
     }
 

Modified: karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/Configurations.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/Configurations.java?rev=1404897&r1=1404896&r2=1404897&view=diff
==============================================================================
--- karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/Configurations.java (original)
+++ karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/Configurations.java Fri Nov  2 08:59:18 2012
@@ -24,6 +24,7 @@ public class Configurations {
     public static final String NODE = "org.apache.karaf.cellar.node";
     public static final String PRODUCER = "producer";
     public static final String CONSUMER = "consumer";
+    public static final String HANDLER = "handler";
 
     public static final String SEPARATOR = ".";
     public static final String DELIMETER = ",";

Modified: karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/control/ConsumerSwitchCommandHandler.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/control/ConsumerSwitchCommandHandler.java?rev=1404897&r1=1404896&r2=1404897&view=diff
==============================================================================
--- karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/control/ConsumerSwitchCommandHandler.java (original)
+++ karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/control/ConsumerSwitchCommandHandler.java Fri Nov  2 08:59:18 2012
@@ -72,7 +72,7 @@ public class ConsumerSwitchCommandHandle
                 }
             }
         } catch (Exception e) {
-            LOGGER.warn("Can't persist the producer status", e);
+            LOGGER.warn("Can't persist the consumer status", e);
         }
     }
 

Modified: karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/control/ManageHandlersCommandHandler.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/control/ManageHandlersCommandHandler.java?rev=1404897&r1=1404896&r2=1404897&view=diff
==============================================================================
--- karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/control/ManageHandlersCommandHandler.java (original)
+++ karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/control/ManageHandlersCommandHandler.java Fri Nov  2 08:59:18 2012
@@ -13,6 +13,7 @@
  */
 package org.apache.karaf.cellar.core.control;
 
+import org.apache.karaf.cellar.core.Configurations;
 import org.apache.karaf.cellar.core.Consumer;
 import org.apache.karaf.cellar.core.command.CommandHandler;
 import org.apache.karaf.cellar.core.event.EventHandler;
@@ -20,10 +21,12 @@ import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleReference;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
+import org.osgi.service.cm.Configuration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import javax.swing.plaf.basic.BasicInternalFrameTitlePane;
+import java.util.Dictionary;
 
 /**
  * Manage handlers command handler.
@@ -62,8 +65,12 @@ public class ManageHandlersCommandHandle
                         if (command.getHandlerName().equals(handler.getClass().getName())) {
                             if (command.getStatus() != null) {
                                 if (command.getStatus()) {
+                                    // persist the handler switch status to configuration admin
+                                    persist(handler.getClass().getName(), SwitchStatus.ON);
                                     handler.getSwitch().turnOn();
                                 } else {
+                                    // persist the handler switch status to configuration admin
+                                    persist(handler.getClass().getName(), SwitchStatus.OFF);
                                     handler.getSwitch().turnOff();
                                 }
                             }
@@ -85,6 +92,27 @@ public class ManageHandlersCommandHandle
         return result;
     }
 
+    /**
+     * Store the handler switch configuration in configuration admin.
+     *
+     * @param handler the handler to store
+     * @param switchStatus the switch status to store.
+     */
+    private void persist(String handler, SwitchStatus switchStatus) {
+        try {
+            Configuration configuration = configurationAdmin.getConfiguration(Configurations.NODE);
+            if (configuration != null) {
+                Dictionary<String, String> properties = configuration.getProperties();
+                if (properties != null) {
+                    properties.put(Configurations.HANDLER + "." + handler, switchStatus.getValue().toString());
+                    configuration.update(properties);
+                }
+            }
+        } catch (Exception e) {
+            LOGGER.warn("Can't persist the handler " + handler + " status", e);
+        }
+    }
+
     @Override
     public Class<ManageHandlersCommand> getType() {
         return ManageHandlersCommand.class;

Modified: karaf/cellar/trunk/dosgi/src/main/java/org/apache/karaf/cellar/dosgi/RemoteServiceCallHandler.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/dosgi/src/main/java/org/apache/karaf/cellar/dosgi/RemoteServiceCallHandler.java?rev=1404897&r1=1404896&r2=1404897&view=diff
==============================================================================
--- karaf/cellar/trunk/dosgi/src/main/java/org/apache/karaf/cellar/dosgi/RemoteServiceCallHandler.java (original)
+++ karaf/cellar/trunk/dosgi/src/main/java/org/apache/karaf/cellar/dosgi/RemoteServiceCallHandler.java Fri Nov  2 08:59:18 2012
@@ -14,14 +14,17 @@
 package org.apache.karaf.cellar.dosgi;
 
 import org.apache.karaf.cellar.core.CellarSupport;
+import org.apache.karaf.cellar.core.Configurations;
 import org.apache.karaf.cellar.core.control.BasicSwitch;
 import org.apache.karaf.cellar.core.control.Switch;
+import org.apache.karaf.cellar.core.control.SwitchStatus;
 import org.apache.karaf.cellar.core.event.EventHandler;
 import org.apache.karaf.cellar.core.event.EventProducer;
 import org.apache.karaf.cellar.core.event.EventTransportFactory;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
+import org.osgi.service.cm.Configuration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -45,6 +48,13 @@ public class RemoteServiceCallHandler ex
 
     @Override
     public void handle(RemoteServiceCall event) {
+
+        // check if the handler switch is ON
+        if (this.getSwitch().getStatus().equals(SwitchStatus.OFF)) {
+            LOGGER.warn("CELLAR DOSGI: {} switch is OFF, cluster event is not handled", SWITCH_ID);
+            return;
+        }
+
         Object targetService = null;
 
         if (event != null) {
@@ -109,6 +119,20 @@ public class RemoteServiceCallHandler ex
 
     @Override
     public Switch getSwitch() {
+        // load the switch status from the config
+        try {
+            Configuration configuration = configurationAdmin.getConfiguration(Configurations.NODE);
+            if (configuration != null) {
+                Boolean status = new Boolean((String) configuration.getProperties().get(Configurations.HANDLER + "." + this.getClass().getName()));
+                if (status) {
+                    dosgiSwitch.turnOn();
+                } else {
+                    dosgiSwitch.turnOff();
+                }
+            }
+        } catch (Exception e) {
+            // ignore
+        }
         return dosgiSwitch;
     }
 

Modified: karaf/cellar/trunk/dosgi/src/main/resources/OSGI-INF/blueprint/blueprint.xml
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/dosgi/src/main/resources/OSGI-INF/blueprint/blueprint.xml?rev=1404897&r1=1404896&r2=1404897&view=diff
==============================================================================
--- karaf/cellar/trunk/dosgi/src/main/resources/OSGI-INF/blueprint/blueprint.xml (original)
+++ karaf/cellar/trunk/dosgi/src/main/resources/OSGI-INF/blueprint/blueprint.xml Fri Nov  2 08:59:18 2012
@@ -35,6 +35,7 @@
         <property name="clusterManager" ref="clusterManager"/>
         <property name="eventTransportFactory" ref="eventTransportFactory"/>
         <property name="bundleContext" ref="blueprintBundleContext"/>
+        <property name="configurationAdmin" ref="configurationAdmin" />
     </bean>
     <service ref="remoteServiceCallHandler" interface="org.apache.karaf.cellar.core.event.EventHandler">
         <service-properties>
@@ -52,5 +53,6 @@
     <reference id="clusterManager" interface="org.apache.karaf.cellar.core.ClusterManager"/>
     <reference id="eventTransportFactory" interface="org.apache.karaf.cellar.core.event.EventTransportFactory"/>
     <reference id="commandStore" interface="org.apache.karaf.cellar.core.command.CommandStore"/>
+    <reference id="configurationAdmin" interface="org.osgi.service.cm.ConfigurationAdmin"/>
 
 </blueprint>

Modified: karaf/cellar/trunk/event/src/main/java/org/apache/karaf/cellar/event/RemoteEventHandler.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/event/src/main/java/org/apache/karaf/cellar/event/RemoteEventHandler.java?rev=1404897&r1=1404896&r2=1404897&view=diff
==============================================================================
--- karaf/cellar/trunk/event/src/main/java/org/apache/karaf/cellar/event/RemoteEventHandler.java (original)
+++ karaf/cellar/trunk/event/src/main/java/org/apache/karaf/cellar/event/RemoteEventHandler.java Fri Nov  2 08:59:18 2012
@@ -13,13 +13,13 @@
  */
 package org.apache.karaf.cellar.event;
 
-import org.apache.karaf.cellar.core.Node;
+import org.apache.karaf.cellar.core.Configurations;
 import org.apache.karaf.cellar.core.control.BasicSwitch;
 import org.apache.karaf.cellar.core.control.Switch;
 import org.apache.karaf.cellar.core.control.SwitchStatus;
-import org.apache.karaf.cellar.core.event.Event;
 import org.apache.karaf.cellar.core.event.EventHandler;
 import org.apache.karaf.cellar.core.event.EventType;
+import org.osgi.service.cm.Configuration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -36,8 +36,8 @@ public class RemoteEventHandler extends 
     public void handle(RemoteEvent event) {
 
         // check if the handler is ON
-        if (eventSwitch.getStatus().equals(SwitchStatus.OFF)) {
-            LOGGER.warn("CELLAR EVENT: {} switch is OFF, cluster event is not handled", SWITCH_ID);
+        if (this.getSwitch().getStatus().equals(SwitchStatus.OFF)) {
+            LOGGER.warn("CELLAR EVENT: {} is OFF, cluster event not handled", SWITCH_ID);
             return;
         }
 
@@ -75,6 +75,20 @@ public class RemoteEventHandler extends 
     }
 
     public Switch getSwitch() {
+        // load the switch status from the config
+        try {
+            Configuration configuration = configurationAdmin.getConfiguration(Configurations.NODE);
+            if (configuration != null) {
+                Boolean status = new Boolean((String) configuration.getProperties().get(Configurations.HANDLER + "." + this.getClass().getName()));
+                if (status) {
+                    eventSwitch.turnOn();
+                } else {
+                    eventSwitch.turnOff();
+                }
+            }
+        } catch (Exception e) {
+            // ignore
+        }
         return eventSwitch;
     }
     

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=1404897&r1=1404896&r2=1404897&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 Fri Nov  2 08:59:18 2012
@@ -13,6 +13,7 @@
  */
 package org.apache.karaf.cellar.features;
 
+import org.apache.karaf.cellar.core.Configurations;
 import org.apache.karaf.cellar.core.control.BasicSwitch;
 import org.apache.karaf.cellar.core.control.Switch;
 import org.apache.karaf.cellar.core.control.SwitchStatus;
@@ -20,6 +21,7 @@ import org.apache.karaf.cellar.core.even
 import org.apache.karaf.cellar.core.event.EventType;
 import org.apache.karaf.features.FeatureEvent;
 import org.apache.karaf.features.FeaturesService;
+import org.osgi.service.cm.Configuration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -53,8 +55,7 @@ public class FeaturesEventHandler extend
      */
     public void handle(RemoteFeaturesEvent event) {
 
-        // check if the handler is ON
-        if (eventSwitch.getStatus().equals(SwitchStatus.OFF)) {
+        if (this.getSwitch().getStatus().equals(SwitchStatus.OFF)) {
             LOGGER.warn("CELLAR FEATURES: {} switch is OFF, cluster event is not handled", SWITCH_ID);
             return;
         }
@@ -108,6 +109,20 @@ public class FeaturesEventHandler extend
     }
 
     public Switch getSwitch() {
+        // load the switch status from the config
+        try {
+            Configuration configuration = configurationAdmin.getConfiguration(Configurations.NODE);
+            if (configuration != null) {
+                Boolean status = new Boolean((String) configuration.getProperties().get(Configurations.HANDLER + "." + this.getClass().getName()));
+                if (status) {
+                    eventSwitch.turnOn();
+                } else {
+                    eventSwitch.turnOff();
+                }
+            }
+        } catch (Exception e) {
+            // ignore
+        }
         return eventSwitch;
     }
 

Modified: karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/QueueConsumer.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/QueueConsumer.java?rev=1404897&r1=1404896&r2=1404897&view=diff
==============================================================================
--- karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/QueueConsumer.java (original)
+++ karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/QueueConsumer.java Fri Nov  2 08:59:18 2012
@@ -178,7 +178,7 @@ public class QueueConsumer<E extends Eve
     }
 
     public Switch getSwitch() {
-        // load the init status from the config
+        // load the switch status from the config
         try {
             Configuration configuration = configurationAdmin.getConfiguration(Configurations.NODE);
             if (configuration != null) {

Modified: karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/QueueProducer.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/QueueProducer.java?rev=1404897&r1=1404896&r2=1404897&view=diff
==============================================================================
--- karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/QueueProducer.java (original)
+++ karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/QueueProducer.java Fri Nov  2 08:59:18 2012
@@ -94,7 +94,7 @@ public class QueueProducer<E extends Eve
     }
 
     public Switch getSwitch() {
-        // load the init status from the config
+        // load the switch status from the config
         try {
             Configuration configuration = configurationAdmin.getConfiguration(Configurations.NODE);
             if (configuration != null) {

Modified: karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/TopicConsumer.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/TopicConsumer.java?rev=1404897&r1=1404896&r2=1404897&view=diff
==============================================================================
--- karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/TopicConsumer.java (original)
+++ karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/TopicConsumer.java Fri Nov  2 08:59:18 2012
@@ -140,7 +140,7 @@ public class TopicConsumer<E extends Eve
     }
 
     public Switch getSwitch() {
-        // load the init status from the config
+        // load the switch status from the config
         try {
             Configuration configuration = configurationAdmin.getConfiguration(Configurations.NODE);
             if (configuration != null) {

Modified: karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/TopicProducer.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/TopicProducer.java?rev=1404897&r1=1404896&r2=1404897&view=diff
==============================================================================
--- karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/TopicProducer.java (original)
+++ karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/TopicProducer.java Fri Nov  2 08:59:18 2012
@@ -76,7 +76,7 @@ public class TopicProducer<E extends Eve
     }
 
     public Switch getSwitch() {
-        // load the init status from the config
+        // load the switch status from the config
         try {
             Configuration configuration = configurationAdmin.getConfiguration(Configurations.NODE);
             if (configuration != null) {

Modified: karaf/cellar/trunk/hazelcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/hazelcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml?rev=1404897&r1=1404896&r2=1404897&view=diff
==============================================================================
--- karaf/cellar/trunk/hazelcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml (original)
+++ karaf/cellar/trunk/hazelcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml Fri Nov  2 08:59:18 2012
@@ -126,6 +126,7 @@
     <!-- Managed Handlers Command Handlers -->
     <bean id="manageHandlersCommandHandler" class="org.apache.karaf.cellar.core.control.ManageHandlersCommandHandler">
         <property name="producer" ref="producer"/>
+        <property name="configurationAdmin" ref="configurationAdmin"/>
     </bean>
 
     <bean id="manageHandlersResultHandler" class="org.apache.karaf.cellar.core.control.ManageHandlersResultHandler">

Modified: karaf/cellar/trunk/obr/src/main/java/org/apache/karaf/cellar/obr/ObrBundleEventHandler.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/obr/src/main/java/org/apache/karaf/cellar/obr/ObrBundleEventHandler.java?rev=1404897&r1=1404896&r2=1404897&view=diff
==============================================================================
--- karaf/cellar/trunk/obr/src/main/java/org/apache/karaf/cellar/obr/ObrBundleEventHandler.java (original)
+++ karaf/cellar/trunk/obr/src/main/java/org/apache/karaf/cellar/obr/ObrBundleEventHandler.java Fri Nov  2 08:59:18 2012
@@ -16,6 +16,7 @@ package org.apache.karaf.cellar.obr;
 import org.apache.felix.bundlerepository.Reason;
 import org.apache.felix.bundlerepository.Resolver;
 import org.apache.felix.bundlerepository.Resource;
+import org.apache.karaf.cellar.core.Configurations;
 import org.apache.karaf.cellar.core.control.BasicSwitch;
 import org.apache.karaf.cellar.core.control.Switch;
 import org.apache.karaf.cellar.core.control.SwitchStatus;
@@ -24,6 +25,7 @@ import org.apache.karaf.cellar.core.even
 import org.osgi.framework.Bundle;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.Version;
+import org.osgi.service.cm.Configuration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -112,8 +114,8 @@ public class ObrBundleEventHandler exten
     public void handle(ObrBundleEvent event) {
 
         // check if the handler is ON
-        if (eventSwitch.getStatus().equals(SwitchStatus.OFF)) {
-            LOGGER.warn("CELLAR OBR: {} switch is OFF, cluster event is not handled", SWITCH_ID);
+        if (this.getSwitch().getStatus().equals(SwitchStatus.OFF)) {
+            LOGGER.warn("CELLAR OBR: {} switch is OFF, cluster event not handled", SWITCH_ID);
             return;
         }
 
@@ -162,6 +164,20 @@ public class ObrBundleEventHandler exten
     }
 
     public Switch getSwitch() {
+        // load the switch status from the config
+        try {
+            Configuration configuration = configurationAdmin.getConfiguration(Configurations.NODE);
+            if (configuration != null) {
+                Boolean status = new Boolean((String) configuration.getProperties().get(Configurations.HANDLER + "." + this.getClass().getName()));
+                if (status) {
+                    eventSwitch.turnOn();
+                } else {
+                    eventSwitch.turnOff();
+                }
+            }
+        } catch (Exception e) {
+            // ignore
+        }
         return this.eventSwitch;
     }
 

Modified: karaf/cellar/trunk/obr/src/main/java/org/apache/karaf/cellar/obr/ObrUrlEventHandler.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/obr/src/main/java/org/apache/karaf/cellar/obr/ObrUrlEventHandler.java?rev=1404897&r1=1404896&r2=1404897&view=diff
==============================================================================
--- karaf/cellar/trunk/obr/src/main/java/org/apache/karaf/cellar/obr/ObrUrlEventHandler.java (original)
+++ karaf/cellar/trunk/obr/src/main/java/org/apache/karaf/cellar/obr/ObrUrlEventHandler.java Fri Nov  2 08:59:18 2012
@@ -13,10 +13,13 @@
  */
 package org.apache.karaf.cellar.obr;
 
+import org.apache.karaf.cellar.core.Configurations;
 import org.apache.karaf.cellar.core.control.BasicSwitch;
 import org.apache.karaf.cellar.core.control.Switch;
+import org.apache.karaf.cellar.core.control.SwitchStatus;
 import org.apache.karaf.cellar.core.event.EventHandler;
 import org.apache.karaf.cellar.core.event.EventType;
+import org.osgi.service.cm.Configuration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -48,6 +51,19 @@ public class ObrUrlEventHandler extends 
      */
     @Override
     public void handle(ObrUrlEvent obrUrlEvent) {
+
+        // check if the handler is ON
+        if (this.getSwitch().getStatus().equals(SwitchStatus.OFF)) {
+            LOGGER.warn("CELLAR OBR: {} switch is OFF, cluster event not handled", SWITCH_ID);
+            return;
+        }
+
+        // check if the group is local
+        if (!groupManager.isLocalGroup(obrUrlEvent.getSourceGroup().getName())) {
+            LOGGER.warn("CELLAR OBR: node is not part of the event cluster group");
+            return;
+        }
+
         String url = obrUrlEvent.getUrl();
         String groupName = obrUrlEvent.getSourceGroup().getName();
         try {
@@ -74,6 +90,20 @@ public class ObrUrlEventHandler extends 
     }
 
     public Switch getSwitch() {
+        // load the switch status from the config
+        try {
+            Configuration configuration = configurationAdmin.getConfiguration(Configurations.NODE);
+            if (configuration != null) {
+                Boolean status = new Boolean((String) configuration.getProperties().get(Configurations.HANDLER + "." + this.getClass().getName()));
+                if (status) {
+                    eventSwitch.turnOn();
+                } else {
+                    eventSwitch.turnOff();
+                }
+            }
+        } catch (Exception e) {
+            // ignore
+        }
         return this.eventSwitch;
     }