Author: arnaudsimon
Date: Mon Nov  5 03:03:29 2007
New Revision: 591957

URL: http://svn.apache.org/viewvc?rev=591957&view=rev
Log:
changed to only run dtx tests when the broker version is not 0_8

Modified:
    
incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/xa/QueueTests.java

Modified: 
incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/xa/QueueTests.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/xa/QueueTests.java?rev=591957&r1=591956&r2=591957&view=diff
==============================================================================
--- 
incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/xa/QueueTests.java
 (original)
+++ 
incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/xa/QueueTests.java
 Mon Nov  5 03:03:29 2007
@@ -86,7 +86,9 @@
     private static int _xidCounter = 0;
 
     /** 
-----------------------------------------------------------------------------------
 **/
-    /** ----------------------------- JUnit support  
----------------------------------------- **/
+    /**
+     * ----------------------------- JUnit support  
----------------------------------------- *
+     */
 
     protected void setUp() throws Exception
     {
@@ -122,90 +124,93 @@
      */
     public void testInit()
     {
-        // lookup test queue
-        try
+        if (!isBroker08())
         {
-            _queue = (Queue) getInitialContext().lookup(QUEUENAME);
-        }
-        catch (Exception e)
-        {
-            fail("cannot lookup test queue " + e.getMessage());
-        }
+            // lookup test queue
+            try
+            {
+                _queue = (Queue) getInitialContext().lookup(QUEUENAME);
+            }
+            catch (Exception e)
+            {
+                fail("cannot lookup test queue " + e.getMessage());
+            }
 
-        // lookup connection factory
-        try
-        {
-            _queueFactory = getConnectionFactory();
-        }
-        catch (Exception e)
-        {
-            fail("enable to lookup connection factory ");
-        }
-        // create standard connection
-        try
-        {
-            _queueConnection = getNewQueueXAConnection();
-        }
-        catch (JMSException e)
-        {
-            fail("cannot create queue connection: " + e.getMessage());
-        }
-        // create xa session
-        try
-        {
-            _session = _queueConnection.createXAQueueSession();
-        }
-        catch (JMSException e)
-        {
-            fail("cannot create queue session: " + e.getMessage());
-        }
-        // create a standard session
-        try
-        {
-            _nonXASession = _queueConnection.createQueueSession(true, 
Session.AUTO_ACKNOWLEDGE);
-        }
-        catch (JMSException e)
-        {
-            fail("cannot create queue session: " + e.getMessage());
-        }
-        // get the xaResource
-        try
-        {
-            _xaResource = _session.getXAResource();
-        }
-        catch (Exception e)
-        {
-            fail("cannot access the xa resource: " + e.getMessage());
-        }
-        // create standard producer
-        try
-        {
-            _producer = _session.createProducer(_queue);
-            _producer.setDeliveryMode(DeliveryMode.PERSISTENT);
-        }
-        catch (JMSException e)
-        {
-            e.printStackTrace();
-            fail("cannot create message producer: " + e.getMessage());
-        }
-        // create standard consumer
-        try
-        {
-            _consumer = _session.createConsumer(_queue);
-        }
-        catch (JMSException e)
-        {
-            fail("cannot create message consumer: " + e.getMessage());
-        }
-        // create a standard message
-        try
-        {
-            _message = _session.createTextMessage();
-            _message.setText("test XA");
-        }
-        catch (JMSException e)
-        {
-            fail("cannot create standard message: " + e.getMessage());
+            // lookup connection factory
+            try
+            {
+                _queueFactory = getConnectionFactory();
+            }
+            catch (Exception e)
+            {
+                fail("enable to lookup connection factory ");
+            }
+            // create standard connection
+            try
+            {
+                _queueConnection = getNewQueueXAConnection();
+            }
+            catch (JMSException e)
+            {
+                fail("cannot create queue connection: " + e.getMessage());
+            }
+            // create xa session
+            try
+            {
+                _session = _queueConnection.createXAQueueSession();
+            }
+            catch (JMSException e)
+            {
+                fail("cannot create queue session: " + e.getMessage());
+            }
+            // create a standard session
+            try
+            {
+                _nonXASession = _queueConnection.createQueueSession(true, 
Session.AUTO_ACKNOWLEDGE);
+            }
+            catch (JMSException e)
+            {
+                fail("cannot create queue session: " + e.getMessage());
+            }
+            // get the xaResource
+            try
+            {
+                _xaResource = _session.getXAResource();
+            }
+            catch (Exception e)
+            {
+                fail("cannot access the xa resource: " + e.getMessage());
+            }
+            // create standard producer
+            try
+            {
+                _producer = _session.createProducer(_queue);
+                _producer.setDeliveryMode(DeliveryMode.PERSISTENT);
+            }
+            catch (JMSException e)
+            {
+                e.printStackTrace();
+                fail("cannot create message producer: " + e.getMessage());
+            }
+            // create standard consumer
+            try
+            {
+                _consumer = _session.createConsumer(_queue);
+            }
+            catch (JMSException e)
+            {
+                fail("cannot create message consumer: " + e.getMessage());
+            }
+            // create a standard message
+            try
+            {
+                _message = _session.createTextMessage();
+                _message.setText("test XA");
+            }
+            catch (JMSException e)
+            {
+                fail("cannot create standard message: " + e.getMessage());
+            }
         }
     }
 
@@ -217,143 +222,146 @@
      */
     public void testProducer()
     {
-        Xid xid1 = getNewXid();
-        Xid xid2 = getNewXid();
-        // start the xaResource for xid1
-        try
-        {
-            _xaResource.start(xid1, XAResource.TMSUCCESS);
-        }
-        catch (XAException e)
-        {
-            e.printStackTrace();
-            fail("cannot start the transaction with xid1: " + e.getMessage());
-        }
-        try
-        {
-            // start the connection
-            _queueConnection.start();
-            // produce a message with sequence number 1
-            _message.setLongProperty(_sequenceNumberPropertyName, 1);
-            _producer.send(_message);
-        }
-        catch (JMSException e)
-        {
-            fail(" cannot send persistent message: " + e.getMessage());
-        }
-        // suspend the transaction
-        try
+        if (!isBroker08())
         {
-            _xaResource.end(xid1, XAResource.TMSUSPEND);
-        }
-        catch (XAException e)
-        {
-            fail("Cannot end the transaction with xid1: " + e.getMessage());
-        }
-        // start the xaResource for xid2
-        try
-        {
-            _xaResource.start(xid2, XAResource.TMSUCCESS);
-        }
-        catch (XAException e)
-        {
-            fail("cannot start the transaction with xid2: " + e.getMessage());
-        }
-        try
-        {
-            // produce a message
-            _message.setLongProperty(_sequenceNumberPropertyName, 2);
-            _producer.send(_message);
-        }
-        catch (JMSException e)
-        {
-            fail(" cannot send second persistent message: " + e.getMessage());
-        }
-        // end xid2 and start xid1
-        try
-        {
-            _xaResource.end(xid2, XAResource.TMSUCCESS);
-            _xaResource.start(xid1, XAResource.TMRESUME);
-        }
-        catch (XAException e)
-        {
-            fail("Exception when ending and starting transactions: " + 
e.getMessage());
-        }
-        // two phases commit transaction with xid2
-        try
-        {
-            int resPrepare = _xaResource.prepare(xid2);
-            if (resPrepare != XAResource.XA_OK)
+            Xid xid1 = getNewXid();
+            Xid xid2 = getNewXid();
+            // start the xaResource for xid1
+            try
             {
-                fail("prepare returned: " + resPrepare);
+                _xaResource.start(xid1, XAResource.TMSUCCESS);
             }
-            _xaResource.commit(xid2, false);
-        }
-        catch (XAException e)
-        {
-            fail("Exception thrown when preparing transaction with xid2: " + 
e.getMessage());
-        }
-        // receive a message from queue test we expect it to be the second one
-        try
-        {
-            TextMessage message = (TextMessage) _consumer.receiveNoWait();
-            if (message == null)
+            catch (XAException e)
+            {
+                e.printStackTrace();
+                fail("cannot start the transaction with xid1: " + 
e.getMessage());
+            }
+            try
+            {
+                // start the connection
+                _queueConnection.start();
+                // produce a message with sequence number 1
+                _message.setLongProperty(_sequenceNumberPropertyName, 1);
+                _producer.send(_message);
+            }
+            catch (JMSException e)
+            {
+                fail(" cannot send persistent message: " + e.getMessage());
+            }
+            // suspend the transaction
+            try
+            {
+                _xaResource.end(xid1, XAResource.TMSUSPEND);
+            }
+            catch (XAException e)
+            {
+                fail("Cannot end the transaction with xid1: " + 
e.getMessage());
+            }
+            // start the xaResource for xid2
+            try
+            {
+                _xaResource.start(xid2, XAResource.TMSUCCESS);
+            }
+            catch (XAException e)
+            {
+                fail("cannot start the transaction with xid2: " + 
e.getMessage());
+            }
+            try
+            {
+                // produce a message
+                _message.setLongProperty(_sequenceNumberPropertyName, 2);
+                _producer.send(_message);
+            }
+            catch (JMSException e)
+            {
+                fail(" cannot send second persistent message: " + 
e.getMessage());
+            }
+            // end xid2 and start xid1
+            try
+            {
+                _xaResource.end(xid2, XAResource.TMSUCCESS);
+                _xaResource.start(xid1, XAResource.TMRESUME);
+            }
+            catch (XAException e)
             {
-                fail("did not receive second message as expected ");
+                fail("Exception when ending and starting transactions: " + 
e.getMessage());
             }
-            else
+            // two phases commit transaction with xid2
+            try
             {
-                if (message.getLongProperty(_sequenceNumberPropertyName) != 2)
+                int resPrepare = _xaResource.prepare(xid2);
+                if (resPrepare != XAResource.XA_OK)
                 {
-                    fail("receive wrong message its sequence number is: " + 
message
-                            .getLongProperty(_sequenceNumberPropertyName));
+                    fail("prepare returned: " + resPrepare);
                 }
+                _xaResource.commit(xid2, false);
             }
-        }
-        catch (JMSException e)
-        {
-            fail("Exception when receiving second message: " + e.getMessage());
-        }
-        // end and one phase commit the first transaction
-        try
-        {
-            _xaResource.end(xid1, XAResource.TMSUCCESS);
-            _xaResource.commit(xid1, true);
-        }
-        catch (XAException e)
-        {
-            fail("Exception thrown when commiting transaction with xid1");
-        }
-        // We should now be able to receive the first message
-        try
-        {
-            Session nonXASession = _nonXASession;
-            MessageConsumer nonXAConsumer = 
nonXASession.createConsumer(_queue);
-            TextMessage message1 = (TextMessage) nonXAConsumer.receiveNoWait();
-            if (message1 == null)
+            catch (XAException e)
             {
-                fail("did not receive first message as expected ");
+                fail("Exception thrown when preparing transaction with xid2: " 
+ e.getMessage());
             }
-            else
+            // receive a message from queue test we expect it to be the second 
one
+            try
             {
-                if (message1.getLongProperty(_sequenceNumberPropertyName) != 1)
+                TextMessage message = (TextMessage) _consumer.receiveNoWait();
+                if (message == null)
                 {
-                    fail("receive wrong message its sequence number is: " + 
message1
-                            .getLongProperty(_sequenceNumberPropertyName));
+                    fail("did not receive second message as expected ");
+                }
+                else
+                {
+                    if (message.getLongProperty(_sequenceNumberPropertyName) 
!= 2)
+                    {
+                        fail("receive wrong message its sequence number is: " 
+ message
+                                .getLongProperty(_sequenceNumberPropertyName));
+                    }
                 }
             }
-            // commit that transacted session
-            nonXASession.commit();
-            // the queue should be now empty
-            message1 = (TextMessage) nonXAConsumer.receiveNoWait();
-            if (message1 != null)
+            catch (JMSException e)
             {
-                fail("receive an unexpected message ");
+                fail("Exception when receiving second message: " + 
e.getMessage());
+            }
+            // end and one phase commit the first transaction
+            try
+            {
+                _xaResource.end(xid1, XAResource.TMSUCCESS);
+                _xaResource.commit(xid1, true);
+            }
+            catch (XAException e)
+            {
+                fail("Exception thrown when commiting transaction with xid1");
+            }
+            // We should now be able to receive the first message
+            try
+            {
+                Session nonXASession = _nonXASession;
+                MessageConsumer nonXAConsumer = 
nonXASession.createConsumer(_queue);
+                TextMessage message1 = (TextMessage) 
nonXAConsumer.receiveNoWait();
+                if (message1 == null)
+                {
+                    fail("did not receive first message as expected ");
+                }
+                else
+                {
+                    if (message1.getLongProperty(_sequenceNumberPropertyName) 
!= 1)
+                    {
+                        fail("receive wrong message its sequence number is: " 
+ message1
+                                .getLongProperty(_sequenceNumberPropertyName));
+                    }
+                }
+                // commit that transacted session
+                nonXASession.commit();
+                // the queue should be now empty
+                message1 = (TextMessage) nonXAConsumer.receiveNoWait();
+                if (message1 != null)
+                {
+                    fail("receive an unexpected message ");
+                }
+            }
+            catch (JMSException e)
+            {
+                fail("Exception thrown when emptying the queue: " + 
e.getMessage());
             }
-        }
-        catch (JMSException e)
-        {
-            fail("Exception thrown when emptying the queue: " + 
e.getMessage());
         }
     }
 
@@ -362,119 +370,122 @@
      */
     public void testSendAndRecover()
     {
-        Xid xid1 = getNewXid();
-        // start the xaResource for xid1
-        try
+        if (!isBroker08())
         {
-            _xaResource.start(xid1, XAResource.TMSUCCESS);
-        }
-        catch (XAException e)
-        {
-            fail("cannot start the transaction with xid1: " + e.getMessage());
-        }
-        try
-        {
-            // start the connection
-            _queueConnection.start();
-            // produce a message with sequence number 1
-            _message.setLongProperty(_sequenceNumberPropertyName, 1);
-            _producer.send(_message);
-        }
-        catch (JMSException e)
-        {
-            fail(" cannot send persistent message: " + e.getMessage());
-        }
-        // suspend the transaction
-        try
-        {
-            _xaResource.end(xid1, XAResource.TMSUSPEND);
-        }
-        catch (XAException e)
-        {
-            fail("Cannot end the transaction with xid1: " + e.getMessage());
-        }
-        // prepare the transaction with xid1
-        try
-        {
-            _xaResource.prepare(xid1);
-        }
-        catch (XAException e)
-        {
-            fail("Exception when preparing xid1: " + e.getMessage());
-        }
-
-        /////// stop the server now !!
-        try
-        {
-            shutdownServer();
-        }
-        catch (Exception e)
-        {
-            fail("Exception when stopping and restarting the server");
-        }
+            Xid xid1 = getNewXid();
+            // start the xaResource for xid1
+            try
+            {
+                _xaResource.start(xid1, XAResource.TMSUCCESS);
+            }
+            catch (XAException e)
+            {
+                fail("cannot start the transaction with xid1: " + 
e.getMessage());
+            }
+            try
+            {
+                // start the connection
+                _queueConnection.start();
+                // produce a message with sequence number 1
+                _message.setLongProperty(_sequenceNumberPropertyName, 1);
+                _producer.send(_message);
+            }
+            catch (JMSException e)
+            {
+                fail(" cannot send persistent message: " + e.getMessage());
+            }
+            // suspend the transaction
+            try
+            {
+                _xaResource.end(xid1, XAResource.TMSUSPEND);
+            }
+            catch (XAException e)
+            {
+                fail("Cannot end the transaction with xid1: " + 
e.getMessage());
+            }
+            // prepare the transaction with xid1
+            try
+            {
+                _xaResource.prepare(xid1);
+            }
+            catch (XAException e)
+            {
+                fail("Exception when preparing xid1: " + e.getMessage());
+            }
 
-        // get the list of in doubt transactions
-        try
-        {
-            Xid[] inDoubt = _xaResource.recover(XAResource.TMSTARTRSCAN);
-            if (inDoubt == null)
+            /////// stop the server now !!
+            try
             {
-                fail("the array of in doubt transactions should not be null ");
+                shutdownServer();
             }
-            // At that point we expect only two indoubt transactions:
-            if (inDoubt.length != 1)
+            catch (Exception e)
             {
-                fail("in doubt transaction size is diffenrent thatn 2, there 
are " + inDoubt.length + "in doubt transactions");
+                fail("Exception when stopping and restarting the server");
             }
 
-            // commit them
-            for (Xid anInDoubt : inDoubt)
+            // get the list of in doubt transactions
+            try
             {
-                if (anInDoubt.equals(xid1))
+                Xid[] inDoubt = _xaResource.recover(XAResource.TMSTARTRSCAN);
+                if (inDoubt == null)
+                {
+                    fail("the array of in doubt transactions should not be 
null ");
+                }
+                // At that point we expect only two indoubt transactions:
+                if (inDoubt.length != 1)
+                {
+                    fail("in doubt transaction size is diffenrent thatn 2, 
there are " + inDoubt.length + "in doubt transactions");
+                }
+
+                // commit them
+                for (Xid anInDoubt : inDoubt)
                 {
-                    System.out.println("commit xid1 ");
-                    try
+                    if (anInDoubt.equals(xid1))
                     {
-                        _xaResource.commit(anInDoubt, false);
+                        System.out.println("commit xid1 ");
+                        try
+                        {
+                            _xaResource.commit(anInDoubt, false);
+                        }
+                        catch (Exception e)
+                        {
+                            System.out.println("PB when aborted xid1");
+                        }
                     }
-                    catch (Exception e)
+                    else
                     {
-                        System.out.println("PB when aborted xid1");
+                        fail("did not receive right xid ");
                     }
                 }
-                else
-                {
-                    fail("did not receive right xid ");
-                }
             }
-        }
-        catch (XAException e)
-        {
-            e.printStackTrace();
-            fail("exception thrown when recovering transactions " + 
e.getMessage());
-        }
-        // the queue should contain the first message!
-        try
-        {
-            Session nonXASession = _nonXASession;
-            MessageConsumer nonXAConsumer = 
nonXASession.createConsumer(_queue);
-            _queueConnection.start();
-            TextMessage message1 = (TextMessage) nonXAConsumer.receiveNoWait();
-
-            if (message1 == null)
+            catch (XAException e)
             {
-                fail("queue does not contain any message!");
+                e.printStackTrace();
+                fail("exception thrown when recovering transactions " + 
e.getMessage());
+            }
+            // the queue should contain the first message!
+            try
+            {
+                Session nonXASession = _nonXASession;
+                MessageConsumer nonXAConsumer = 
nonXASession.createConsumer(_queue);
+                _queueConnection.start();
+                TextMessage message1 = (TextMessage) 
nonXAConsumer.receiveNoWait();
+
+                if (message1 == null)
+                {
+                    fail("queue does not contain any message!");
+                }
+                if (message1.getLongProperty(_sequenceNumberPropertyName) != 1)
+                {
+                    fail("Wrong message returned! Sequence number is " + 
message1
+                            .getLongProperty(_sequenceNumberPropertyName));
+                }
             }
-            if (message1.getLongProperty(_sequenceNumberPropertyName) != 1)
+            catch (JMSException e)
             {
-                fail("Wrong message returned! Sequence number is " + message1
-                        .getLongProperty(_sequenceNumberPropertyName));
+                fail("Exception thrown when testin that queue test is not 
empty: " + e.getMessage());
             }
         }
-        catch (JMSException e)
-        {
-            fail("Exception thrown when testin that queue test is not empty: " 
+ e.getMessage());
-        }
     }
 
     /**
@@ -484,179 +495,182 @@
      */
     public void testRecover()
     {
-        Xid xid1 = getNewXid();
-        Xid xid2 = getNewXid();
-        // start the xaResource for xid1
-        try
-        {
-            _xaResource.start(xid1, XAResource.TMSUCCESS);
-        }
-        catch (XAException e)
-        {
-            fail("cannot start the transaction with xid1: " + e.getMessage());
-        }
-        try
+        if (!isBroker08())
         {
-            // start the connection
-            _queueConnection.start();
-            // produce a message with sequence number 1
-            _message.setLongProperty(_sequenceNumberPropertyName, 1);
-            _producer.send(_message);
-        }
-        catch (JMSException e)
-        {
-            fail(" cannot send persistent message: " + e.getMessage());
-        }
-        // suspend the transaction
-        try
-        {
-            _xaResource.end(xid1, XAResource.TMSUSPEND);
-        }
-        catch (XAException e)
-        {
-            fail("Cannot end the transaction with xid1: " + e.getMessage());
-        }
-        // prepare the transaction with xid1
-        try
-        {
-            _xaResource.prepare(xid1);
-        }
-        catch (XAException e)
-        {
-            fail("Exception when preparing xid1: " + e.getMessage());
-        }
-
-        // send a message using the standard session
-        try
-        {
-            Session nonXASession = _nonXASession;
-            MessageProducer nonXAProducer = 
nonXASession.createProducer(_queue);
-            TextMessage message2 = nonXASession.createTextMessage();
-            message2.setText("non XA ");
-            message2.setLongProperty(_sequenceNumberPropertyName, 2);
-            nonXAProducer.setDeliveryMode(DeliveryMode.PERSISTENT);
-            nonXAProducer.send(message2);
-            // commit that transacted session
-            nonXASession.commit();
-        }
-        catch (Exception e)
-        {
-            fail("Exception thrown when emptying the queue: " + 
e.getMessage());
-        }
-        // start the xaResource for xid2
-        try
-        {
-            _xaResource.start(xid2, XAResource.TMSUCCESS);
-        }
-        catch (XAException e)
-        {
-            fail("cannot start the transaction with xid1: " + e.getMessage());
-        }
-        // receive a message from queue test we expect it to be the second one
-        try
-        {
-            TextMessage message = (TextMessage) _consumer.receiveNoWait();
-            if (message == null || 
message.getLongProperty(_sequenceNumberPropertyName) != 2)
+            Xid xid1 = getNewXid();
+            Xid xid2 = getNewXid();
+            // start the xaResource for xid1
+            try
             {
-                fail("did not receive second message as expected ");
+                _xaResource.start(xid1, XAResource.TMSUCCESS);
+            }
+            catch (XAException e)
+            {
+                fail("cannot start the transaction with xid1: " + 
e.getMessage());
+            }
+            try
+            {
+                // start the connection
+                _queueConnection.start();
+                // produce a message with sequence number 1
+                _message.setLongProperty(_sequenceNumberPropertyName, 1);
+                _producer.send(_message);
+            }
+            catch (JMSException e)
+            {
+                fail(" cannot send persistent message: " + e.getMessage());
+            }
+            // suspend the transaction
+            try
+            {
+                _xaResource.end(xid1, XAResource.TMSUSPEND);
+            }
+            catch (XAException e)
+            {
+                fail("Cannot end the transaction with xid1: " + 
e.getMessage());
+            }
+            // prepare the transaction with xid1
+            try
+            {
+                _xaResource.prepare(xid1);
+            }
+            catch (XAException e)
+            {
+                fail("Exception when preparing xid1: " + e.getMessage());
             }
-        }
-        catch (JMSException e)
-        {
-            fail("Exception when receiving second message: " + e.getMessage());
-        }
-        // suspend the transaction
-        try
-        {
-            _xaResource.end(xid2, XAResource.TMSUSPEND);
-        }
-        catch (XAException e)
-        {
-            fail("Cannot end the transaction with xid2: " + e.getMessage());
-        }
-        // prepare the transaction with xid1
-        try
-        {
-            _xaResource.prepare(xid2);
-        }
-        catch (XAException e)
-        {
-            fail("Exception when preparing xid2: " + e.getMessage());
-        }
 
-        /////// stop the server now !!
-        try
-        {
-            shutdownServer();
-        }
-        catch (Exception e)
-        {
-            fail("Exception when stopping and restarting the server");
-        }
+            // send a message using the standard session
+            try
+            {
+                Session nonXASession = _nonXASession;
+                MessageProducer nonXAProducer = 
nonXASession.createProducer(_queue);
+                TextMessage message2 = nonXASession.createTextMessage();
+                message2.setText("non XA ");
+                message2.setLongProperty(_sequenceNumberPropertyName, 2);
+                nonXAProducer.setDeliveryMode(DeliveryMode.PERSISTENT);
+                nonXAProducer.send(message2);
+                // commit that transacted session
+                nonXASession.commit();
+            }
+            catch (Exception e)
+            {
+                fail("Exception thrown when emptying the queue: " + 
e.getMessage());
+            }
+            // start the xaResource for xid2
+            try
+            {
+                _xaResource.start(xid2, XAResource.TMSUCCESS);
+            }
+            catch (XAException e)
+            {
+                fail("cannot start the transaction with xid1: " + 
e.getMessage());
+            }
+            // receive a message from queue test we expect it to be the second 
one
+            try
+            {
+                TextMessage message = (TextMessage) _consumer.receiveNoWait();
+                if (message == null || 
message.getLongProperty(_sequenceNumberPropertyName) != 2)
+                {
+                    fail("did not receive second message as expected ");
+                }
+            }
+            catch (JMSException e)
+            {
+                fail("Exception when receiving second message: " + 
e.getMessage());
+            }
+            // suspend the transaction
+            try
+            {
+                _xaResource.end(xid2, XAResource.TMSUSPEND);
+            }
+            catch (XAException e)
+            {
+                fail("Cannot end the transaction with xid2: " + 
e.getMessage());
+            }
+            // prepare the transaction with xid1
+            try
+            {
+                _xaResource.prepare(xid2);
+            }
+            catch (XAException e)
+            {
+                fail("Exception when preparing xid2: " + e.getMessage());
+            }
 
-        // get the list of in doubt transactions
-        try
-        {
-            Xid[] inDoubt = _xaResource.recover(XAResource.TMSTARTRSCAN);
-            if (inDoubt == null)
+            /////// stop the server now !!
+            try
             {
-                fail("the array of in doubt transactions should not be null ");
+                shutdownServer();
             }
-            // At that point we expect only two indoubt transactions:
-            if (inDoubt.length != 2)
+            catch (Exception e)
             {
-                fail("in doubt transaction size is diffenrent thatn 2, there 
are " + inDoubt.length + "in doubt transactions");
+                fail("Exception when stopping and restarting the server");
             }
 
-            // commit them
-            for (Xid anInDoubt : inDoubt)
+            // get the list of in doubt transactions
+            try
             {
-                if (anInDoubt.equals(xid1))
+                Xid[] inDoubt = _xaResource.recover(XAResource.TMSTARTRSCAN);
+                if (inDoubt == null)
                 {
-                    System.out.println("rollback xid1 ");
-                    try
-                    {
-                        _xaResource.rollback(anInDoubt);
-                    }
-                    catch (Exception e)
-                    {
-                        System.out.println("PB when aborted xid1");
-                    }
+                    fail("the array of in doubt transactions should not be 
null ");
                 }
-                else if (anInDoubt.equals(xid2))
+                // At that point we expect only two indoubt transactions:
+                if (inDoubt.length != 2)
+                {
+                    fail("in doubt transaction size is diffenrent thatn 2, 
there are " + inDoubt.length + "in doubt transactions");
+                }
+
+                // commit them
+                for (Xid anInDoubt : inDoubt)
                 {
-                    System.out.println("commit xid2 ");
-                    try
+                    if (anInDoubt.equals(xid1))
                     {
-                        _xaResource.commit(anInDoubt, false);
+                        System.out.println("rollback xid1 ");
+                        try
+                        {
+                            _xaResource.rollback(anInDoubt);
+                        }
+                        catch (Exception e)
+                        {
+                            System.out.println("PB when aborted xid1");
+                        }
                     }
-                    catch (Exception e)
+                    else if (anInDoubt.equals(xid2))
                     {
-                        System.out.println("PB when commiting xid2");
+                        System.out.println("commit xid2 ");
+                        try
+                        {
+                            _xaResource.commit(anInDoubt, false);
+                        }
+                        catch (Exception e)
+                        {
+                            System.out.println("PB when commiting xid2");
+                        }
                     }
                 }
             }
-        }
-        catch (XAException e)
-        {
-            e.printStackTrace();
-            fail("exception thrown when recovering transactions " + 
e.getMessage());
-        }
-        // the queue should be empty
-        try
-        {
-            Session nonXASession = _nonXASession;
-            MessageConsumer nonXAConsumer = 
nonXASession.createConsumer(_queue);
-            _queueConnection.start();
-            TextMessage message1 = (TextMessage) nonXAConsumer.receiveNoWait();
-            if (message1 != null)
+            catch (XAException e)
             {
-                fail("The queue is not empty! ");
+                e.printStackTrace();
+                fail("exception thrown when recovering transactions " + 
e.getMessage());
+            }
+            // the queue should be empty
+            try
+            {
+                Session nonXASession = _nonXASession;
+                MessageConsumer nonXAConsumer = 
nonXASession.createConsumer(_queue);
+                _queueConnection.start();
+                TextMessage message1 = (TextMessage) 
nonXAConsumer.receiveNoWait();
+                if (message1 != null)
+                {
+                    fail("The queue is not empty! ");
+                }
+            }
+            catch (JMSException e)
+            {
+                fail("Exception thrown when testin that queue test is empty: " 
+ e.getMessage());
             }
-        }
-        catch (JMSException e)
-        {
-            fail("Exception thrown when testin that queue test is empty: " + 
e.getMessage());
         }
     }
 
@@ -665,16 +679,18 @@
      */
     public void testEnd()
     {
-        try
+        if (!isBroker08())
         {
-            _queueConnection.stop();
-            _queueConnection.close();
-        }
-        catch (Exception e)
-        {
-            fail("Exception thrown when cleaning standard connection: " + 
e.getStackTrace());
+            try
+            {
+                _queueConnection.stop();
+                _queueConnection.close();
+            }
+            catch (Exception e)
+            {
+                fail("Exception thrown when cleaning standard connection: " + 
e.getStackTrace());
+            }
         }
-
     }
     /** 
--------------------------------------------------------------------------------------
 **/
     /** ----------------------------- Utility methods  
--------------------------------------- **/


Reply via email to