You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by ve...@apache.org on 2008/08/25 23:26:59 UTC

svn commit: r688888 [2/3] - in /synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport: jms/ mail/ nhttp/ testkit/ testkit/client/ testkit/client/axis2/ testkit/listener/ testkit/message/ testkit/server/ testkit/server/axis2/ ...

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/axis2/AxisRequestResponseTestClient.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/axis2/AxisRequestResponseTestClient.java?rev=688888&r1=688887&r2=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/axis2/AxisRequestResponseTestClient.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/axis2/AxisRequestResponseTestClient.java Mon Aug 25 14:26:56 2008
@@ -19,12 +19,15 @@
 
 package org.apache.synapse.transport.testkit.client.axis2;
 
+import javax.mail.internet.ContentType;
+
 import org.apache.axis2.client.OperationClient;
 import org.apache.axis2.client.ServiceClient;
 import org.apache.axis2.wsdl.WSDLConstants;
 import org.apache.synapse.transport.testkit.client.ClientOptions;
 import org.apache.synapse.transport.testkit.client.RequestResponseTestClient;
 import org.apache.synapse.transport.testkit.message.AxisMessage;
+import org.apache.synapse.transport.testkit.message.IncomingMessage;
 
 public class AxisRequestResponseTestClient extends AxisTestClient implements RequestResponseTestClient<AxisMessage,AxisMessage> {
     public AxisRequestResponseTestClient(AxisTestClientSetup setup) {
@@ -35,9 +38,9 @@
         super();
     }
 
-    public AxisMessage sendMessage(ClientOptions options, AxisMessage message) throws Exception {
+    public IncomingMessage<AxisMessage> sendMessage(ClientOptions options, ContentType contentType, AxisMessage message) throws Exception {
         OperationClient mepClient = createClient(options, message, ServiceClient.ANON_OUT_IN_OP);
         mepClient.execute(true);
-        return new AxisMessage(mepClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE));
+        return new IncomingMessage<AxisMessage>(null, new AxisMessage(mepClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE)));
     }
 }

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/axis2/AxisTestClient.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/axis2/AxisTestClient.java?rev=688888&r1=688887&r2=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/axis2/AxisTestClient.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/axis2/AxisTestClient.java Mon Aug 25 14:26:56 2008
@@ -19,6 +19,7 @@
 
 package org.apache.synapse.transport.testkit.client.axis2;
 
+import javax.mail.internet.ContentType;
 import javax.xml.namespace.QName;
 
 import org.apache.axis2.Constants;
@@ -35,6 +36,7 @@
 import org.apache.synapse.transport.testkit.message.AxisMessage;
 import org.apache.synapse.transport.testkit.name.Name;
 import org.apache.synapse.transport.testkit.name.Named;
+import org.apache.synapse.transport.testkit.util.ContentTypeUtil;
 
 @Name("axis")
 public class AxisTestClient implements TestClient {
@@ -64,6 +66,16 @@
         this.channel = channel;
     }
 
