1
2
3
4
5
6
7
8
9
10
11 package org.mule.impl;
12
13 import org.mule.tck.AbstractMuleTestCase;
14 import org.mule.transformers.simple.ByteArrayToObject;
15 import org.mule.transformers.simple.ObjectToByteArray;
16 import org.mule.umo.UMOEvent;
17 import org.mule.umo.UMOMessage;
18
19 import java.io.IOException;
20 import java.io.InputStream;
21 import java.io.OutputStream;
22 import java.io.StringBufferInputStream;
23
24 import javax.activation.DataHandler;
25 import javax.activation.DataSource;
26
27 public class MuleMessageTestCase extends AbstractMuleTestCase
28 {
29
30 public void testAttachmentPersistence() throws Exception
31 {
32 ObjectToByteArray transformer = new ObjectToByteArray();
33 transformer.setAcceptUMOMessage(true);
34
35 UMOEvent event = RequestContext.setEvent(getTestEvent("Mmm... attachments!"));
36 UMOMessage msg = event.getMessage();
37 msg.addAttachment("test-attachment", new DataHandler(new StringDataSource("attachment")));
38
39 Object serialized = transformer.transform(msg);
40 assertNotNull(serialized);
41
42 UMOMessage deserialized = (UMOMessage) new ByteArrayToObject().transform(serialized);
43 assertNotNull(deserialized);
44 assertEquals(deserialized.getUniqueId(), msg.getUniqueId());
45 assertEquals(deserialized.getPayload(), msg.getPayload());
46 assertEquals(deserialized.getAttachmentNames(), msg.getAttachmentNames());
47 }
48
49
50 protected static class StringDataSource implements DataSource
51 {
52 protected String content;
53
54 public StringDataSource(String payload)
55 {
56 super();
57 content = payload;
58 }
59
60 public InputStream getInputStream() throws IOException
61 {
62 return new StringBufferInputStream(content);
63 }
64
65 public OutputStream getOutputStream()
66 {
67 throw new UnsupportedOperationException("Read-only javax.activation.DataSource");
68 }
69
70 public String getContentType()
71 {
72 return "text/plain";
73 }
74
75 public String getName()
76 {
77 return "StringDataSource";
78 }
79 }
80
81 }