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 {

Reply via email to