[jbpm-commits] JBoss JBPM SVN: r6030 - in jbpm4/trunk/modules: test-cfg/src/test/java/org/jbpm/test/jms and 1 other directory.
do-not-reply at jboss.org
do-not-reply at jboss.org
Wed Dec 23 06:42:13 EST 2009
Author: tom.baeyens at jboss.com
Date: 2009-12-23 06:42:13 -0500 (Wed, 23 Dec 2009)
New Revision: 6030
Modified:
jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JbpmTestCase.java
jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JmsExtensions.java
jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JmsTopicListener.java
jbpm4/trunk/modules/test-cfg/src/test/java/org/jbpm/test/jms/JmsTopicTest.java
Log:
JBPM-2695 changed topic listener support from exposing a List to JmsTopicListener.getNextMessage(long timeout)
Modified: jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JbpmTestCase.java
===================================================================
--- jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JbpmTestCase.java 2009-12-23 10:44:10 UTC (rev 6029)
+++ jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JbpmTestCase.java 2009-12-23 11:42:13 UTC (rev 6030)
@@ -126,14 +126,10 @@
JmsExtensions.createTopic(connectionFactoryJndiName, topicJndiName);
}
- public static List<Object> jmsStartTopicListener(String connectionFactoryJndiName, String topicJndiName) {
- return JmsExtensions.startTopicListener(connectionFactoryJndiName, topicJndiName);
+ public static JmsTopicListener jmsStartTopicListener(String connectionFactoryJndiName, String topicJndiName) {
+ return new JmsTopicListener(connectionFactoryJndiName, topicJndiName);
}
- public static void jmsStopTopicListener(String connectionFactoryJndiName, String topicJndiName) {
- JmsExtensions.stopTopicListener(connectionFactoryJndiName, topicJndiName);
- }
-
public static void jmsRemoveTopic(String connectionFactoryJndiName, String topicJndiName) {
JmsExtensions.removeTopic(connectionFactoryJndiName, topicJndiName);
}
Modified: jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JmsExtensions.java
===================================================================
--- jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JmsExtensions.java 2009-12-23 10:44:10 UTC (rev 6029)
+++ jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JmsExtensions.java 2009-12-23 11:42:13 UTC (rev 6030)
@@ -22,7 +22,6 @@
package org.jbpm.test;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
import javax.jms.Message;
@@ -141,22 +140,6 @@
return jmsMockObjectFactory;
}
- public static List<Object> startTopicListener(String connectionFactoryJndiName, String topicJndiName) {
- JmsTopicListener jmsTopicListener = JmsTopicListener.getJmsTopicListener(connectionFactoryJndiName, topicJndiName);
- if (jmsTopicListener==null) {
- jmsTopicListener = new JmsTopicListener(connectionFactoryJndiName, topicJndiName);
- }
-
- return jmsTopicListener.getMessages();
- }
-
- public static void stopTopicListener(String connectionFactoryJndiName, String topicJndiName) {
- JmsTopicListener jmsTopicListener = JmsTopicListener.getJmsTopicListener(connectionFactoryJndiName, topicJndiName);
- if (jmsTopicListener!=null) {
- jmsTopicListener.stop();
- }
- }
-
public static Object consumeMessageFromQueue(String connectionFactoryJndiName, String queueJndiName, boolean transacted, int acknowledgeMode, long timeout) {
try {
InitialContext context = new InitialContext();
Modified: jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JmsTopicListener.java
===================================================================
--- jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JmsTopicListener.java 2009-12-23 10:44:10 UTC (rev 6029)
+++ jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JmsTopicListener.java 2009-12-23 11:42:13 UTC (rev 6030)
@@ -37,45 +37,49 @@
import javax.jms.TopicSubscriber;
import javax.naming.InitialContext;
+import junit.framework.TestCase;
+import org.jbpm.internal.log.Log;
+
+
/**
* @author Tom Baeyens
*/
-public class JmsTopicListener implements MessageListener {
+public class JmsTopicListener {
+
+ private static Log log = Log.getLog(JmsTopicListener.class.getName());
static Map<Object, JmsTopicListener> topicListeners = new HashMap<Object, JmsTopicListener>();
+ String topicJndiName = null;
TopicConnectionFactory topicConnectionFactory = null;
Topic topic = null;
TopicConnection topicConnection = null;
TopicSession topicSession = null;
TopicSubscriber topicSubscriber = null;
- List<Object> messages = null;
+ List<Message> messages = null;
- public void onMessage(Message message) {
- messages.add(message);
- }
-
- public static Object createJmsTopicListenerKey(String connectionFactoryJndiName, String topicJndiName) {
+ static Object createJmsTopicListenerKey(String connectionFactoryJndiName, String topicJndiName) {
List<String> topicListenerKey = new ArrayList<String>();
topicListenerKey.add(connectionFactoryJndiName);
topicListenerKey.add(topicJndiName);
return topicListenerKey;
}
- public static JmsTopicListener getJmsTopicListener(String connectionFactoryJndiName, String topicJndiName) {
+ static JmsTopicListener getJmsTopicListener(String connectionFactoryJndiName, String topicJndiName) {
return topicListeners.get(createJmsTopicListenerKey(connectionFactoryJndiName, topicJndiName));
}
- public JmsTopicListener(String connectionFactoryJndiName, String topicJndiName) {
+ JmsTopicListener(String connectionFactoryJndiName, String topicJndiName) {
start(connectionFactoryJndiName, topicJndiName);
topicListeners.put(createJmsTopicListenerKey(connectionFactoryJndiName, topicJndiName), this);
}
- private void start(String connectionFactoryJndiName, String topicJndiName) {
+ void start(String connectionFactoryJndiName, String topicJndiName) {
try {
- messages = Collections.synchronizedList(new ArrayList<Object>());
+ messages = Collections.synchronizedList(new ArrayList<Message>());
+ this.topicJndiName = topicJndiName;
InitialContext context = new InitialContext();
topicConnectionFactory = (TopicConnectionFactory) context.lookup(connectionFactoryJndiName);
@@ -83,7 +87,7 @@
topicConnection = topicConnectionFactory.createTopicConnection();
topicSession = topicConnection.createTopicSession(true, QueueSession.AUTO_ACKNOWLEDGE);
topicSubscriber = topicSession.createSubscriber(topic);
- topicSubscriber.setMessageListener(this);
+ topicSubscriber.setMessageListener(new Listener());
topicConnection.start();
@@ -93,6 +97,12 @@
}
}
+ private class Listener implements MessageListener {
+ public void onMessage(Message message) {
+ messages.add(message);
+ }
+ }
+
public void stop() {
if (topicConnection!=null) {
try {
@@ -127,7 +137,20 @@
}
}
- public List<Object> getMessages() {
- return messages;
+ public Message getNextMessage(long timeout) {
+ long start = System.currentTimeMillis();
+ while (true) {
+ if (!messages.isEmpty()) {
+ return messages.remove(0);
+ }
+ if (System.currentTimeMillis()-start > timeout) {
+ TestCase.fail("no message for topic "+topicJndiName);
+ }
+ try {
+ Thread.sleep(200);
+ } catch (InterruptedException e) {
+ log.info("waiting for next message got interrupted");
+ }
+ }
}
}
Modified: jbpm4/trunk/modules/test-cfg/src/test/java/org/jbpm/test/jms/JmsTopicTest.java
===================================================================
--- jbpm4/trunk/modules/test-cfg/src/test/java/org/jbpm/test/jms/JmsTopicTest.java 2009-12-23 10:44:10 UTC (rev 6029)
+++ jbpm4/trunk/modules/test-cfg/src/test/java/org/jbpm/test/jms/JmsTopicTest.java 2009-12-23 11:42:13 UTC (rev 6030)
@@ -21,11 +21,10 @@
*/
package org.jbpm.test.jms;
-import java.util.List;
-
import javax.jms.MapMessage;
import org.jbpm.test.JbpmCustomCfgTestCase;
+import org.jbpm.test.JmsTopicListener;
/**
@@ -34,7 +33,7 @@
public class JmsTopicTest extends JbpmCustomCfgTestCase {
String deploymentId;
- List<Object> messages;
+ JmsTopicListener jmsTopicListener;
protected void setUp() throws Exception {
super.setUp();
@@ -44,11 +43,11 @@
.deploy();
jmsCreateTopic("jms/ConnectionFactory", "topic/ProductTopic");
- messages = jmsStartTopicListener("jms/ConnectionFactory", "topic/ProductTopic");
+ jmsTopicListener = jmsStartTopicListener("jms/ConnectionFactory", "topic/ProductTopic");
}
protected void tearDown() throws Exception {
- jmsStopTopicListener("jms/ConnectionFactory", "topic/ProductTopic");
+ jmsTopicListener.stop();
jmsRemoveTopic("jms/ConnectionFactory", "topic/ProductTopic");
repositoryService.deleteDeploymentCascade(deploymentId);
@@ -59,9 +58,7 @@
public void testTestTopicMessage() throws Exception {
executionService.startProcessInstanceByKey("JmsTopic");
- assertEquals(messages.toString(), 1, messages.size());
-
- MapMessage mapMessage = (MapMessage) messages.get(0);
+ MapMessage mapMessage = (MapMessage) jmsTopicListener.getNextMessage(1000);
assertEquals("shampoo", mapMessage.getString("product"));
}
More information about the jbpm-commits
mailing list