View Javadoc

1   /*
2    * $Id: AbstractJmsReliabilityTestCase.java 21860 2011-05-09 14:25:41Z tcarlson $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.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  
11  package org.mule.transport.jms.reliability;
12  
13  import org.mule.transport.jms.integration.AbstractJmsFunctionalTestCase;
14  import org.mule.transport.jms.integration.JmsVendorConfiguration;
15  import org.mule.transport.jms.integration.activemq.ActiveMQJmsConfiguration;
16  
17  import javax.jms.Connection;
18  import javax.jms.DeliveryMode;
19  import javax.jms.Destination;
20  import javax.jms.Message;
21  import javax.jms.MessageConsumer;
22  import javax.jms.MessageListener;
23  import javax.jms.MessageProducer;
24  import javax.jms.Session;
25  
26  public abstract class AbstractJmsReliabilityTestCase extends AbstractJmsFunctionalTestCase
27  {
28      protected int acknowledgeMode = Session.AUTO_ACKNOWLEDGE;
29      protected int deliveryMode = DeliveryMode.PERSISTENT;
30          
31      // These are used by the receiver only, not the sender
32      protected Connection connection;
33      protected Session session;
34      protected MessageConsumer consumer;
35          
36      public AbstractJmsReliabilityTestCase()
37      {
38          setMultipleProviders(false);
39      }
40      
41      @Override
42      protected void doTearDown() throws Exception
43      {
44          closeConsumer();
45          super.doTearDown();
46      }
47      
48      protected void closeConsumer() throws Exception
49      {
50          if (consumer != null)
51          {
52              consumer.close();
53              consumer = null;
54              session.close();
55              session = null;
56              connection.close();
57              connection = null;
58          }
59      }
60  
61      protected void putMessageOnQueue(String queueName) throws Exception
62      {
63          JmsVendorConfiguration jmsConfig = new ActiveMQJmsConfiguration();
64          Connection connection = null;
65          try
66          {
67              connection = jmsConfig.getConnection(false, false);
68              connection.start();
69              Session session = null;
70              try
71              {
72                  session = connection.createSession(false, acknowledgeMode);
73                  Destination destination = session.createQueue(queueName);
74                  MessageProducer producer = null;
75                  try
76                  {
77                      producer = session.createProducer(destination);
78                      producer.setDeliveryMode(deliveryMode);
79                      Message msg = session.createTextMessage(AbstractJmsFunctionalTestCase.DEFAULT_INPUT_MESSAGE);
80                      msg.setJMSExpiration(0);
81                      producer.send(msg);
82                  }
83                  finally
84                  {
85                      if (producer != null)
86                      {
87                          producer.close();
88                      }
89                  }
90              }
91              finally
92              {
93                  if (session != null)
94                  {
95                      session.close();
96                  }
97              }
98          }
99          finally
100         {
101             if (connection != null)
102             {
103                 connection.close();
104             }
105         }
106     }
107     
108     protected Message readMessageFromQueue(String queueName) throws Exception
109     {
110         if (consumer == null)
111         {
112             createConsumer(queueName);
113         }        
114         return consumer.receive(getTimeout());
115     }
116 
117     protected void listenOnQueue(String queueName, MessageListener listener) throws Exception
118     {
119         if (consumer == null)
120         {
121             createConsumer(queueName);
122         }        
123         consumer.setMessageListener(listener);
124     }
125     
126     protected void createConsumer(String queueName) throws Exception
127     {
128         connection = getConnection(false, false);
129         connection.start();
130         session = connection.createSession(false, acknowledgeMode);
131         consumer = session.createConsumer(session.createQueue(queueName));
132     }
133 }
134 
135