1
2
3
4
5
6
7 package org.mule.transport.jms.integration;
8
9 import org.mule.DefaultMuleMessage;
10 import org.mule.RequestContext;
11 import org.mule.api.MuleMessage;
12 import org.mule.routing.outbound.StaticRecipientList;
13 import org.mule.transformer.AbstractMessageTransformer;
14 import org.mule.transformer.types.DataTypeFactory;
15 import org.mule.transport.jms.transformers.AbstractJmsTransformer;
16
17 import javax.jms.Message;
18 import javax.jms.Session;
19 import javax.jms.TextMessage;
20
21 import org.apache.commons.logging.Log;
22 import org.apache.commons.logging.LogFactory;
23 import org.junit.Test;
24
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertTrue;
27
28
29 public class JmsMessageAwareTransformersMule2685TestCase extends AbstractJmsFunctionalTestCase
30 {
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
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
79
80 assertTrue("Transformed object should be a TextMessage", result2 instanceof TextMessage);
81 assertEquals("This is a test TextMessage", ((TextMessage) result2).getText());
82
83
84
85 assertEquals("vm://recipient1, vm://recipient1, vm://recipient3",
86 result2.getStringProperty("recipients"));
87
88 }
89
90
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 }