making DomainMappingEventReceiver singleton and fixing references in components
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/c627ff18 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/c627ff18 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/c627ff18 Branch: refs/heads/master Commit: c627ff18f6c4d84c3cd42762e580e55128d80e07 Parents: 6ac3b87 Author: Isuru Haththotuwa <[email protected]> Authored: Wed Dec 2 18:22:37 2015 +0530 Committer: Isuru Haththotuwa <[email protected]> Committed: Thu Dec 24 20:04:39 2015 +0530 ---------------------------------------------------------------------- ...alancerCommonDomainMappingEventReceiver.java | 8 ++++--- .../extension/api/LoadBalancerExtension.java | 9 ++++---- .../internal/LoadBalancerServiceComponent.java | 24 ++++++++++---------- .../mapping/DomainMappingEventReceiver.java | 21 ++++++++++++++--- 4 files changed, 40 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/c627ff18/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/event/receivers/LoadBalancerCommonDomainMappingEventReceiver.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/event/receivers/LoadBalancerCommonDomainMappingEventReceiver.java b/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/event/receivers/LoadBalancerCommonDomainMappingEventReceiver.java index a51ed22..c0d9f81 100644 --- a/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/event/receivers/LoadBalancerCommonDomainMappingEventReceiver.java +++ b/components/org.apache.stratos.load.balancer.common/src/main/java/org/apache/stratos/load/balancer/common/event/receivers/LoadBalancerCommonDomainMappingEventReceiver.java @@ -34,13 +34,15 @@ import org.apache.stratos.messaging.message.receiver.domain.mapping.DomainMappin * Load balancer common domain mapping event receiver updates the topology in the given topology provider * with the domains found in domain mapping events. */ -public class LoadBalancerCommonDomainMappingEventReceiver extends DomainMappingEventReceiver { +public class LoadBalancerCommonDomainMappingEventReceiver { private static final Log log = LogFactory.getLog(LoadBalancerCommonDomainMappingEventReceiver.class); private TopologyProvider topologyProvider; + private DomainMappingEventReceiver domainMappingEventReceiver; public LoadBalancerCommonDomainMappingEventReceiver(TopologyProvider topologyProvider) { + this.domainMappingEventReceiver = DomainMappingEventReceiver.getInstance(); this.topologyProvider = topologyProvider; addEventListeners(); } @@ -57,7 +59,7 @@ public class LoadBalancerCommonDomainMappingEventReceiver extends DomainMappingE * domain mapping events. */ public void addEventListeners() { - addEventListener(new DomainMappingAddedEventListener() { + domainMappingEventReceiver.addEventListener(new DomainMappingAddedEventListener() { @Override protected void onEvent(Event event) { DomainMappingAddedEvent domainMappingAddedEvent = (DomainMappingAddedEvent) event; @@ -75,7 +77,7 @@ public class LoadBalancerCommonDomainMappingEventReceiver extends DomainMappingE } }); - addEventListener(new DomainMappingRemovedEventListener() { + domainMappingEventReceiver.addEventListener(new DomainMappingRemovedEventListener() { @Override protected void onEvent(Event event) { DomainMappingRemovedEvent domainMappingRemovedEvent = (DomainMappingRemovedEvent) event; http://git-wip-us.apache.org/repos/asf/stratos/blob/c627ff18/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 d2a8cb3..c2ee077 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 @@ -39,6 +39,7 @@ import org.apache.stratos.messaging.message.filter.topology.TopologyClusterFilte import org.apache.stratos.messaging.message.filter.topology.TopologyMemberFilter; import org.apache.stratos.messaging.message.filter.topology.TopologyServiceFilter; import org.apache.stratos.messaging.message.receiver.application.ApplicationsEventReceiver; +import org.apache.stratos.messaging.message.receiver.domain.mapping.DomainMappingEventReceiver; import org.apache.stratos.messaging.message.receiver.topology.TopologyEventReceiver; import java.util.concurrent.ExecutorService; @@ -170,8 +171,8 @@ public class LoadBalancerExtension { addDomainMappingsEventListeners(domainMappingEventReceiver); // Add default domain mapping event listeners domainMappingEventReceiver.addEventListeners(); - domainMappingEventReceiver.setExecutorService(executorService); - domainMappingEventReceiver.execute(); +// domainMappingEventReceiver.setExecutorService(executorService); +// domainMappingEventReceiver.execute(); if (log.isInfoEnabled()) { log.info("Domain mapping event receiver thread started"); } @@ -179,14 +180,14 @@ public class LoadBalancerExtension { private void addDomainMappingsEventListeners(final LoadBalancerCommonDomainMappingEventReceiver domainMappingEventReceiver) { - domainMappingEventReceiver.addEventListener(new DomainMappingAddedEventListener() { + DomainMappingEventReceiver.getInstance().addEventListener(new DomainMappingAddedEventListener() { @Override protected void onEvent(Event event) { reloadConfiguration(); } }); - domainMappingEventReceiver.addEventListener(new DomainMappingRemovedEventListener() { + DomainMappingEventReceiver.getInstance().addEventListener(new DomainMappingRemovedEventListener() { @Override protected void onEvent(Event event) { reloadConfiguration(); http://git-wip-us.apache.org/repos/asf/stratos/blob/c627ff18/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/internal/LoadBalancerServiceComponent.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/internal/LoadBalancerServiceComponent.java b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/internal/LoadBalancerServiceComponent.java index e772322..3786af8 100644 --- a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/internal/LoadBalancerServiceComponent.java +++ b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/internal/LoadBalancerServiceComponent.java @@ -173,11 +173,11 @@ public class LoadBalancerServiceComponent { } domainMappingEventReceiver = new LoadBalancerDomainMappingEventReceiver(topologyProvider); - domainMappingEventReceiver.setExecutorService(executorService); - domainMappingEventReceiver.execute(); - if (log.isInfoEnabled()) { - log.info("Domain mapping event receiver thread started"); - } +// domainMappingEventReceiver.setExecutorService(executorService); +// domainMappingEventReceiver.execute(); +// if (log.isInfoEnabled()) { +// log.info("Domain mapping event receiver thread started"); +// } } private void startApplicationSignUpEventReceiver(ExecutorService executorService, TopologyProvider topologyProvider) { @@ -275,13 +275,13 @@ public class LoadBalancerServiceComponent { // } // Terminate domain mapping event receiver - if (domainMappingEventReceiver != null) { - try { - domainMappingEventReceiver.terminate(); - } catch (Exception e) { - log.warn("An error occurred while terminating domain mapping event receiver", e); - } - } +// if (domainMappingEventReceiver != null) { +// try { +// domainMappingEventReceiver.terminate(); +// } catch (Exception e) { +// log.warn("An error occurred while terminating domain mapping event receiver", e); +// } +// } // Terminate statistics notifier if (statisticsNotifier != null) { http://git-wip-us.apache.org/repos/asf/stratos/blob/c627ff18/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/domain/mapping/DomainMappingEventReceiver.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/domain/mapping/DomainMappingEventReceiver.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/domain/mapping/DomainMappingEventReceiver.java index 1d582b5..3c723a3 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/domain/mapping/DomainMappingEventReceiver.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/receiver/domain/mapping/DomainMappingEventReceiver.java @@ -21,8 +21,10 @@ package org.apache.stratos.messaging.message.receiver.domain.mapping; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.stratos.common.threading.StratosThreadPool; import org.apache.stratos.messaging.broker.subscribe.EventSubscriber; import org.apache.stratos.messaging.listener.EventListener; +import org.apache.stratos.messaging.message.receiver.StratosEventReceiver; import org.apache.stratos.messaging.util.MessagingUtil; import java.util.concurrent.ExecutorService; @@ -30,16 +32,18 @@ import java.util.concurrent.ExecutorService; /** * Domain mapping event receiver. */ -public class DomainMappingEventReceiver { +public class DomainMappingEventReceiver extends StratosEventReceiver { private static final Log log = LogFactory.getLog(DomainMappingEventReceiver.class); private DomainMappingEventMessageDelegator messageDelegator; private DomainMappingEventMessageListener messageListener; private EventSubscriber eventSubscriber; - private ExecutorService executorService; + private static volatile DomainMappingEventReceiver instance; - public DomainMappingEventReceiver() { + private DomainMappingEventReceiver() { + // TODO: make pool size configurable + this.executorService = StratosThreadPool.getExecutorService("domainmapping-event-receiver", 100); DomainMappingEventMessageQueue messageQueue = new DomainMappingEventMessageQueue(); this.messageDelegator = new DomainMappingEventMessageDelegator(messageQueue); this.messageListener = new DomainMappingEventMessageListener(messageQueue); @@ -49,6 +53,17 @@ public class DomainMappingEventReceiver { messageDelegator.addEventListener(eventListener); } + public static DomainMappingEventReceiver getInstance () { + if (instance == null) { + synchronized (DomainMappingEventReceiver.class) { + if (instance == null) { + instance = new DomainMappingEventReceiver(); + } + } + } + + return instance; + } public void execute() { try {
