1
2
3
4
5
6
7
8
9
10 package org.mule.test.integration.transport;
11
12
13 import org.mule.api.MuleException;
14 import org.mule.api.endpoint.EndpointBuilder;
15 import org.mule.api.endpoint.InboundEndpoint;
16 import org.mule.api.transport.Connector;
17 import org.mule.api.transport.ReplyToHandler;
18 import org.mule.tck.junit4.FunctionalTestCase;
19 import org.mule.tck.junit4.rule.DynamicPort;
20 import org.mule.transformer.simple.ByteArrayInputStreamTransformersTestCase;
21 import org.mule.transport.AbstractConnector;
22 import org.mule.transport.DefaultReplyToHandler;
23
24 import java.io.ByteArrayInputStream;
25 import java.io.ByteArrayOutputStream;
26 import java.io.IOException;
27 import java.io.ObjectInputStream;
28 import java.io.ObjectOutputStream;
29
30 import static org.junit.Assert.assertEquals;
31 import org.junit.Rule;
32 import org.junit.Test;
33
34 public class ReplyToSerializationTestCase extends FunctionalTestCase
35 {
36 @Rule
37 public DynamicPort dynamicPort = new DynamicPort("port1");
38
39 @Override
40 protected String getConfigResources()
41 {
42 return "org/mule/test/integration/transport/reply-to-serialization.xml";
43 }
44
45 @Test
46 public void testSerialization() throws Exception
47 {
48 EndpointBuilder jmsEndpointBuilder = muleContext.getRegistry().lookupEndpointBuilder("jmsEndpoint");
49 EndpointBuilder vmEndpointBuilder = muleContext.getRegistry().lookupEndpointBuilder("vmEndpoint");
50 EndpointBuilder ajaxEndpointBuilder = muleContext.getRegistry().lookupEndpointBuilder("ajaxEndpoint");
51
52 InboundEndpoint jmsEndpoint = jmsEndpointBuilder.buildInboundEndpoint();
53 Connector jmsConnector = jmsEndpoint.getConnector();
54 InboundEndpoint vmEndpoint = vmEndpointBuilder.buildInboundEndpoint();
55 Connector vmConnector = vmEndpoint.getConnector();
56 InboundEndpoint ajaxEndpoint = ajaxEndpointBuilder.buildInboundEndpoint();
57 Connector ajaxConnector = ajaxEndpoint.getConnector();
58
59 DefaultReplyToHandler jmsHandler = (DefaultReplyToHandler) ((AbstractConnector)jmsConnector).getReplyToHandler(jmsEndpoint);
60 DefaultReplyToHandler vmHandler = (DefaultReplyToHandler) ((AbstractConnector)vmConnector).getReplyToHandler(vmEndpoint);
61 DefaultReplyToHandler ajaxHandler = (DefaultReplyToHandler) ((AbstractConnector)ajaxConnector).getReplyToHandler(ajaxEndpoint);
62
63 DefaultReplyToHandler jmsHandler2 = serialize(jmsHandler);
64 DefaultReplyToHandler vmHandler2 = serialize(vmHandler);
65 DefaultReplyToHandler ajaxHandler2 = serialize(ajaxHandler);
66
67 assertEquals(jmsHandler.getConnector(), jmsHandler2.getConnector());
68 assertEquals(vmHandler.getConnector(), vmHandler2.getConnector());
69 assertEquals(ajaxHandler.getConnector(), ajaxHandler2.getConnector());
70 }
71
72 private DefaultReplyToHandler serialize(ReplyToHandler handler) throws IOException, ClassNotFoundException, MuleException
73 {
74 ByteArrayOutputStream baos = new ByteArrayOutputStream();
75 ObjectOutputStream oos = new ObjectOutputStream(baos);
76 oos.writeObject(handler);
77 oos.flush();
78 DefaultReplyToHandler serialized = (DefaultReplyToHandler) new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray())).readObject();
79 serialized.initAfterDeserialisation(muleContext);
80 return serialized;
81 }
82
83 }