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/06 01:41:15 UTC

svn commit: r683039 - in /synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport: jms/ mail/ nhttp/ testkit/listener/ vfs/

Author: veithen
Date: Tue Aug  5 16:41:14 2008
New Revision: 683039

URL: http://svn.apache.org/viewvc?rev=683039&view=rev
Log:
Refactored the transport testkit to improve its design.

Added:
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetRESTSender.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/Adapter.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/AsyncMessageSender.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/ByteArrayMessage.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/RESTMessage.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/SenderOptions.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/StringMessage.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/XMLMessage.java
Removed:
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/BinaryPayloadSender.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/RESTSender.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/XMLAsyncMessageSender.java
Modified:
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSBytesMessageSender.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSListenerTest.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSTextMessageSender.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailSender.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTransportListenerTest.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MimeSender.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MultipartSender.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/HttpCoreNIOListenerTest.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetSender.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/AsyncMessageTestCase.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/AxisAsyncMessageSender.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/ListenerTestSuite.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/XMLAsyncMessageTestCase.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportListenerTest.java

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSBytesMessageSender.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSBytesMessageSender.java?rev=683039&r1=683038&r2=683039&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSBytesMessageSender.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSBytesMessageSender.java Tue Aug  5 16:41:14 2008
@@ -23,24 +23,25 @@
 import javax.jms.Session;
 
 import org.apache.synapse.transport.base.BaseConstants;
-import org.apache.synapse.transport.testkit.listener.BinaryPayloadSender;
+import org.apache.synapse.transport.testkit.listener.AbstractMessageSender;
+import org.apache.synapse.transport.testkit.listener.AsyncMessageSender;
+import org.apache.synapse.transport.testkit.listener.ByteArrayMessage;
+import org.apache.synapse.transport.testkit.listener.SenderOptions;
 
