[jbpm-commits] JBoss JBPM SVN: r6043 - in jbpm4/trunk: modules/distro/src/main/files/install/src/jboss/log and 6 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Dec 24 07:32:26 EST 2009


Author: tom.baeyens at jboss.com
Date: 2009-12-24 07:32:25 -0500 (Thu, 24 Dec 2009)
New Revision: 6043

Added:
   jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JmsNonXATopicListener.java
   jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JmsXATopicListener.java
Modified:
   jbpm4/trunk/modules/devguide/src/main/docbook/en/modules/ch02-Incubation.xml
   jbpm4/trunk/modules/distro/src/main/files/install/src/jboss/log/jboss-log4j.xml
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JmsActivity.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JmsBinding.java
   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
   jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/java/org/jbpm/test/jms/QueueExceptionTest.java
   jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/java/org/jbpm/test/jms/QueueMapMessageTest.java
   jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/java/org/jbpm/test/jms/QueueObjectMessageTest.java
   jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/java/org/jbpm/test/jms/QueueTextMessageTest.java
   jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/resources/org/jbpm/test/jms/queue.map.process.jpdl.xml
   jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/resources/org/jbpm/test/jms/queue.object.process.jpdl.xml
   jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/resources/org/jbpm/test/jms/queue.text.process.jpdl.xml
   jbpm4/trunk/qa/build.xml
Log:
JBPM-2695 jms split up between xa and non-xa usage

Modified: jbpm4/trunk/modules/devguide/src/main/docbook/en/modules/ch02-Incubation.xml
===================================================================
--- jbpm4/trunk/modules/devguide/src/main/docbook/en/modules/ch02-Incubation.xml	2009-12-24 11:46:37 UTC (rev 6042)
+++ jbpm4/trunk/modules/devguide/src/main/docbook/en/modules/ch02-Incubation.xml	2009-12-24 12:32:25 UTC (rev 6043)
@@ -930,11 +930,21 @@
   <section id="jms">
   
     <title><literal>jms</literal> activity</title>
+    <para>Disclaimer: this activity is not yet stable.  Two aspects will be revisisted 
+    in following releases:</para>
+    <itemizedlist>
+      <listitem>Binding the non-xa use of JMS to the standard transaction</listitem>
+      <listitem>We're still figuring out why in JBoss the java:JmsXA connection
+    factory doesn't implement XAConnectionFactory.  And that we have to use the 
+    non-XA JMS API's for sending and retrieving messages.  That is why we've 
+    put <literal>transacted="false"</literal> in our enterprise QA run processes 
+    (used for docs here).  And that is why we use method <literal>jmsConsumeMessageFromQueue("java:JmsXA", "queue/jbpm-test-queue", 1000, false, Session.AUTO_ACKNOWLEDGE);</literal>
+    in our test cases that run on JBoss (also used in docs here)</listitem>
+    </itemizedlist>
     <para>
       The <literal>jms</literal> activity provides users with convenience for sending JMS messages. 
       At this moment the sending of three different types of JMS messages is possible: text, object 
       and map. Specifying message properties is not yet supported.
-      In the future the functionality may be elaborated to cover this and more of the JMS specification.
     </para>
 
     <table><title><literal>jms</literal> attributes:</title>
@@ -993,7 +1003,14 @@
       that will be used to lookup the corresponding objects in JNDI.   The lookup is done like this:
     </para>
     <programlisting>InitialContext initialContext = new InitialContext();
-Destination destination = (Destination) initialContext.lookup(destinationName);</programlisting>
+Destination destination = (Destination) initialContext.lookup(destinationName);
+Object connectionFactory = initialContext.lookup(connectionFactoryName);</programlisting>
+    <para>The <literal>jms</literal> activity will use the JMS queue apis if the destination 
+    is an <literal>instanceof</literal> Queue.  Analogue for topics. 
+    </para>
+    <para>The <literal>jms</literal> activity will use the XA JMS apis if the connectionFactory 
+    is an <literal>instanceof</literal> XAConnectionFactory.  Analogue for plain ConnectionFactory's. 
+    </para>
     <para>So if you're running inside an appserver, then the <literal>new InitialContext()</literal> 
     will see the queue's and topics configured in the appserver.</para>
     <para>When your're using the JMS mocking 
@@ -1002,9 +1019,6 @@
     <para>When you're running as a remote application client, then you have to 
     <ulink url="http://java.sun.com/products/jndi/tutorial/beyond/env/source.html">specify 
     the jndi environment with system properties</ulink>.</para>
-    <para>The <literal>jms</literal> activity will use the JMS queue apis if the destination 
-    is an <literal>instanceof</literal> Queue.  Analogue for topics. 
-    </para>
 
     <table><title><literal>jms</literal> elements:</title>
       <tgroup cols="3" rowsep="1" colsep="1">
@@ -1060,10 +1074,14 @@
       <para>Following test helper methods are based solely on plain JMS apis and hence they work in 
       a standalone environment as well as in an appserver environment:</para>
       <itemizedlist>
-        <listitem>JbpmTestCase.jmsConsumeMessageFromQueue(String connectionFactoryJndiName, String queueJndiName)</listitem>
-        <listitem>JbpmTestCase.jmsConsumeMessageFromQueue(String connectionFactoryJndiName, String queueJndiName, boolean transacted, int acknowledgeMode, long timeout)</listitem>
-        <listitem>JbpmTestCase.jmsStartTopicListener(String connectionFactoryJndiName, String topicJndiName)</listitem>
+        <listitem>JbpmTestCase.jmsConsumeMessageFromQueue(String connectionFactoryJndiName, String queueJndiName) 
+          with defaults 1000, true, Session.AUTO_ACKNOWLEDGE for parameters timeout, transacted and acknowledgeMode respectively</listitem>
+        <listitem>JbpmTestCase.jmsConsumeMessageFromQueue(String connectionFactoryJndiName, String queueJndiName, long timeout, boolean transacted, int acknowledgeMode)</listitem>
+        <listitem>JbpmTestCase.jmsConsumeMessageFromQueueXA(String connectionFactoryJndiName, String queueJndiName, long timeout)</listitem>
+        <listitem>JbpmTestCase.jmsAssertQueueEmpty(String connectionFactoryJndiName, String queueJndiName, long timeout, boolean transacted, int acknowledgeMode)</listitem>
+        <listitem>JbpmTestCase.jmsAssertQueueEmptyXA(String connectionFactoryJndiName, String queueJndiName, long timeout)</listitem>
         <listitem>JbpmTestCase.jmsStartTopicListener(String connectionFactoryJndiName, String topicJndiName, boolean transacted, int acknowledgeMode)</listitem>
