1   /*
2    * $Id: JmsSingleTransactionRecieveAndSendTestCase.java 10524 2008-01-24 19:20:11Z akuzmin $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  package org.mule.test.integration.providers.jms.functional;
11  
12  import org.mule.tck.FunctionalTestCase;
13  
14  import javax.jms.Connection;
15  import javax.jms.ConnectionFactory;
16  import javax.jms.Message;
17  import javax.jms.MessageConsumer;
18  import javax.jms.MessageProducer;
19  import javax.jms.Session;
20  import javax.jms.TextMessage;
21  
22  import org.apache.activemq.ActiveMQConnectionFactory;
23  import org.apache.activemq.command.ActiveMQQueue;
24  
25  public class JmsSingleTransactionRecieveAndSendTestCase extends FunctionalTestCase
26  {
27  
28      private Connection connection = null;
29      private Session session = null;
30  
31      protected String getConfigResources()
32      {
33          return "providers/activemq/jms-single-tx-recieve-send-in-one-tx.xml";
34      }
35  
36      public void testSingleTransactionBeginOrJoinAndAlwaysBegin() throws Exception
37      {
38          try
39          {
40              ConnectionFactory factory = new ActiveMQConnectionFactory(AbstractJmsFunctionalTestCase.DEFAULT_BROKER_URL);
41              connection = factory.createConnection();
42              connection.start();
43  
44              try
45              {
46                  session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
47                  ActiveMQQueue destination = new ActiveMQQueue(AbstractJmsFunctionalTestCase.DEFAULT_INPUT_MQ_QUEUE_NAME);
48                  MessageProducer producer = null;
49                  try
50                  {
51                      producer = session.createProducer(destination);
52                      producer.send(session.createTextMessage(AbstractJmsFunctionalTestCase.DEFAULT_INPUT_MESSAGE));
53                      session.commit();
54                  }
55                  finally
56                  {
57                      if (producer != null)
58                      {
59                          producer.close();
60                      }
61                  }
62  
63                  destination = new ActiveMQQueue(AbstractJmsFunctionalTestCase.DEFAULT_OUTPUT_MQ_QUEUE_NAME);
64                  MessageConsumer consumer = null;
65                  try
66                  {
67                      consumer = session.createConsumer(destination);
68                      Message message = consumer.receive(AbstractJmsFunctionalTestCase.TIMEOUT);
69                      assertNotNull(message);
70                      assertTrue(TextMessage.class.isAssignableFrom(message.getClass()));
71                      assertEquals(((TextMessage) message).getText(), AbstractJmsFunctionalTestCase.DEFAULT_OUTPUT_MESSAGE);
72                      session.commit();
73  
74                  }
75                  finally
76                  {
77                      if (consumer != null)
78                      {
79                          consumer.close();
80                      }
81                  }
82              }
83              finally
84              {
85                  if (session != null)
86                  {
87                      session.close();
88                  }
89              }
90          }
91          finally
92          {
93              if (connection != null)
94              {
95                  connection.close();
96              }
97          }
98  
99      }
100 
101 
102 }