-public class JMSBytesMessageSender extends BinaryPayloadSender<JMSAsyncChannel> {
+public class JMSBytesMessageSender extends AbstractMessageSender<JMSAsyncChannel> implements AsyncMessageSender<JMSAsyncChannel,ByteArrayMessage> {
     public JMSBytesMessageSender() {
         super("ByteMessage");
     }
     
-    @Override
     public void sendMessage(JMSAsyncChannel channel,
-                            String endpointReference,
-                            String contentType,
-                            byte[] content) throws Exception {
+                            SenderOptions options,
+                            ByteArrayMessage message) throws Exception {
         Session session = channel.createSession();
-        BytesMessage message = session.createBytesMessage();
-        if (contentType != null) {
-            message.setStringProperty(BaseConstants.CONTENT_TYPE, contentType);
+        BytesMessage jmsMessage = session.createBytesMessage();
+        if (message.getContentType() != null) {
+            jmsMessage.setStringProperty(BaseConstants.CONTENT_TYPE, message.getContentType());
         }
-        message.writeBytes(content);
-        channel.send(session, message);
+        jmsMessage.writeBytes(message.getContent());
+        channel.send(session, jmsMessage);
     }
 }
\ No newline at end of file

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSListenerTest.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSListenerTest.java?rev=683039&r1=683038&r2=683039&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSListenerTest.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSListenerTest.java Tue Aug  5 16:41:14 2008
@@ -26,12 +26,14 @@
 import junit.framework.TestSuite;
 
 import org.apache.axis2.context.MessageContext;
+import org.apache.synapse.transport.testkit.listener.Adapter;
+import org.apache.synapse.transport.testkit.listener.AsyncMessageSender;
 import org.apache.synapse.transport.testkit.listener.AxisAsyncMessageSender;
 import org.apache.synapse.transport.testkit.listener.AxisRequestResponseMessageSender;
 import org.apache.synapse.transport.testkit.listener.ContentTypeMode;
 import org.apache.synapse.transport.testkit.listener.ListenerTestSuite;
 import org.apache.synapse.transport.testkit.listener.MessageTestData;
-import org.apache.synapse.transport.testkit.listener.XMLAsyncMessageSender;
+import org.apache.synapse.transport.testkit.listener.XMLMessage;
 
 public class JMSListenerTest extends TestCase {
     public static TestSuite suite() {
@@ -39,15 +41,15 @@
         JMSListenerSetup setup = new QpidTestSetup();
         JMSBytesMessageSender bytesMessageSender = new JMSBytesMessageSender();
         JMSTextMessageSender textMessageSender = new JMSTextMessageSender();
-        List<XMLAsyncMessageSender<? super JMSAsyncChannel>> senders = new LinkedList<XMLAsyncMessageSender<? super JMSAsyncChannel>>();
-        senders.add(bytesMessageSender);
+        List<AsyncMessageSender<? super JMSAsyncChannel,XMLMessage>> senders = new LinkedList<AsyncMessageSender<? super JMSAsyncChannel,XMLMessage>>();
+        senders.add(new Adapter<JMSAsyncChannel>(bytesMessageSender));
         senders.add(textMessageSender);
         senders.add(new AxisAsyncMessageSender());
         suite.addPOXTests(new JMSRequestResponseChannel(setup, JMSConstants.DESTINATION_TYPE_QUEUE, JMSConstants.DESTINATION_TYPE_QUEUE), new AxisRequestResponseMessageSender(), ContentTypeMode.TRANSPORT);
         for (String destinationType : new String[] { JMSConstants.DESTINATION_TYPE_QUEUE, JMSConstants.DESTINATION_TYPE_TOPIC }) {
             JMSAsyncChannel channel = new JMSAsyncChannel(setup, destinationType);
             for (ContentTypeMode contentTypeMode : ContentTypeMode.values()) {
-                for (XMLAsyncMessageSender<? super JMSAsyncChannel> sender : senders) {
+                for (AsyncMessageSender<? super JMSAsyncChannel,XMLMessage> sender : senders) {
                     if (contentTypeMode == ContentTypeMode.TRANSPORT) {
                         suite.addSOAPTests(channel, sender, contentTypeMode);
                         suite.addPOXTests(channel, sender, contentTypeMode);

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSTextMessageSender.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSTextMessageSender.java?rev=683039&r1=683038&r2=683039&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSTextMessageSender.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSTextMessageSender.java Tue Aug  5 16:41:14 2008
@@ -24,31 +24,29 @@
 import javax.jms.Session;
 import javax.jms.TextMessage;
 
-import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMOutputFormat;
 import org.apache.synapse.transport.base.BaseConstants;
 import org.apache.synapse.transport.testkit.listener.AbstractMessageSender;
-import org.apache.synapse.transport.testkit.listener.XMLAsyncMessageSender;
-import org.apache.synapse.transport.testkit.listener.XMLMessageType;
+import org.apache.synapse.transport.testkit.listener.AsyncMessageSender;
+import org.apache.synapse.transport.testkit.listener.SenderOptions;
+import org.apache.synapse.transport.testkit.listener.XMLMessage;
 
-public class JMSTextMessageSender extends AbstractMessageSender<JMSAsyncChannel> implements XMLAsyncMessageSender<JMSAsyncChannel> {
+public class JMSTextMessageSender extends AbstractMessageSender<JMSAsyncChannel> implements AsyncMessageSender<JMSAsyncChannel,XMLMessage> {
     public JMSTextMessageSender() {
         super("TextMessage");
     }
 
-    public void sendMessage(JMSAsyncChannel channel,
-            String endpointReference, String contentType, String charset,
-            XMLMessageType xmlMessageType, OMElement payload) throws Exception {
+    public void sendMessage(JMSAsyncChannel channel, SenderOptions options, XMLMessage message) throws Exception {
         Session session = channel.createSession();
-        TextMessage message = session.createTextMessage();
-        if (contentType != null) {
-            message.setStringProperty(BaseConstants.CONTENT_TYPE, contentType);
+        TextMessage jmsMessage = session.createTextMessage();
+        if (message.getContentType() != null) {
+            jmsMessage.setStringProperty(BaseConstants.CONTENT_TYPE, message.getContentType());
         }
         OMOutputFormat format = new OMOutputFormat();
         format.setIgnoreXMLDeclaration(true);
         StringWriter sw = new StringWriter();
-        xmlMessageType.getMessage(payload).serializeAndConsume(sw, format);
-        message.setText(sw.toString());
-        channel.send(session, message);
+        message.getXmlMessageType().getMessage(message.getPayload()).serializeAndConsume(sw, format);
+        jmsMessage.setText(sw.toString());
+        channel.send(session, jmsMessage);
     }
 }
\ No newline at end of file

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailSender.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailSender.java?rev=683039&r1=683038&r2=683039&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailSender.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailSender.java Tue Aug  5 16:41:14 2008
@@ -30,11 +30,13 @@
 import javax.mail.internet.MimeMessage;
 import javax.mail.util.ByteArrayDataSource;
 
-import org.apache.synapse.transport.testkit.listener.BinaryPayloadSender;
+import org.apache.synapse.transport.testkit.listener.AbstractMessageSender;
+import org.apache.synapse.transport.testkit.listener.AsyncMessageSender;
+import org.apache.synapse.transport.testkit.listener.ByteArrayMessage;
+import org.apache.synapse.transport.testkit.listener.SenderOptions;
 
-public abstract class MailSender extends BinaryPayloadSender<MailChannel> {
-    @Override
-    public void sendMessage(MailChannel channel, String endpointReference, String contentType, byte[] content) throws Exception {
+public abstract class MailSender extends AbstractMessageSender<MailChannel> implements AsyncMessageSender<MailChannel,ByteArrayMessage> {
+    public void sendMessage(MailChannel channel, SenderOptions options, ByteArrayMessage message) throws Exception {
         Properties props = new Properties();
         props.put("mail.smtp.class", TestTransport.class.getName());
         Session session = Session.getInstance(props);
@@ -42,7 +44,7 @@
         msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(channel.getAddress()));
         msg.setFrom(new InternetAddress("test-sender@localhost"));
         msg.setSentDate(new Date());
-        DataHandler dh = new DataHandler(new ByteArrayDataSource(content, contentType));
+        DataHandler dh = new DataHandler(new ByteArrayDataSource(message.getContent(), message.getContentType()));
         setupMessage(msg, dh);
         Transport.send(msg);
     }

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTransportListenerTest.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTransportListenerTest.java?rev=683039&r1=683038&r2=683039&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTransportListenerTest.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTransportListenerTest.java Tue Aug  5 16:41:14 2008
@@ -25,24 +25,27 @@
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
-import org.apache.synapse.transport.testkit.listener.BinaryPayloadSender;
+import org.apache.synapse.transport.testkit.listener.Adapter;
+import org.apache.synapse.transport.testkit.listener.AsyncMessageSender;
 import org.apache.synapse.transport.testkit.listener.ContentTypeMode;
 import org.apache.synapse.transport.testkit.listener.ListenerTestSuite;
+import org.apache.synapse.transport.testkit.listener.XMLMessage;
 
 public class MailTransportListenerTest extends TestCase {
     public static TestSuite suite() {
         ListenerTestSuite suite = new ListenerTestSuite();
         MailChannel channel = new MailChannel("test-account@localhost");
-        List<BinaryPayloadSender<? super MailChannel>> senders = new LinkedList<BinaryPayloadSender<? super MailChannel>>();
+        List<MailSender> senders = new LinkedList<MailSender>();
         senders.add(new MimeSender());
         senders.add(new MultipartSender());
-        for (BinaryPayloadSender<? super MailChannel> sender : senders) {
+        for (MailSender sender : senders) {
+            AsyncMessageSender<MailChannel,XMLMessage> xmlSender = new Adapter<MailChannel>(sender);
             // TODO: SOAP 1.2 tests don't work yet for mail transport
-            suite.addSOAP11Test(channel, sender, ContentTypeMode.TRANSPORT, ListenerTestSuite.ASCII_TEST_DATA);
-            suite.addSOAP11Test(channel, sender, ContentTypeMode.TRANSPORT, ListenerTestSuite.UTF8_TEST_DATA);
+            suite.addSOAP11Test(channel, xmlSender, ContentTypeMode.TRANSPORT, ListenerTestSuite.ASCII_TEST_DATA);
+            suite.addSOAP11Test(channel, xmlSender, ContentTypeMode.TRANSPORT, ListenerTestSuite.UTF8_TEST_DATA);
             // TODO: this test fails when using multipart
             if (sender instanceof MimeSender) {
-                suite.addSOAP11Test(channel, sender, ContentTypeMode.TRANSPORT, ListenerTestSuite.LATIN1_TEST_DATA);
+                suite.addSOAP11Test(channel, xmlSender, ContentTypeMode.TRANSPORT, ListenerTestSuite.LATIN1_TEST_DATA);
             }
             // addSOAPTests(strategy, suite);
             // TODO: POX tests don't work yet for mail transport

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MimeSender.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MimeSender.java?rev=683039&r1=683038&r2=683039&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MimeSender.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MimeSender.java Tue Aug  5 16:41:14 2008
@@ -22,7 +22,7 @@
 import javax.activation.DataHandler;
 import javax.mail.internet.MimeMessage;
 
-class MimeSender extends MailSender {
+public class MimeSender extends MailSender {
     @Override
     protected void setupMessage(MimeMessage msg, DataHandler dh) throws Exception {
         msg.setDataHandler(dh);

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MultipartSender.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MultipartSender.java?rev=683039&r1=683038&r2=683039&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MultipartSender.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MultipartSender.java Tue Aug  5 16:41:14 2008
@@ -24,7 +24,7 @@
 import javax.mail.internet.MimeMessage;
 import javax.mail.internet.MimeMultipart;
 
-class MultipartSender extends MailSender {
+public class MultipartSender extends MailSender {
     @Override
     protected void setupMessage(MimeMessage msg, DataHandler dh) throws Exception {
         MimeMultipart multipart = new MimeMultipart();

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/HttpCoreNIOListenerTest.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/HttpCoreNIOListenerTest.java?rev=683039&r1=683038&r2=683039&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/HttpCoreNIOListenerTest.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/HttpCoreNIOListenerTest.java Tue Aug  5 16:41:14 2008
@@ -25,21 +25,23 @@
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
+import org.apache.synapse.transport.testkit.listener.Adapter;
+import org.apache.synapse.transport.testkit.listener.AsyncChannel;
+import org.apache.synapse.transport.testkit.listener.AsyncMessageSender;
 import org.apache.synapse.transport.testkit.listener.AxisAsyncMessageSender;
-import org.apache.synapse.transport.testkit.listener.AxisRequestResponseMessageSender;
 import org.apache.synapse.transport.testkit.listener.ContentTypeMode;
 import org.apache.synapse.transport.testkit.listener.ListenerTestSuite;
-import org.apache.synapse.transport.testkit.listener.XMLAsyncMessageSender;
+import org.apache.synapse.transport.testkit.listener.XMLMessage;
 
 public class HttpCoreNIOListenerTest extends TestCase {
     public static TestSuite suite() {
         ListenerTestSuite suite = new ListenerTestSuite();
         HttpChannel channel = new HttpChannel();
         JavaNetSender javaNetSender = new JavaNetSender();
-        List<XMLAsyncMessageSender<? super HttpChannel>> senders = new LinkedList<XMLAsyncMessageSender<? super HttpChannel>>();
-        senders.add(javaNetSender);
+        List<AsyncMessageSender<? super HttpChannel,XMLMessage>> senders = new LinkedList<AsyncMessageSender<? super HttpChannel,XMLMessage>>();
+        senders.add(new Adapter<AsyncChannel<?>>(javaNetSender));
         senders.add(new AxisAsyncMessageSender());
-        for (XMLAsyncMessageSender<? super HttpChannel> sender : senders) {
+        for (AsyncMessageSender<? super HttpChannel,XMLMessage> sender : senders) {
             suite.addSOAPTests(channel, sender, ContentTypeMode.TRANSPORT);
             suite.addPOXTests(channel, sender, ContentTypeMode.TRANSPORT);
         }
@@ -47,7 +49,7 @@
         suite.addSwATests(channel, javaNetSender);
         suite.addTextPlainTests(channel, javaNetSender, ContentTypeMode.TRANSPORT);
         suite.addBinaryTest(channel, javaNetSender, ContentTypeMode.TRANSPORT);
-        suite.addRESTTests(channel, javaNetSender);
+        suite.addRESTTests(channel, new JavaNetRESTSender());
         return suite;
     }
 }

Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetRESTSender.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetRESTSender.java?rev=683039&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetRESTSender.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetRESTSender.java Tue Aug  5 16:41:14 2008
@@ -0,0 +1,46 @@
+/*
+ *  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.nhttp;
+
+import java.io.InputStream;
+import java.net.URL;
+import java.net.URLConnection;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.synapse.transport.testkit.listener.AbstractMessageSender;
+import org.apache.synapse.transport.testkit.listener.AsyncChannel;
+import org.apache.synapse.transport.testkit.listener.AsyncMessageSender;
+import org.apache.synapse.transport.testkit.listener.DefaultOperationDispatcher;
+import org.apache.synapse.transport.testkit.listener.RESTMessage;
+import org.apache.synapse.transport.testkit.listener.SenderOptions;
+
+public class JavaNetRESTSender extends AbstractMessageSender<AsyncChannel<?>> implements AsyncMessageSender<AsyncChannel<?>,RESTMessage> {
+    public JavaNetRESTSender() {
+        super("java.net");
+    }
+    
+    public void sendMessage(AsyncChannel<?> channel, SenderOptions options, RESTMessage message) throws Exception {
+        URLConnection connection = new URL(options.getEndpointReference() + "/" + DefaultOperationDispatcher.DEFAULT_OPERATION_NAME).openConnection();
+        connection.setDoInput(true);
+        InputStream in = connection.getInputStream();
+        IOUtils.copy(in, System.out);
+        in.close();
+    }
+}

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetSender.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetSender.java?rev=683039&r1=683038&r2=683039&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetSender.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetSender.java Tue Aug  5 16:41:14 2008
@@ -25,35 +25,27 @@
 import java.net.URLConnection;
 
 import org.apache.commons.io.IOUtils;
+import org.apache.synapse.transport.testkit.listener.AbstractMessageSender;
 import org.apache.synapse.transport.testkit.listener.AsyncChannel;
-import org.apache.synapse.transport.testkit.listener.BinaryPayloadSender;
-import org.apache.synapse.transport.testkit.listener.DefaultOperationDispatcher;
-import org.apache.synapse.transport.testkit.listener.RESTSender;
+import org.apache.synapse.transport.testkit.listener.AsyncMessageSender;
+import org.apache.synapse.transport.testkit.listener.ByteArrayMessage;
+import org.apache.synapse.transport.testkit.listener.SenderOptions;
 
-public class JavaNetSender extends BinaryPayloadSender<AsyncChannel<?>> implements RESTSender<AsyncChannel<?>> {
+public class JavaNetSender extends AbstractMessageSender<AsyncChannel<?>> implements AsyncMessageSender<AsyncChannel<?>,ByteArrayMessage> {
     public JavaNetSender() {
         super("java.net");
     }
     
-    @Override
-    public void sendMessage(AsyncChannel<?> channel, String endpointReference, String contentType, byte[] content) throws Exception {
-        URLConnection connection = new URL(endpointReference).openConnection();
+    public void sendMessage(AsyncChannel<?> channel, SenderOptions options, ByteArrayMessage message) throws Exception {
+        URLConnection connection = new URL(options.getEndpointReference()).openConnection();
         connection.setDoOutput(true);
         connection.setDoInput(true);
-        connection.setRequestProperty("Content-Type", contentType);
+        connection.setRequestProperty("Content-Type", message.getContentType());
         OutputStream out = connection.getOutputStream();
-        out.write(content);
+        out.write(message.getContent());
         out.close();
         InputStream in = connection.getInputStream();
         IOUtils.copy(in, System.out);
         in.close();
     }
-    
-    public void sendMessage(String endpointReference) throws Exception {
-        URLConnection connection = new URL(endpointReference + "/" + DefaultOperationDispatcher.DEFAULT_OPERATION_NAME).openConnection();
-        connection.setDoInput(true);
-        InputStream in = connection.getInputStream();
-        IOUtils.copy(in, System.out);
-        in.close();
-    }
 }
\ No newline at end of file

Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/Adapter.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/Adapter.java?rev=683039&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/Adapter.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/Adapter.java Tue Aug  5 16:41:14 2008
@@ -0,0 +1,53 @@
+/*
+ *  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.listener;
+
+import java.io.ByteArrayOutputStream;
+
+import org.apache.axiom.om.OMOutputFormat;
+
+public class Adapter<C extends AsyncChannel<?>> implements AsyncMessageSender<C,XMLMessage> {
+    private final AsyncMessageSender<C,ByteArrayMessage> parent;
+
+    public Adapter(AsyncMessageSender<C, ByteArrayMessage> parent) {
+        this.parent = parent;
+    }
+    
+    public void sendMessage(C channel, SenderOptions options, XMLMessage message) throws Exception {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        OMOutputFormat outputFormat = new OMOutputFormat();
+        outputFormat.setCharSetEncoding(options.getCharset());
+        outputFormat.setIgnoreXMLDeclaration(true);
+        message.getXmlMessageType().getMessage(message.getPayload()).serializeAndConsume(baos, outputFormat);
+        parent.sendMessage(channel, options, new ByteArrayMessage(message.getContentType(), baos.toByteArray()));
+    }
+
+    public void buildName(NameBuilder nameBuilder) {
+        parent.buildName(nameBuilder);
+    }
+
+    public void setUp(C channel) throws Exception {
+        parent.setUp(channel);
+    }
+
+    public void tearDown() throws Exception {
+        parent.tearDown();
+    }
+}

Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/AsyncMessageSender.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/AsyncMessageSender.java?rev=683039&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/AsyncMessageSender.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/AsyncMessageSender.java Tue Aug  5 16:41:14 2008
@@ -0,0 +1,24 @@
+/*
+ *  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.listener;
+
+public interface AsyncMessageSender<C extends AsyncChannel<?>,M> extends MessageSender<C> {
+    void sendMessage(C channel, SenderOptions options, M message) throws Exception;
+}

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/AsyncMessageTestCase.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/AsyncMessageTestCase.java?rev=683039&r1=683038&r2=683039&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/AsyncMessageTestCase.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/AsyncMessageTestCase.java Tue Aug  5 16:41:14 2008
@@ -26,9 +26,12 @@
 import org.apache.axis2.description.InOnlyAxisOperation;
 import org.apache.axis2.engine.AxisConfiguration;
 
-public abstract class AsyncMessageTestCase<C extends AsyncChannel<?>,S extends MessageSender<? super C>> extends ListenerTestCase<C,S> {
-    public AsyncMessageTestCase(C channel, S sender, String name, ContentTypeMode contentTypeMode, String contentType) {
+public abstract class AsyncMessageTestCase<C extends AsyncChannel<?>,M> extends ListenerTestCase<C,AsyncMessageSender<? super C,M>> {
+    private final String charset;
+    
+    public AsyncMessageTestCase(C channel, AsyncMessageSender<? super C,M> sender, String name, ContentTypeMode contentTypeMode, String contentType, String charset) {
         super(channel, sender, name, contentTypeMode, contentType);
+        this.charset = charset;
     }
 
     @Override
@@ -46,14 +49,17 @@
             channel.getSetup().setupContentType(service, contentType);
         }
         
+        M message = prepareMessage();
+        
         // Run the test.
         MessageData messageData;
         AxisConfiguration axisConfiguration = server.getAxisConfiguration();
         axisConfiguration.addService(service);
 //        server.addErrorListener(messageReceiver);
         try {
-            sendMessage(sender, server.getEPR(service),
-                    contentTypeMode == ContentTypeMode.TRANSPORT ? contentType : null);
+            SenderOptions options = new SenderOptions(server.getEPR(service), charset);
+//                    contentTypeMode == ContentTypeMode.TRANSPORT ? contentType : null);
+            sender.sendMessage(channel, options, message);
             messageData = messageReceiver.waitForMessage(8, TimeUnit.SECONDS);
             if (messageData == null) {
                 fail("Failed to get message");
@@ -64,9 +70,9 @@
             axisConfiguration.removeService(service.getName());
         }
         
-        checkMessageData(messageData);
+        checkMessageData(message, messageData);
     }
     
-    protected abstract void sendMessage(S sender, String endpointReference, String contentType) throws Exception;
-    protected abstract void checkMessageData(MessageData messageData) throws Exception;
+    protected abstract M prepareMessage() throws Exception;
+    protected abstract void checkMessageData(M message, MessageData messageData) throws Exception;
 }
\ No newline at end of file

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/AxisAsyncMessageSender.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/AxisAsyncMessageSender.java?rev=683039&r1=683038&r2=683039&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/AxisAsyncMessageSender.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/AxisAsyncMessageSender.java Tue Aug  5 16:41:14 2008
@@ -19,18 +19,14 @@
 
 package org.apache.synapse.transport.testkit.listener;
 
-import org.apache.axiom.om.OMElement;
 import org.apache.axis2.client.ServiceClient;
 
-public class AxisAsyncMessageSender extends AxisMessageSender<AsyncChannel<?>> implements XMLAsyncMessageSender<AsyncChannel<?>> {
+public class AxisAsyncMessageSender extends AxisMessageSender<AsyncChannel<?>> implements AsyncMessageSender<AsyncChannel<?>,XMLMessage> {
     public AxisAsyncMessageSender() {
         super("axis");
     }
 
-    public void sendMessage(AsyncChannel<?> channel,
-            String endpointReference, String contentType, String charset,
-            XMLMessageType xmlMessageType, OMElement payload) throws Exception {
-        
-        createClient(endpointReference, ServiceClient.ANON_OUT_ONLY_OP, xmlMessageType, payload, charset).execute(false);
+    public void sendMessage(AsyncChannel<?> channel, SenderOptions options, XMLMessage message) throws Exception {
+        createClient(options.getEndpointReference(), ServiceClient.ANON_OUT_ONLY_OP, message.getXmlMessageType(), message.getPayload(), options.getCharset()).execute(false);
     }
 }

Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/ByteArrayMessage.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/ByteArrayMessage.java?rev=683039&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/ByteArrayMessage.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/ByteArrayMessage.java Tue Aug  5 16:41:14 2008
@@ -0,0 +1,38 @@
+/*
+ *  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.listener;
+
+public class ByteArrayMessage {
+    private final String contentType;
+    private final byte[] content;
+
+    public ByteArrayMessage(String contentType, byte[] content) {
+        this.contentType = contentType;
+        this.content = content;
+    }
+
+    public String getContentType() {
+        return contentType;
+    }
+
+    public byte[] getContent() {
+        return content;
+    }
+}

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/ListenerTestSuite.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/ListenerTestSuite.java?rev=683039&r1=683038&r2=683039&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/ListenerTestSuite.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/ListenerTestSuite.java Tue Aug  5 16:41:14 2008
@@ -75,26 +75,26 @@
         this(true);
     }
 
-    public <C extends AsyncChannel<?>> void addSOAP11Test(C channel, XMLAsyncMessageSender<? super C> sender, ContentTypeMode contentTypeMode, MessageTestData data) {
+    public <C extends AsyncChannel<?>> void addSOAP11Test(C channel, AsyncMessageSender<? super C,XMLMessage> sender, ContentTypeMode contentTypeMode, MessageTestData data) {
         addTest(new XMLAsyncMessageTestCase<C>(channel, sender, XMLMessageType.SOAP11, "SOAP11", contentTypeMode, SOAP11Constants.SOAP_11_CONTENT_TYPE, data));
     }
     
-    public <C extends AsyncChannel<?>> void addSOAP12Test(C channel, XMLAsyncMessageSender<? super C> sender, ContentTypeMode contentTypeMode, MessageTestData data) {
+    public <C extends AsyncChannel<?>> void addSOAP12Test(C channel, AsyncMessageSender<? super C,XMLMessage> sender, ContentTypeMode contentTypeMode, MessageTestData data) {
         addTest(new XMLAsyncMessageTestCase<C>(channel, sender, XMLMessageType.SOAP12, "SOAP12", contentTypeMode, SOAP12Constants.SOAP_12_CONTENT_TYPE, data));
     }
     
-    public <C extends AsyncChannel<?>> void addSOAPTests(C channel, XMLAsyncMessageSender<? super C> sender, ContentTypeMode contentTypeMode) {
+    public <C extends AsyncChannel<?>> void addSOAPTests(C channel, AsyncMessageSender<? super C,XMLMessage> sender, ContentTypeMode contentTypeMode) {
         for (MessageTestData data : messageTestData) {
             addSOAP11Test(channel, sender, contentTypeMode, data);
             addSOAP12Test(channel, sender, contentTypeMode, data);
         }
     }
     
-    public <C extends AsyncChannel<?>> void addPOXTest(C channel, XMLAsyncMessageSender<? super C> sender, ContentTypeMode contentTypeMode, MessageTestData data) {
+    public <C extends AsyncChannel<?>> void addPOXTest(C channel, AsyncMessageSender<? super C,XMLMessage> sender, ContentTypeMode contentTypeMode, MessageTestData data) {
         addTest(new XMLAsyncMessageTestCase<C>(channel, sender, XMLMessageType.POX, "POX", contentTypeMode, "application/xml", data));
     }
     
-    public <C extends AsyncChannel<?>> void addPOXTests(C channel, XMLAsyncMessageSender<? super C> sender, ContentTypeMode contentTypeMode) {
+    public <C extends AsyncChannel<?>> void addPOXTests(C channel, AsyncMessageSender<? super C,XMLMessage> sender, ContentTypeMode contentTypeMode) {
         for (MessageTestData data : messageTestData) {
             addPOXTest(channel, sender, contentTypeMode, data);
         }
@@ -111,8 +111,8 @@
     }
     
     // TODO: this test actually only makes sense if the transport supports a Content-Type header
-    public <C extends AsyncChannel<?>> void addSwATests(C channel, BinaryPayloadSender<? super C> sender) {
-        addTest(new AsyncMessageTestCase<C,BinaryPayloadSender<? super C>>(channel, sender, "SOAPWithAttachments", ContentTypeMode.TRANSPORT, null) {
+    public <C extends AsyncChannel<?>> void addSwATests(C channel, AsyncMessageSender<? super C,ByteArrayMessage> sender) {
+        addTest(new AsyncMessageTestCase<C,ByteArrayMessage>(channel, sender, "SOAPWithAttachments", ContentTypeMode.TRANSPORT, null, null) {
             private byte[] attachmentContent;
             private String contentID;
             
@@ -125,7 +125,7 @@
             }
 
             @Override
-            protected void sendMessage(BinaryPayloadSender<? super C> sender, String endpointReference, String contentType) throws Exception {
+            protected ByteArrayMessage prepareMessage() throws Exception {
                 SOAPFactory factory = OMAbstractFactory.getSOAP12Factory();
                 SOAPEnvelope orgEnvelope = factory.createSOAPEnvelope();
                 SOAPBody orgBody = factory.createSOAPBody();
@@ -141,11 +141,11 @@
                 orgAttachments.addDataHandler(contentID, new DataHandler(new ByteArrayDataSource(attachmentContent, "application/octet-stream")));
                 ByteArrayOutputStream baos = new ByteArrayOutputStream();
                 MIMEOutputUtils.writeSOAPWithAttachmentsMessage(writer, baos, orgAttachments, outputFormat);
-                sender.sendMessage(getChannel(), endpointReference, outputFormat.getContentTypeForSwA(SOAP12Constants.SOAP_12_CONTENT_TYPE), baos.toByteArray());
+                return new ByteArrayMessage(outputFormat.getContentTypeForSwA(SOAP12Constants.SOAP_12_CONTENT_TYPE), baos.toByteArray());
             }
 
             @Override
-            protected void checkMessageData(MessageData messageData) throws Exception {
+            protected void checkMessageData(ByteArrayMessage message, MessageData messageData) throws Exception {
                 ByteArrayOutputStream baos = new ByteArrayOutputStream();
                 Attachments attachments = messageData.getAttachments();
                 DataHandler dataHandler = attachments.getDataHandler(contentID);
@@ -156,8 +156,8 @@
         });
     }
     
-    public <C extends AsyncChannel<?>> void addTextPlainTest(C channel, BinaryPayloadSender<? super C> sender, ContentTypeMode contentTypeMode, final MessageTestData data) {
-        addTest(new AsyncMessageTestCase<C,BinaryPayloadSender<? super C>>(channel, sender, "TextPlain", contentTypeMode, "text/plain; charset=\"" + data.getCharset() + "\"") {
+    public <C extends AsyncChannel<?>> void addTextPlainTest(C channel, AsyncMessageSender<? super C,ByteArrayMessage> sender, ContentTypeMode contentTypeMode, final MessageTestData data) {
+        addTest(new AsyncMessageTestCase<C,ByteArrayMessage>(channel, sender, "TextPlain", contentTypeMode, "text/plain; charset=\"" + data.getCharset() + "\"", data.getCharset()) {
             @Override
             protected void buildName(NameBuilder name) {
                 super.buildName(name);
@@ -165,12 +165,12 @@
             }
             
             @Override
-            protected void sendMessage(BinaryPayloadSender<? super C> sender, String endpointReference, String contentType) throws Exception {
-                sender.sendMessage(getChannel(), endpointReference, contentType, data.getText().getBytes(data.getCharset()));
+            protected ByteArrayMessage prepareMessage() throws Exception {
+                return new ByteArrayMessage(contentType, data.getText().getBytes(data.getCharset()));
             }
-            
+
             @Override
-            protected void checkMessageData(MessageData messageData) throws Exception {
+            protected void checkMessageData(ByteArrayMessage message, MessageData messageData) throws Exception {
                 SOAPEnvelope envelope = messageData.getEnvelope();
                 OMElement wrapper = envelope.getBody().getFirstElement();
                 assertEquals(BaseConstants.DEFAULT_TEXT_WRAPPER, wrapper.getQName());
@@ -179,30 +179,23 @@
         });
     }
     
-    public <C extends AsyncChannel<?>> void addTextPlainTests(C channel, BinaryPayloadSender<? super C> sender, ContentTypeMode contentTypeMode) {
+    public <C extends AsyncChannel<?>> void addTextPlainTests(C channel, AsyncMessageSender<? super C,ByteArrayMessage> sender, ContentTypeMode contentTypeMode) {
         for (MessageTestData data : messageTestData) {
             addTextPlainTest(channel, sender, contentTypeMode, data);
         }
     }
     
-    public <C extends AsyncChannel<?>> void addBinaryTest(C channel, BinaryPayloadSender<? super C> sender, ContentTypeMode contentTypeMode) {
-        addTest(new AsyncMessageTestCase<C, BinaryPayloadSender<? super C>>(channel, sender, "Binary", contentTypeMode, "application/octet-stream") {
-            private byte[] content;
-            
+    public <C extends AsyncChannel<?>> void addBinaryTest(C channel, AsyncMessageSender<? super C,ByteArrayMessage> sender, ContentTypeMode contentTypeMode) {
+        addTest(new AsyncMessageTestCase<C,ByteArrayMessage>(channel, sender, "Binary", contentTypeMode, "application/octet-stream", null) {
             @Override
-            protected void setUp() throws Exception {
-                super.setUp();
-                content = new byte[8192];
+            protected ByteArrayMessage prepareMessage() throws Exception {
+                byte[] content = new byte[8192];
                 random.nextBytes(content);
+                return new ByteArrayMessage("application/octet-stream", content);
             }
 
             @Override
-            protected void sendMessage(BinaryPayloadSender<? super C> sender, String endpointReference, String contentType) throws Exception {
-                sender.sendMessage(getChannel(), endpointReference, contentType, content);
-            }
-            
-            @Override
-            protected void checkMessageData(MessageData messageData) throws Exception {
+            protected void checkMessageData(ByteArrayMessage message, MessageData messageData) throws Exception {
                 SOAPEnvelope envelope = messageData.getEnvelope();
                 OMElement wrapper = envelope.getBody().getFirstElement();
                 assertEquals(BaseConstants.DEFAULT_BINARY_WRAPPER, wrapper.getQName());
@@ -210,20 +203,20 @@
                 assertTrue(child instanceof OMText);
                 ByteArrayOutputStream baos = new ByteArrayOutputStream();
                 ((DataHandler)((OMText)child).getDataHandler()).writeTo(baos);
-                assertTrue(Arrays.equals(content, baos.toByteArray()));
+                assertTrue(Arrays.equals(message.getContent(), baos.toByteArray()));
             }
         });
     }
 
-    public <C extends AsyncChannel<?>> void addRESTTests(C channel, RESTSender<? super C> sender) {
-        addTest(new AsyncMessageTestCase<C,RESTSender<? super C>>(channel, sender, "REST", ContentTypeMode.TRANSPORT, null) {
+    public <C extends AsyncChannel<?>> void addRESTTests(C channel, AsyncMessageSender<? super C,RESTMessage> sender) {
+        addTest(new AsyncMessageTestCase<C,RESTMessage>(channel, sender, "REST", ContentTypeMode.TRANSPORT, null, null) {
             @Override
-            protected void sendMessage(RESTSender<? super C> sender, String endpointReference, String contentType) throws Exception {
-                sender.sendMessage(endpointReference);
+            protected RESTMessage prepareMessage() throws Exception {
+                return new RESTMessage();
             }
-        
+
             @Override
-            protected void checkMessageData(MessageData messageData) throws Exception {
+            protected void checkMessageData(RESTMessage message, MessageData messageData) throws Exception {
                 // TODO
             }
         });

Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/RESTMessage.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/RESTMessage.java?rev=683039&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/RESTMessage.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/RESTMessage.java Tue Aug  5 16:41:14 2008
@@ -0,0 +1,24 @@
+/*
+ *  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.listener;
+
+public class RESTMessage {
+    // TODO
+}

Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/SenderOptions.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/SenderOptions.java?rev=683039&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/SenderOptions.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/SenderOptions.java Tue Aug  5 16:41:14 2008
@@ -0,0 +1,38 @@
+/*
+ *  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.listener;
+
+public class SenderOptions {
+    private final String endpointReference;
+    private final String charset;
+
+    public SenderOptions(String endpointReference, String charset) {
+        this.endpointReference = endpointReference;
+        this.charset = charset;
+    }
+
+    public String getEndpointReference() {
+        return endpointReference;
+    }
+
+    public String getCharset() {
+        return charset;
+    }
+}

Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/StringMessage.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/StringMessage.java?rev=683039&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/StringMessage.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/StringMessage.java Tue Aug  5 16:41:14 2008
@@ -0,0 +1,32 @@
+/*
+ *  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.listener;
+
+public class StringMessage {
+    private final String content;
+
+    public StringMessage(String content) {
+        this.content = content;
+    }
+
+    public String getContent() {
+        return content;
+    }
+}

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/XMLAsyncMessageTestCase.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/XMLAsyncMessageTestCase.java?rev=683039&r1=683038&r2=683039&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/XMLAsyncMessageTestCase.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/XMLAsyncMessageTestCase.java Tue Aug  5 16:41:14 2008
@@ -25,13 +25,12 @@
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.soap.SOAPEnvelope;
 
-public class XMLAsyncMessageTestCase<C extends AsyncChannel<?>> extends AsyncMessageTestCase<C,XMLAsyncMessageSender<? super C>> {
+public class XMLAsyncMessageTestCase<C extends AsyncChannel<?>> extends AsyncMessageTestCase<C,XMLMessage> {
     private final XMLMessageType xmlMessageType;
     private final MessageTestData data;
-    private OMElement orgElement;
     
-    public XMLAsyncMessageTestCase(C channel, XMLAsyncMessageSender<? super C> sender, XMLMessageType xmlMessageType, String baseName, ContentTypeMode contentTypeMode, String baseContentType, MessageTestData data) {
-        super(channel, sender, baseName, contentTypeMode, baseContentType + "; charset=\"" + data.getCharset() + "\"");
+    public XMLAsyncMessageTestCase(C channel, AsyncMessageSender<? super C,XMLMessage> sender, XMLMessageType xmlMessageType, String baseName, ContentTypeMode contentTypeMode, String baseContentType, MessageTestData data) {
+        super(channel, sender, baseName, contentTypeMode, baseContentType + "; charset=\"" + data.getCharset() + "\"", data.getCharset());
         this.xmlMessageType = xmlMessageType;
         this.data = data;
     }
@@ -43,23 +42,19 @@
     }
 
     @Override
-    protected void setUp() throws Exception {
-        super.setUp();
+    protected XMLMessage prepareMessage() throws Exception {
         OMFactory factory = xmlMessageType.getOMFactory();
-        orgElement = factory.createOMElement(new QName("root"));
+        OMElement orgElement = factory.createOMElement(new QName("root"));
         orgElement.setText(data.getText());
+        return new XMLMessage(contentType, orgElement, xmlMessageType);
     }
-    
+
     @Override
-    protected void checkMessageData(MessageData messageData) throws Exception {
+    protected void checkMessageData(XMLMessage message, MessageData messageData) throws Exception {
         SOAPEnvelope envelope = messageData.getEnvelope();
         OMElement element = envelope.getBody().getFirstElement();
+        OMElement orgElement = message.getPayload();
         assertEquals(orgElement.getQName(), element.getQName());
         assertEquals(data.getText(), element.getText());
     }
-
-    @Override
-    protected void sendMessage(XMLAsyncMessageSender<? super C> sender, String endpointReference, String contentType) throws Exception {
-        sender.sendMessage(getChannel(), endpointReference, contentType, data.getCharset(), xmlMessageType, orgElement);
-    }
 }
\ No newline at end of file

Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/XMLMessage.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/XMLMessage.java?rev=683039&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/XMLMessage.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/listener/XMLMessage.java Tue Aug  5 16:41:14 2008
@@ -0,0 +1,47 @@
+/*
+ *  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.listener;
+
+import org.apache.axiom.om.OMElement;
+
+public class XMLMessage {
+    private final String contentType;
+    private final XMLMessageType xmlMessageType;
+    private final OMElement payload;
+    
+    public XMLMessage(String contentType, OMElement payload,
+            XMLMessageType xmlMessageType) {
+        this.contentType = contentType;
+        this.payload = payload;
+        this.xmlMessageType = xmlMessageType;
+    }
+
+    public String getContentType() {
+        return contentType;
+    }
+
+    public XMLMessageType getXmlMessageType() {
+        return xmlMessageType;
+    }
+
+    public OMElement getPayload() {
+        return payload;
+    }
+}

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportListenerTest.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportListenerTest.java?rev=683039&r1=683038&r2=683039&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportListenerTest.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportListenerTest.java Tue Aug  5 16:41:14 2008
@@ -29,12 +29,16 @@
 import junit.framework.TestSuite;
 
 import org.apache.axis2.description.AxisService;
+import org.apache.synapse.transport.testkit.listener.AbstractMessageSender;
+import org.apache.synapse.transport.testkit.listener.Adapter;
+import org.apache.synapse.transport.testkit.listener.AsyncMessageSender;
 import org.apache.synapse.transport.testkit.listener.AxisAsyncMessageSender;
-import org.apache.synapse.transport.testkit.listener.BinaryPayloadSender;
+import org.apache.synapse.transport.testkit.listener.ByteArrayMessage;
 import org.apache.synapse.transport.testkit.listener.ContentTypeMode;
 import org.apache.synapse.transport.testkit.listener.ListenerTestSetup;
 import org.apache.synapse.transport.testkit.listener.ListenerTestSuite;
-import org.apache.synapse.transport.testkit.listener.XMLAsyncMessageSender;
+import org.apache.synapse.transport.testkit.listener.SenderOptions;
+import org.apache.synapse.transport.testkit.listener.XMLMessage;
 
 /**
  * TransportListenerTestTemplate implementation for the VFS transport.
@@ -47,11 +51,10 @@
         }
     }
     
-    private static class MessageSenderImpl extends BinaryPayloadSender<VFSFileChannel> {
-        @Override
-        public void sendMessage(VFSFileChannel channel, String endpointReference, String contentType, byte[] content) throws Exception {
+    private static class MessageSenderImpl extends AbstractMessageSender<VFSFileChannel> implements AsyncMessageSender<VFSFileChannel,ByteArrayMessage> {
+        public void sendMessage(VFSFileChannel channel, SenderOptions options, ByteArrayMessage message) throws Exception {
             OutputStream out = new FileOutputStream(channel.getRequestFile());
-            out.write(content);
+            out.write(message.getContent());
             out.close();
         }
     }
@@ -62,10 +65,10 @@
         TestStrategyImpl setup = new TestStrategyImpl();
         VFSFileChannel channel = new VFSFileChannel(setup, new File("target/vfs3/req/in").getAbsoluteFile());
         MessageSenderImpl vfsSender = new MessageSenderImpl();
-        List<XMLAsyncMessageSender<? super VFSFileChannel>> senders = new LinkedList<XMLAsyncMessageSender<? super VFSFileChannel>>();
-        senders.add(vfsSender);
+        List<AsyncMessageSender<? super VFSFileChannel,XMLMessage>> senders = new LinkedList<AsyncMessageSender<? super VFSFileChannel,XMLMessage>>();
+        senders.add(new Adapter<VFSFileChannel>(vfsSender));
         senders.add(new AxisAsyncMessageSender());
-        for (XMLAsyncMessageSender<? super VFSFileChannel> sender : senders) {
+        for (AsyncMessageSender<? super VFSFileChannel,XMLMessage> sender : senders) {
             suite.addSOAPTests(channel, sender, ContentTypeMode.SERVICE);
             suite.addPOXTests(channel, sender, ContentTypeMode.SERVICE);
             // Since VFS has no Content-Type header, SwA is not supported.