+        <listitem>JbpmTestCase.jmsStartTopicListenerXA(String connectionFactoryJndiName, String topicJndiName)</listitem>
         <listitem>JmsTopicListener.getNextMesssage(long timeout)</listitem>
         <listitem>JmsTopicListener.stop()</listitem>
       </itemizedlist>
@@ -1108,7 +1126,8 @@
 
   <emphasis role="bold">&lt;jms name=&quot;send message&quot;
        connection-factory=&quot;java:JmsXA&quot;
-       destination=&quot;queue/jbpm-test-queue&quot;&gt;
+       destination=&quot;queue/jbpm-test-queue&quot;
+       transacted=&quot;false&quot;&gt;
     &lt;text&gt;This is the body&lt;/text&gt;
     &lt;transition to=&quot;wait&quot;/&gt;
   &lt;/jms&gt;</emphasis>
@@ -1125,7 +1144,7 @@
       <programlisting>executionService.startProcessInstanceByKey("JmsQueueText");
 
 TextMessage textMessage = (TextMessage) 
-  jmsConsumeMessageFromQueue("java:JmsXA", "queue/jbpm-test-queue");
+  jmsConsumeMessageFromQueue("java:JmsXA", "queue/jbpm-test-queue", 1000, false, Session.AUTO_ACKNOWLEDGE);
 assertEquals("This is the body", textMessage.getText());</programlisting>
       <para>
         The relevant code is shown above in boldface. The rest of the method is boilerplate code needed to
@@ -1148,7 +1167,8 @@
 
   <emphasis role="bold">&lt;jms name=&quot;send message&quot;
        connection-factory=&quot;java:JmsXA&quot;
-       destination=&quot;queue/jbpm-test-queue&quot;&gt;
+       destination=&quot;queue/jbpm-test-queue&quot;
+       transacted=&quot;false&quot;&gt;
     &lt;object expr=&quot;${object}&quot;/&gt;
     &lt;transition to=&quot;wait&quot;/&gt;
   &lt;/jms&gt;</emphasis>
@@ -1167,7 +1187,7 @@
 executionService.startProcessInstanceByKey(&quot;JmsQueueObject&quot;, variables);
 
 ObjectMessage objectMessage = (ObjectMessage) 
-  jmsConsumeMessageFromQueue(&quot;java:JmsXA&quot;, &quot;queue/jbpm-test-queue&quot;);
+  jmsConsumeMessageFromQueue(&quot;java:JmsXA&quot;, &quot;queue/jbpm-test-queue&quot;, 1000, false, Session.AUTO_ACKNOWLEDGE);
 assertEquals(&quot;this is the object&quot;, objectMessage.getObject());</programlisting>
     </section>
     
@@ -1186,7 +1206,8 @@
 
   <emphasis role="bold">&lt;jms name=&quot;send message&quot;
        connection-factory=&quot;java:JmsXA&quot;
-       destination=&quot;queue/jbpm-test-queue&quot;&gt;
+       destination=&quot;queue/jbpm-test-queue&quot;
+       transacted=&quot;false&quot;&gt;
     &lt;map&gt;
       &lt;entry&gt;
         &lt;key&gt;&lt;string value=&quot;x&quot;/&gt;&lt;/key&gt;
@@ -1208,15 +1229,13 @@
       <programlisting>executionService.startProcessInstanceByKey("JmsQueueMap");
 
 MapMessage mapMessage = (MapMessage) 
-  jmsConsumeMessageFromQueue("java:JmsXA", "queue/jbpm-test-queue");
+  jmsConsumeMessageFromQueue("java:JmsXA", "queue/jbpm-test-queue", 1000, false, Session.AUTO_ACKNOWLEDGE);
 assertTrue(mapMessage.itemExists("x"));
 assertEquals("foo", mapMessage.getObject("x"));</programlisting>
     </section>
     
   </section>  
   
-    
-    
   <section>
   	<title>History session chain</title>
   	<para>

Modified: jbpm4/trunk/modules/distro/src/main/files/install/src/jboss/log/jboss-log4j.xml
===================================================================
--- jbpm4/trunk/modules/distro/src/main/files/install/src/jboss/log/jboss-log4j.xml	2009-12-24 11:46:37 UTC (rev 6042)
+++ jbpm4/trunk/modules/distro/src/main/files/install/src/jboss/log/jboss-log4j.xml	2009-12-24 12:32:25 UTC (rev 6043)
@@ -30,7 +30,7 @@
          so the full JBoss system property format is not supported; e.g.
          setting a default via ${jboss.server.log.threshold:WARN} will not work.         
        -->
-      <param name="Threshold" value="${jboss.server.log.threshold}"/>
+      <param name="Threshold" value="TRACE"/>
 
       <!-- Rollover at midnight each day -->
       <param name="DatePattern" value="'.'yyyy-MM-dd"/>
@@ -41,7 +41,7 @@
 
       <layout class="org.apache.log4j.PatternLayout">
          <!-- The default pattern: Date Priority [Category] (Thread) Message\n -->
-         <param name="ConversionPattern" value="%d %-5p [%c] (%t) %m%n"/>
+         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
 
          <!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n
          <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JmsActivity.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JmsActivity.java	2009-12-24 11:46:37 UTC (rev 6042)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JmsActivity.java	2009-12-24 12:32:25 UTC (rev 6043)
