diff --git a/config/alfresco/bootstrap-context.xml b/config/alfresco/bootstrap-context.xml index 401b8a5195..994d4335c4 100644 --- a/config/alfresco/bootstrap-context.xml +++ b/config/alfresco/bootstrap-context.xml @@ -178,6 +178,10 @@ + + diff --git a/source/java/org/alfresco/repo/cluster/HazelcastMessenger.java b/source/java/org/alfresco/repo/cluster/HazelcastMessenger.java index ec698262c0..718bc71222 100644 --- a/source/java/org/alfresco/repo/cluster/HazelcastMessenger.java +++ b/source/java/org/alfresco/repo/cluster/HazelcastMessenger.java @@ -69,15 +69,14 @@ public class HazelcastMessenger implements Messenger, receiverDelegate.onReceive(message); } - protected String getTopicName() - { - return topic.getName(); - } - - @Override public boolean isConnected() { return true; } + + protected ITopic getTopic() + { + return topic; + } } diff --git a/source/java/org/alfresco/repo/cluster/HazelcastMessengerFactory.java b/source/java/org/alfresco/repo/cluster/HazelcastMessengerFactory.java index 0c5390be51..cf86143e55 100644 --- a/source/java/org/alfresco/repo/cluster/HazelcastMessengerFactory.java +++ b/source/java/org/alfresco/repo/cluster/HazelcastMessengerFactory.java @@ -21,38 +21,32 @@ package org.alfresco.repo.cluster; import java.io.Serializable; -import org.alfresco.util.PropertyCheck; - +import com.hazelcast.core.HazelcastInstance; import com.hazelcast.core.ITopic; /** * Hazelcast-based implementation of the {@link MessengerFactory} interface. - * The factory must be configured with an {@link ITopic} - which - * should be configured with a topic name that corresponds to an application - * region. + * The factory must be configured with a {@link HazelcastInstance} - which + * is the underlying factory for {@link ITopic} creation. * * @author Matt Ward */ public class HazelcastMessengerFactory implements MessengerFactory { - private ITopic topic; + private HazelcastInstance hazelcast; + @Override + public Messenger createMessenger(String appRegion) + { + ITopic topic = hazelcast.getTopic(appRegion); + return new HazelcastMessenger(topic); + } /** - * @param topic the topic to set + * @param hazelcast the hazelcast to set */ - public void setTopic(ITopic topic) + public void setHazelcast(HazelcastInstance hazelcast) { - this.topic = topic; - } - - /* - * @see org.alfresco.repo.cluster.MessengerFactory#createMessenger() - */ - @Override - public Messenger createMessenger() - { - PropertyCheck.mandatory(this, "topic", topic); - return new HazelcastMessenger(topic); + this.hazelcast = hazelcast; } } diff --git a/source/java/org/alfresco/repo/cluster/HazelcastMessengerFactoryTest.java b/source/java/org/alfresco/repo/cluster/HazelcastMessengerFactoryTest.java index 81da050280..8a9c18309d 100644 --- a/source/java/org/alfresco/repo/cluster/HazelcastMessengerFactoryTest.java +++ b/source/java/org/alfresco/repo/cluster/HazelcastMessengerFactoryTest.java @@ -19,14 +19,16 @@ package org.alfresco.repo.cluster; -import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.*; +import static org.junit.Assert.assertSame; +import static org.mockito.Mockito.when; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; +import com.hazelcast.core.HazelcastInstance; import com.hazelcast.core.ITopic; @@ -39,20 +41,23 @@ import com.hazelcast.core.ITopic; public class HazelcastMessengerFactoryTest { private HazelcastMessengerFactory factory; - private @Mock ITopic topic; + private @Mock HazelcastInstance hazelcast; + private @Mock ITopic topic; @Before public void setUp() { factory = new HazelcastMessengerFactory(); - factory.setTopic(topic); + factory.setHazelcast(hazelcast); } @Test public void topicWrappedInMessenger() { - when(topic.getName()).thenReturn("app-region"); - HazelcastMessenger messenger = (HazelcastMessenger) factory.createMessenger(); - assertEquals("app-region", messenger.getTopicName()); + when(hazelcast.getTopic("app-region")).thenReturn(topic); + + Messenger messenger = factory.createMessenger("app-region"); + + assertSame(topic, ((HazelcastMessenger) messenger).getTopic()); } } diff --git a/source/java/org/alfresco/repo/cluster/HazelcastTest.java b/source/java/org/alfresco/repo/cluster/HazelcastTest.java index 4e6e2f5841..4815c7d0be 100644 --- a/source/java/org/alfresco/repo/cluster/HazelcastTest.java +++ b/source/java/org/alfresco/repo/cluster/HazelcastTest.java @@ -80,7 +80,7 @@ public class HazelcastTest implements MessageListener topic.addMessageListener(this); MessengerFactory messengerFactory = (MessengerFactory) ctx.getBean("messengerFactory"); - Messenger messenger = messengerFactory.createMessenger(); + Messenger messenger = messengerFactory.createMessenger("testregion"); messenger.send("Full test including spring."); helper.checkMessageReceivedWas("Full test including spring."); diff --git a/source/java/org/alfresco/repo/cluster/JGroupsMessengerFactory.java b/source/java/org/alfresco/repo/cluster/JGroupsMessengerFactory.java index 65e104e929..083c33810b 100644 --- a/source/java/org/alfresco/repo/cluster/JGroupsMessengerFactory.java +++ b/source/java/org/alfresco/repo/cluster/JGroupsMessengerFactory.java @@ -22,9 +22,8 @@ package org.alfresco.repo.cluster; import java.io.Serializable; import org.alfresco.repo.jgroups.AlfrescoJGroupsChannelFactory; -import org.alfresco.util.PropertyCheck; +import org.alfresco.util.ParameterCheck; import org.jgroups.Channel; -import org.springframework.beans.factory.annotation.Required; /** * JGroups implementation of the {@link MessengerFactory} interface. @@ -33,20 +32,11 @@ import org.springframework.beans.factory.annotation.Required; */ public class JGroupsMessengerFactory implements MessengerFactory { - private String appRegion; - - @Override - public Messenger createMessenger() + public Messenger createMessenger(String appRegion) { - PropertyCheck.mandatory(this, "appRegion", appRegion); + ParameterCheck.mandatory("appRegion", appRegion); Channel channel = AlfrescoJGroupsChannelFactory.getChannel(appRegion); return new JGroupsMessenger(channel); - } - - @Required - public void setAppRegion(String appRegion) - { - this.appRegion = appRegion; } } diff --git a/source/java/org/alfresco/repo/cluster/JGroupsTest.java b/source/java/org/alfresco/repo/cluster/JGroupsTest.java index e0f928fec4..9111a2f656 100644 --- a/source/java/org/alfresco/repo/cluster/JGroupsTest.java +++ b/source/java/org/alfresco/repo/cluster/JGroupsTest.java @@ -78,7 +78,7 @@ public class JGroupsTest extends ReceiverAdapter ch.setReceiver(this); MessengerFactory messengerFactory = (MessengerFactory) ctx.getBean("messengerFactory"); - Messenger messenger = messengerFactory.createMessenger(); + Messenger messenger = messengerFactory.createMessenger("testregion"); messenger.send("Full test including spring."); helper.checkMessageReceivedWas("Full test including spring."); @@ -97,8 +97,8 @@ public class JGroupsTest extends ReceiverAdapter AlfrescoJGroupsChannelFactory.rebuildChannels(); JGroupsMessengerFactory messengerFactory = new JGroupsMessengerFactory(); - messengerFactory.setAppRegion("testregion"); - Messenger messenger = messengerFactory.createMessenger(); + + Messenger messenger = messengerFactory.createMessenger("testregion"); messenger.send("This is a test payload."); helper.checkMessageReceivedWas("This is a test payload."); diff --git a/source/java/org/alfresco/repo/cluster/MessengerFactory.java b/source/java/org/alfresco/repo/cluster/MessengerFactory.java index 6ee3eeca3d..26f827063e 100644 --- a/source/java/org/alfresco/repo/cluster/MessengerFactory.java +++ b/source/java/org/alfresco/repo/cluster/MessengerFactory.java @@ -28,5 +28,5 @@ import java.io.Serializable; */ public interface MessengerFactory { - Messenger createMessenger(); + Messenger createMessenger(String appRegion); } diff --git a/source/test-resources/cluster-test/hazelcast-messenger-test.xml b/source/test-resources/cluster-test/hazelcast-messenger-test.xml index b0425f1a0c..73ad0663b4 100644 --- a/source/test-resources/cluster-test/hazelcast-messenger-test.xml +++ b/source/test-resources/cluster-test/hazelcast-messenger-test.xml @@ -4,7 +4,7 @@ - + @@ -19,8 +19,4 @@ - - - - diff --git a/source/test-resources/cluster-test/jgroups-messenger-test.xml b/source/test-resources/cluster-test/jgroups-messenger-test.xml index 46f89844df..66cefab25b 100644 --- a/source/test-resources/cluster-test/jgroups-messenger-test.xml +++ b/source/test-resources/cluster-test/jgroups-messenger-test.xml @@ -16,12 +16,7 @@ - - - - - + \ No newline at end of file