+    public ContentType getContentType(ClientOptions options, ContentType contentType) {
+        // TODO: this may be incorrect in some cases
+        String charset = options.getCharset();
+        if (charset == null) {
+            return contentType;
+        } else {
+            return ContentTypeUtil.addCharset(contentType, options.getCharset());
+        }
+    }
+
     protected OperationClient createClient(ClientOptions options, AxisMessage message, QName operationQName) throws Exception {
         EndpointReference epr = channel.getEndpointReference();
         log.info("Sending to " + epr.getAddress());

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/AbstractChannel.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/AbstractChannel.java?rev=688888&r1=688887&r2=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/AbstractChannel.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/AbstractChannel.java Mon Aug 25 14:26:56 2008
@@ -20,12 +20,8 @@
 package org.apache.synapse.transport.testkit.listener;
 
 import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.description.AxisService;
 
 public abstract class AbstractChannel implements Channel {
-    public void setupService(AxisService service) throws Exception {
-    }
-    
     public void setupRequestMessageContext(MessageContext msgContext) {
     }
 }

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/Channel.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/Channel.java?rev=688888&r1=688887&r2=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/Channel.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/Channel.java Mon Aug 25 14:26:56 2008
@@ -21,23 +21,10 @@
 
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.description.AxisService;
-import org.apache.axis2.description.Parameter;
 
 public interface Channel {
     String CONTEXT_PATH = "/services";
     
-    /**
-     * Set up the service so that it can receive messages through the transport under test.
-     * Implementations will typically call {@link AxisService#addParameter(Parameter)} to
-     * setup the service parameters required by the transport.
-     * The default implementation does nothing.
-     * 
-     * @param service
-     * @throws Exception
-     */
-    void setupService(AxisService service) throws Exception;
-    
     void setupRequestMessageContext(MessageContext msgContext);
     
     EndpointReference getEndpointReference() throws Exception;

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/AxisMessage.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/AxisMessage.java?rev=688888&r1=688887&r2=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/AxisMessage.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/AxisMessage.java Mon Aug 25 14:26:56 2008
@@ -23,7 +23,6 @@
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axis2.Constants;
 import org.apache.axis2.context.MessageContext;
-import org.apache.synapse.transport.testkit.server.axis2.MockMessageReceiver;
 
 /**
  * Class encapsulating a SOAP envelope and an attachment map.

Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/IncomingMessage.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/IncomingMessage.java?rev=688888&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/IncomingMessage.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/IncomingMessage.java Mon Aug 25 14:26:56 2008
@@ -0,0 +1,40 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.synapse.transport.testkit.message;
+
+import javax.mail.internet.ContentType;
+
+public class IncomingMessage<M> {
+    private final ContentType contentType;
+    private final M data;
+    
+    public IncomingMessage(ContentType contentType, M data) {
+        this.contentType = contentType;
+        this.data = data;
+    }
+
+    public ContentType getContentType() {
+        return contentType;
+    }
+
+    public M getData() {
+        return data;
+    }
+}

Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/MessageDecoder.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/MessageDecoder.java?rev=688888&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/MessageDecoder.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/MessageDecoder.java Mon Aug 25 14:26:56 2008
@@ -0,0 +1,124 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.synapse.transport.testkit.message;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+
+import javax.activation.DataHandler;
+import javax.mail.internet.ContentType;
+import javax.xml.stream.XMLStreamReader;
+
+import junit.framework.Assert;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNode;
+import org.apache.axiom.om.OMText;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+import org.apache.synapse.transport.base.BaseConstants;
+
+public interface MessageDecoder<T,U> {
+    MessageDecoder<AxisMessage,byte[]> AXIS_TO_BYTE =
+        new MessageDecoder<AxisMessage,byte[]>() {
+    
+        public byte[] decode(ContentType contentType, AxisMessage message) throws Exception {
+            SOAPEnvelope envelope = message.getEnvelope();
+            OMElement wrapper = envelope.getBody().getFirstElement();
+            Assert.assertEquals(BaseConstants.DEFAULT_BINARY_WRAPPER, wrapper.getQName());
+            OMNode child = wrapper.getFirstOMChild();
+            Assert.assertTrue(child instanceof OMText);
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            ((DataHandler)((OMText)child).getDataHandler()).writeTo(baos);
+            return baos.toByteArray();
+        }
+    };
+    
+    MessageDecoder<AxisMessage,String> AXIS_TO_STRING =
+        new MessageDecoder<AxisMessage,String>() {
+    
+        public String decode(ContentType contentType, AxisMessage message) throws Exception {
+            SOAPEnvelope envelope = message.getEnvelope();
+            OMElement wrapper = envelope.getBody().getFirstElement();
+            Assert.assertEquals(BaseConstants.DEFAULT_TEXT_WRAPPER, wrapper.getQName());
+            return wrapper.getText();
+        }
+    };
+    
+    MessageDecoder<AxisMessage,XMLMessage> AXIS_TO_XML =
+        new MessageDecoder<AxisMessage,XMLMessage>() {
+
+        public XMLMessage decode(ContentType contentType, AxisMessage message) throws Exception {
+            XMLMessage.Type type = null;
+            for (XMLMessage.Type candidate : XMLMessage.Type.values()) {
+                if (candidate.getContentType().equals(message.getMessageType())) {
+                    type = candidate;
+                    break;
+                }
+            }
+            if (type == null) {
+                // TODO: make this an error later
+                type = XMLMessage.Type.POX;
+//                throw new UnsupportedOperationException("Content type " + message.getMessageType() + " not supported");
+            }
+            return new XMLMessage(message.getEnvelope().getBody().getFirstElement(), type);
+        }
+    };
+
+    MessageDecoder<byte[],XMLMessage> BYTE_TO_XML =
+        new MessageDecoder<byte[],XMLMessage>() {
+    
+        public XMLMessage decode(ContentType contentType, byte[] message) throws Exception {
+            String baseType = contentType.getBaseType();
+            String charset = contentType.getParameter("charset");
+            XMLStreamReader reader = StAXUtils.createXMLStreamReader(new ByteArrayInputStream(message), charset);
+            XMLMessage.Type type = null;
+            for (XMLMessage.Type candidate : XMLMessage.Type.values()) {
+                if (candidate.getContentType().getBaseType().equals(baseType)) {
+                    type = candidate;
+                    break;
+                }
+            }
+            if (type == null) {
+                throw new Exception("Unrecognized content type " + baseType);
+            }
+            OMElement payload;
+            if (type == XMLMessage.Type.POX) {
+                payload = new StAXOMBuilder(reader).getDocumentElement();
+            } else {
+                payload = new StAXSOAPModelBuilder(reader).getSOAPEnvelope().getBody().getFirstElement();
+            }
+            return new XMLMessage(payload, type);
+        }
+    };
+
+    MessageDecoder<byte[],String> BYTE_TO_STRING =
+        new MessageDecoder<byte[],String>() {
+    
+        public String decode(ContentType contentType, byte[] message) throws Exception {
+            String charset = contentType.getParameter("charset");
+            return new String(message, charset);
+        }
+    };
+
+    U decode(ContentType contentType, T message) throws Exception;
+}

Copied: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/MessageEncoder.java (from r688412, synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/MessageConverter.java)
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/MessageEncoder.java?p2=synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/MessageEncoder.java&p1=synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/MessageConverter.java&r1=688412&r2=688888&rev=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/MessageConverter.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/MessageEncoder.java Mon Aug 25 14:26:56 2008
@@ -19,62 +19,32 @@
 
 package org.apache.synapse.transport.testkit.message;
 
-import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.StringWriter;
 
 import javax.activation.DataHandler;
 import javax.mail.internet.ContentType;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamReader;
 
-import junit.framework.Assert;
 
 import org.apache.axiom.attachments.ByteArrayDataSource;
 import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMOutputFormat;
-import org.apache.axiom.om.OMText;
-import org.apache.axiom.om.impl.builder.StAXOMBuilder;
-import org.apache.axiom.om.util.StAXUtils;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.SOAPFactory;
-import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
 import org.apache.synapse.transport.base.BaseConstants;
 import org.apache.synapse.transport.testkit.client.ClientOptions;
+import org.apache.synapse.transport.testkit.util.ContentTypeUtil;
 
-public interface MessageConverter<T,U> {
-    MessageConverter<AxisMessage,ByteArrayMessage> AXIS_TO_BYTE =
-        new MessageConverter<AxisMessage,ByteArrayMessage>() {
-
-        public ByteArrayMessage convert(ClientOptions options, AxisMessage message) throws Exception {
-            SOAPEnvelope envelope = message.getEnvelope();
-            OMElement wrapper = envelope.getBody().getFirstElement();
-            Assert.assertEquals(BaseConstants.DEFAULT_BINARY_WRAPPER, wrapper.getQName());
-            OMNode child = wrapper.getFirstOMChild();
-            Assert.assertTrue(child instanceof OMText);
-            ByteArrayOutputStream baos = new ByteArrayOutputStream();
-            ((DataHandler)((OMText)child).getDataHandler()).writeTo(baos);
-            return new ByteArrayMessage(null, baos.toByteArray());
-        }
-    };
-    
-    MessageConverter<AxisMessage,StringMessage> AXIS_TO_STRING =
-        new MessageConverter<AxisMessage,StringMessage>() {
+public interface MessageEncoder<T,U> {
+    MessageEncoder<XMLMessage,AxisMessage> XML_TO_AXIS =
+        new MessageEncoder<XMLMessage,AxisMessage>() {
 
-        public StringMessage convert(ClientOptions options, AxisMessage message) throws Exception {
-            SOAPEnvelope envelope = message.getEnvelope();
-            OMElement wrapper = envelope.getBody().getFirstElement();
-            Assert.assertEquals(BaseConstants.DEFAULT_TEXT_WRAPPER, wrapper.getQName());
-            return new StringMessage(null, wrapper.getText());
+        public ContentType getContentType(ClientOptions options, ContentType contentType) {
+            return contentType;
         }
-    };
-    
-    MessageConverter<XMLMessage,AxisMessage> XML_TO_AXIS =
-        new MessageConverter<XMLMessage,AxisMessage>() {
 
-        public AxisMessage convert(ClientOptions options, XMLMessage message) throws Exception {
+        public AxisMessage encode(ClientOptions options, XMLMessage message) throws Exception {
             XMLMessage.Type type = message.getType();
             AxisMessage result = new AxisMessage();
             SOAPFactory factory;
@@ -83,7 +53,7 @@
             } else {
                 factory = OMAbstractFactory.getSOAP11Factory();
             }
-            result.setMessageType(type.getContentType());
+            result.setMessageType(type.getContentType().toString());
             SOAPEnvelope envelope = factory.getDefaultEnvelope();
             envelope.getBody().addChild(message.getPayload());
             result.setEnvelope(envelope);
@@ -91,89 +61,53 @@
         }
     };
     
-    MessageConverter<AxisMessage,XMLMessage> AXIS_TO_XML =
-        new MessageConverter<AxisMessage,XMLMessage>() {
+    MessageEncoder<XMLMessage,byte[]> XML_TO_BYTE =
+        new MessageEncoder<XMLMessage,byte[]>() {
 
-        public XMLMessage convert(ClientOptions options, AxisMessage message) throws Exception {
-            XMLMessage.Type type = null;
-            for (XMLMessage.Type candidate : XMLMessage.Type.values()) {
-                if (candidate.getContentType().equals(message.getMessageType())) {
-                    type = candidate;
-                    break;
-                }
-            }
-            if (type == null) {
-                // TODO: make this an error later
-                type = XMLMessage.Type.POX;
-//                throw new UnsupportedOperationException("Content type " + message.getMessageType() + " not supported");
-            }
-            return new XMLMessage(message.getMessageType(), message.getEnvelope().getBody().getFirstElement(), type);
+        public ContentType getContentType(ClientOptions options, ContentType contentType) {
+            return ContentTypeUtil.addCharset(contentType, options.getCharset());
         }
-    };
-    
-    MessageConverter<XMLMessage,ByteArrayMessage> XML_TO_BYTE =
-        new MessageConverter<XMLMessage,ByteArrayMessage>() {
 
-        public ByteArrayMessage convert(ClientOptions options, XMLMessage message) throws Exception {
+        public byte[] encode(ClientOptions options, XMLMessage message) throws Exception {
             ByteArrayOutputStream baos = new ByteArrayOutputStream();
             OMOutputFormat outputFormat = new OMOutputFormat();
             outputFormat.setCharSetEncoding(options.getCharset());
             outputFormat.setIgnoreXMLDeclaration(true);
             message.getMessageElement().serializeAndConsume(baos, outputFormat);
-            return new ByteArrayMessage(new ContentType(message.getContentType()), baos.toByteArray());
+            return baos.toByteArray();
         }
     };
     
-    MessageConverter<ByteArrayMessage,XMLMessage> BYTE_TO_XML =
-        new MessageConverter<ByteArrayMessage,XMLMessage>() {
+    MessageEncoder<XMLMessage,String> XML_TO_STRING =
+        new MessageEncoder<XMLMessage,String>() {
 
-        public XMLMessage convert(ClientOptions options, ByteArrayMessage message) throws Exception {
-            ContentType contentType = message.getContentType();
-            String baseType = contentType.getBaseType();
-            String charset = contentType.getParameter("charset");
-            XMLStreamReader reader = StAXUtils.createXMLStreamReader(new ByteArrayInputStream(message.getContent()), charset);
-            XMLMessage.Type type = null;
-            for (XMLMessage.Type candidate : XMLMessage.Type.values()) {
-                if (candidate.getContentType().equals(baseType)) {
-                    type = candidate;
-                    break;
-                }
-            }
-            if (type == null) {
-                throw new Exception("Unrecognized content type " + baseType);
-            }
-            OMElement payload;
-            if (type == XMLMessage.Type.POX) {
-                payload = new StAXOMBuilder(reader).getDocumentElement();
-            } else {
-                payload = new StAXSOAPModelBuilder(reader).getSOAPEnvelope().getBody().getFirstElement();
-            }
-            return new XMLMessage(contentType.toString(), payload, type);
+        public ContentType getContentType(ClientOptions options, ContentType contentType) {
+            return contentType;
         }
-    };
-    
-    MessageConverter<XMLMessage,StringMessage> XML_TO_STRING =
-        new MessageConverter<XMLMessage,StringMessage>() {
 
-        public StringMessage convert(ClientOptions options, XMLMessage message) throws Exception {
+        public String encode(ClientOptions options, XMLMessage message) throws Exception {
             OMOutputFormat format = new OMOutputFormat();
             format.setIgnoreXMLDeclaration(true);
             StringWriter sw = new StringWriter();
             message.getMessageElement().serializeAndConsume(sw, format);
-            return new StringMessage(message.getContentType(), sw.toString());
+            return sw.toString();
         }
     };
     
-    MessageConverter<ByteArrayMessage,AxisMessage> BINARY_WRAPPER =
-        new MessageConverter<ByteArrayMessage,AxisMessage>() {
+    MessageEncoder<byte[],AxisMessage> BINARY_WRAPPER =
+        new MessageEncoder<byte[],AxisMessage>() {
+
+        public ContentType getContentType(ClientOptions options, ContentType contentType) {
+            return contentType;
+        }
 
-        public AxisMessage convert(ClientOptions options, ByteArrayMessage message) throws Exception {
+        public AxisMessage encode(ClientOptions options, byte[] message) throws Exception {
             AxisMessage result = new AxisMessage();
             result.setMessageType("application/octet-stream");
             SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
             SOAPEnvelope envelope = factory.getDefaultEnvelope();
             OMElement wrapper = factory.createOMElement(BaseConstants.DEFAULT_BINARY_WRAPPER);
-            DataHandler dataHandler = new DataHandler(new ByteArrayDataSource(message.getContent()));
+            DataHandler dataHandler = new DataHandler(new ByteArrayDataSource(message));
             wrapper.addChild(factory.createOMText(dataHandler, true));
             envelope.getBody().addChild(wrapper);
             result.setEnvelope(envelope);
@@ -181,39 +115,38 @@
         }
     };
     
-    MessageConverter<StringMessage,AxisMessage> TEXT_WRAPPER =
-        new MessageConverter<StringMessage,AxisMessage>() {
+    MessageEncoder<String,AxisMessage> TEXT_WRAPPER =
+        new MessageEncoder<String,AxisMessage>() {
 
-        public AxisMessage convert(ClientOptions options, StringMessage message) throws Exception {
+        public ContentType getContentType(ClientOptions options, ContentType contentType) {
+            return contentType;
+        }
+
+        public AxisMessage encode(ClientOptions options, String message) throws Exception {
             AxisMessage result = new AxisMessage();
-            result.setMessageType("application/octet-stream");
+            result.setMessageType("text/plain");
             SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
             SOAPEnvelope envelope = factory.getDefaultEnvelope();
             OMElement wrapper = factory.createOMElement(BaseConstants.DEFAULT_TEXT_WRAPPER);
-            wrapper.addChild(factory.createOMText(message.getContent()));
+            wrapper.addChild(factory.createOMText(message));
             envelope.getBody().addChild(wrapper);
             result.setEnvelope(envelope);
             return result;
         }
     };
     
-    MessageConverter<StringMessage,ByteArrayMessage> STRING_TO_BYTE =
-        new MessageConverter<StringMessage,ByteArrayMessage>() {
+    MessageEncoder<String,byte[]> STRING_TO_BYTE =
+        new MessageEncoder<String,byte[]>() {
 
-        public ByteArrayMessage convert(ClientOptions options, StringMessage message) throws Exception {
-            return new ByteArrayMessage(new ContentType(message.getContentType()), message.getContent().getBytes(options.getCharset()));
+        public ContentType getContentType(ClientOptions options, ContentType contentType) {
+            return ContentTypeUtil.addCharset(contentType, options.getCharset());
         }
-    };
-    
-    MessageConverter<ByteArrayMessage,StringMessage> BYTE_TO_STRING =
-        new MessageConverter<ByteArrayMessage,StringMessage>() {
 
-        public StringMessage convert(ClientOptions options, ByteArrayMessage message) throws Exception {
-            ContentType contentType = message.getContentType();
-            String charset = contentType.getParameter("charset");
-            return new StringMessage(contentType.toString(), new String(message.getContent(), charset));
+        public byte[] encode(ClientOptions options, String message) throws Exception {
+            return message.getBytes(options.getCharset());
         }
     };
     
-    U convert(ClientOptions options, T message) throws Exception;
+    ContentType getContentType(ClientOptions options, ContentType contentType);
+    U encode(ClientOptions options, T message) throws Exception;
 }

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/XMLMessage.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/XMLMessage.java?rev=688888&r1=688887&r2=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/XMLMessage.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/XMLMessage.java Mon Aug 25 14:26:56 2008
@@ -19,6 +19,9 @@
 
 package org.apache.synapse.transport.testkit.message;
 
+import javax.mail.internet.ContentType;
+import javax.mail.internet.ParseException;
+
 import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.soap.SOAP11Constants;
@@ -38,25 +41,23 @@
             this.contentType = contentType;
         }
         
-        public String getContentType() {
-            return contentType;
+        public ContentType getContentType() {
+            try {
+                return new ContentType(contentType);
+            } catch (ParseException ex) {
+                throw new Error(ex);
+            }
         }
     }
     
-    private final String contentType;
     private final Type type;
     private final OMElement payload;
     
-    public XMLMessage(String contentType, OMElement payload, Type type) {
-        this.contentType = contentType;
+    public XMLMessage(OMElement payload, Type type) {
         this.payload = payload;
         this.type = type;
     }
 
-    public String getContentType() {
-        return contentType;
-    }
-
     public Type getType() {
         return type;
     }

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/AsyncEndpoint.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/AsyncEndpoint.java?rev=688888&r1=688887&r2=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/AsyncEndpoint.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/AsyncEndpoint.java Mon Aug 25 14:26:56 2008
@@ -19,6 +19,8 @@
 
 package org.apache.synapse.transport.testkit.server;
 
+import org.apache.synapse.transport.testkit.message.IncomingMessage;
+
 public interface AsyncEndpoint<M> extends Endpoint {
-    M waitForMessage(int timeout) throws Throwable;
+    IncomingMessage<M> waitForMessage(int timeout) throws Throwable;
 }

Copied: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/AsyncEndpointAdapter.java (from r688412, synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/AsyncEndpointFactoryAdapter.java)
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/AsyncEndpointAdapter.java?p2=synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/AsyncEndpointAdapter.java&p1=synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/AsyncEndpointFactoryAdapter.java&r1=688412&r2=688888&rev=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/AsyncEndpointFactoryAdapter.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/AsyncEndpointAdapter.java Mon Aug 25 14:26:56 2008
@@ -19,34 +19,33 @@
 
 package org.apache.synapse.transport.testkit.server;
 
+import javax.mail.internet.ContentType;
+
 import org.apache.synapse.transport.testkit.Adapter;
-import org.apache.synapse.transport.testkit.message.MessageConverter;
+import org.apache.synapse.transport.testkit.message.IncomingMessage;
+import org.apache.synapse.transport.testkit.message.MessageDecoder;
 
-public class AsyncEndpointFactoryAdapter<M,N> implements AsyncEndpointFactory<M>, Adapter {
-    private final AsyncEndpointFactory<N> targetFactory;
-    private final MessageConverter<N,M> converter;
+public class AsyncEndpointAdapter<M,N> implements AsyncEndpoint<M>, Adapter {
+    private final AsyncEndpoint<N> target;
+    private final MessageDecoder<N,M> decoder;
     
-    public AsyncEndpointFactoryAdapter(AsyncEndpointFactory<N> targetFactory, MessageConverter<N,M> converter) {
-        this.targetFactory = targetFactory;
-        this.converter = converter;
+    public AsyncEndpointAdapter(AsyncEndpoint<N> target, MessageDecoder<N,M> decoder) {
+        this.target = target;
+        this.decoder = decoder;
     }
     
-    public AsyncEndpointFactory<N> getTarget() {
-        return targetFactory;
+    public AsyncEndpoint<N> getTarget() {
+        return target;
     }
 
-    public AsyncEndpoint<M> createAsyncEndpoint(String contentType) throws Exception {
-        final AsyncEndpoint<N> targetEndpoint = targetFactory.createAsyncEndpoint(contentType);
-        final MessageConverter<N,M> converter = this.converter;
-        return new AsyncEndpoint<M>() {
-            public M waitForMessage(int timeout) throws Throwable {
-                N message = targetEndpoint.waitForMessage(timeout);
-                return message == null ? null : converter.convert(null, message);
-            }
-
-            public void remove() throws Exception {
-                targetEndpoint.remove();
-            }
-        };
+    public IncomingMessage<M> waitForMessage(int timeout) throws Throwable {
+        IncomingMessage<N> message = target.waitForMessage(timeout);
+        if (message == null) {
+            return null;
+        } else {
+            ContentType contentType = message.getContentType();
+            return new IncomingMessage<M>(contentType, 
+                                          decoder.decode(contentType, message.getData()));
+        }
     }
 }

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/Endpoint.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/Endpoint.java?rev=688888&r1=688887&r2=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/Endpoint.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/Endpoint.java Mon Aug 25 14:26:56 2008
@@ -19,6 +19,8 @@
 
 package org.apache.synapse.transport.testkit.server;
 
+import org.apache.synapse.transport.testkit.name.Key;
+
+@Key("endpoint")
 public interface Endpoint {
-    void remove() throws Exception;
 }

Copied: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisAsyncEndpoint.java (from r688412, synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisAsyncEndpointFactory.java)
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisAsyncEndpoint.java?p2=synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisAsyncEndpoint.java&p1=synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisAsyncEndpointFactory.java&r1=688412&r2=688888&rev=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisAsyncEndpointFactory.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisAsyncEndpoint.java Mon Aug 25 14:26:56 2008
@@ -19,30 +19,62 @@
 
 package org.apache.synapse.transport.testkit.server.axis2;
 
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.description.AxisOperation;
-import org.apache.axis2.description.AxisService;
 import org.apache.axis2.description.InOnlyAxisOperation;
-import org.apache.synapse.transport.testkit.listener.AsyncChannel;
+import org.apache.axis2.engine.MessageReceiver;
 import org.apache.synapse.transport.testkit.message.AxisMessage;
+import org.apache.synapse.transport.testkit.message.IncomingMessage;
 import org.apache.synapse.transport.testkit.server.AsyncEndpoint;
-import org.apache.synapse.transport.testkit.server.AsyncEndpointFactory;
 
-public class AxisAsyncEndpointFactory implements AsyncEndpointFactory<AxisMessage> {
-    private AxisServer server;
-    private AsyncChannel channel;
+public class AxisAsyncEndpoint extends AxisEndpoint implements AsyncEndpoint<AxisMessage>, MessageReceiver /*, TransportErrorListener*/ {
+    private interface Event {
+        IncomingMessage<AxisMessage> process() throws Throwable;
+    }
+    
+    private BlockingQueue<Event> queue;
     
     @SuppressWarnings("unused")
-    private void setUp(AxisServer server, AsyncChannel channel) {
-        this.server = server;
-        this.channel = channel;
+    private void setUp() {
+        queue = new LinkedBlockingQueue<Event>();
     }
     
-    public AsyncEndpoint<AxisMessage> createAsyncEndpoint(String contentType) throws Exception {
+    @Override
+    protected AxisOperation createOperation() {
         AxisOperation operation = new InOnlyAxisOperation(DefaultOperationDispatcher.DEFAULT_OPERATION_NAME);
-        MockMessageReceiver messageReceiver = new MockMessageReceiver();
-        operation.setMessageReceiver(messageReceiver);
-        AxisService service = server.deployService(channel, operation, contentType);
-//        server.addErrorListener(messageReceiver);
-        return new AsyncEndpointImpl(server, service, messageReceiver);
+        operation.setMessageReceiver(this);
+        return operation;
+    }
+
+    public void receive(MessageContext messageCtx) throws AxisFault {
+        final AxisMessage messageData = new AxisMessage(messageCtx);
+        queue.add(new Event() {
+            public IncomingMessage<AxisMessage> process() throws Throwable {
+                return new IncomingMessage<AxisMessage>(null, messageData);
+            }
+        });
+    }
+
+//    public void error(final TransportError error) {
+//        queue.add(new Event() {
+//            public MessageData process() throws Throwable {
+//                throw error.getException();
+//            }
+//        });
+//    }
+    
+    public IncomingMessage<AxisMessage> waitForMessage(int timeout) throws Throwable {
+        Event event = queue.poll(timeout, TimeUnit.MILLISECONDS);
+        return event == null ? null : event.process();
+    }
+    
+    @SuppressWarnings("unused")
+    private void tearDown() {
+        queue = null;
     }
 }

Copied: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisEchoEndpoint.java (from r688412, synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisEchoEndpointFactory.java)
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisEchoEndpoint.java?p2=synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisEchoEndpoint.java&p1=synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisEchoEndpointFactory.java&r1=688412&r2=688888&rev=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisEchoEndpointFactory.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisEchoEndpoint.java Mon Aug 25 14:26:56 2008
@@ -22,24 +22,12 @@
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.description.AxisOperation;
-import org.apache.axis2.description.AxisService;
 import org.apache.axis2.description.InOutAxisOperation;
 import org.apache.axis2.receivers.AbstractInOutMessageReceiver;
-import org.apache.synapse.transport.testkit.listener.RequestResponseChannel;
-import org.apache.synapse.transport.testkit.server.Endpoint;
-import org.apache.synapse.transport.testkit.server.EndpointFactory;
 
-public class AxisEchoEndpointFactory implements EndpointFactory {
-    private AxisServer server;
-    private RequestResponseChannel channel;
-    
-    @SuppressWarnings("unused")
-    private void setUp(AxisServer server, RequestResponseChannel channel) {
-        this.server = server;
-        this.channel = channel;
-    }
-
-    public Endpoint createEchoEndpoint(String contentType) throws Exception {
+public class AxisEchoEndpoint extends AxisEndpoint {
+    @Override
+    protected AxisOperation createOperation() {
         AxisOperation operation = new InOutAxisOperation(DefaultOperationDispatcher.DEFAULT_OPERATION_NAME);
         operation.setMessageReceiver(new AbstractInOutMessageReceiver() {
             @Override
@@ -47,7 +35,6 @@
                 outMessage.setEnvelope(inMessage.getEnvelope());
             }
         });
-        AxisService service = server.deployService(channel, operation, contentType);
-        return new EndpointImpl(server, service);
+        return operation;
     }
 }

Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisEndpoint.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisEndpoint.java?rev=688888&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisEndpoint.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisEndpoint.java Mon Aug 25 14:26:56 2008
@@ -0,0 +1,64 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.synapse.transport.testkit.server.axis2;
+
+import java.net.URI;
+import java.util.UUID;
+
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.synapse.transport.testkit.listener.Channel;
+import org.apache.synapse.transport.testkit.name.Name;
+import org.apache.synapse.transport.testkit.server.Endpoint;
+
+@Name("axis")
+public abstract class AxisEndpoint implements Endpoint {
+    private AxisServer server;
+    private AxisService service;
+    
+    @SuppressWarnings("unused")
+    private void setUp(AxisServer server, Channel channel, AxisServiceConfigurator[] configurators) throws Exception {
+        this.server = server;
+        String path = new URI(channel.getEndpointReference().getAddress()).getPath();
+        String serviceName;
+        if (path != null && path.startsWith(Channel.CONTEXT_PATH + "/")) {
+            serviceName = path.substring(Channel.CONTEXT_PATH.length()+1);
+        } else {
+            serviceName = "TestService-" + UUID.randomUUID();
+        }
+        service = new AxisService(serviceName);
+        service.addOperation(createOperation());
+        if (configurators != null) {
+            for (AxisServiceConfigurator configurator : configurators) {
+                configurator.setupService(service);
+            }
+        }
+        server.getAxisConfiguration().addService(service);
+    }
+    
+    @SuppressWarnings("unused")
+    private void tearDown() throws Exception {
+        server.getAxisConfiguration().removeService(service.getName());
+        server = null;
+        service = null;
+    }
+    
+    protected abstract AxisOperation createOperation();
+}

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisServer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisServer.java?rev=688888&r1=688887&r2=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisServer.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisServer.java Mon Aug 25 14:26:56 2008
@@ -19,27 +19,19 @@
 
 package org.apache.synapse.transport.testkit.server.axis2;
 
-import java.net.URI;
 import java.util.Iterator;
-import java.util.UUID;
 
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.description.AxisService;
-import org.apache.axis2.description.InOnlyAxisOperation;
 import org.apache.axis2.description.TransportInDescription;
 import org.apache.axis2.description.TransportOutDescription;
 import org.apache.axis2.engine.AxisConfiguration;
-import org.apache.axis2.engine.MessageReceiver;
 import org.apache.axis2.engine.Phase;
 import org.apache.axis2.transport.TransportListener;
 import org.apache.synapse.transport.UtilsTransportServer;
-import org.apache.synapse.transport.testkit.TestEnvironment;
 import org.apache.synapse.transport.testkit.TransportDescriptionFactory;
-import org.apache.synapse.transport.testkit.listener.Channel;
-import org.apache.synapse.transport.testkit.server.Endpoint;
 import org.apache.synapse.transport.testkit.server.Server;
 
 public class AxisServer implements Server {
@@ -47,13 +39,11 @@
     
     private TransportListener listener;
     private UtilsTransportServer server;
-    private TestEnvironment env;
     
     private AxisServer() {}
     
     @SuppressWarnings("unused")
-    private void setUp(TestEnvironment env, TransportDescriptionFactory tdf) throws Exception {
-        this.env = env;
+    private void setUp(TransportDescriptionFactory tdf) throws Exception {
         
         server = new UtilsTransportServer();
         
@@ -93,37 +83,12 @@
         server.stop();
         listener = null;
         server = null;
-        env = null;
     }
     
     public AxisConfiguration getAxisConfiguration() {
         return server.getAxisConfiguration();
     }
 
-    public AxisService deployService(Channel channel, AxisOperation operation, String contentType) throws Exception {
-        String path = new URI(channel.getEndpointReference().getAddress()).getPath();
-        String serviceName;
-        if (path != null && path.startsWith(Channel.CONTEXT_PATH + "/")) {
-            serviceName = path.substring(Channel.CONTEXT_PATH.length()+1);
-        } else {
-            serviceName = "TestService-" + UUID.randomUUID();
-        }
-        AxisService service = new AxisService(serviceName);
-        service.addOperation(operation);
-        channel.setupService(service);
-        if (contentType != null) {
-            env.setupContentType(service, contentType);
-        }
-        server.getAxisConfiguration().addService(service);
-        return service;
-    }
-    
-    public Endpoint createAsyncEndpoint(Channel channel, MessageReceiver messageReceiver, String contentType) throws Exception {
-        AxisOperation operation = new InOnlyAxisOperation(DefaultOperationDispatcher.DEFAULT_OPERATION_NAME);
-        operation.setMessageReceiver(messageReceiver);
-        return new EndpointImpl(this, deployService(channel, operation, contentType));
-    }
-
     public String getEPR(AxisService service) throws AxisFault {
         EndpointReference[] endpointReferences =
             listener.getEPRsForService(service.getName(), "localhost");

Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisServiceConfigurator.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisServiceConfigurator.java?rev=688888&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisServiceConfigurator.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisServiceConfigurator.java Mon Aug 25 14:26:56 2008
@@ -0,0 +1,37 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.synapse.transport.testkit.server.axis2;
+
+
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.Parameter;
+
+public interface AxisServiceConfigurator {
+    /**
+     * Set up the service so that it can receive messages through the transport under test.
+     * Implementations will typically call {@link AxisService#addParameter(Parameter)} to
+     * setup the service parameters required by the transport.
+     * The default implementation does nothing.
+     * 
+     * @param service
+     * @throws Exception
+     */
+    void setupService(AxisService service) throws Exception;
+}

Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/ContentTypeServiceConfigurator.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/ContentTypeServiceConfigurator.java?rev=688888&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/ContentTypeServiceConfigurator.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/ContentTypeServiceConfigurator.java Mon Aug 25 14:26:56 2008
@@ -0,0 +1,44 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.synapse.transport.testkit.server.axis2;
+
+import javax.mail.internet.ContentType;
+
+import org.apache.axis2.description.AxisService;
+import org.apache.synapse.transport.testkit.client.ClientOptions;
+import org.apache.synapse.transport.testkit.client.TestClient;
+
+public class ContentTypeServiceConfigurator implements AxisServiceConfigurator {
+    private final String parameterName;
+    private ContentType contentType;
+    
+    public ContentTypeServiceConfigurator(String parameterName) {
+        this.parameterName = parameterName;
+    }
+
+    @SuppressWarnings("unused")
+    private void setUp(TestClient client, ClientOptions options) {
+        contentType = client.getContentType(options, options.getBaseContentType());
+    }
+
+    public void setupService(AxisService service) throws Exception {
+        service.addParameter(parameterName, contentType.toString());
+    }
+}

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/MessageTestCase.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/MessageTestCase.java?rev=688888&r1=688887&r2=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/MessageTestCase.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/MessageTestCase.java Mon Aug 25 14:26:56 2008
@@ -19,21 +19,16 @@
 
 package org.apache.synapse.transport.testkit.tests;
 
-import org.apache.synapse.transport.testkit.listener.ContentTypeMode;
-import org.apache.synapse.transport.testkit.name.Key;
+import javax.mail.internet.ContentType;
+
+import org.apache.synapse.transport.testkit.client.ClientOptions;
 
 public class MessageTestCase extends TransportTestCase {
-    protected final ContentTypeMode contentTypeMode;
-    protected final String contentType;
+    protected final ClientOptions options;
 
-    public MessageTestCase(ContentTypeMode contentTypeMode, String contentType, Object... resources) {
+    public MessageTestCase(ContentType contentType, String charset, Object... resources) {
         super(resources);
-        this.contentTypeMode = contentTypeMode;
-        this.contentType = contentType;
-    }
-
-    @Key("contentTypeMode")
-    public ContentTypeMode getContentTypeMode() {
-        return contentTypeMode;
+        options = new ClientOptions(contentType, charset);
+        addResource(options);
     }
 }

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResource.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResource.java?rev=688888&r1=688887&r2=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResource.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResource.java Mon Aug 25 14:26:56 2008
@@ -19,6 +19,7 @@
 
 package org.apache.synapse.transport.testkit.tests;
 
+import java.lang.reflect.Array;
 import java.lang.reflect.Method;
 import java.lang.reflect.Type;
 import java.util.HashSet;
@@ -89,18 +90,30 @@
                             throw new Error("Generic parameters not supported in " + method);
                         }
                         Class<?> parameterClass = (Class<?>)parameterType;
-                        TestResource[] resources = resourceSet.findResources(parameterClass, true);
-                        if (resources.length == 0) {
-                            throw new Error(target.getClass().getName() + " depends on " +
-                                    parameterClass.getName() + ", but none found");
-                        } else if (resources.length > 1) {
-                            throw new Error(target.getClass().getName() + " depends on " +
-                                    parameterClass.getName() + ", but multiple candidates found");
-                            
+                        if (parameterClass.isArray()) {
+                            Class<?> componentType = parameterClass.getComponentType();
+                            TestResource[] resources = resourceSet.findResources(componentType, true);
+                            Object[] arg = (Object[])Array.newInstance(componentType, resources.length);
+                            for (int j=0; j<resources.length; j++) {
+                                TestResource resource = resources[j];
+                                directDependencies.add(resource);
+                                arg[j] = resource.getInstance();
+                            }
+                            args[i] = arg;
+                        } else {
+                            TestResource[] resources = resourceSet.findResources(parameterClass, true);
+                            if (resources.length == 0) {
+                                throw new Error(target.getClass().getName() + " depends on " +
+                                        parameterClass.getName() + ", but none found");
+                            } else if (resources.length > 1) {
+                                throw new Error(target.getClass().getName() + " depends on " +
+                                        parameterClass.getName() + ", but multiple candidates found");
+                                
+                            }
+                            TestResource resource = resources[0];
+                            directDependencies.add(resource);
+                            args[i] = resource.getInstance();
                         }
-                        TestResource resource = resources[0];
-                        directDependencies.add(resource);
-                        args[i] = resource.getInstance();
                     }
                     method.setAccessible(true);
                     initializers.addFirst(new Initializer(method, target, args));
@@ -120,6 +133,10 @@
         return target;
     }
 
+    public boolean hasLifecycle() {
+        return !(initializers.isEmpty() && finalizers.isEmpty());
+    }
+
     public void setUp() throws Exception {
         for (Initializer initializer : initializers) {
             initializer.execute();
@@ -147,15 +164,12 @@
 
     @Override
     public String toString() {
-        String result = getShortName(instance.getClass());
-        if (target != instance) {
-            result += "(" + getShortName(target.getClass()) + ")";
+        Class<?> clazz = target.getClass();
+        String simpleName = clazz.getSimpleName();
+        if (simpleName.length() > 0) {
+            return simpleName;
+        } else {
+            return "<anonymous " + clazz.getSuperclass().getSimpleName() + ">";
         }
-        return result;
-    }
-    
-    private static String getShortName(Class<?> clazz) {
-        String name = clazz.getName();
-        return name.substring(name.lastIndexOf('.')+1);
     }
 }

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResourceSet.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResourceSet.java?rev=688888&r1=688887&r2=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResourceSet.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResourceSet.java Mon Aug 25 14:26:56 2008
@@ -20,6 +20,7 @@
 package org.apache.synapse.transport.testkit.tests;
 
 import java.lang.reflect.Field;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.LinkedList;
 import java.util.List;
@@ -132,7 +133,18 @@
         status = Status.SETUP;
     }
     
+    private static List<TestResource> filterOnHasLifecycle(List<TestResource> resources) {
+        List<TestResource> result = new ArrayList<TestResource>(resources.size());
+        for (TestResource resource : resources) {
+            if (resource.hasLifecycle()) {
+                result.add(resource);
+            }
+        }
+        return result;
+    }
+    
     private static void setUp(List<TestResource> resources) throws Exception {
+        resources = filterOnHasLifecycle(resources);
         if (!resources.isEmpty()) {
             log.info("Setting up: " + resources);
             for (TestResource resource : resources) {
@@ -197,6 +209,7 @@
     }
     
     private static void tearDown(List<TestResource> resources) throws Exception {
+        resources = filterOnHasLifecycle(resources);
         if (!resources.isEmpty()) {
             log.info("Tearing down: " + resources);
             for (ListIterator<TestResource> it = resources.listIterator(resources.size()); it.hasPrevious(); ) {

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/AsyncMessageTestCase.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/AsyncMessageTestCase.java?rev=688888&r1=688887&r2=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/AsyncMessageTestCase.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/AsyncMessageTestCase.java Mon Aug 25 14:26:56 2008
@@ -19,49 +19,38 @@
 
 package org.apache.synapse.transport.testkit.tests.async;
 
+import javax.mail.internet.ContentType;
+
 import org.apache.synapse.transport.testkit.client.AsyncTestClient;
-import org.apache.synapse.transport.testkit.client.ClientOptions;
 import org.apache.synapse.transport.testkit.listener.AsyncChannel;
-import org.apache.synapse.transport.testkit.listener.ContentTypeMode;
 import org.apache.synapse.transport.testkit.server.AsyncEndpoint;
-import org.apache.synapse.transport.testkit.server.AsyncEndpointFactory;
 import org.apache.synapse.transport.testkit.tests.MessageTestCase;
 
 public abstract class AsyncMessageTestCase<M,N> extends MessageTestCase {
     private final AsyncTestClient<M> client;
-    private final String charset;
-    private final AsyncEndpointFactory<N> endpointFactory;
+    private final AsyncEndpoint<N> endpoint;
     
     // TODO: maybe we don't need an explicit AsyncChannel
-    public AsyncMessageTestCase(AsyncChannel channel, AsyncTestClient<M> client, AsyncEndpointFactory<N> endpointFactory, ContentTypeMode contentTypeMode, String contentType, String charset, Object... resources) {
-        super(contentTypeMode, contentType, resources);
+    public AsyncMessageTestCase(AsyncChannel channel, AsyncTestClient<M> client, AsyncEndpoint<N> endpoint, ContentType contentType, String charset, Object... resources) {
+        super(contentType, charset, resources);
         this.client = client;
-        this.endpointFactory = endpointFactory;
-        this.charset = charset;
+        this.endpoint = endpoint;
         addResource(channel);
         addResource(client);
-        addResource(endpointFactory);
+        addResource(endpoint);
     }
 
     @Override
     protected void runTest() throws Throwable {
-        AsyncEndpoint<N> endpoint = endpointFactory.createAsyncEndpoint(contentTypeMode == ContentTypeMode.SERVICE ? contentType : null);
-        
         M message = prepareMessage();
         
         // Run the test.
         N messageData;
-        try {
-            ClientOptions options = new ClientOptions(charset);
 //                    contentTypeMode == ContentTypeMode.TRANSPORT ? contentType : null);
-            client.sendMessage(options, message);
-            messageData = endpoint.waitForMessage(8000);
-            if (messageData == null) {
-                fail("Failed to get message");
-            }
-        }
-        finally {
-            endpoint.remove();
+        client.sendMessage(options, options.getBaseContentType(), message);
+        messageData = endpoint.waitForMessage(8000).getData();
+        if (messageData == null) {
+            fail("Failed to get message");
         }
         
         checkMessageData(message, messageData);

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/BinaryTestCase.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/BinaryTestCase.java?rev=688888&r1=688887&r2=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/BinaryTestCase.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/BinaryTestCase.java Mon Aug 25 14:26:56 2008
@@ -26,28 +26,26 @@
 
 import org.apache.synapse.transport.testkit.client.AsyncTestClient;
 import org.apache.synapse.transport.testkit.listener.AsyncChannel;
-import org.apache.synapse.transport.testkit.listener.ContentTypeMode;
-import org.apache.synapse.transport.testkit.message.ByteArrayMessage;
 import org.apache.synapse.transport.testkit.name.Name;
-import org.apache.synapse.transport.testkit.server.AsyncEndpointFactory;
+import org.apache.synapse.transport.testkit.server.AsyncEndpoint;
 
 @Name("AsyncBinary")
-public class BinaryTestCase extends AsyncMessageTestCase<ByteArrayMessage,ByteArrayMessage> {
+public class BinaryTestCase extends AsyncMessageTestCase<byte[],byte[]> {
     private static final Random random = new Random();
     
-    public BinaryTestCase(AsyncChannel channel, AsyncTestClient<ByteArrayMessage> client, AsyncEndpointFactory<ByteArrayMessage> endpointFactory, ContentTypeMode contentTypeMode, Object... resources) {
-        super(channel, client, endpointFactory, contentTypeMode, "application/octet-stream", null, resources);
+    public BinaryTestCase(AsyncChannel channel, AsyncTestClient<byte[]> client, AsyncEndpoint<byte[]> endpoint, Object... resources) {
+        super(channel, client, endpoint, new ContentType("application", "octet-stream", null), null, resources);
     }
     
     @Override
-    protected ByteArrayMessage prepareMessage() throws Exception {
+    protected byte[] prepareMessage() throws Exception {
         byte[] content = new byte[8192];
         random.nextBytes(content);
-        return new ByteArrayMessage(new ContentType("application", "octet-stream", null), content);
+        return content;
     }
 
     @Override
-    protected void checkMessageData(ByteArrayMessage message, ByteArrayMessage messageData) throws Exception {
-        assertTrue(Arrays.equals(message.getContent(), messageData.getContent()));
+    protected void checkMessageData(byte[] message, byte[] messageData) throws Exception {
+        assertTrue(Arrays.equals(message, messageData));
     }
 }

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/RESTTestCase.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/RESTTestCase.java?rev=688888&r1=688887&r2=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/RESTTestCase.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/RESTTestCase.java Mon Aug 25 14:26:56 2008
@@ -27,19 +27,18 @@
 import org.apache.axiom.om.OMElement;
 import org.apache.synapse.transport.testkit.client.AsyncTestClient;
 import org.apache.synapse.transport.testkit.listener.AsyncChannel;
-import org.apache.synapse.transport.testkit.listener.ContentTypeMode;
 import org.apache.synapse.transport.testkit.message.AxisMessage;
 import org.apache.synapse.transport.testkit.message.RESTMessage;
 import org.apache.synapse.transport.testkit.message.RESTMessage.Parameter;
 import org.apache.synapse.transport.testkit.name.Name;
-import org.apache.synapse.transport.testkit.server.AsyncEndpointFactory;
+import org.apache.synapse.transport.testkit.server.AsyncEndpoint;
 
 @Name("REST")
 public class RESTTestCase extends AsyncMessageTestCase<RESTMessage,AxisMessage> {
     private final RESTMessage message;
     
-    public RESTTestCase(AsyncChannel channel, AsyncTestClient<RESTMessage> client, AsyncEndpointFactory<AxisMessage> endpointFactory, RESTMessage message, Object... resources) {
-        super(channel, client, endpointFactory, ContentTypeMode.TRANSPORT, null, null, resources);
+    public RESTTestCase(AsyncChannel channel, AsyncTestClient<RESTMessage> client, AsyncEndpoint<AxisMessage> endpoint, RESTMessage message, Object... resources) {
+        super(channel, client, endpoint, null, null, resources);
         this.message = message;
     }
     

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/SwATestCase.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/SwATestCase.java?rev=688888&r1=688887&r2=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/SwATestCase.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/SwATestCase.java Mon Aug 25 14:26:56 2008
@@ -25,7 +25,6 @@
 import java.util.Random;
 
 import javax.activation.DataHandler;
-import javax.mail.internet.ContentType;
 import javax.xml.namespace.QName;
 
 import org.apache.axiom.attachments.Attachments;
@@ -35,27 +34,24 @@
 import org.apache.axiom.om.OMOutputFormat;
 import org.apache.axiom.om.impl.MIMEOutputUtils;
 import org.apache.axiom.om.util.UUIDGenerator;
-import org.apache.axiom.soap.SOAP12Constants;
 import org.apache.axiom.soap.SOAPBody;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.synapse.transport.testkit.client.AsyncTestClient;
 import org.apache.synapse.transport.testkit.listener.AsyncChannel;
-import org.apache.synapse.transport.testkit.listener.ContentTypeMode;
 import org.apache.synapse.transport.testkit.message.AxisMessage;
-import org.apache.synapse.transport.testkit.message.ByteArrayMessage;
 import org.apache.synapse.transport.testkit.name.Name;
-import org.apache.synapse.transport.testkit.server.AsyncEndpointFactory;
+import org.apache.synapse.transport.testkit.server.AsyncEndpoint;
 
 @Name("AsyncSwA")
-public class SwATestCase extends AsyncMessageTestCase<ByteArrayMessage,AxisMessage> {
+public class SwATestCase extends AsyncMessageTestCase<byte[],AxisMessage> {
     private static final Random random = new Random();
     
     private byte[] attachmentContent;
     private String contentID;
     
-    public SwATestCase(AsyncChannel channel, AsyncTestClient<ByteArrayMessage> client, AsyncEndpointFactory<AxisMessage> endpointFactory, Object... resources) {
-        super(channel, client, endpointFactory, ContentTypeMode.TRANSPORT, null, null, resources);
+    public SwATestCase(AsyncChannel channel, AsyncTestClient<byte[]> client, AsyncEndpoint<AxisMessage> endpoint, Object... resources) {
+        super(channel, client, endpoint, null, null, resources);
     }
     
     @Override
@@ -67,7 +63,7 @@
     }
 
     @Override
-    protected ByteArrayMessage prepareMessage() throws Exception {
+    protected byte[] prepareMessage() throws Exception {
         SOAPFactory factory = OMAbstractFactory.getSOAP12Factory();
         SOAPEnvelope orgEnvelope = factory.createSOAPEnvelope();
         SOAPBody orgBody = factory.createSOAPBody();
@@ -83,11 +79,12 @@
         orgAttachments.addDataHandler(contentID, new DataHandler(new ByteArrayDataSource(attachmentContent, "application/octet-stream")));
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         MIMEOutputUtils.writeSOAPWithAttachmentsMessage(writer, baos, orgAttachments, outputFormat);
-        return new ByteArrayMessage(new ContentType(outputFormat.getContentTypeForSwA(SOAP12Constants.SOAP_12_CONTENT_TYPE)), baos.toByteArray());
+//        return new ByteArrayMessage(new ContentType(outputFormat.getContentTypeForSwA(SOAP12Constants.SOAP_12_CONTENT_TYPE)), baos.toByteArray());
+        return baos.toByteArray();
     }
 
     @Override
-    protected void checkMessageData(ByteArrayMessage message, AxisMessage messageData) throws Exception {
+    protected void checkMessageData(byte[] message, AxisMessage messageData) throws Exception {
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         Attachments attachments = messageData.getAttachments();
         DataHandler dataHandler = attachments.getDataHandler(contentID);

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/TextPlainTestCase.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/TextPlainTestCase.java?rev=688888&r1=688887&r2=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/TextPlainTestCase.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/TextPlainTestCase.java Mon Aug 25 14:26:56 2008
@@ -19,21 +19,21 @@
 
 package org.apache.synapse.transport.testkit.tests.async;
 
+import javax.mail.internet.ContentType;
+
 import org.apache.synapse.transport.testkit.client.AsyncTestClient;
 import org.apache.synapse.transport.testkit.listener.AsyncChannel;
-import org.apache.synapse.transport.testkit.listener.ContentTypeMode;
 import org.apache.synapse.transport.testkit.listener.MessageTestData;
-import org.apache.synapse.transport.testkit.message.StringMessage;
 import org.apache.synapse.transport.testkit.name.Name;
 import org.apache.synapse.transport.testkit.name.Named;
-import org.apache.synapse.transport.testkit.server.AsyncEndpointFactory;
+import org.apache.synapse.transport.testkit.server.AsyncEndpoint;
 
 @Name("AsyncTextPlain")
-public class TextPlainTestCase extends AsyncMessageTestCase<StringMessage,StringMessage> {
+public class TextPlainTestCase extends AsyncMessageTestCase<String,String> {
     private final MessageTestData data;
     
-    public TextPlainTestCase(AsyncChannel channel, AsyncTestClient<StringMessage> client, AsyncEndpointFactory<StringMessage> endpointFactory, ContentTypeMode contentTypeMode, MessageTestData data, Object... resources) {
-        super(channel, client, endpointFactory, contentTypeMode, "text/plain; charset=\"" + data.getCharset() + "\"", data.getCharset(), resources);
+    public TextPlainTestCase(AsyncChannel channel, AsyncTestClient<String> client, AsyncEndpoint<String> endpoint, MessageTestData data, Object... resources) {
+        super(channel, client, endpoint, new ContentType("text", "plain", null), data.getCharset(), resources);
         this.data = data;
     }
     
@@ -43,15 +43,15 @@
     }
     
     @Override
-    protected StringMessage prepareMessage() throws Exception {
-        return new StringMessage(contentType, data.getText());
+    protected String prepareMessage() throws Exception {
+        return data.getText();
     }
 
     @Override
-    protected void checkMessageData(StringMessage message, StringMessage messageData) throws Exception {
+    protected void checkMessageData(String message, String messageData) throws Exception {
         // Some transport protocols add a newline at the end of the payload. Therefore trim the
         // strings before comparison.
         // TODO: investigate this a bit further
-        assertEquals(message.getContent().trim(), messageData.getContent().trim());
+        assertEquals(message.trim(), messageData.trim());
     }
 }

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/XMLAsyncMessageTestCase.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/XMLAsyncMessageTestCase.java?rev=688888&r1=688887&r2=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/XMLAsyncMessageTestCase.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/XMLAsyncMessageTestCase.java Mon Aug 25 14:26:56 2008
@@ -27,22 +27,21 @@
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.synapse.transport.testkit.client.AsyncTestClient;
 import org.apache.synapse.transport.testkit.listener.AsyncChannel;
-import org.apache.synapse.transport.testkit.listener.ContentTypeMode;
 import org.apache.synapse.transport.testkit.listener.MessageTestData;
 import org.apache.synapse.transport.testkit.message.AxisMessage;
 import org.apache.synapse.transport.testkit.message.XMLMessage;
 import org.apache.synapse.transport.testkit.name.Key;
 import org.apache.synapse.transport.testkit.name.Name;
 import org.apache.synapse.transport.testkit.name.Named;
-import org.apache.synapse.transport.testkit.server.AsyncEndpointFactory;
+import org.apache.synapse.transport.testkit.server.AsyncEndpoint;
 
 @Name("AsyncXML")
 public class XMLAsyncMessageTestCase extends AsyncMessageTestCase<XMLMessage,AxisMessage> {
     private final XMLMessage.Type xmlMessageType;
     private final MessageTestData data;
     
-    public XMLAsyncMessageTestCase(AsyncChannel channel, AsyncTestClient<XMLMessage> client, AsyncEndpointFactory<AxisMessage> endpointFactory, XMLMessage.Type xmlMessageType, ContentTypeMode contentTypeMode, String baseContentType, MessageTestData data, Object... resources) {
-        super(channel, client, endpointFactory, contentTypeMode, baseContentType + "; charset=\"" + data.getCharset() + "\"", data.getCharset(), resources);
+    public XMLAsyncMessageTestCase(AsyncChannel channel, AsyncTestClient<XMLMessage> client, AsyncEndpoint<AxisMessage> endpoint, XMLMessage.Type xmlMessageType, MessageTestData data, Object... resources) {
+        super(channel, client, endpoint, xmlMessageType.getContentType(), data.getCharset(), resources);
         this.xmlMessageType = xmlMessageType;
         this.data = data;
     }
@@ -62,7 +61,7 @@
         OMFactory factory = OMAbstractFactory.getOMFactory();
         OMElement orgElement = factory.createOMElement(new QName("root"));
         orgElement.setText(data.getText());
-        return new XMLMessage(contentType, orgElement, xmlMessageType);
+        return new XMLMessage(orgElement, xmlMessageType);
     }
 
     @Override

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/echo/RequestResponseMessageTestCase.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/echo/RequestResponseMessageTestCase.java?rev=688888&r1=688887&r2=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/echo/RequestResponseMessageTestCase.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/echo/RequestResponseMessageTestCase.java Mon Aug 25 14:26:56 2008
@@ -19,40 +19,29 @@
 
 package org.apache.synapse.transport.testkit.tests.echo;
 
-import org.apache.synapse.transport.testkit.client.ClientOptions;
+import javax.mail.internet.ContentType;
+
 import org.apache.synapse.transport.testkit.client.RequestResponseTestClient;
-import org.apache.synapse.transport.testkit.listener.ContentTypeMode;
 import org.apache.synapse.transport.testkit.listener.RequestResponseChannel;
 import org.apache.synapse.transport.testkit.server.Endpoint;
-import org.apache.synapse.transport.testkit.server.EndpointFactory;
 import org.apache.synapse.transport.testkit.tests.MessageTestCase;
 
 public abstract class RequestResponseMessageTestCase<M,N> extends MessageTestCase {
     private final RequestResponseTestClient<M,N> client;
-    private final String charset;
-    private final EndpointFactory endpointFactory;
 
     // TODO: maybe we don't need an explicit RequestResponseChannel
-    public RequestResponseMessageTestCase(RequestResponseChannel channel, RequestResponseTestClient<M,N> client, EndpointFactory endpointFactory, ContentTypeMode contentTypeMode, String contentType, String charset, Object... resources) {
-        super(contentTypeMode, contentType, resources);
+    public RequestResponseMessageTestCase(RequestResponseChannel channel, RequestResponseTestClient<M,N> client, Endpoint endpoint, ContentType contentType, String charset, Object... resources) {
+        super(contentType, charset, resources);
         this.client = client;
-        this.endpointFactory = endpointFactory;
-        this.charset = charset;
         addResource(channel);
         addResource(client);
-        addResource(endpointFactory);
+        addResource(endpoint);
     }
     
     @Override
     protected void runTest() throws Throwable {
-        Endpoint endpoint = endpointFactory.createEchoEndpoint(contentTypeMode == ContentTypeMode.SERVICE ? contentType : null);
         M request = prepareRequest();
-        N response;
-        try {
-            response = client.sendMessage(new ClientOptions(charset), request);
-        } finally {
-            endpoint.remove();
-        }
+        N response = client.sendMessage(options, options.getBaseContentType(), request).getData();
         checkResponse(request, response);
     }
 

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/echo/XMLRequestResponseMessageTestCase.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/echo/XMLRequestResponseMessageTestCase.java?rev=688888&r1=688887&r2=688888&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/echo/XMLRequestResponseMessageTestCase.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/echo/XMLRequestResponseMessageTestCase.java Mon Aug 25 14:26:56 2008
@@ -25,23 +25,21 @@
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMFactory;
 import org.apache.synapse.transport.testkit.client.RequestResponseTestClient;
-import org.apache.synapse.transport.testkit.listener.ContentTypeMode;
 import org.apache.synapse.transport.testkit.listener.MessageTestData;
 import org.apache.synapse.transport.testkit.listener.RequestResponseChannel;
 import org.apache.synapse.transport.testkit.message.XMLMessage;
 import org.apache.synapse.transport.testkit.name.Key;
 import org.apache.synapse.transport.testkit.name.Name;
 import org.apache.synapse.transport.testkit.name.Named;
-import org.apache.synapse.transport.testkit.server.EndpointFactory;
+import org.apache.synapse.transport.testkit.server.Endpoint;
 
 @Name("EchoXML")
 public class XMLRequestResponseMessageTestCase extends RequestResponseMessageTestCase<XMLMessage,XMLMessage> {
     private final XMLMessage.Type xmlMessageType;
     private final MessageTestData data;
     
-    // TODO: realign order of arguments with XMLAsyncMessageTestCase constructor
-    public XMLRequestResponseMessageTestCase(RequestResponseChannel channel, RequestResponseTestClient<XMLMessage,XMLMessage> client, EndpointFactory endpointFactory, ContentTypeMode contentTypeMode, String contentType, XMLMessage.Type xmlMessageType, MessageTestData data, Object... resources) {
-        super(channel, client, endpointFactory, contentTypeMode, contentType, data.getCharset(), resources);
+    public XMLRequestResponseMessageTestCase(RequestResponseChannel channel, RequestResponseTestClient<XMLMessage,XMLMessage> client, Endpoint endpoint, XMLMessage.Type xmlMessageType, MessageTestData data, Object... resources) {
+        super(channel, client, endpoint, xmlMessageType.getContentType(), data.getCharset(), resources);
         this.xmlMessageType = xmlMessageType;
         this.data = data;
     }
@@ -61,7 +59,7 @@
         OMFactory factory = OMAbstractFactory.getOMFactory();
         OMElement orgElement = factory.createOMElement(new QName("root"));
         orgElement.setText(data.getText());
-        return new XMLMessage(contentType, orgElement, xmlMessageType);
+        return new XMLMessage(orgElement, xmlMessageType);
     }
 
     @Override