@@ -27,6 +27,7 @@
 import javax.jms.Destination;
 import javax.jms.MapMessage;
 import javax.jms.Message;
+import javax.jms.MessageProducer;
 import javax.jms.ObjectMessage;
 import javax.jms.Queue;
 import javax.jms.QueueConnection;
@@ -40,6 +41,13 @@
 import javax.jms.TopicConnectionFactory;
 import javax.jms.TopicPublisher;
 import javax.jms.TopicSession;
+import javax.jms.XAConnectionFactory;
+import javax.jms.XAQueueConnection;
+import javax.jms.XAQueueConnectionFactory;
+import javax.jms.XAQueueSession;
+import javax.jms.XATopicConnection;
+import javax.jms.XATopicConnectionFactory;
+import javax.jms.XATopicSession;
 import javax.naming.InitialContext;
 
 import org.jbpm.api.JbpmException;
@@ -74,16 +82,39 @@
       InitialContext initialContext = new InitialContext();
 
       Destination destination = (Destination) initialContext.lookup(destinationName);
-      if (destination instanceof Queue) {
-        QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) initialContext.lookup(connectionFactoryName);
-        sendToQueue((Queue) destination, queueConnectionFactory);
+      Object connectionFactory = initialContext.lookup(connectionFactoryName);
 
-      } else if (destination instanceof Topic) {
-        TopicConnectionFactory topicConnectionFactory = (TopicConnectionFactory) initialContext.lookup(connectionFactoryName);
-        sendToTopic((Topic) destination, topicConnectionFactory);
-        
-      } else {
-        throw new JbpmException("invalid destination type for '"+destinationName+"': "+destination.getClass().getName());
+      if (connectionFactory instanceof XAConnectionFactory) {
+        log.debug("connection factory '"+connectionFactoryName+"' is a XAConnectionFactory: using xa jms apis");
+        if (destination instanceof Queue) {
+          log.debug("destination '"+destinationName+"' is a Queue: using xa queue jms apis");
+          XAQueueConnectionFactory xaQueueConnectionFactory = (XAQueueConnectionFactory) connectionFactory;
+          sendToQueueXA((Queue) destination, xaQueueConnectionFactory);
+  
+        } else if (destination instanceof Topic) {
+          log.debug("destination '"+destinationName+"' is a Topic: using xa topic jms apis");
+          XATopicConnectionFactory xaTopicConnectionFactory = (XATopicConnectionFactory) connectionFactory;
+          sendToTopicXA((Topic) destination, xaTopicConnectionFactory);
+          
+        } else {
+          throw new JbpmException("invalid destination type for '"+destinationName+"': "+destination.getClass().getName());
+        }
+
+      } else { // non-XA
+        log.debug("connection factory '"+connectionFactoryName+"' is a ConnectionFactory: using non-xa jms apis");
+        if (destination instanceof Queue) {
+          log.debug("destination '"+destinationName+"' is a Queue: using non-xa queue jms apis");
+          QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) connectionFactory;
+          sendToQueue((Queue) destination, queueConnectionFactory);
+    
+        } else if (destination instanceof Topic) {
+          log.debug("destination '"+destinationName+"' is a Topic: using non-xa topic jms apis");
+          TopicConnectionFactory topicConnectionFactory = (TopicConnectionFactory) connectionFactory;
+          sendToTopic((Topic) destination, topicConnectionFactory);
+          
+        } else {
+          throw new JbpmException("invalid destination type for '"+destinationName+"': "+destination.getClass().getName());
+        }
       }
 
     } catch (RuntimeException e) {
@@ -96,7 +127,69 @@
     }
   }
 
