1
2
3
4
5
6
7
8
9
10
11 package org.mule.mule;
12
13 import org.mule.MuleManager;
14 import org.mule.impl.MuleDescriptor;
15 import org.mule.impl.MuleEvent;
16 import org.mule.impl.MuleMessage;
17 import org.mule.impl.RequestContext;
18 import org.mule.impl.ResponseOutputStream;
19 import org.mule.impl.endpoint.MuleEndpointURI;
20 import org.mule.tck.AbstractMuleTestCase;
21 import org.mule.tck.testmodels.fruit.Apple;
22 import org.mule.tck.testmodels.fruit.Orange;
23 import org.mule.transformers.AbstractTransformer;
24 import org.mule.transformers.simple.ByteArrayToObject;
25 import org.mule.transformers.simple.SerializableToByteArray;
26 import org.mule.umo.UMOEvent;
27 import org.mule.umo.UMOMessage;
28 import org.mule.umo.endpoint.UMOEndpoint;
29 import org.mule.umo.security.UMOCredentials;
30 import org.mule.umo.transformer.TransformerException;
31 import org.mule.umo.transformer.UMOTransformer;
32
33 import java.io.Serializable;
34 import java.util.HashMap;
35 import java.util.Properties;
36
37 public class MuleEventTestCase extends AbstractMuleTestCase
38 {
39
40 public void testEventInitialise() throws Exception
41 {
42 String data = "Test Data";
43 MuleDescriptor descriptor = getTestDescriptor("orange", Orange.class.getName());
44
45 MuleEvent event = (MuleEvent)getTestEvent(data, descriptor);
46
47 assertEquals("Event data should equal " + data, data, event.getMessage().getPayload());
48 assertEquals("Event data should equal " + data, data, event.getMessageAsString(null));
49 assertEquals("Event data should equal " + data, data, event.getTransformedMessage());
50 assertEquals("Event data should be a byte array 9 bytes in length", 9, event
51 .getTransformedMessageAsBytes().length);
52
53 assertEquals("Event data should be a byte array 9 bytes in length", 9,
54 event.getMessageAsBytes().length);
55 assertEquals("Event data should equal " + data, data, event.getSource());
56
57 assertEquals("MuleBeanPropertiesRule", event.getMessage().getProperty("MuleBeanPropertiesRule",
58 "MuleBeanPropertiesRule"));
59 event.getMessage().setProperty("Test", "Test1");
60
61 assertFalse(event.getMessage().getPropertyNames().isEmpty());
62 assertEquals("bla2", event.getMessage().getProperty("bla2", "bla2"));
63 assertEquals("Test1", event.getMessage().getProperty("Test"));
64 assertEquals("Test1", event.getMessage().getProperty("Test", "bla2"));
65 assertNotNull(event.getId());
66 }
67
68 public void testEventTransformer() throws Exception
69 {
70 String data = "Test Data";
71 UMOEndpoint endpoint = getTestEndpoint("Test", UMOEndpoint.ENDPOINT_TYPE_SENDER);
72 endpoint.setTransformer(new TestEventTransformer());
73 UMOEvent event = getTestEvent(data, endpoint);
74
75 assertEquals("Event data should equal " + data, data, event.getMessage().getPayload());
76 assertEquals("Event data should equal " + data, data, event.getMessageAsString(null));
77 assertEquals("Event data should equal 'Transformed Test Data'", "Transformed Test Data", event
78 .getTransformedMessage());
79 assertEquals("Event data should be a byte array 28 bytes in length", 21, event
80 .getTransformedMessageAsBytes().length);
81 }
82
83 public void testEventRewrite() throws Exception
84 {
85 String data = "Test Data";
86 UMOEndpoint endpoint = getTestEndpoint("Test", UMOEndpoint.ENDPOINT_TYPE_SENDER);
87 endpoint.setTransformer(new TestEventTransformer());
88 MuleEvent event = new MuleEvent(new MuleMessage(data), endpoint,
89 getTestSession(getTestComponent(getTestDescriptor("apple", Apple.class.getName()))), true,
90 new ResponseOutputStream(System.out));
91
92 assertNotNull(event.getId());
93 assertNotNull(event.getSession());
94 assertNotNull(event.getEndpoint());
95 assertNotNull(event.getOutputStream());
96 assertNotNull(event.getMessage());
97 assertEquals(data, event.getMessageAsString(null));
98
99 UMOEvent event2 = new MuleEvent(new MuleMessage("New Data"), event);
100 assertNotNull(event2.getId());
101 assertEquals(event.getId(), event2.getId());
102 assertNotNull(event2.getSession());
103 assertNotNull(event2.getEndpoint());
104 assertNotNull(event2.getOutputStream());
105 assertNotNull(event2.getMessage());
106 assertEquals("New Data", event2.getMessageAsString(null));
107
108 }
109
110 public void testProperties() throws Exception
111 {
112 UMOEvent prevEvent;
113 Properties props;
114 UMOMessage msg;
115 UMOEndpoint endpoint;
116 UMOEvent event;
117
118
119 prevEvent = getTestEvent("payload");
120 props = new Properties();
121 msg = new MuleMessage("payload", props);
122 endpoint = getTestEndpoint("Test", UMOEndpoint.ENDPOINT_TYPE_SENDER);
123 props = new Properties();
124 endpoint.setProperties(props);
125 event = new MuleEvent(msg, endpoint, prevEvent.getComponent(), prevEvent);
126 assertNull(event.getMessage().getProperty("prop"));
127
128
129 prevEvent.getMessage().setProperty("prop", "value0");
130 event = new MuleEvent(msg, endpoint, prevEvent.getComponent(), prevEvent);
131 assertEquals("value0", event.getMessage().getProperty("prop"));
132
133
134
135
136
137
138
139
140
141
142
143
144 props = new Properties();
145 props.put("prop", "value1");
146 msg = new MuleMessage("payload", props);
147 endpoint = getTestEndpoint("Test", UMOEndpoint.ENDPOINT_TYPE_SENDER);
148 event = new MuleEvent(msg, endpoint, prevEvent.getComponent(), prevEvent);
149 assertEquals("value1", event.getMessage().getProperty("prop"));
150
151
152 props = new Properties();
153 props.put("prop", "value1");
154 msg = new MuleMessage("payload", props);
155
156 Properties props2 = new Properties();
157 props2.put("prop", "value2");
158 endpoint.setProperties(props2);
159 event = new MuleEvent(msg, endpoint, prevEvent.getComponent(), prevEvent);
160 assertEquals("value1", event.getMessage().getProperty("prop"));
161
162 }
163
164
165
166
167 public void testNoPasswordNoNullPointerException() throws Exception
168 {
169 UMOEndpoint endpoint = getTestEndpoint("AuthTest", UMOEndpoint.ENDPOINT_TYPE_SENDER);
170
171
172
173 endpoint.setEndpointURI(new MuleEndpointURI("test://john.doe@xyz.fr"));
174 UMOEvent event = getTestEvent(new Object(), endpoint);
175 UMOCredentials credentials = event.getCredentials();
176 assertNull("Credentials must not be created for endpoints without a password.", credentials);
177 }
178
179 public void testEventSerialization() throws Exception
180 {
181 UMOTransformer trans1 = new TestEventTransformer();
182 trans1.setName("OptimusPrime");
183
184 UMOTransformer trans2 = new TestEventTransformer();
185 trans2.setName("Bumblebee");
186
187 trans1.setNextTransformer(trans2);
188
189 MuleManager.getInstance().registerTransformer(trans1);
190 MuleManager.getInstance().registerTransformer(trans2);
191
192 UMOEndpoint endpoint = getTestEndpoint("Test", UMOEndpoint.ENDPOINT_TYPE_SENDER);
193 endpoint.setTransformer(trans1);
194
195
196 UMOEvent event = RequestContext.setEvent(new MuleEvent(new MuleMessage("payload", new HashMap()), endpoint, getTestSession(null), true));
197
198 Serializable serialized = (Serializable)new SerializableToByteArray().transform(event);
199 assertNotNull(serialized);
200
201
202
203
204
205
206 UMOEvent deserialized = (UMOEvent)new ByteArrayToObject().transform(serialized);
207 assertNotNull(deserialized);
208
209
210
211 UMOTransformer deserializedTransformer = deserialized.getEndpoint().getTransformer();
212 assertEquals(trans1.getName(), deserializedTransformer.getName());
213 assertEquals(trans2.getName(), deserializedTransformer.getNextTransformer().getName());
214 }
215
216 public static class TestEventTransformer extends AbstractTransformer
217 {
218 public Object doTransform(Object src, String encoding) throws TransformerException
219 {
220 return "Transformed Test Data";
221 }
222 }
223
224 }