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/10/31 11:53:37 UTC
svn commit: r1404088 - in /karaf/cellar/trunk: assembly/src/main/resources/
core/src/main/java/org/apache/karaf/cellar/core/
core/src/main/java/org/apache/karaf/cellar/core/control/
hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/ hazelcast/s...
Author: jbonofre
Date: Wed Oct 31 10:53:36 2012
New Revision: 1404088
URL: http://svn.apache.org/viewvc?rev=1404088&view=rev
Log:
[KARAF-1414] Add persistence for cluster consumer
Modified:
karaf/cellar/trunk/assembly/src/main/resources/node.cfg
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/ProducerSwitchCommandHandler.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/TopicConsumer.java
karaf/cellar/trunk/hazelcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml
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=1404088&r1=1404087&r2=1404088&view=diff
==============================================================================
--- karaf/cellar/trunk/assembly/src/main/resources/node.cfg (original)
+++ karaf/cellar/trunk/assembly/src/main/resources/node.cfg Wed Oct 31 10:53:36 2012
@@ -1 +1,3 @@
-groups = default
\ No newline at end of file
+groups = default
+producer = true
+consumer = true
\ No newline at end of file
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=1404088&r1=1404087&r2=1404088&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 Wed Oct 31 10:53:36 2012
@@ -23,6 +23,7 @@ public class Configurations {
public static final String GROUPS_KEY = "groups";
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 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=1404088&r1=1404087&r2=1404088&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 Wed Oct 31 10:53:36 2012
@@ -13,8 +13,12 @@
*/
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.osgi.service.cm.Configuration;
+
+import java.util.Dictionary;
/**
* Consumer switch command handler.
@@ -32,24 +36,46 @@ public class ConsumerSwitchCommandHandle
* @param command
*/
public ConsumerSwitchResult execute(ConsumerSwitchCommand command) {
- //Query
+ // query
if (command.getStatus() == null) {
return new ConsumerSwitchResult(command.getId(), Boolean.TRUE, consumer.getSwitch().getStatus().getValue());
- }
- //Turn on the switch
- if (command.getStatus().equals(SwitchStatus.ON)) {
+ } else if (command.getStatus().equals(SwitchStatus.ON)) {
+ // turn on the switch
consumer.getSwitch().turnOn();
+ // persist the change
+ persist(command.getStatus());
return new ConsumerSwitchResult(command.getId(), Boolean.TRUE, Boolean.TRUE);
- }
- //Turn on the switch
- else if (command.getStatus().equals(SwitchStatus.OFF)) {
+ } else if (command.getStatus().equals(SwitchStatus.OFF)) {
+ // turn on the switch
consumer.getSwitch().turnOff();
+ // persist the change
+ persist(command.getStatus());
return new ConsumerSwitchResult(command.getId(), Boolean.TRUE, Boolean.FALSE);
} else {
return new ConsumerSwitchResult(command.getId(), Boolean.FALSE, consumer.getSwitch().getStatus().getValue());
}
}
+ /**
+ * Store the consumer current status in ConfigurationAdmin.
+ *
+ * @param switchStatus the producer switch status to store.
+ */
+ private void persist(SwitchStatus switchStatus) {
+ try {
+ Configuration configuration = configurationAdmin.getConfiguration(Configurations.NODE);
+ if (configuration != null) {
+ Dictionary<String, String> properties = configuration.getProperties();
+ if (properties != null) {
+ properties.put(Configurations.CONSUMER, switchStatus.getValue().toString());
+ configuration.update(properties);
+ }
+ }
+ } catch (Exception e) {
+ LOGGER.warn("Can't persist the producer status", e);
+ }
+ }
+
public Class<ConsumerSwitchCommand> getType() {
return ConsumerSwitchCommand.class;
}
Modified: karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/control/ProducerSwitchCommandHandler.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/control/ProducerSwitchCommandHandler.java?rev=1404088&r1=1404087&r2=1404088&view=diff
==============================================================================
--- karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/control/ProducerSwitchCommandHandler.java (original)
+++ karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/control/ProducerSwitchCommandHandler.java Wed Oct 31 10:53:36 2012
@@ -70,7 +70,6 @@ public class ProducerSwitchCommandHandle
configuration.update(properties);
}
}
- System.out.println("Updated");
} catch (Exception e) {
LOGGER.warn("Can't persist the producer status", e);
}
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=1404088&r1=1404087&r2=1404088&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 Wed Oct 31 10:53:36 2012
@@ -17,6 +17,7 @@ import com.hazelcast.core.HazelcastInsta
import com.hazelcast.core.IQueue;
import com.hazelcast.core.ItemEvent;
import com.hazelcast.core.ItemListener;
+import org.apache.karaf.cellar.core.Configurations;
import org.apache.karaf.cellar.core.Dispatcher;
import org.apache.karaf.cellar.core.Node;
import org.apache.karaf.cellar.core.control.BasicSwitch;
@@ -25,6 +26,8 @@ import org.apache.karaf.cellar.core.cont
import org.apache.karaf.cellar.core.event.Event;
import org.apache.karaf.cellar.core.event.EventConsumer;
import org.apache.karaf.cellar.core.utils.CombinedClassLoader;
+import org.osgi.service.cm.Configuration;
+import org.osgi.service.cm.ConfigurationAdmin;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -51,7 +54,7 @@ public class QueueConsumer<E extends Eve
private Dispatcher dispatcher;
private Node node;
private CombinedClassLoader combinedClassLoader;
-
+ private ConfigurationAdmin configurationAdmin;
public QueueConsumer() {
}
@@ -115,7 +118,7 @@ public class QueueConsumer<E extends Eve
* @param event
*/
public void consume(E event) {
- if (event != null && (eventSwitch.getStatus().equals(SwitchStatus.ON) || event.getForce())) {
+ if (event != null && (this.getSwitch().getStatus().equals(SwitchStatus.ON) || event.getForce())) {
dispatcher.dispatch(event);
} else {
if (eventSwitch.getStatus().equals(SwitchStatus.OFF)) {
@@ -175,6 +178,20 @@ public class QueueConsumer<E extends Eve
}
public Switch getSwitch() {
+ // load the init status from the config
+ try {
+ Configuration configuration = configurationAdmin.getConfiguration(Configurations.NODE);
+ if (configuration != null) {
+ Boolean status = new Boolean((String) configuration.getProperties().get(Configurations.CONSUMER));
+ if (status) {
+ eventSwitch.turnOn();
+ } else {
+ eventSwitch.turnOff();
+ }
+ }
+ } catch (Exception e) {
+ // ignore
+ }
return eventSwitch;
}
@@ -185,4 +202,13 @@ public class QueueConsumer<E extends Eve
public void setNode(Node node) {
this.node = node;
}
+
+ public ConfigurationAdmin getConfigurationAdmin() {
+ return configurationAdmin;
+ }
+
+ public void setConfigurationAdmin(ConfigurationAdmin configurationAdmin) {
+ this.configurationAdmin = configurationAdmin;
+ }
+
}
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=1404088&r1=1404087&r2=1404088&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 Wed Oct 31 10:53:36 2012
@@ -17,6 +17,7 @@ import com.hazelcast.core.HazelcastInsta
import com.hazelcast.core.ITopic;
import com.hazelcast.core.Message;
import com.hazelcast.core.MessageListener;
+import org.apache.karaf.cellar.core.Configurations;
import org.apache.karaf.cellar.core.Dispatcher;
import org.apache.karaf.cellar.core.Node;
import org.apache.karaf.cellar.core.control.BasicSwitch;
@@ -24,6 +25,8 @@ import org.apache.karaf.cellar.core.cont
import org.apache.karaf.cellar.core.control.SwitchStatus;
import org.apache.karaf.cellar.core.event.Event;
import org.apache.karaf.cellar.core.event.EventConsumer;
+import org.osgi.service.cm.Configuration;
+import org.osgi.service.cm.ConfigurationAdmin;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -42,6 +45,7 @@ public class TopicConsumer<E extends Eve
private ITopic topic;
private Dispatcher dispatcher;
private Node node;
+ private ConfigurationAdmin configurationAdmin;
private boolean isConsuming;
@@ -69,7 +73,7 @@ public class TopicConsumer<E extends Eve
*/
public void consume(E event) {
//Check if event has a specified destination.
- if ((event.getDestination() == null || event.getDestination().contains(node)) && (eventSwitch.getStatus().equals(SwitchStatus.ON) || event.getForce())) {
+ if ((event.getDestination() == null || event.getDestination().contains(node)) && (this.getSwitch().getStatus().equals(SwitchStatus.ON) || event.getForce())) {
dispatcher.dispatch(event);
} else {
if (eventSwitch.getStatus().equals(SwitchStatus.OFF)) {
@@ -136,6 +140,20 @@ public class TopicConsumer<E extends Eve
}
public Switch getSwitch() {
+ // load the init status from the config
+ try {
+ Configuration configuration = configurationAdmin.getConfiguration(Configurations.NODE);
+ if (configuration != null) {
+ Boolean status = new Boolean((String) configuration.getProperties().get(Configurations.CONSUMER));
+ if (status) {
+ eventSwitch.turnOn();
+ } else {
+ eventSwitch.turnOff();
+ }
+ }
+ } catch (Exception e) {
+ // ignore
+ }
return eventSwitch;
}
@@ -147,4 +165,12 @@ public class TopicConsumer<E extends Eve
this.node = node;
}
+ public ConfigurationAdmin getConfigurationAdmin() {
+ return configurationAdmin;
+ }
+
+ public void setConfigurationAdmin(ConfigurationAdmin configurationAdmin) {
+ this.configurationAdmin = configurationAdmin;
+ }
+
}
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=1404088&r1=1404087&r2=1404088&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 Wed Oct 31 10:53:36 2012
@@ -87,6 +87,7 @@
<property name="instance" ref="hazelcast"/>
<property name="dispatcher" ref="dispatcher"/>
<property name="node" ref="node"/>
+ <property name="configurationAdmin" ref="configurationAdmin"/>
</bean>
<!-- Producer -->
@@ -115,6 +116,7 @@
<bean id="consumerSwitchCommandHandler" class="org.apache.karaf.cellar.core.control.ConsumerSwitchCommandHandler">
<property name="producer" ref="producer"/>
<property name="consumer" ref="consumer"/>
+ <property name="configurationAdmin" ref="configurationAdmin"/>
</bean>
<bean id="consumerSwitchResultHandler" class="org.apache.karaf.cellar.core.control.ConsumerSwitchResultHandler">