View Javadoc

1   /*
2    * $Id: JmsMessageAwareTransformersMule2685TestCase.java 19250 2010-08-30 16:53:14Z dirk.olmes $
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.integration;
12  
13  import org.mule.DefaultMuleMessage;
14  import org.mule.RequestContext;
15  import org.mule.api.MuleMessage;
16  import org.mule.routing.outbound.StaticRecipientList;
17  import org.mule.transformer.AbstractMessageTransformer;
18  import org.mule.transformer.types.DataTypeFactory;
19  import org.mule.transport.jms.transformers.AbstractJmsTransformer;
20  
21  import javax.jms.Message;
22  import javax.jms.Session;
23  import javax.jms.TextMessage;
24  
25  import org.apache.commons.logging.Log;
26  import org.apache.commons.logging.LogFactory;
27  import org.junit.Test;
28  
29  /** <code>JmsTransformersTestCase</code> Tests the JMS transformer implementations. */
30  public class JmsMessageAwareTransformersMule2685TestCase extends AbstractJmsFunctionalTestCase
31  {
32      protected final Log logger = LogFactory.getLog(getClass());
33  
34      private Session session = null;
35  
36      @Override
37      protected String getConfigResources()
38      {
39          return "integration/jms-transformers.xml";
40      }
41  
42      @Override
43      protected void doSetUp() throws Exception
44      {
45          super.doSetUp();
46  
47          session = getConnection(false, false).createSession(false, Session.AUTO_ACKNOWLEDGE);
48      }
49  
50      @Override
51      protected void doTearDown() throws Exception
52      {
53          RequestContext.setEvent(null);
54          if (session != null)
55          {
56              session.close();
57              session = null;
58          }
59      }
60  
61      @Test
62      public void testMessageAwareTransformerChainedWithObjectToJMSMessage() throws Exception
63      {
64          RequestContext.setEvent(getTestEvent("test"));
65  
66          MuleMessage message = new DefaultMuleMessage("This is a test TextMessage", muleContext);
67  
68          SetTestRecipientsTransformer trans = new SetTestRecipientsTransformer();
69          MuleMessage result1 = (MuleMessage) trans.transform(message);
70  
71          // Check that transformer 1 set message property ok.
72          assertEquals("vm://recipient1, vm://recipient1, vm://recipient3",
73                       result1.getOutboundProperty("recipients"));
74  
75          AbstractJmsTransformer trans2 = new SessionEnabledObjectToJMSMessage(session);
76          Message result2 = (Message) trans2.transform(result1);
77  
78          // Test to see that ObjectToJMSMessage transformer transformed to JMS message
79          // correctly
80          assertTrue("Transformed object should be a TextMessage", result2 instanceof TextMessage);
81          assertEquals("This is a test TextMessage", ((TextMessage) result2).getText());
82  
83          // Check to see if after the ObjectToJMSMessage transformer these properties
84          // are on JMS message
85          assertEquals("vm://recipient1, vm://recipient1, vm://recipient3",
86              result2.getStringProperty("recipients"));
87  
88      }
89  
90      /** Test <i>AbstractMessageTransformer</i> which sets Message properties */
91      private class SetTestRecipientsTransformer extends AbstractMessageTransformer
92      {
93  
94          public SetTestRecipientsTransformer()
95          {
96              registerSourceType(DataTypeFactory.MULE_MESSAGE);
97          }
98  
99          @Override
100         public Object transformMessage(MuleMessage message, String outputEncoding)
101         {
102 
103             String recipients = "vm://recipient1, vm://recipient1, vm://recipient3";
104             logger.debug("Setting recipients to '" + recipients + "'");
105             message.setOutboundProperty(StaticRecipientList.RECIPIENTS_PROPERTY, recipients);
106             return message;
107         }
108 
109     }
110 
111 }