View Javadoc

1   /*
2    * $Id: ReplyToSerializationTestCase.java 22550 2011-07-24 22:03:52Z mike.schilling $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
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  }