1
2
3
4
5
6
7
8
9
10
11 package org.mule.transport.file;
12
13 import org.mule.DefaultMuleMessage;
14 import org.mule.api.MessagingException;
15 import org.mule.api.MuleMessage;
16 import org.mule.api.transport.MessageAdapter;
17 import org.mule.transport.AbstractMessageAdapterTestCase;
18 import org.mule.util.FileUtils;
19
20 import java.io.File;
21 import java.io.FileInputStream;
22 import java.util.Arrays;
23
24 public class FileMessageAdapterTestCase extends AbstractMessageAdapterTestCase
25 {
26 private File message;
27
28
29
30
31
32
33 protected void doSetUp() throws Exception
34 {
35 super.doSetUp();
36
37
38 File dir = FileUtils.newFile(muleContext.getConfiguration().getWorkingDirectory(), "tmp");
39 if (!dir.exists())
40 {
41 dir.mkdirs();
42 }
43
44 message = File.createTempFile("simple", ".mule", dir);
45 }
46
47
48
49
50
51
52 public Object getValidMessage()
53 {
54 return message;
55 }
56
57
58
59
60
61
62 public MessageAdapter createAdapter(Object payload) throws MessagingException
63 {
64 return new FileMessageAdapter(payload);
65 }
66
67 public void testMessageRetrieval2() throws Exception
68 {
69 Object message = new ReceiverFileInputStream((File) getValidMessage(), false, null);
70
71 MessageAdapter adapter = createAdapter(message);
72 MuleMessage muleMessage = new DefaultMuleMessage(adapter);
73
74 doTestMessageEqualsPayload(message, adapter.getPayload());
75
76 byte[] bytes = muleMessage.getPayloadAsBytes();
77 assertNotNull(bytes);
78
79 String stringMessage = muleMessage.getPayloadAsString();
80 assertNotNull(stringMessage);
81
82 assertNotNull(adapter.getPayload());
83 }
84
85 protected void doTestMessageEqualsPayload(Object message, Object payload) throws Exception
86 {
87
88 if (message instanceof File)
89 {
90 File file = (File) message;
91 assertTrue(payload instanceof File);
92 assertEquals(file, payload);
93 }
94 else if (message instanceof FileInputStream)
95 {
96 byte[] messageBytes = null;
97 byte[] payloadBytes = null;
98
99 FileInputStream fis = (FileInputStream) message;
100 FileInputStream payloadFis = (FileInputStream) payload;
101 messageBytes = new byte[fis.available()];
102 payloadBytes = new byte[payloadFis.available()];
103 fis.read(messageBytes);
104 payloadFis.read(payloadBytes);
105 assertTrue(Arrays.equals(messageBytes, payloadBytes));
106 }
107 else
108 {
109 fail("FileMessageAdaptor supports File or FileInputStream");
110 }
111
112 }
113 }