-  private void sendToQueue(Queue queue, QueueConnectionFactory queueConnectionFactory) throws Exception {
+  protected void sendToQueueXA(Queue queue, XAQueueConnectionFactory xaQueueConnectionFactory) throws Exception {
+    XAQueueConnection xaQueueConnection = null;
+    XAQueueSession xaQueueSession = null;
+    MessageProducer messageProducer = null;
+
+    try {
+      xaQueueConnection = xaQueueConnectionFactory.createXAQueueConnection();
+      xaQueueSession = xaQueueConnection.createXAQueueSession();
+      messageProducer = xaQueueSession.createProducer(queue);
+      Message message = createMessage(xaQueueSession);
+      messageProducer.send(message);
+
+    } finally {
+      try {
+        messageProducer.close();
+      } catch (Exception e) {
+        e.printStackTrace();
+      }
+      try {
+        xaQueueSession.close();
+      } catch (Exception e) {
+        e.printStackTrace();
+      }
+      try {
+        xaQueueConnection.close();
+      } catch (Exception e) {
+        e.printStackTrace();
+      }
+    }
+  }
+
+  protected void sendToTopicXA(Topic topic, XATopicConnectionFactory xaTopicConnectionFactory) throws Exception {
+    XATopicConnection xaTopicConnection = null;
+    XATopicSession xaTopicSession = null;
+    MessageProducer messageProducer = null;
+    
+    try {
+      xaTopicConnection = xaTopicConnectionFactory.createXATopicConnection();
+      xaTopicSession = xaTopicConnection.createXATopicSession();
+      messageProducer = xaTopicSession.createProducer(topic);
+      Message message = createMessage(xaTopicSession);
+      messageProducer.send(message);
+
+    } finally {
+      try {
+        messageProducer.close();
+      } catch (Exception e) {
+        e.printStackTrace();
+      }
+      try {
+        xaTopicSession.close();
+      } catch (Exception e) {
+        e.printStackTrace();
+      }
+      try {
+        xaTopicConnection.close();
+      } catch (Exception e) {
+        e.printStackTrace();
+      }
+    }
+  }
+
+  protected void sendToQueue(Queue queue, QueueConnectionFactory queueConnectionFactory) throws Exception {
     QueueConnection queueConnection = null;
     QueueSession queueSession = null;
     QueueSender queueSender = null;
@@ -107,6 +200,9 @@
       queueSender = queueSession.createSender(queue);
       Message message = createMessage(queueSession);
       queueSender.send(message);
+      if (transacted) {
+        queueSession.commit();
+      }
 
     } finally {
       try {
@@ -127,7 +223,7 @@
     }
   }
 
-  private void sendToTopic(Topic topic, TopicConnectionFactory topicConnectionFactory) throws Exception {
+  protected void sendToTopic(Topic topic, TopicConnectionFactory topicConnectionFactory) throws Exception {
     TopicConnection topicConnection = null;
     TopicSession topicSession = null;
     TopicPublisher topicPublisher = null;
@@ -138,6 +234,9 @@
       topicPublisher = topicSession.createPublisher(topic);
       Message message = createMessage(topicSession);
       topicPublisher.send(message);
+      if (transacted) {
+        topicSession.commit();
+      }
 
     } finally {
       try {
@@ -158,7 +257,7 @@
     }
   }
 
-  private Message createMessage(Session session) throws Exception {
+  protected Message createMessage(Session session) throws Exception {
     if ("text".equals(type)) {
       return createTextMessage(session);
     } else if ("object".equals(type)) {

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JmsBinding.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JmsBinding.java	2009-12-24 11:46:37 UTC (rev 6042)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/JmsBinding.java	2009-12-24 12:32:25 UTC (rev 6043)
@@ -57,7 +57,7 @@
     jmsActivity.setDestinationName(destinationName);
 
     Boolean transacted = XmlUtil.attributeBoolean(element, "transacted", false, parse, null);
-    if (transacted != null) {
+    if (transacted!=null) {
       jmsActivity.setTransacted(transacted);
     }
 

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-24 11:46:37 UTC (rev 6042)
+++ jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JbpmTestCase.java	2009-12-24 12:32:25 UTC (rev 6043)
@@ -111,21 +111,25 @@
   }
   
   public static Object jmsConsumeMessageFromQueue(String connectionFactoryJndiName, String queueJndiName) {
-    return jmsConsumeMessageFromQueue(connectionFactoryJndiName, queueJndiName, true, Session.AUTO_ACKNOWLEDGE, 1000);
+    return jmsConsumeMessageFromQueue(connectionFactoryJndiName, queueJndiName, 1000, true, Session.AUTO_ACKNOWLEDGE);
   }
   
-  public static Object jmsConsumeMessageFromQueue(String connectionFactoryJndiName, String queueJndiName, boolean transacted, int acknowledgeMode, long timeout) {
-    return JmsExtensions.consumeMessageFromQueue(connectionFactoryJndiName, queueJndiName, transacted, acknowledgeMode, timeout);
+  public static Object jmsConsumeMessageFromQueue(String connectionFactoryJndiName, String queueJndiName, long timeout, boolean transacted, int acknowledgeMode) {
+    return JmsExtensions.consumeMessageFromQueue(connectionFactoryJndiName, queueJndiName, timeout, transacted, acknowledgeMode);
   }
   
-  public static void jmsAssertQueueEmpty(String connectionFactoryJndiName, String queueJndiName) {
-    jmsAssertQueueEmpty(connectionFactoryJndiName, queueJndiName, true, Session.AUTO_ACKNOWLEDGE, 1000);
+  public static Object jmsConsumeMessageFromQueueXA(String connectionFactoryJndiName, String queueJndiName, long timeout) {
+    return JmsExtensions.consumeMessageFromQueueXA(connectionFactoryJndiName, queueJndiName, timeout);
   }
-
-  public static void jmsAssertQueueEmpty(String connectionFactoryJndiName, String queueJndiName, boolean transacted, int acknowledgeMode, long timeout) {
-    JmsExtensions.jmsAssertQueueEmpty(connectionFactoryJndiName, queueJndiName, transacted, acknowledgeMode, timeout);
+  
+  public static void jmsAssertQueueEmpty(String connectionFactoryJndiName, String queueJndiName, long timeout, boolean transacted, int acknowledgeMode) {
+    JmsExtensions.jmsAssertQueueEmpty(connectionFactoryJndiName, queueJndiName, timeout, transacted, acknowledgeMode);
   }
   
+  public static void jmsAssertQueueEmptyXA(String connectionFactoryJndiName, String queueJndiName, long timeout) {
+    JmsExtensions.jmsAssertQueueEmptyXA(connectionFactoryJndiName, queueJndiName, timeout);
+  }
+  
   public static void jmsRemoveQueue(String connectionFactoryJndiName, String queueJndiName) {
     JmsExtensions.removeQueue(connectionFactoryJndiName, queueJndiName);
   }
@@ -134,12 +138,12 @@
     JmsExtensions.createTopic(connectionFactoryJndiName, topicJndiName);
   }
 
-  public static JmsTopicListener jmsStartTopicListener(String connectionFactoryJndiName, String topicJndiName) {
-    return jmsStartTopicListener(connectionFactoryJndiName, topicJndiName, true, 1);
+  public static JmsTopicListener jmsStartTopicListener(String connectionFactoryJndiName, String topicJndiName, boolean transacted, int acknowledgeMode) {
+    return new JmsNonXATopicListener(connectionFactoryJndiName, topicJndiName, transacted, acknowledgeMode);
   }
 
-  public static JmsTopicListener jmsStartTopicListener(String connectionFactoryJndiName, String topicJndiName, boolean transacted, int acknowledgeMode) {
-    return new JmsTopicListener(connectionFactoryJndiName, topicJndiName, transacted, acknowledgeMode);
+  public static JmsTopicListener jmsStartTopicListenerXA(String connectionFactoryJndiName, String topicJndiName) {
+    return new JmsXATopicListener(connectionFactoryJndiName, topicJndiName);
   }
 
   public static void jmsRemoveTopic(String connectionFactoryJndiName, String 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-24 11:46:37 UTC (rev 6042)
+++ jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JmsExtensions.java	2009-12-24 12:32:25 UTC (rev 6043)
@@ -29,8 +29,10 @@
 import javax.jms.Queue;
 import javax.jms.QueueConnection;
 import javax.jms.QueueConnectionFactory;
-import javax.jms.QueueSender;
 import javax.jms.QueueSession;
+import javax.jms.XAQueueConnection;
+import javax.jms.XAQueueConnectionFactory;
+import javax.jms.XAQueueSession;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
 
@@ -140,30 +142,77 @@
     return jmsMockObjectFactory;
   }
 
-  public static Object consumeMessageFromQueue(String connectionFactoryJndiName, String queueJndiName, boolean transacted, int acknowledgeMode, long timeout) {
+  public static Object consumeMessageFromQueueXA(String connectionFactoryJndiName, String queueJndiName, long timeout) {
     try {
       InitialContext context = new InitialContext();
+      Queue queue = (Queue)context.lookup(queueJndiName);
+      XAQueueConnectionFactory xaQueueConnectionFactory = (XAQueueConnectionFactory) context.lookup(connectionFactoryJndiName);
+      
+      XAQueueConnection xaQueueConnection = null;
+      XAQueueSession queueSession = null;
+      MessageConsumer messageConsumer = null;
+      try {
+        xaQueueConnection = xaQueueConnectionFactory.createXAQueueConnection();
+        xaQueueConnection.start();
+        queueSession = xaQueueConnection.createXAQueueSession();
+        messageConsumer = queueSession.createConsumer(queue);
+        Message message = messageConsumer.receive(timeout);
+        if (message==null) {
+          throw new AssertionFailedError("no message on queue "+queueJndiName);
+        }
+        return message;
+  
+      } finally {
+        try {
+          messageConsumer.close();
+        } catch (Exception e) {
+          e.printStackTrace();
+        }
+        try {
+          queueSession.close();
+        } catch (Exception e) {
+          e.printStackTrace();
+        }
+        try {
+          xaQueueConnection.close();
+        } catch (Exception e) {
+          e.printStackTrace();
+        }
+      }
+    } catch (RuntimeException e) {
+      throw e;
+    } catch (Exception e) {
+      throw new JbpmException("couldn't receive message from queue: "+e.getMessage(), e);
+    }
+  }
+
+  public static Message consumeMessageFromQueue(String connectionFactoryJndiName, String queueJndiName, long timeout, boolean transacted, int acknowledgeMode) {
+    try {
+      InitialContext context = new InitialContext();
       QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) context.lookup(connectionFactoryJndiName);
       Queue queue = (Queue)context.lookup(queueJndiName);
       
       QueueConnection queueConnection = null;
       QueueSession queueSession = null;
-      QueueSender queueSender = null;
-
+      MessageConsumer messageConsumer = null;
+      
       try {
         queueConnection = queueConnectionFactory.createQueueConnection();
         queueConnection.start();
         queueSession = queueConnection.createQueueSession(transacted, acknowledgeMode);
-        MessageConsumer messageConsumer = queueSession.createConsumer(queue);
+        messageConsumer = queueSession.createConsumer(queue);
         Message message = messageConsumer.receive(timeout);
         if (message==null) {
           throw new AssertionFailedError("no message on queue "+queueJndiName);
         }
+        if (transacted) {
+          queueSession.commit();
+        }
         return message;
-
+  
       } finally {
         try {
-          queueSender.close();
+          messageConsumer.close();
         } catch (Exception e) {
           e.printStackTrace();
         }
@@ -185,9 +234,9 @@
     }
   }
 
-  public static void jmsAssertQueueEmpty(String connectionFactoryJndiName, String queueJndiName, boolean transacted, int acknowledgeMode, long timeout) {
+  public static void jmsAssertQueueEmptyXA(String connectionFactoryJndiName, String queueJndiName, long timeout) {
     try {
-      consumeMessageFromQueue(connectionFactoryJndiName, queueJndiName, transacted, acknowledgeMode, timeout);
+      consumeMessageFromQueueXA(connectionFactoryJndiName, queueJndiName, timeout);
     } catch (AssertionFailedError e) {
       if (e.getMessage().startsWith("no message on queue")) {
         return;
@@ -195,4 +244,15 @@
     }
     throw new AssertionFailedError("message available on queue "+queueJndiName);
   }
+
+  public static void jmsAssertQueueEmpty(String connectionFactoryJndiName, String queueJndiName, long timeout, boolean transacted, int acknowledgeMode) {
+    try {
+      consumeMessageFromQueue(connectionFactoryJndiName, queueJndiName, timeout, transacted, acknowledgeMode);
+    } catch (AssertionFailedError e) {
+      if (e.getMessage().startsWith("no message on queue")) {
+        return;
+      }
+    }
+    throw new AssertionFailedError("message available on queue "+queueJndiName);
+  }
 }

Copied: jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JmsNonXATopicListener.java (from rev 6037, jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JmsTopicListener.java)
===================================================================
--- jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JmsNonXATopicListener.java	                        (rev 0)
+++ jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JmsNonXATopicListener.java	2009-12-24 12:32:25 UTC (rev 6043)
@@ -0,0 +1,152 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.test;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.Topic;
+import javax.jms.TopicConnection;
+import javax.jms.TopicConnectionFactory;
+import javax.jms.TopicSession;
+import javax.jms.TopicSubscriber;
+import javax.naming.InitialContext;
+
+import junit.framework.TestCase;
+
+import org.jbpm.internal.log.Log;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class JmsNonXATopicListener implements JmsTopicListener {
+  
+  private static Log log = Log.getLog(JmsNonXATopicListener.class.getName());
+
+  String topicJndiName = null;
+  String connectionFactoryJndiName = null;
+  boolean transacted;
+  int acknowledgeMode;
+  TopicConnectionFactory topicConnectionFactory = null;
+  Topic topic = null;
+  TopicConnection topicConnection = null;
+  TopicSession topicSession = null;
+  TopicSubscriber topicSubscriber = null;
+  
+  List<Message> messages = null;
+
+  JmsNonXATopicListener(String connectionFactoryJndiName, String topicJndiName, boolean transacted, int acknowledgeMode) {
+    this.connectionFactoryJndiName = connectionFactoryJndiName;
+    this.topicJndiName = topicJndiName;
+    this.transacted = transacted;
+    this.acknowledgeMode = acknowledgeMode;
+    start();
+  }
+
+  void start() {
+    try {
+      messages = Collections.synchronizedList(new ArrayList<Message>());
+
+      InitialContext context = new InitialContext();
+      topicConnectionFactory = (TopicConnectionFactory) context.lookup(connectionFactoryJndiName);
+      topic = (Topic) context.lookup(topicJndiName);
+      topicConnection = topicConnectionFactory.createTopicConnection();
+      topicSession = topicConnection.createTopicSession(transacted, acknowledgeMode);
+      topicSubscriber = topicSession.createSubscriber(topic);
+      topicSubscriber.setMessageListener(new Listener());
+
+      topicConnection.start();
+
+    } catch (Exception e) {
+      stop();
+      throw new RuntimeException("couldn't subscribe message listener to topic '"+topicJndiName+"': "+e.getMessage(), e);
+    }
+  }
+
+  private class Listener implements MessageListener {
+    public void onMessage(Message message) {
+      messages.add(message);
+    }
+  }
+
+  public void stop() {
+    if ( transacted && (topicSession!=null)) {
+      try {
+        topicSession.commit();
+      } catch (Exception e) {
+        e.printStackTrace();
+      }
+    }
+    if (topicConnection!=null) {
+      try {
+        topicConnection.stop();
+      } catch (Exception e) {
+        e.printStackTrace();
+      }
+    }
+    if (topicSubscriber!=null) {
+      try {
+        topicSubscriber.close();
+      } catch (Exception e) {
+        e.printStackTrace();
+      }
+      topicSubscriber = null;
+    }
+    if (topicSession!=null) {
+      try {
+        topicSession.close();
+      } catch (Exception e) {
+        e.printStackTrace();
+      }
+      topicSession = null;
+    }
+    if (topicConnection!=null) {
+      try {
+        topicConnection.close();
+      } catch (Exception e) {
+        e.printStackTrace();
+      }
+      topicConnection = null;
+    }
+  }
+
+  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");
+      }
+    }
+  }
+}


Property changes on: jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JmsNonXATopicListener.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

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-24 11:46:37 UTC (rev 6042)
+++ jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JmsTopicListener.java	2009-12-24 12:32:25 UTC (rev 6043)
@@ -21,141 +21,14 @@
  */
 package org.jbpm.test;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 import javax.jms.Message;
-import javax.jms.MessageListener;
-import javax.jms.Topic;
-import javax.jms.TopicConnection;
-import javax.jms.TopicConnectionFactory;
-import javax.jms.TopicSession;
-import javax.jms.TopicSubscriber;
-import javax.naming.InitialContext;
 
-import junit.framework.TestCase;
-
-import org.jbpm.internal.log.Log;
-
-
 /**
  * @author Tom Baeyens
  */
-public class JmsTopicListener {
-  
-  private static Log log = Log.getLog(JmsTopicListener.class.getName());
+public interface JmsTopicListener {
 
-  static Map<Object, JmsTopicListener> topicListeners = new HashMap<Object, JmsTopicListener>();
-  
-  String topicJndiName = null;
-  String connectionFactoryJndiName = null;
-  boolean transacted;
-  int acknowledgeMode;
-  TopicConnectionFactory topicConnectionFactory = null;
-  Topic topic = null;
-  TopicConnection topicConnection = null;
-  TopicSession topicSession = null;
-  TopicSubscriber topicSubscriber = null;
-  
-  List<Message> messages = null;
+  Message getNextMessage(long timeout);
 
-  static Object createJmsTopicListenerKey(String connectionFactoryJndiName, String topicJndiName) {
-    List<String> topicListenerKey = new ArrayList<String>();
-    topicListenerKey.add(connectionFactoryJndiName);
-    topicListenerKey.add(topicJndiName);
-    return topicListenerKey;
-  }
-
-  static JmsTopicListener getJmsTopicListener(String connectionFactoryJndiName, String topicJndiName) {
-    return topicListeners.get(createJmsTopicListenerKey(connectionFactoryJndiName, topicJndiName));
-  }
-
-  JmsTopicListener(String connectionFactoryJndiName, String topicJndiName, boolean transacted, int acknowledgeMode) {
-    this.connectionFactoryJndiName = connectionFactoryJndiName;
-    this.topicJndiName = topicJndiName;
-    this.transacted = transacted;
-    this.acknowledgeMode = acknowledgeMode;
-    topicListeners.put(createJmsTopicListenerKey(connectionFactoryJndiName, topicJndiName), this);
-    start();
-  }
-
-  void start() {
-    try {
-      messages = Collections.synchronizedList(new ArrayList<Message>());
-
-      InitialContext context = new InitialContext();
-      topicConnectionFactory = (TopicConnectionFactory) context.lookup(connectionFactoryJndiName);
-      topic = (Topic) context.lookup(topicJndiName);
-      topicConnection = topicConnectionFactory.createTopicConnection();
-      topicSession = topicConnection.createTopicSession(transacted, acknowledgeMode);
-      topicSubscriber = topicSession.createSubscriber(topic);
-      topicSubscriber.setMessageListener(new Listener());
-
-      topicConnection.start();
-
-    } catch (Exception e) {
-      stop();
-      throw new RuntimeException("couldn't subscribe message listener to topic '"+topicJndiName+"': "+e.getMessage(), e);
-    }
-  }
-
-  private class Listener implements MessageListener {
-    public void onMessage(Message message) {
-      messages.add(message);
-    }
-  }
-
-  public void stop() {
-    if (topicConnection!=null) {
-      try {
-        topicConnection.stop();
-      } catch (Exception e) {
-        e.printStackTrace();
-      }
-    }
-    if (topicSubscriber!=null) {
-      try {
-        topicSubscriber.close();
-      } catch (Exception e) {
-        e.printStackTrace();
-      }
-      topicSubscriber = null;
-    }
-    if (topicSession!=null) {
-      try {
-        topicSession.close();
-      } catch (Exception e) {
-        e.printStackTrace();
-      }
-      topicSession = null;
-    }
-    if (topicConnection!=null) {
-      try {
-        topicConnection.close();
-      } catch (Exception e) {
-        e.printStackTrace();
-      }
-      topicConnection = null;
-    }
-  }
-
-  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");
-      }
-    }
-  }
-}
+  void stop();
+}
\ No newline at end of file

Added: jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JmsXATopicListener.java
===================================================================
--- jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JmsXATopicListener.java	                        (rev 0)
+++ jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JmsXATopicListener.java	2009-12-24 12:32:25 UTC (rev 6043)
@@ -0,0 +1,141 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.test;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageListener;
+import javax.jms.Topic;
+import javax.jms.XATopicConnection;
+import javax.jms.XATopicConnectionFactory;
+import javax.jms.XATopicSession;
+import javax.naming.InitialContext;
+
+import junit.framework.TestCase;
+
+import org.jbpm.internal.log.Log;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class JmsXATopicListener implements JmsTopicListener {
+
+  private static Log log = Log.getLog(JmsXATopicListener.class.getName());
+
+  String topicJndiName = null;
+  String connectionFactoryJndiName = null;
+  Topic topic = null;
+  XATopicConnectionFactory topicConnectionFactory = null;
+  XATopicConnection topicConnection = null;
+  XATopicSession topicSession = null;
+  MessageConsumer messageConsumer = null;
+  
+  List<Message> messages = null;
+
+  JmsXATopicListener(String connectionFactoryJndiName, String topicJndiName) {
+    this.connectionFactoryJndiName = connectionFactoryJndiName;
+    this.topicJndiName = topicJndiName;
+    start();
+  }
+
+  void start() {
+    try {
+      messages = Collections.synchronizedList(new ArrayList<Message>());
+
+      InitialContext context = new InitialContext();
+      topicConnectionFactory = (XATopicConnectionFactory) context.lookup(connectionFactoryJndiName);
+      topic = (Topic) context.lookup(topicJndiName);
+      topicConnection = topicConnectionFactory.createXATopicConnection();
+      topicSession = topicConnection.createXATopicSession();
+      messageConsumer = topicSession.createConsumer(topic);
+      messageConsumer.setMessageListener(new Listener());
+
+      topicConnection.start();
+
+    } catch (Exception e) {
+      stop();
+      throw new RuntimeException("couldn't subscribe message listener to topic '"+topicJndiName+"': "+e.getMessage(), e);
+    }
+  }
+
+  private class Listener implements MessageListener {
+    public void onMessage(Message message) {
+      messages.add(message);
+    }
+  }
+
+  public void stop() {
+    if (topicConnection!=null) {
+      try {
+        topicConnection.stop();
+      } catch (Exception e) {
+        e.printStackTrace();
+      }
+    }
+    if (messageConsumer!=null) {
+      try {
+        messageConsumer.close();
+      } catch (Exception e) {
+        e.printStackTrace();
+      }
+      messageConsumer = null;
+    }
+    if (topicSession!=null) {
+      try {
+        topicSession.close();
+      } catch (Exception e) {
+        e.printStackTrace();
+      }
+      topicSession = null;
+    }
+    if (topicConnection!=null) {
+      try {
+        topicConnection.close();
+      } catch (Exception e) {
+        e.printStackTrace();
+      }
+      topicConnection = null;
+    }
+  }
+
+  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");
+      }
+    }
+  }
+}


Property changes on: jbpm4/trunk/modules/test-base/src/main/java/org/jbpm/test/JmsXATopicListener.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

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-24 11:46:37 UTC (rev 6042)
+++ jbpm4/trunk/modules/test-cfg/src/test/java/org/jbpm/test/jms/JmsTopicTest.java	2009-12-24 12:32:25 UTC (rev 6043)
@@ -22,6 +22,7 @@
 package org.jbpm.test.jms;
 
 import javax.jms.MapMessage;
+import javax.jms.Session;
 
 import org.jbpm.test.JbpmCustomCfgTestCase;
 import org.jbpm.test.JmsTopicListener;
@@ -43,7 +44,7 @@
         .deploy();
     
     jmsCreateTopic("jms/ConnectionFactory", "topic/ProductTopic");
-    jmsTopicListener = jmsStartTopicListener("jms/ConnectionFactory", "topic/ProductTopic");
+    jmsTopicListener = jmsStartTopicListener("jms/ConnectionFactory", "topic/ProductTopic", true, Session.AUTO_ACKNOWLEDGE);
   }
 
   protected void tearDown() throws Exception {

Modified: jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/java/org/jbpm/test/jms/QueueExceptionTest.java
===================================================================
--- jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/java/org/jbpm/test/jms/QueueExceptionTest.java	2009-12-24 11:46:37 UTC (rev 6042)
+++ jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/java/org/jbpm/test/jms/QueueExceptionTest.java	2009-12-24 12:32:25 UTC (rev 6043)
@@ -53,7 +53,7 @@
       // OK
     }
 
-    jmsAssertQueueEmpty("java:JmsXA", "queue/jbpm-test-queue");
+    jmsAssertQueueEmptyXA("java:JmsXA", "queue/jbpm-test-queue", 1000);
     
     assertEquals(0, executionService.createProcessInstanceQuery().list().size());
   }

