From b608a6351eb809f55ea1d57312ea0f2c7eca6a56 Mon Sep 17 00:00:00 2001 From: Simon Pamies Date: Fri, 12 Jul 2013 17:47:03 +0200 Subject: [PATCH] Updated replication connector to use product based host property --- .../test/AbstractServerReplicationTest.java | 9 +++++---- .../sailing/server/replication/impl/Activator.java | 7 ++++++- .../replication/impl/ReplicationServiceImpl.java | 13 ++++++++----- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java index 19491c400c2..bbdaa7e6fe0 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java @@ -73,6 +73,7 @@ public abstract class AbstractServerReplicationTest { protected Pair basicSetUp( boolean dropDB, RacingEventServiceImpl master, RacingEventServiceImpl replica) throws IOException, InterruptedException { final String exchangeName = "test-sapsailinganalytics-exchange"; + final String exchangeHost = "localhost"; final UUID serverUuid = UUID.randomUUID(); final MongoDBService mongoDBService = MongoDBService.INSTANCE; if (dropDB) { @@ -90,11 +91,11 @@ public abstract class AbstractServerReplicationTest { this.replica = new RacingEventServiceImpl(mongoDBService); } ReplicationInstancesManager rim = new ReplicationInstancesManager(); - masterReplicator = new ReplicationServiceImpl(exchangeName, rim, this.master); + masterReplicator = new ReplicationServiceImpl(exchangeName, exchangeHost, rim, this.master); replicaDescriptor = new ReplicaDescriptor(InetAddress.getLocalHost(), serverUuid, ""); masterReplicator.registerReplica(replicaDescriptor); masterDescriptor = new ReplicationMasterDescriptorImpl("localhost", exchangeName, SERVLET_PORT, 0, UUID.randomUUID().toString()); - ReplicationServiceTestImpl replicaReplicator = new ReplicationServiceTestImpl(exchangeName, resolveAgainst, rim, + ReplicationServiceTestImpl replicaReplicator = new ReplicationServiceTestImpl(exchangeName, exchangeHost, resolveAgainst, rim, replicaDescriptor, this.replica, this.master, masterReplicator, masterDescriptor); Pair result = new Pair<>(replicaReplicator, masterDescriptor); replicaReplicator.startInitialLoadTransmissionServlet(); @@ -128,12 +129,12 @@ public abstract class AbstractServerReplicationTest { private final ReplicationService masterReplicationService; private final ReplicationMasterDescriptor masterDescriptor; - public ReplicationServiceTestImpl(String exchangeName, DomainFactory resolveAgainst, + public ReplicationServiceTestImpl(String exchangeName, String exchangeHost, DomainFactory resolveAgainst, ReplicationInstancesManager replicationInstancesManager, ReplicaDescriptor replicaDescriptor, RacingEventService replica, RacingEventService master, ReplicationService masterReplicationService, ReplicationMasterDescriptor masterDescriptor) throws IOException { - super(exchangeName, replicationInstancesManager, replica); + super(exchangeName, exchangeHost, replicationInstancesManager, replica); this.resolveAgainst = resolveAgainst; this.replicaDescriptor = replicaDescriptor; this.master = master; diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/Activator.java b/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/Activator.java index 7c6b3c58aa5..8a4743bc47e 100644 --- a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/Activator.java +++ b/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/Activator.java @@ -11,6 +11,7 @@ public class Activator implements BundleActivator { private static final Logger logger = Logger.getLogger(Activator.class.getName()); private static final String PROPERTY_NAME_EXCHANGE_NAME = "replication.exchangeName"; + private static final String PROPERTY_NAME_EXCHANGE_HOST = "replication.exchangeHost"; private ReplicationInstancesManager replicationInstancesManager; @@ -19,11 +20,15 @@ public class Activator implements BundleActivator { public void start(BundleContext bundleContext) throws Exception { defaultContext = bundleContext; String exchangeName = bundleContext.getProperty(PROPERTY_NAME_EXCHANGE_NAME); + String exchangeHost = bundleContext.getProperty(PROPERTY_NAME_EXCHANGE_HOST); if (exchangeName == null) { exchangeName = "sapsailinganalytics"; } + if (exchangeHost == null) { + exchangeHost = "localhost"; + } replicationInstancesManager = new ReplicationInstancesManager(); - ReplicationService serverReplicationMasterService = new ReplicationServiceImpl(exchangeName, replicationInstancesManager); + ReplicationService serverReplicationMasterService = new ReplicationServiceImpl(exchangeName, exchangeHost, replicationInstancesManager); bundleContext.registerService(ReplicationService.class, serverReplicationMasterService, null); logger.info("Registered replication service "+serverReplicationMasterService+" using exchange name "+exchangeName); } diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java b/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java index 90530e0f3ca..1776cba58ac 100644 --- a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java +++ b/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java @@ -71,6 +71,7 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec * serialized form. Clients need to know this name to be able to bind their queues to the exchange. */ private final String exchangeName; + private final String exchangeHost; /** * UUID that identifies this server @@ -80,7 +81,7 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec private Replicator replicator; private Thread replicatorThread; - public ReplicationServiceImpl(String exchangeName, final ReplicationInstancesManager replicationInstancesManager) throws IOException { + public ReplicationServiceImpl(String exchangeName, String exchangeHost, final ReplicationInstancesManager replicationInstancesManager) throws IOException { this.replicationInstancesManager = replicationInstancesManager; replicaUUIDs = new HashMap(); racingEventServiceTracker = new ServiceTracker( @@ -88,6 +89,7 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec racingEventServiceTracker.open(); localService = null; this.exchangeName = exchangeName; + this.exchangeHost = exchangeHost; replicator = null; serverUUID = UUID.randomUUID(); logger.info("Setting " + serverUUID.toString() + " as unique replication identifier."); @@ -98,20 +100,21 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec * an OSGi service tracker to discover the {@link RacingEventService}, the service to replicate is "injected" here. * @param exchangeName the name of the exchange to which replicas can bind */ - public ReplicationServiceImpl(String exchangeName, + public ReplicationServiceImpl(String exchangeName, String exchangeHost, final ReplicationInstancesManager replicationInstancesManager, RacingEventService localService) throws IOException { this.replicationInstancesManager = replicationInstancesManager; replicaUUIDs = new HashMap(); // XXX why is this a map? there should be only one connection to a master this.localService = localService; this.exchangeName = exchangeName; + this.exchangeHost = exchangeHost; replicator = null; serverUUID = UUID.randomUUID(); logger.info("Setting " + serverUUID.toString() + " as unique replication identifier."); } - private Channel createMasterChannel(String exchangeName) throws IOException { + private Channel createMasterChannel(String exchangeName, String exchangeHost) throws IOException { final ConnectionFactory connectionFactory = new ConnectionFactory(); - connectionFactory.setHost("localhost"); // ...and use default port + connectionFactory.setHost(exchangeHost); // ...and use default port Channel result = null; try { @@ -144,7 +147,7 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec addAsListenerToRacingEventService(); synchronized (this) { if (masterChannel == null) { - masterChannel = createMasterChannel(exchangeName); + masterChannel = createMasterChannel(exchangeName, exchangeHost); } } }