Updated Branches: refs/heads/master 644e94b9c -> d29ee5d60
Added logic to receive complete topology event only once per load balancer life-cycle in load balancer extension Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/d29ee5d6 Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/d29ee5d6 Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/d29ee5d6 Branch: refs/heads/master Commit: d29ee5d60a63fa7e43079237ff0076c8e47f8627 Parents: 644e94b Author: Imesh Gunaratne <[email protected]> Authored: Thu Nov 14 16:51:45 2013 +0530 Committer: Imesh Gunaratne <[email protected]> Committed: Thu Nov 14 16:51:45 2013 +0530 ---------------------------------------------------------------------- .../load/balancer/extension/api/LoadBalancerExtension.java | 8 ++++++-- .../receiver/topology/TopologyEventMessageDelegator.java | 7 ++++++- 2 files changed, 12 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/d29ee5d6/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancerExtension.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancerExtension.java b/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancerExtension.java index e3c19df..c2dbe50 100644 --- a/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancerExtension.java +++ b/components/org.apache.stratos.load.balancer.extension.api/src/main/java/org/apache/stratos/load/balancer/extension/api/LoadBalancerExtension.java @@ -24,7 +24,6 @@ import org.apache.commons.logging.LogFactory; import org.apache.stratos.load.balancer.common.topology.TopologyReceiver; import org.apache.stratos.messaging.event.Event; import org.apache.stratos.messaging.event.topology.*; -import org.apache.stratos.messaging.message.processor.MessageProcessorChain; import org.apache.stratos.messaging.message.processor.topology.TopologyEventProcessorChain; import org.apache.stratos.messaging.message.receiver.topology.TopologyEventMessageDelegator; import org.apache.stratos.messaging.message.receiver.topology.TopologyManager; @@ -59,8 +58,9 @@ public class LoadBalancerExtension implements Runnable { private TopologyEventMessageDelegator createMessageDelegator() { TopologyEventProcessorChain processorChain = createEventProcessorChain(); - TopologyEventMessageDelegator messageDelegator = new TopologyEventMessageDelegator(processorChain); + final TopologyEventMessageDelegator messageDelegator = new TopologyEventMessageDelegator(processorChain); messageDelegator.addCompleteTopologyEventListener(new CompleteTopologyEventListener() { + @Override protected void onEvent(Event event) { // Configure load balancer @@ -68,6 +68,10 @@ public class LoadBalancerExtension implements Runnable { // Start load balancer loadBalancer.start(); + + // Complete topology event is only received once + // Remove event listener + messageDelegator.removeCompleteTopologyEventListener(this); } }); return messageDelegator; http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/d29ee5d6/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/topology/TopologyEventMessageDelegator.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/topology/TopologyEventMessageDelegator.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/topology/TopologyEventMessageDelegator.java index 6986a28..285bd0a 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/topology/TopologyEventMessageDelegator.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/topology/TopologyEventMessageDelegator.java @@ -23,6 +23,7 @@ import javax.jms.TextMessage; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.messaging.event.EventListener; +import org.apache.stratos.messaging.event.topology.CompleteTopologyEventListener; import org.apache.stratos.messaging.message.processor.MessageProcessorChain; import org.apache.stratos.messaging.message.processor.topology.*; import org.apache.stratos.messaging.util.Constants; @@ -52,10 +53,14 @@ public class TopologyEventMessageDelegator implements Runnable { this.processorChain = processorChain; } - public void addCompleteTopologyEventListener(EventListener eventListener) { + public void addCompleteTopologyEventListener(CompleteTopologyEventListener eventListener) { completeTopEvMsgProcessor.addEventListener(eventListener); } + public void removeCompleteTopologyEventListener(CompleteTopologyEventListener eventListener) { + completeTopEvMsgProcessor.removeEventListener(eventListener); + } + @Override public void run() { try {