Modified: jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/java/org/jbpm/test/jms/QueueMapMessageTest.java
===================================================================
--- jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/java/org/jbpm/test/jms/QueueMapMessageTest.java	2009-12-24 11:46:37 UTC (rev 6042)
+++ jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/java/org/jbpm/test/jms/QueueMapMessageTest.java	2009-12-24 12:32:25 UTC (rev 6043)
@@ -22,6 +22,7 @@
 package org.jbpm.test.jms;
 
 import javax.jms.MapMessage;
+import javax.jms.Session;
 
 import junit.framework.Test;
 
@@ -44,7 +45,7 @@
 
   public void testQueueMapMessage() throws Exception {
     executionService.startProcessInstanceByKey("JmsQueueMap");
-    MapMessage mapMessage = (MapMessage) jmsConsumeMessageFromQueue("java:JmsXA", "queue/jbpm-test-queue");
+    MapMessage mapMessage = (MapMessage) jmsConsumeMessageFromQueue("java:JmsXA", "queue/jbpm-test-queue", 1000, false, Session.AUTO_ACKNOWLEDGE);
     assertTrue(mapMessage.itemExists("x"));
     assertEquals("foo", mapMessage.getObject("x"));
   }

Modified: jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/java/org/jbpm/test/jms/QueueObjectMessageTest.java
===================================================================
--- jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/java/org/jbpm/test/jms/QueueObjectMessageTest.java	2009-12-24 11:46:37 UTC (rev 6042)
+++ jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/java/org/jbpm/test/jms/QueueObjectMessageTest.java	2009-12-24 12:32:25 UTC (rev 6043)
@@ -25,6 +25,7 @@
 import java.util.Map;
 
 import javax.jms.ObjectMessage;
