View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
6    */
7   package org.mule.transport.jms.integration;
8   
9   import javax.jms.JMSException;
10  import javax.jms.Message;
11  import javax.jms.MessageConsumer;
12  import javax.jms.MessageProducer;
13  import javax.jms.Session;
14  
15  import org.junit.Test;
16  
17  import static org.junit.Assert.assertNotNull;
18  
19  /**
20   * Test jms using JmsClientAcknowledgeTransactionFactory
21   */
22  public class JmsClientAcknowledgeTransactionTestCase extends AbstractJmsFunctionalTestCase
23  {
24  
25      @Override
26      protected String getConfigResources()
27      {
28          return "integration/jms-client-acknowledge-tx.xml";
29      }
30  
31      @Test
32      public void testJmsClientAcknowledgeTransaction() throws Exception
33      {
34          send(scenarioAcknowledge);
35          receive(scenarioWithoutAcknowledge);
36          receive(scenarioAcknowledge);
37          receive(scenarioNotReceive);
38      }
39  
40      Scenario scenarioAcknowledge = new NonTransactedScenario()
41      {
42          @Override
43          public int getAcknowledge()
44          {
45              return Session.CLIENT_ACKNOWLEDGE;
46          }
47  
48          public void send(Session session, MessageProducer producer) throws JMSException
49          {
50              producer.send(session.createTextMessage(DEFAULT_INPUT_MESSAGE));
51          }
52  
53          public Message receive(Session session, MessageConsumer consumer) throws JMSException
54          {
55              Message message = consumer.receive(getTimeout());
56              assertNotNull(message);
57              message.acknowledge();
58              return message;
59          }
60      };
61  
62      Scenario scenarioWithoutAcknowledge = new NonTransactedScenario()
63      {
64          @Override
65          public int getAcknowledge()
66          {
67              return Session.CLIENT_ACKNOWLEDGE;
68          }
69      };
70  }