Skip to content
This repository has been archived by the owner on May 12, 2021. It is now read-only.

Commit

Permalink
making DomainMappingEventReceiver singleton and fixing references in …
Browse files Browse the repository at this point in the history
…components
  • Loading branch information
Isuru Haththotuwa committed Dec 24, 2015
1 parent 6ac3b87 commit c627ff1
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,15 @@
* 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();
}
Expand All @@ -57,7 +59,7 @@ public LoadBalancerCommonDomainMappingEventReceiver(TopologyProvider topologyPro
* domain mapping events.
*/
public void addEventListeners() {
addEventListener(new DomainMappingAddedEventListener() {
domainMappingEventReceiver.addEventListener(new DomainMappingAddedEventListener() {
@Override
protected void onEvent(Event event) {
DomainMappingAddedEvent domainMappingAddedEvent = (DomainMappingAddedEvent) event;
Expand All @@ -75,7 +77,7 @@ protected void onEvent(Event event) {
}
});

addEventListener(new DomainMappingRemovedEventListener() {
domainMappingEventReceiver.addEventListener(new DomainMappingRemovedEventListener() {
@Override
protected void onEvent(Event event) {
DomainMappingRemovedEvent domainMappingRemovedEvent = (DomainMappingRemovedEvent) event;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
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;
Expand Down Expand Up @@ -170,23 +171,23 @@ private void startDomainMappingEventReceiver(ExecutorService executorService, To
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");
}
}

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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,11 +173,11 @@ private void startDomainMappingEventReceiver(ExecutorService executorService, To
}

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) {
Expand Down Expand Up @@ -275,13 +275,13 @@ protected void deactivate(ComponentContext context) {
// }

// 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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,25 +21,29 @@

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;

/**
* 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);
Expand All @@ -49,6 +53,17 @@ public void addEventListener(EventListener eventListener) {
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 {
Expand Down

0 comments on commit c627ff1

Please sign in to comment.