+import javax.jms.Session;
 
 import junit.framework.Test;
 
@@ -51,7 +52,7 @@
     Map<String, Object> variables = new HashMap<String, Object>();
     variables.put("object", "this is the object");
     executionService.startProcessInstanceByKey("JmsQueueObject", variables);
-    ObjectMessage objectMessage = (ObjectMessage) jmsConsumeMessageFromQueue("java:JmsXA", "queue/jbpm-test-queue");
+    ObjectMessage objectMessage = (ObjectMessage) jmsConsumeMessageFromQueue("java:JmsXA", "queue/jbpm-test-queue", 1000, false, Session.AUTO_ACKNOWLEDGE);
     assertEquals("this is the object", objectMessage.getObject());
   }
 

Modified: jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/java/org/jbpm/test/jms/QueueTextMessageTest.java
===================================================================
--- jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/java/org/jbpm/test/jms/QueueTextMessageTest.java	2009-12-24 11:46:37 UTC (rev 6042)
+++ jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/java/org/jbpm/test/jms/QueueTextMessageTest.java	2009-12-24 12:32:25 UTC (rev 6043)
@@ -21,11 +21,13 @@
  */
 package org.jbpm.test.jms;
 
+import javax.jms.Session;
 import javax.jms.TextMessage;
 
 import junit.framework.Test;
 
 import org.apache.cactus.ServletTestSuite;
+import org.jbpm.pvm.internal.tx.JtaTransaction;
 import org.jbpm.test.JbpmTestCase;
 
 public class QueueTextMessageTest extends JbpmTestCase {
@@ -45,7 +47,7 @@
   
   public void testQueueTextMessage() throws Exception {
     executionService.startProcessInstanceByKey("JmsQueueText");
-    TextMessage textMessage = (TextMessage) jmsConsumeMessageFromQueue("java:JmsXA", "queue/jbpm-test-queue");
+    TextMessage textMessage = (TextMessage) jmsConsumeMessageFromQueue("java:JmsXA", "queue/jbpm-test-queue", 1000, false, Session.AUTO_ACKNOWLEDGE);
     assertEquals("This is the body", textMessage.getText());
   }
 }

Modified: jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/resources/org/jbpm/test/jms/queue.map.process.jpdl.xml
===================================================================
--- jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/resources/org/jbpm/test/jms/queue.map.process.jpdl.xml	2009-12-24 11:46:37 UTC (rev 6042)
+++ jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/resources/org/jbpm/test/jms/queue.map.process.jpdl.xml	2009-12-24 12:32:25 UTC (rev 6043)
@@ -9,6 +9,7 @@
   <jms name="send message" 
         connection-factory="java:JmsXA"
         destination="queue/jbpm-test-queue"
+        transacted="false"
         g="96,16,83,52">
     <map>
       <entry>

Modified: jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/resources/org/jbpm/test/jms/queue.object.process.jpdl.xml
===================================================================
--- jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/resources/org/jbpm/test/jms/queue.object.process.jpdl.xml	2009-12-24 11:46:37 UTC (rev 6042)
+++ jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/resources/org/jbpm/test/jms/queue.object.process.jpdl.xml	2009-12-24 12:32:25 UTC (rev 6043)
@@ -9,6 +9,7 @@
   <jms name="send message" 
         connection-factory="java:JmsXA"
         destination="queue/jbpm-test-queue"
+        transacted="false"
         g="96,16,83,52">
     <object expr="${object}"/>
     <transition to="wait" />

Modified: jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/resources/org/jbpm/test/jms/queue.text.process.jpdl.xml
===================================================================
--- jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/resources/org/jbpm/test/jms/queue.text.process.jpdl.xml	2009-12-24 11:46:37 UTC (rev 6042)
+++ jbpm4/trunk/modules/test-enterprise/test-enterprise-suite/src/test/resources/org/jbpm/test/jms/queue.text.process.jpdl.xml	2009-12-24 12:32:25 UTC (rev 6043)
@@ -9,6 +9,7 @@
   <jms name="send message" 
         connection-factory="java:JmsXA"
         destination="queue/jbpm-test-queue"
+        transacted="false"
         g="96,16,83,52">
     <text>This is the body</text>    
     <transition to="wait" />

Modified: jbpm4/trunk/qa/build.xml
===================================================================
--- jbpm4/trunk/qa/build.xml	2009-12-24 11:46:37 UTC (rev 6042)
+++ jbpm4/trunk/qa/build.xml	2009-12-24 12:32:25 UTC (rev 6043)
@@ -187,6 +187,7 @@
           description="reinstalls jbpm, reinstalls jboss, installs jbpm into jboss, starts jboss and then creates the jbpm schema">
     <ant antfile="${jbpm.home}/install/build.xml" target="start.hsqldb.server" />
     <ant antfile="${jbpm.home}/install/build.xml" target="create.jbpm.schema" />
+    <ant antfile="${jbpm.home}/install/build.xml" target="enable.jboss.debug" />
     <ant antfile="${jbpm.home}/install/build.xml" target="start.jboss" />
   </target>
 



More information about the jbpm-commits mailing list