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/18 22:21:03 UTC

svn commit: r686863 [1/2] - 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/name/ testkit/server/ testkit/...

Author: veithen
Date: Mon Aug 18 13:21:02 2008
New Revision: 686863

URL: http://svn.apache.org/viewvc?rev=686863&view=rev
Log:
Transport test kit: Added support for request/response test cases with non Axis clients. Implemented one for the mail transport.

Added:
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/FlatLayout.java
      - copied, changed from r686289, synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MimeClient.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailAsyncClient.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailRequestResponseClient.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MessageLayout.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MultipartLayout.java
      - copied, changed from r686289, synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MultipartClient.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/RequestResponseTestClient.java
      - copied, changed from r686626, synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/XMLRequestResponseTestClient.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/RequestResponseTestClientAdapter.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/AxisMessage.java
      - copied, changed from r686043, synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/MessageData.java
Removed:
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MimeClient.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MultipartClient.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/XMLRequestResponseTestClient.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/MessageData.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/XMLMessageType.java
Modified:
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSBytesMessageClient.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/mail/MailChannel.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailClient.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTestEnvironment.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/nhttp/HttpCoreNIOListenerTest.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetClient.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/AdapterUtils.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuite.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/axis2/AxisAsyncTestClient.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/axis2/AxisRequestResponseTestClient.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/axis2/AxisTestClient.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/message/ByteArrayMessage.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/MessageConverter.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/XMLMessage.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/name/NameUtils.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/AsyncEndpointFactory.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/AsyncEndpointFactoryAdapter.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/EndpointFactory.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AsyncEndpointImpl.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisAsyncEndpointFactory.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisEchoEndpointFactory.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/AxisServer.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/server/axis2/MockMessageReceiver.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResource.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TransportTestCase.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/BinaryTestCase.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/RESTTestCase.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/SwATestCase.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/TextPlainTestCase.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/XMLAsyncMessageTestCase.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/echo/XMLRequestResponseMessageTestCase.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSMockAsyncEndpoint.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportListenerTest.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportSenderTest.java

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSBytesMessageClient.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSBytesMessageClient.java?rev=686863&r1=686862&r2=686863&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSBytesMessageClient.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSBytesMessageClient.java Mon Aug 18 13:21:02 2008
@@ -33,7 +33,7 @@
                             ByteArrayMessage message) throws Exception {
         BytesMessage jmsMessage = session.createBytesMessage();
         if (message.getContentType() != null) {
-            jmsMessage.setStringProperty(BaseConstants.CONTENT_TYPE, message.getContentType());
+            jmsMessage.setStringProperty(BaseConstants.CONTENT_TYPE, message.getContentType().toString());
         }
         jmsMessage.writeBytes(message.getContent());
         producer.send(jmsMessage);

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=686863&r1=686862&r2=686863&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 Mon Aug 18 13:21:02 2008
@@ -46,43 +46,43 @@
         TransportTestSuite suite = new TransportTestSuite();
         JMSTestEnvironment env = new QpidTestEnvironment();
         TransportDescriptionFactory tdf = new JMSTransportDescriptionFactory();
-        AxisServer server = new AxisServer(tdf);
-        AxisAsyncEndpointFactory asyncEndpointFactory = new AxisAsyncEndpointFactory(server);
-        AxisEchoEndpointFactory echoEndpointFactory = new AxisEchoEndpointFactory(server);
+        AxisServer server = new AxisServer();
+        AxisAsyncEndpointFactory asyncEndpointFactory = new AxisAsyncEndpointFactory();
+        AxisEchoEndpointFactory echoEndpointFactory = new AxisEchoEndpointFactory();
         JMSBytesMessageClient bytesMessageClient = new JMSBytesMessageClient();
         JMSTextMessageClient textMessageClient = new JMSTextMessageClient();
         List<AsyncTestClient<XMLMessage>> clients = new LinkedList<AsyncTestClient<XMLMessage>>();
         clients.add(adapt(bytesMessageClient, MessageConverter.XML_TO_BYTE));
         clients.add(adapt(textMessageClient, MessageConverter.XML_TO_STRING));
-        clients.add(new AxisAsyncTestClient(tdf));
-        clients.add(new JMSAxisAsyncClient(tdf, JMSConstants.JMS_BYTE_MESSAGE));
-        clients.add(new JMSAxisAsyncClient(tdf, JMSConstants.JMS_TEXT_MESSAGE));
-        suite.addPOXTests(env, new JMSRequestResponseChannel(JMSConstants.DESTINATION_TYPE_QUEUE, JMSConstants.DESTINATION_TYPE_QUEUE), new AxisRequestResponseTestClient(tdf), echoEndpointFactory, ContentTypeMode.TRANSPORT);
-        suite.addPOXTests(env, new JMSRequestResponseChannel(JMSConstants.DESTINATION_TYPE_QUEUE, JMSConstants.DESTINATION_TYPE_QUEUE), new AxisRequestResponseTestClient(tdf), new MockEchoEndpointFactory(), ContentTypeMode.TRANSPORT);
+        clients.add(adapt(new AxisAsyncTestClient(tdf), MessageConverter.XML_TO_AXIS));
+        clients.add(adapt(new JMSAxisAsyncClient(tdf, JMSConstants.JMS_BYTE_MESSAGE), MessageConverter.XML_TO_AXIS));
+        clients.add(adapt(new JMSAxisAsyncClient(tdf, JMSConstants.JMS_TEXT_MESSAGE), MessageConverter.XML_TO_AXIS));
+        suite.addPOXTests(new JMSRequestResponseChannel(JMSConstants.DESTINATION_TYPE_QUEUE, JMSConstants.DESTINATION_TYPE_QUEUE), adapt(new AxisRequestResponseTestClient(tdf), MessageConverter.XML_TO_AXIS, MessageConverter.AXIS_TO_XML), echoEndpointFactory, ContentTypeMode.TRANSPORT, env, server, tdf);
+        suite.addPOXTests(new JMSRequestResponseChannel(JMSConstants.DESTINATION_TYPE_QUEUE, JMSConstants.DESTINATION_TYPE_QUEUE), adapt(new AxisRequestResponseTestClient(tdf), MessageConverter.XML_TO_AXIS, MessageConverter.AXIS_TO_XML), new MockEchoEndpointFactory(), ContentTypeMode.TRANSPORT, env);
         for (String destinationType : new String[] { JMSConstants.DESTINATION_TYPE_QUEUE, JMSConstants.DESTINATION_TYPE_TOPIC }) {
             JMSAsyncChannel channel = new JMSAsyncChannel(destinationType);
             for (ContentTypeMode contentTypeMode : ContentTypeMode.values()) {
                 for (AsyncTestClient<XMLMessage> client : clients) {
                     if (contentTypeMode == ContentTypeMode.TRANSPORT) {
-                        suite.addSOAPTests(env, channel, client, asyncEndpointFactory, contentTypeMode);
-                        suite.addPOXTests(env, channel, client, asyncEndpointFactory, contentTypeMode);
+                        suite.addSOAPTests(channel, client, asyncEndpointFactory, contentTypeMode, env, server, tdf);
+                        suite.addPOXTests(channel, client, asyncEndpointFactory, contentTypeMode, env, server, tdf);
                     } else {
                         // If no content type header is used, SwA can't be used and the JMS transport
                         // always uses the default charset encoding
-                        suite.addSOAP11Test(env, channel, client, asyncEndpointFactory, contentTypeMode, new MessageTestData(null, TransportTestSuite.testString,
-                                MessageContext.DEFAULT_CHAR_SET_ENCODING));
-                        suite.addSOAP12Test(env, channel, client, asyncEndpointFactory, contentTypeMode, new MessageTestData(null, TransportTestSuite.testString,
-                                MessageContext.DEFAULT_CHAR_SET_ENCODING));
-                        suite.addPOXTest(env, channel, client, asyncEndpointFactory, contentTypeMode, new MessageTestData(null, TransportTestSuite.testString,
-                                MessageContext.DEFAULT_CHAR_SET_ENCODING));
+                        suite.addSOAP11Test(channel, client, asyncEndpointFactory, contentTypeMode, new MessageTestData(null, TransportTestSuite.testString,
+                                MessageContext.DEFAULT_CHAR_SET_ENCODING), env, server, tdf);
+                        suite.addSOAP12Test(channel, client, asyncEndpointFactory, contentTypeMode, new MessageTestData(null, TransportTestSuite.testString,
+                                MessageContext.DEFAULT_CHAR_SET_ENCODING), env, server, tdf);
+                        suite.addPOXTest(channel, client, asyncEndpointFactory, contentTypeMode, new MessageTestData(null, TransportTestSuite.testString,
+                                MessageContext.DEFAULT_CHAR_SET_ENCODING), env, server, tdf);
                     }
                 }
                 if (contentTypeMode == ContentTypeMode.TRANSPORT) {
-                    suite.addSwATests(env, channel, bytesMessageClient, asyncEndpointFactory);
+                    suite.addSwATests(channel, bytesMessageClient, asyncEndpointFactory, env, server, tdf);
                 }
                 // TODO: these tests are temporarily disabled because of SYNAPSE-304
                 // addTextPlainTests(strategy, suite);
-                suite.addBinaryTest(env, channel, bytesMessageClient, adapt(asyncEndpointFactory, MessageConverter.AXIS_TO_BYTE), contentTypeMode);
+                suite.addBinaryTest(channel, bytesMessageClient, adapt(asyncEndpointFactory, MessageConverter.AXIS_TO_BYTE), contentTypeMode, env, server, tdf);
             }
         }
         return suite;

Copied: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/FlatLayout.java (from r686289, synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MimeClient.java)
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/FlatLayout.java?p2=synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/FlatLayout.java&p1=synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MimeClient.java&r1=686289&r2=686863&rev=686863&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MimeClient.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/FlatLayout.java Mon Aug 18 13:21:02 2008
@@ -24,10 +24,9 @@
 
 import org.apache.synapse.transport.testkit.name.DisplayName;
 
-@DisplayName("mime")
-public class MimeClient extends MailClient {
-    @Override
-    protected void setupMessage(MimeMessage msg, DataHandler dh) throws Exception {
+@DisplayName("flat")
+public class FlatLayout implements MessageLayout {
+    public void setupMessage(MimeMessage msg, DataHandler dh) throws Exception {
         msg.setDataHandler(dh);
     }
 }
\ No newline at end of file

Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailAsyncClient.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailAsyncClient.java?rev=686863&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailAsyncClient.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailAsyncClient.java Mon Aug 18 13:21:02 2008
@@ -0,0 +1,34 @@
+/*
+ *  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.mail;
+
+import org.apache.synapse.transport.testkit.client.AsyncTestClient;
+import org.apache.synapse.transport.testkit.client.ClientOptions;
+import org.apache.synapse.transport.testkit.message.ByteArrayMessage;
+
+public class MailAsyncClient extends MailClient implements AsyncTestClient<ByteArrayMessage> {
+    public MailAsyncClient(MessageLayout layout) {
+        super(layout);
+    }
+    
+    public void sendMessage(ClientOptions options, ByteArrayMessage message) throws Exception {
+        sendMessage(message);
+    }
+}

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailChannel.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailChannel.java?rev=686863&r1=686862&r2=686863&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailChannel.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailChannel.java Mon Aug 18 13:21:02 2008
@@ -20,34 +20,54 @@
 package org.apache.synapse.transport.mail;
 
 import java.util.Map;
+import java.util.Properties;
+
+import javax.mail.Session;
 
 import org.apache.axis2.description.AxisService;
 import org.apache.synapse.transport.testkit.listener.AbstractChannel;
 import org.apache.synapse.transport.testkit.listener.AsyncChannel;
+import org.apache.synapse.transport.testkit.listener.RequestResponseChannel;
+
+import com.icegreen.greenmail.user.GreenMailUser;
 
-public class MailChannel extends AbstractChannel implements AsyncChannel {
-    private String address;
+public class MailChannel extends AbstractChannel implements AsyncChannel, RequestResponseChannel {
+    private GreenMailUser sender;
+    private GreenMailUser recipient;
     private String protocol;
-    private Map<String,String> inProperties;
+    private Map<String,String> senderInProperties;
+    private Map<String,String> recipientInProperties;
     
     @SuppressWarnings("unused")
     private void setUp(MailTestEnvironment env) throws Exception {
         protocol = env.getProtocol();
-        inProperties = env.getInProperties();
-        address = env.getAddress();
+        sender = env.getUser(0);
+        senderInProperties = env.getInProperties(0);
+        recipient = env.getUser(1);
+        recipientInProperties = env.getInProperties(1);
+    }
+
+    public GreenMailUser getSender() {
+        return sender;
     }
 
-    public String getAddress() {
-        return address;
+    public GreenMailUser getRecipient() {
+        return recipient;
+    }
+    
+    public Session getReplySession() {
+        Properties props = new Properties();
+        props.putAll(senderInProperties);
+        return Session.getInstance(props);
     }
 
     @Override
     public void setupService(AxisService service) throws Exception {
         service.addParameter("transport.mail.Protocol", protocol);
-        service.addParameter("transport.mail.Address", address);
+        service.addParameter("transport.mail.Address", recipient.getEmail());
         service.addParameter("transport.PollInterval", "1");
         
-        for (Map.Entry<String,String> prop : inProperties.entrySet()) {
+        for (Map.Entry<String,String> prop : recipientInProperties.entrySet()) {
             service.addParameter(prop.getKey(), prop.getValue());
         }
     }

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailClient.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailClient.java?rev=686863&r1=686862&r2=686863&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailClient.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailClient.java Mon Aug 18 13:21:02 2008
@@ -20,7 +20,6 @@
 package org.apache.synapse.transport.mail;
 
 import java.util.Date;
-import java.util.Map;
 import java.util.Properties;
 
 import javax.activation.DataHandler;
@@ -31,32 +30,43 @@
 import javax.mail.internet.MimeMessage;
 import javax.mail.util.ByteArrayDataSource;
 
-import org.apache.synapse.transport.testkit.client.AsyncTestClient;
-import org.apache.synapse.transport.testkit.client.ClientOptions;
+import org.apache.axiom.om.util.UUIDGenerator;
 import org.apache.synapse.transport.testkit.message.ByteArrayMessage;
+import org.apache.synapse.transport.testkit.name.NameComponent;
 
-public abstract class MailClient implements AsyncTestClient<ByteArrayMessage> {
-    private Map<String,String> outProperties;
+public abstract class MailClient {
+    private final MessageLayout layout;
     private MailChannel channel;
+    private Session session;
     
+    public MailClient(MessageLayout layout) {
+        this.layout = layout;
+    }
+
+    @NameComponent("layout")
+    public MessageLayout getLayout() {
+        return layout;
+    }
+
     @SuppressWarnings("unused")
     private void setUp(MailTestEnvironment env, MailChannel channel) throws Exception {
-        outProperties = env.getOutProperties();
+        Properties props = new Properties();
+        props.putAll(env.getOutProperties());
+        session = Session.getInstance(props);
         this.channel = channel;
     }
 
-    public void sendMessage(ClientOptions options, ByteArrayMessage message) throws Exception {
-        Properties props = new Properties();
-        props.putAll(outProperties);
-        Session session = Session.getInstance(props);
+    protected String sendMessage(ByteArrayMessage message) throws Exception {
+        String msgId = UUIDGenerator.getUUID();
         MimeMessage msg = new MimeMessage(session);
-        msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(channel.getAddress()));
-        msg.setFrom(new InternetAddress("test-sender@localhost"));
+        msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(channel.getRecipient().getEmail()));
+        msg.setFrom(new InternetAddress(channel.getSender().getEmail()));
         msg.setSentDate(new Date());
-        DataHandler dh = new DataHandler(new ByteArrayDataSource(message.getContent(), message.getContentType()));
-        setupMessage(msg, dh);
+        msg.setHeader(MailConstants.MAIL_HEADER_MESSAGE_ID, msgId);
+        msg.setHeader(MailConstants.MAIL_HEADER_X_MESSAGE_ID, msgId);
+        DataHandler dh = new DataHandler(new ByteArrayDataSource(message.getContent(), message.getContentType().toString()));
+        layout.setupMessage(msg, dh);
         Transport.send(msg);
+        return msgId;
     }
-    
-    protected abstract void setupMessage(MimeMessage msg, DataHandler dh) throws Exception;
 }

Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailRequestResponseClient.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailRequestResponseClient.java?rev=686863&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailRequestResponseClient.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailRequestResponseClient.java Mon Aug 18 13:21:02 2008
@@ -0,0 +1,121 @@
+/*
+ *  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.mail;
+
+import java.io.ByteArrayOutputStream;
+import java.util.Arrays;
+
+import javax.mail.Flags;
+import javax.mail.Folder;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.Store;
+import javax.mail.internet.ContentType;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.transport.testkit.client.ClientOptions;
+import org.apache.synapse.transport.testkit.client.RequestResponseTestClient;
+import org.apache.synapse.transport.testkit.message.ByteArrayMessage;
+
+import com.icegreen.greenmail.user.GreenMailUser;
+
+public class MailRequestResponseClient extends MailClient implements RequestResponseTestClient<ByteArrayMessage,ByteArrayMessage> {
+    private static final Log log = LogFactory.getLog(MailRequestResponseClient.class);
+    
+    private Store store;
+    
+    public MailRequestResponseClient(MessageLayout layout) {
+        super(layout);
+    }
+    
+    @SuppressWarnings("unused")
+    private void setUp(MailTestEnvironment env, MailChannel channel) throws MessagingException {
+        Session session = channel.getReplySession();
+        session.setDebug(log.isTraceEnabled());
+        store = session.getStore(env.getProtocol());
+        GreenMailUser sender = channel.getSender();
+        store.connect(sender.getLogin(), sender.getPassword());
+    }
+    
+    @SuppressWarnings("unused")
+    private void tearDown() throws MessagingException {
+        store.close();
+        store = null;
+    }
+    
+    public ByteArrayMessage sendMessage(ClientOptions options, ByteArrayMessage message) throws Exception {
+        String msgId = sendMessage(message);
+        Message reply = waitForReply(msgId);
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        reply.getDataHandler().writeTo(baos);
+        return new ByteArrayMessage(new ContentType(reply.getContentType()), baos.toByteArray());
+    }
+    
+    private Message waitForReply(String msgId) throws Exception {
+        Thread.yield();
+        Thread.sleep(100);
+        
+        Message reply = null;
+        boolean replyNotFound = true;
+        int retryCount = 50;
+        while (replyNotFound) {
+            log.debug("Checking for response ... with MessageID : " + msgId);
+            reply = getMessage(msgId);
+            if (reply != null) {
+                replyNotFound = false;
+            } else {
+                if (retryCount-- > 0) {
+                    Thread.sleep(100);
+                } else {
+                    break;
+                }
+            }
+        }
+        return reply;
+    }
+
+    private Message getMessage(String requestMsgId) {
+        try {
+            Folder folder = store.getFolder(MailConstants.DEFAULT_FOLDER);
+            folder.open(Folder.READ_WRITE);
+            Message[] msgs = folder.getMessages();
+            log.debug(msgs.length + " replies in reply mailbox");
+            for (Message m:msgs) {
+                String[] inReplyTo = m.getHeader(MailConstants.MAIL_HEADER_IN_REPLY_TO);
+                log.debug("Got reply to : " + Arrays.toString(inReplyTo));
+                if (inReplyTo != null && inReplyTo.length > 0) {
+                    for (int j=0; j<inReplyTo.length; j++) {
+                        if (requestMsgId.equals(inReplyTo[j])) {
+                            m.setFlag(Flags.Flag.DELETED, true);
+                            return m;
+                        }
+                    }
+                }
+                m.setFlag(Flags.Flag.DELETED, true);
+            }
+            folder.close(true);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+}

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTestEnvironment.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTestEnvironment.java?rev=686863&r1=686862&r2=686863&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTestEnvironment.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTestEnvironment.java Mon Aug 18 13:21:02 2008
@@ -22,15 +22,17 @@
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.description.TransportOutDescription;
 import org.apache.synapse.transport.testkit.TestEnvironment;
+import org.apache.synapse.transport.testkit.TransportDescriptionFactory;
 
+import com.icegreen.greenmail.user.GreenMailUser;
 import com.icegreen.greenmail.util.GreenMail;
 import com.icegreen.greenmail.util.ServerSetup;
 
-public class MailTestEnvironment extends TestEnvironment {
-    private static final String ADDRESS = "test-account";
-    private static final String PASSWORD = "password";
-    
+public class MailTestEnvironment extends TestEnvironment implements TransportDescriptionFactory {
     private static final ServerSetup SMTP =
                 new ServerSetup(7025, "127.0.0.1", ServerSetup.PROTOCOL_SMTP);
     
@@ -38,11 +40,15 @@
                 new ServerSetup(7110, "127.0.0.1", ServerSetup.PROTOCOL_POP3);
     
     private GreenMail greenMail;
+    private GreenMailUser[] users;
     
     @SuppressWarnings("unused")
     private void setUp() throws Exception {
         greenMail = new GreenMail(new ServerSetup[] { SMTP, POP3 });
-        greenMail.setUser(ADDRESS, PASSWORD);
+        users = new GreenMailUser[10];
+        for (int i=0; i<10; i++) {
+            users[i] = greenMail.setUser("test" + i, "password");
+        }
         greenMail.start();
     }
 
@@ -50,22 +56,23 @@
     private void tearDown() throws Exception {
         greenMail.stop();
         greenMail = null;
+        users = null;
     }
     
     public String getProtocol() {
         return "pop3";
     }
     
-    public String getAddress() {
-        return ADDRESS;
+    public GreenMailUser getUser(int i) {
+        return users[i];
     }
     
-    public Map<String,String> getInProperties() {
+    public Map<String,String> getInProperties(int i) {
         Map<String,String> props = new HashMap<String,String>();
         props.put("mail.pop3.host", "localhost");
         props.put("mail.pop3.port", String.valueOf(POP3.getPort()));
-        props.put("mail.pop3.user", ADDRESS);
-        props.put("mail.pop3.password", PASSWORD);
+        props.put("mail.pop3.user", users[i].getLogin());
+        props.put("mail.pop3.password", users[i].getPassword());
         return props;
     }
     
@@ -75,4 +82,19 @@
         props.put("mail.smtp.port", String.valueOf(SMTP.getPort()));
         return props;
     }
+
+    public TransportInDescription createTransportInDescription() throws Exception {
+        TransportInDescription trpInDesc = new TransportInDescription(MailConstants.TRANSPORT_NAME);
+        trpInDesc.setReceiver(new MailTransportListener());
+        return trpInDesc;
+    }
+
+    public TransportOutDescription createTransportOutDescription() throws Exception {
+        TransportOutDescription trpOutDesc = new TransportOutDescription(MailConstants.TRANSPORT_NAME);
+        trpOutDesc.setSender(new MailTransportSender());
+        for (Map.Entry<String,String> prop : getOutProperties().entrySet()) {
+            trpOutDesc.addParameter(new Parameter(prop.getKey(), prop.getValue()));
+        }
+        return trpOutDesc;
+    }
 }

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=686863&r1=686862&r2=686863&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 Mon Aug 18 13:21:02 2008
@@ -36,6 +36,7 @@
 import org.apache.synapse.transport.testkit.message.MessageConverter;
 import org.apache.synapse.transport.testkit.message.XMLMessage;
 import org.apache.synapse.transport.testkit.server.axis2.AxisAsyncEndpointFactory;
+import org.apache.synapse.transport.testkit.server.axis2.AxisEchoEndpointFactory;
 import org.apache.synapse.transport.testkit.server.axis2.AxisServer;
 
 public class MailTransportListenerTest extends TestCase {
@@ -45,30 +46,28 @@
         // TODO: these test don't work; need more analysis why this is so
         suite.addExclude("(&(messageType=SOAP12)(data=Latin1))");
         suite.addExclude("(&(messageType=POX)(data=Latin1))");
-        suite.addExclude("(&(client=multipart)(data=Latin1))");
-        suite.addExclude("(&(client=multipart)(messageType=POX))");
+        suite.addExclude("(&(layout=multipart)(data=Latin1))");
+        suite.addExclude("(&(layout=multipart)(messageType=POX))");
         suite.addExclude("(test=AsyncSwA)");
         suite.addExclude("(test=AsyncBinary)");
         suite.addExclude("(&(test=AsyncTextPlain)(!(data=ASCII)))");
         
         MailTestEnvironment env = new MailTestEnvironment();
         
-        TransportDescriptionFactory tdf =
-            new SimpleTransportDescriptionFactory(MailConstants.TRANSPORT_NAME,
-                    MailTransportListener.class, MailTransportSender.class);
-        AxisServer axisServer = new AxisServer(tdf);
-        AxisAsyncEndpointFactory asyncEndpointFactory = new AxisAsyncEndpointFactory(axisServer);
+        AxisServer axisServer = new AxisServer();
+        AxisAsyncEndpointFactory asyncEndpointFactory = new AxisAsyncEndpointFactory();
         MailChannel channel = new MailChannel();
-        List<MailClient> clients = new LinkedList<MailClient>();
-        clients.add(new MimeClient());
-        clients.add(new MultipartClient());
-        for (MailClient client : clients) {
+        suite.addPOXTests(channel, adapt(new MailRequestResponseClient(new FlatLayout()), MessageConverter.XML_TO_BYTE, MessageConverter.BYTE_TO_XML), new AxisEchoEndpointFactory(), ContentTypeMode.TRANSPORT, env, axisServer);
+        List<MailAsyncClient> clients = new LinkedList<MailAsyncClient>();
+        clients.add(new MailAsyncClient(new FlatLayout()));
+        clients.add(new MailAsyncClient(new MultipartLayout()));
+        for (MailAsyncClient client : clients) {
             AsyncTestClient<XMLMessage> xmlClient = adapt(client, MessageConverter.XML_TO_BYTE);
-            suite.addSOAPTests(env, channel, xmlClient, asyncEndpointFactory, ContentTypeMode.TRANSPORT);
-            suite.addPOXTests(env, channel, xmlClient, asyncEndpointFactory, ContentTypeMode.TRANSPORT);
-            suite.addSwATests(env, channel, client, asyncEndpointFactory);
-            suite.addTextPlainTests(env, channel, AdapterUtils.adapt(client, MessageConverter.STRING_TO_BYTE), AdapterUtils.adapt(asyncEndpointFactory, MessageConverter.AXIS_TO_STRING), ContentTypeMode.TRANSPORT);
-            suite.addBinaryTest(env, channel, client, AdapterUtils.adapt(asyncEndpointFactory, MessageConverter.AXIS_TO_BYTE), ContentTypeMode.TRANSPORT);
+            suite.addSOAPTests(channel, xmlClient, asyncEndpointFactory, ContentTypeMode.TRANSPORT, env, axisServer);
+            suite.addPOXTests(channel, xmlClient, asyncEndpointFactory, ContentTypeMode.TRANSPORT, env, axisServer);
+            suite.addSwATests(channel, client, asyncEndpointFactory, env, axisServer);
+            suite.addTextPlainTests(channel, adapt(client, MessageConverter.STRING_TO_BYTE), AdapterUtils.adapt(asyncEndpointFactory, MessageConverter.AXIS_TO_STRING), ContentTypeMode.TRANSPORT, env, axisServer);
+            suite.addBinaryTest(channel, client, adapt(asyncEndpointFactory, MessageConverter.AXIS_TO_BYTE), ContentTypeMode.TRANSPORT, env, axisServer);
         }
         return suite;
     }

Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MessageLayout.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MessageLayout.java?rev=686863&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MessageLayout.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MessageLayout.java Mon Aug 18 13:21:02 2008
@@ -0,0 +1,27 @@
+/*
+ *  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.mail;
+
+import javax.activation.DataHandler;
+import javax.mail.internet.MimeMessage;
+
+public interface MessageLayout {
+    void setupMessage(MimeMessage msg, DataHandler dh) throws Exception;
+}

Copied: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MultipartLayout.java (from r686289, synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MultipartClient.java)
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MultipartLayout.java?p2=synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MultipartLayout.java&p1=synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MultipartClient.java&r1=686289&r2=686863&rev=686863&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MultipartClient.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MultipartLayout.java Mon Aug 18 13:21:02 2008
@@ -27,9 +27,8 @@
 import org.apache.synapse.transport.testkit.name.DisplayName;
 
 @DisplayName("multipart")
-public class MultipartClient extends MailClient {
-    @Override
-    protected void setupMessage(MimeMessage msg, DataHandler dh) throws Exception {
+public class MultipartLayout implements MessageLayout {
+    public void setupMessage(MimeMessage msg, DataHandler dh) throws Exception {
         MimeMultipart multipart = new MimeMultipart();
         MimeBodyPart part1 = new MimeBodyPart();
         part1.setContent("This is an automated message.", "text/plain");

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=686863&r1=686862&r2=686863&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 Mon Aug 18 13:21:02 2008
@@ -68,22 +68,22 @@
         // Change to tdfSimple if you want to check the behavior of Axis' blocking HTTP transport 
         TransportDescriptionFactory tdf = tdfNIO;
         
-        AxisServer axisServer = new AxisServer(tdf);
-        AxisAsyncEndpointFactory asyncEndpointFactory = new AxisAsyncEndpointFactory(axisServer);
+        AxisServer axisServer = new AxisServer();
+        AxisAsyncEndpointFactory asyncEndpointFactory = new AxisAsyncEndpointFactory();
         HttpChannel channel = new HttpChannel();
         JavaNetClient javaNetClient = new JavaNetClient();
         List<AsyncTestClient<XMLMessage>> clients = new LinkedList<AsyncTestClient<XMLMessage>>();
         clients.add(adapt(javaNetClient, MessageConverter.XML_TO_BYTE));
-        clients.add(new AxisAsyncTestClient(tdf));
+        clients.add(adapt(new AxisAsyncTestClient(tdf), MessageConverter.XML_TO_AXIS));
         for (AsyncTestClient<XMLMessage> client : clients) {
-            suite.addSOAPTests(env, channel, client, asyncEndpointFactory, ContentTypeMode.TRANSPORT);
-            suite.addPOXTests(env, channel, client, asyncEndpointFactory, ContentTypeMode.TRANSPORT);
+            suite.addSOAPTests(channel, client, asyncEndpointFactory, ContentTypeMode.TRANSPORT, env, axisServer, tdf);
+            suite.addPOXTests(channel, client, asyncEndpointFactory, ContentTypeMode.TRANSPORT, env, axisServer, tdf);
         }
 //        suite.addPOXTests(channel, new AxisRequestResponseMessageSender(), ContentTypeMode.TRANSPORT);
-        suite.addSwATests(env, channel, javaNetClient, asyncEndpointFactory);
-        suite.addTextPlainTests(env, channel, adapt(javaNetClient, MessageConverter.STRING_TO_BYTE), adapt(asyncEndpointFactory, MessageConverter.AXIS_TO_STRING), ContentTypeMode.TRANSPORT);
-        suite.addBinaryTest(env, channel, javaNetClient, adapt(asyncEndpointFactory, MessageConverter.AXIS_TO_BYTE), ContentTypeMode.TRANSPORT);
-        suite.addRESTTests(env, channel, new JavaNetRESTClient(), asyncEndpointFactory);
+        suite.addSwATests(channel, javaNetClient, asyncEndpointFactory, env, axisServer, tdf);
+        suite.addTextPlainTests(channel, adapt(javaNetClient, MessageConverter.STRING_TO_BYTE), adapt(asyncEndpointFactory, MessageConverter.AXIS_TO_STRING), ContentTypeMode.TRANSPORT, env, axisServer, tdf);
+        suite.addBinaryTest(channel, javaNetClient, adapt(asyncEndpointFactory, MessageConverter.AXIS_TO_BYTE), ContentTypeMode.TRANSPORT, env, axisServer, tdf);
+        suite.addRESTTests(channel, new JavaNetRESTClient(), asyncEndpointFactory, env, axisServer, tdf);
         return suite;
     }
 }

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetClient.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetClient.java?rev=686863&r1=686862&r2=686863&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetClient.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetClient.java Mon Aug 18 13:21:02 2008
@@ -36,7 +36,7 @@
         URLConnection connection = new URL(options.getEndpointReference()).openConnection();
         connection.setDoOutput(true);
         connection.setDoInput(true);
-        connection.setRequestProperty("Content-Type", message.getContentType());
+        connection.setRequestProperty("Content-Type", message.getContentType().toString());
         OutputStream out = connection.getOutputStream();
         out.write(message.getContent());
         out.close();

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/AdapterUtils.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/AdapterUtils.java?rev=686863&r1=686862&r2=686863&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/AdapterUtils.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/AdapterUtils.java Mon Aug 18 13:21:02 2008
@@ -21,13 +21,19 @@
 
 import org.apache.synapse.transport.testkit.client.AsyncTestClient;
 import org.apache.synapse.transport.testkit.client.AsyncTestClientAdapter;
+import org.apache.synapse.transport.testkit.client.RequestResponseTestClient;
+import org.apache.synapse.transport.testkit.client.RequestResponseTestClientAdapter;
 import org.apache.synapse.transport.testkit.message.MessageConverter;
 import org.apache.synapse.transport.testkit.server.AsyncEndpointFactory;
 import org.apache.synapse.transport.testkit.server.AsyncEndpointFactoryAdapter;
 
 public class AdapterUtils {
-    public static <M,N> AsyncTestClient<M> adapt(AsyncTestClient<N> parent, MessageConverter<M,N> converter) {
-        return new AsyncTestClientAdapter<M,N>(parent, converter);
+    public static <M,N> AsyncTestClient<M> adapt(AsyncTestClient<N> target, MessageConverter<M,N> converter) {
+        return new AsyncTestClientAdapter<M,N>(target, converter);
+    }
+
+    public static <M,N,O,P> RequestResponseTestClient<M,O> adapt(RequestResponseTestClient<N,P> target, MessageConverter<M,N> requestConverter, MessageConverter<P,O> responseConverter) {
+        return new RequestResponseTestClientAdapter<M,N,O,P>(target, requestConverter, responseConverter);
     }
 
     public static <M,N> AsyncEndpointFactory<M> adapt(AsyncEndpointFactory<N> targetFactory, MessageConverter<N,M> converter) {

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuite.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuite.java?rev=686863&r1=686862&r2=686863&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuite.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuite.java Mon Aug 18 13:21:02 2008
@@ -30,19 +30,18 @@
 import org.apache.axiom.soap.SOAP11Constants;
 import org.apache.axiom.soap.SOAP12Constants;
 import org.apache.synapse.transport.testkit.client.AsyncTestClient;
-import org.apache.synapse.transport.testkit.client.XMLRequestResponseTestClient;
+import org.apache.synapse.transport.testkit.client.RequestResponseTestClient;
 import org.apache.synapse.transport.testkit.filter.FilterExpression;
 import org.apache.synapse.transport.testkit.filter.FilterExpressionParser;
 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.listener.RequestResponseChannel;
+import org.apache.synapse.transport.testkit.message.AxisMessage;
 import org.apache.synapse.transport.testkit.message.ByteArrayMessage;
-import org.apache.synapse.transport.testkit.message.MessageData;
 import org.apache.synapse.transport.testkit.message.RESTMessage;
 import org.apache.synapse.transport.testkit.message.StringMessage;
 import org.apache.synapse.transport.testkit.message.XMLMessage;
-import org.apache.synapse.transport.testkit.message.XMLMessageType;
 import org.apache.synapse.transport.testkit.message.RESTMessage.Parameter;
 import org.apache.synapse.transport.testkit.server.AsyncEndpointFactory;
 import org.apache.synapse.transport.testkit.server.EndpointFactory;
@@ -92,62 +91,62 @@
         excludes.add(FilterExpressionParser.parse(filter));
     }
 
-    public void addSOAP11Test(TestEnvironment env, AsyncChannel channel, AsyncTestClient<XMLMessage> client, AsyncEndpointFactory<MessageData> endpointFactory, ContentTypeMode contentTypeMode, MessageTestData data) {
-        addTest(new XMLAsyncMessageTestCase(env, channel, client, endpointFactory, XMLMessageType.SOAP11, contentTypeMode, SOAP11Constants.SOAP_11_CONTENT_TYPE, data));
+    public void addSOAP11Test(AsyncChannel channel, AsyncTestClient<XMLMessage> client, AsyncEndpointFactory<AxisMessage> endpointFactory, ContentTypeMode contentTypeMode, MessageTestData data, Object... resources) {
+        addTest(new XMLAsyncMessageTestCase(channel, client, endpointFactory, XMLMessage.Type.SOAP11, contentTypeMode, SOAP11Constants.SOAP_11_CONTENT_TYPE, data, resources));
     }
     
-    public void addSOAP12Test(TestEnvironment env, AsyncChannel channel, AsyncTestClient<XMLMessage> client, AsyncEndpointFactory<MessageData> endpointFactory, ContentTypeMode contentTypeMode, MessageTestData data) {
-        addTest(new XMLAsyncMessageTestCase(env, channel, client, endpointFactory, XMLMessageType.SOAP12, contentTypeMode, SOAP12Constants.SOAP_12_CONTENT_TYPE, data));
+    public void addSOAP12Test(AsyncChannel channel, AsyncTestClient<XMLMessage> client, AsyncEndpointFactory<AxisMessage> endpointFactory, ContentTypeMode contentTypeMode, MessageTestData data, Object... resources) {
+        addTest(new XMLAsyncMessageTestCase(channel, client, endpointFactory, XMLMessage.Type.SOAP12, contentTypeMode, SOAP12Constants.SOAP_12_CONTENT_TYPE, data, resources));
     }
     
-    public void addSOAPTests(TestEnvironment env, AsyncChannel channel, AsyncTestClient<XMLMessage> client, AsyncEndpointFactory<MessageData> endpointFactory, ContentTypeMode contentTypeMode) {
+    public void addSOAPTests(AsyncChannel channel, AsyncTestClient<XMLMessage> client, AsyncEndpointFactory<AxisMessage> endpointFactory, ContentTypeMode contentTypeMode, Object... resources) {
         for (MessageTestData data : messageTestData) {
-            addSOAP11Test(env, channel, client, endpointFactory, contentTypeMode, data);
-            addSOAP12Test(env, channel, client, endpointFactory, contentTypeMode, data);
+            addSOAP11Test(channel, client, endpointFactory, contentTypeMode, data, resources);
+            addSOAP12Test(channel, client, endpointFactory, contentTypeMode, data, resources);
         }
     }
     
-    public void addPOXTest(TestEnvironment env, AsyncChannel channel, AsyncTestClient<XMLMessage> client, AsyncEndpointFactory<MessageData> endpointFactory, ContentTypeMode contentTypeMode, MessageTestData data) {
-        addTest(new XMLAsyncMessageTestCase(env, channel, client, endpointFactory, XMLMessageType.POX, contentTypeMode, "application/xml", data));
+    public void addPOXTest(AsyncChannel channel, AsyncTestClient<XMLMessage> client, AsyncEndpointFactory<AxisMessage> endpointFactory, ContentTypeMode contentTypeMode, MessageTestData data, Object... resources) {
+        addTest(new XMLAsyncMessageTestCase(channel, client, endpointFactory, XMLMessage.Type.POX, contentTypeMode, "application/xml", data, resources));
     }
     
-    public void addPOXTests(TestEnvironment env, AsyncChannel channel, AsyncTestClient<XMLMessage> client, AsyncEndpointFactory<MessageData> endpointFactory, ContentTypeMode contentTypeMode) {
+    public void addPOXTests(AsyncChannel channel, AsyncTestClient<XMLMessage> client, AsyncEndpointFactory<AxisMessage> endpointFactory, ContentTypeMode contentTypeMode, Object... resources) {
         for (MessageTestData data : messageTestData) {
-            addPOXTest(env, channel, client, endpointFactory, contentTypeMode, data);
+            addPOXTest(channel, client, endpointFactory, contentTypeMode, data, resources);
         }
     }
     
-    public void addPOXTest(TestEnvironment env, RequestResponseChannel channel, XMLRequestResponseTestClient client, EndpointFactory endpointFactory, ContentTypeMode contentTypeMode, MessageTestData data) {
-        addTest(new XMLRequestResponseMessageTestCase(env, channel, client, endpointFactory, contentTypeMode, "application/xml", XMLMessageType.POX, data));
+    public void addPOXTest(RequestResponseChannel channel, RequestResponseTestClient<XMLMessage,XMLMessage> client, EndpointFactory endpointFactory, ContentTypeMode contentTypeMode, MessageTestData data, Object... resources) {
+        addTest(new XMLRequestResponseMessageTestCase(channel, client, endpointFactory, contentTypeMode, "application/xml", XMLMessage.Type.POX, data, resources));
     }
     
-    public void addPOXTests(TestEnvironment env, RequestResponseChannel channel, XMLRequestResponseTestClient client, EndpointFactory endpointFactory, ContentTypeMode contentTypeMode) {
+    public void addPOXTests(RequestResponseChannel channel, RequestResponseTestClient<XMLMessage,XMLMessage> client, EndpointFactory endpointFactory, ContentTypeMode contentTypeMode, Object... resources) {
         for (MessageTestData data : messageTestData) {
-            addPOXTest(env, channel, client, endpointFactory, contentTypeMode, data);
+            addPOXTest(channel, client, endpointFactory, contentTypeMode, data, resources);
         }
     }
     
     // TODO: this test actually only makes sense if the transport supports a Content-Type header
-    public void addSwATests(TestEnvironment env, AsyncChannel channel, AsyncTestClient<ByteArrayMessage> client, AsyncEndpointFactory<MessageData> endpointFactory) {
-        addTest(new SwATestCase(env, channel, client, endpointFactory));
+    public void addSwATests(AsyncChannel channel, AsyncTestClient<ByteArrayMessage> client, AsyncEndpointFactory<AxisMessage> endpointFactory, Object... resources) {
+        addTest(new SwATestCase(channel, client, endpointFactory, resources));
     }
     
-    public void addTextPlainTest(TestEnvironment env, AsyncChannel channel, AsyncTestClient<StringMessage> client, AsyncEndpointFactory<StringMessage> endpointFactory, ContentTypeMode contentTypeMode, MessageTestData data) {
-        addTest(new TextPlainTestCase(env, channel, client, endpointFactory, contentTypeMode, data));
+    public void addTextPlainTest(AsyncChannel channel, AsyncTestClient<StringMessage> client, AsyncEndpointFactory<StringMessage> endpointFactory, ContentTypeMode contentTypeMode, MessageTestData data, Object... resources) {
+        addTest(new TextPlainTestCase(channel, client, endpointFactory, contentTypeMode, data, resources));
     }
     
-    public void addTextPlainTests(TestEnvironment env, AsyncChannel channel, AsyncTestClient<StringMessage> client, AsyncEndpointFactory<StringMessage> endpointFactory, ContentTypeMode contentTypeMode) {
+    public void addTextPlainTests(AsyncChannel channel, AsyncTestClient<StringMessage> client, AsyncEndpointFactory<StringMessage> endpointFactory, ContentTypeMode contentTypeMode, Object... resources) {
         for (MessageTestData data : messageTestData) {
-            addTextPlainTest(env, channel, client, endpointFactory, contentTypeMode, data);
+            addTextPlainTest(channel, client, endpointFactory, contentTypeMode, data, resources);
         }
     }
     
-    public void addBinaryTest(TestEnvironment env, AsyncChannel channel, AsyncTestClient<ByteArrayMessage> client, AsyncEndpointFactory<ByteArrayMessage> endpointFactory, ContentTypeMode contentTypeMode) {
-        addTest(new BinaryTestCase(env, channel, client, endpointFactory, contentTypeMode));
+    public void addBinaryTest(AsyncChannel channel, AsyncTestClient<ByteArrayMessage> client, AsyncEndpointFactory<ByteArrayMessage> endpointFactory, ContentTypeMode contentTypeMode, Object... resources) {
+        addTest(new BinaryTestCase(channel, client, endpointFactory, contentTypeMode, resources));
     }
 
-    public void addRESTTests(TestEnvironment env, AsyncChannel channel, AsyncTestClient<RESTMessage> client, AsyncEndpointFactory<MessageData> endpointFactory) {
-        addTest(new RESTTestCase(env, channel, client, endpointFactory, restTestMessage1));
+    public void addRESTTests(AsyncChannel channel, AsyncTestClient<RESTMessage> client, AsyncEndpointFactory<AxisMessage> endpointFactory, Object... resources) {
+        addTest(new RESTTestCase(channel, client, endpointFactory, restTestMessage1, resources));
         // TODO: regression test for SYNAPSE-431
 //        addTest(new RESTTestCase(env, channel, client, endpointFactory, restTestMessage2));
     }

Copied: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/RequestResponseTestClient.java (from r686626, synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/XMLRequestResponseTestClient.java)
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/RequestResponseTestClient.java?p2=synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/RequestResponseTestClient.java&p1=synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/XMLRequestResponseTestClient.java&r1=686626&r2=686863&rev=686863&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/XMLRequestResponseTestClient.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/RequestResponseTestClient.java Mon Aug 18 13:21:02 2008
@@ -19,9 +19,6 @@
 
 package org.apache.synapse.transport.testkit.client;
 
-import org.apache.axiom.om.OMElement;
-import org.apache.synapse.transport.testkit.message.XMLMessageType;
-
-public interface XMLRequestResponseTestClient extends TestClient {
-    OMElement sendMessage(String endpointReference, String contentType, String charset, XMLMessageType xmlMessageType, OMElement payload) throws Exception;
+public interface RequestResponseTestClient<M,N> extends TestClient {
+    N sendMessage(ClientOptions options, M message) throws Exception;
 }

Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/RequestResponseTestClientAdapter.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/RequestResponseTestClientAdapter.java?rev=686863&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/RequestResponseTestClientAdapter.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/RequestResponseTestClientAdapter.java Mon Aug 18 13:21:02 2008
@@ -0,0 +1,45 @@
+/*
+ *  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.client;
+
+import org.apache.synapse.transport.testkit.Adapter;
+import org.apache.synapse.transport.testkit.message.MessageConverter;
+
+public class RequestResponseTestClientAdapter<M,N,O,P> implements RequestResponseTestClient<M,O>, Adapter {
+    private final RequestResponseTestClient<N,P> target;
+    private final MessageConverter<M,N> requestConverter;
+    private final MessageConverter<P,O> responseConverter;
+
+    public RequestResponseTestClientAdapter(RequestResponseTestClient<N,P> target,
+                                            MessageConverter<M,N> requestConverter,
+                                            MessageConverter<P,O> responseConverter) {
+        this.target = target;
+        this.requestConverter = requestConverter;
+        this.responseConverter = responseConverter;
+    }
+    
+    public RequestResponseTestClient<N,P> getTarget() {
+        return target;
+    }
+
+    public O sendMessage(ClientOptions options, M message) throws Exception {
+        return responseConverter.convert(options, target.sendMessage(options, requestConverter.convert(options, message)));
+    }
+}

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/axis2/AxisAsyncTestClient.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/axis2/AxisAsyncTestClient.java?rev=686863&r1=686862&r2=686863&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/axis2/AxisAsyncTestClient.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/client/axis2/AxisAsyncTestClient.java Mon Aug 18 13:21:02 2008
@@ -23,16 +23,16 @@
 import org.apache.synapse.transport.testkit.TransportDescriptionFactory;
 import org.apache.synapse.transport.testkit.client.AsyncTestClient;
 import org.apache.synapse.transport.testkit.client.ClientOptions;
-import org.apache.synapse.transport.testkit.message.XMLMessage;
+import org.apache.synapse.transport.testkit.message.AxisMessage;
 import org.apache.synapse.transport.testkit.name.DisplayName;
 
 @DisplayName("axis")
-public class AxisAsyncTestClient extends AxisTestClient implements AsyncTestClient<XMLMessage> {
+public class AxisAsyncTestClient extends AxisTestClient implements AsyncTestClient<AxisMessage> {
     public AxisAsyncTestClient(TransportDescriptionFactory tdf) {
         super(tdf);
     }
 
-    public void sendMessage(ClientOptions options, XMLMessage message) throws Exception {
-        createClient(options.getEndpointReference(), ServiceClient.ANON_OUT_ONLY_OP, message.getXmlMessageType(), message.getPayload(), options.getCharset()).execute(false);
+    public void sendMessage(ClientOptions options, AxisMessage message) throws Exception {
+        createClient(options, message, ServiceClient.ANON_OUT_ONLY_OP).execute(false);
     }
 }

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=686863&r1=686862&r2=686863&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 18 13:21:02 2008
@@ -19,29 +19,24 @@
 
 package org.apache.synapse.transport.testkit.client.axis2;
 
-import org.apache.axiom.om.OMElement;
 import org.apache.axis2.client.OperationClient;
 import org.apache.axis2.client.ServiceClient;
-import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.wsdl.WSDLConstants;
 import org.apache.synapse.transport.testkit.TransportDescriptionFactory;
-import org.apache.synapse.transport.testkit.client.XMLRequestResponseTestClient;
-import org.apache.synapse.transport.testkit.message.XMLMessageType;
+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.name.DisplayName;
 
 @DisplayName("axis")
-public class AxisRequestResponseTestClient extends AxisTestClient implements XMLRequestResponseTestClient {
+public class AxisRequestResponseTestClient extends AxisTestClient implements RequestResponseTestClient<AxisMessage,AxisMessage> {
     public AxisRequestResponseTestClient(TransportDescriptionFactory tdf) {
         super(tdf);
     }
 
-    public OMElement sendMessage(String endpointReference, String contentType, String charset,
-            XMLMessageType xmlMessageType, OMElement payload) throws Exception {
-        
-        OperationClient mepClient = createClient(endpointReference, ServiceClient.ANON_OUT_IN_OP, xmlMessageType, payload, charset);
+    public AxisMessage sendMessage(ClientOptions options, AxisMessage message) throws Exception {
+        OperationClient mepClient = createClient(options, message, ServiceClient.ANON_OUT_IN_OP);
         mepClient.execute(true);
-        
-        MessageContext response = mepClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
-        return response.getEnvelope().getBody().getFirstElement();
+        return 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=686863&r1=686862&r2=686863&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 18 13:21:02 2008
@@ -23,7 +23,6 @@
 
 import javax.xml.namespace.QName;
 
-import org.apache.axiom.om.OMElement;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
 import org.apache.axis2.client.OperationClient;
@@ -37,9 +36,10 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.synapse.transport.testkit.TransportDescriptionFactory;
+import org.apache.synapse.transport.testkit.client.ClientOptions;
 import org.apache.synapse.transport.testkit.client.TestClient;
 import org.apache.synapse.transport.testkit.listener.Channel;
-import org.apache.synapse.transport.testkit.message.XMLMessageType;
+import org.apache.synapse.transport.testkit.message.AxisMessage;
 
 public class AxisTestClient implements TestClient {
     private static final Log log = LogFactory.getLog(AxisTestClient.class);
@@ -73,20 +73,24 @@
         trpOutDesc.getSender().stop();
     }
     
-    protected OperationClient createClient(String endpointReference, QName operationQName, XMLMessageType xmlMessageType, OMElement payload, String charset) throws AxisFault {
+    protected OperationClient createClient(ClientOptions options, AxisMessage message, QName operationQName) throws AxisFault {
+        String endpointReference = options.getEndpointReference();
         log.info("Sending to " + endpointReference);
         
-        Options options = new Options();
-        options.setTo(channel.createEndpointReference(endpointReference));
+        Options axisOptions = new Options();
+        axisOptions.setTo(channel.createEndpointReference(endpointReference));
 
         ServiceClient serviceClient = new ServiceClient(cfgCtx, null);
-        serviceClient.setOptions(options);
+        serviceClient.setOptions(axisOptions);
         
         OperationClient mepClient = serviceClient.createClient(operationQName);
-        MessageContext mc = xmlMessageType.createMessageContext(payload);
+        MessageContext mc = new MessageContext();
+        mc.setProperty(Constants.Configuration.MESSAGE_TYPE, message.getMessageType());
+        mc.setEnvelope(message.getEnvelope());
+        mc.setAttachmentMap(message.getAttachments());
         channel.setupRequestMessageContext(mc);
         setupRequestMessageContext(mc);
-        mc.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING, charset);
+        mc.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING, options.getCharset());
         mc.setServiceContext(serviceClient.getServiceContext());
         mepClient.addMessageContext(mc);
         

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=686863&r1=686862&r2=686863&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 Mon Aug 18 13:21:02 2008
@@ -19,7 +19,6 @@
 
 package org.apache.synapse.transport.testkit.listener;
 
-import org.apache.synapse.transport.testkit.TestEnvironment;
 import org.apache.synapse.transport.testkit.client.AsyncTestClient;
 import org.apache.synapse.transport.testkit.client.ClientOptions;
 import org.apache.synapse.transport.testkit.name.NameComponent;
@@ -32,11 +31,13 @@
     private final String charset;
     private final AsyncEndpointFactory<N> endpointFactory;
     
-    public AsyncMessageTestCase(TestEnvironment env, AsyncChannel channel, AsyncTestClient<M> client, AsyncEndpointFactory<N> endpointFactory, ContentTypeMode contentTypeMode, String contentType, String charset) {
-        super(env, channel, endpointFactory.getServer(), contentTypeMode, contentType);
+    // 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);
         this.client = client;
         this.endpointFactory = endpointFactory;
         this.charset = charset;
+        addResource(channel);
         addResource(client);
         addResource(endpointFactory);
     }

Copied: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/AxisMessage.java (from r686043, synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/MessageData.java)
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/AxisMessage.java?p2=synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/AxisMessage.java&p1=synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/MessageData.java&r1=686043&r2=686863&rev=686863&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/MessageData.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/AxisMessage.java Mon Aug 18 13:21:02 2008
@@ -21,6 +21,8 @@
 
 import org.apache.axiom.attachments.Attachments;
 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;
 
 /**
@@ -28,20 +30,45 @@
  * This class is used by {@link MockMessageReceiver} because it is not safe to
  * keep a reference to the {@link org.apache.axis2.context.MessageContext} object.
  */
-public class MessageData {
-    private final SOAPEnvelope envelope;
-    private final Attachments attachments;
+public class AxisMessage {
+    private String messageType;
+    private SOAPEnvelope envelope;
+    private Attachments attachments;
     
-    public MessageData(SOAPEnvelope envelope, Attachments attachments) {
-        this.envelope = envelope;
-        this.attachments = attachments;
+    public AxisMessage() {
+    }
+    
+    public AxisMessage(MessageContext msgContext) {
+        envelope = msgContext.getEnvelope();
+        envelope.build();
+        attachments = msgContext.getAttachmentMap();
+        // Make sure that all attachments are read
+        attachments.getAllContentIDs();
+        setAttachments(attachments);
+        messageType = (String)msgContext.getProperty(Constants.Configuration.MESSAGE_TYPE);
+    }
+    
+    public String getMessageType() {
+        return messageType;
+    }
+
+    public void setMessageType(String messageType) {
+        this.messageType = messageType;
     }
 
     public SOAPEnvelope getEnvelope() {
         return envelope;
     }
 
+    public void setEnvelope(SOAPEnvelope envelope) {
+        this.envelope = envelope;
+    }
+
     public Attachments getAttachments() {
         return attachments;
     }
-}
\ No newline at end of file
+    
+    public void setAttachments(Attachments attachments) {
+        this.attachments = attachments;
+    }
+}

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/ByteArrayMessage.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/ByteArrayMessage.java?rev=686863&r1=686862&r2=686863&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/ByteArrayMessage.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/ByteArrayMessage.java Mon Aug 18 13:21:02 2008
@@ -19,16 +19,18 @@
 
 package org.apache.synapse.transport.testkit.message;
 
+import javax.mail.internet.ContentType;
+
 public class ByteArrayMessage {
-    private final String contentType;
+    private final ContentType contentType;
     private final byte[] content;
 
-    public ByteArrayMessage(String contentType, byte[] content) {
+    public ByteArrayMessage(ContentType contentType, byte[] content) {
         this.contentType = contentType;
         this.content = content;
     }
 
-    public String getContentType() {
+    public ContentType getContentType() {
         return contentType;
     }
 

Modified: 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/MessageConverter.java?rev=686863&r1=686862&r2=686863&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/MessageConverter.java Mon Aug 18 13:21:02 2008
@@ -19,29 +19,36 @@
 
 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.OMFactory;
 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;
 
 public interface MessageConverter<T,U> {
-    MessageConverter<MessageData,ByteArrayMessage> AXIS_TO_BYTE =
-        new MessageConverter<MessageData,ByteArrayMessage>() {
+    MessageConverter<AxisMessage,ByteArrayMessage> AXIS_TO_BYTE =
+        new MessageConverter<AxisMessage,ByteArrayMessage>() {
 
-        public ByteArrayMessage convert(ClientOptions options, MessageData message) throws Exception {
+        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());
@@ -53,10 +60,10 @@
         }
     };
     
-    MessageConverter<MessageData,StringMessage> AXIS_TO_STRING =
-        new MessageConverter<MessageData,StringMessage>() {
+    MessageConverter<AxisMessage,StringMessage> AXIS_TO_STRING =
+        new MessageConverter<AxisMessage,StringMessage>() {
 
-        public StringMessage convert(ClientOptions options, MessageData message) throws Exception {
+        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());
@@ -64,6 +71,46 @@
         }
     };
     
+    MessageConverter<XMLMessage,AxisMessage> XML_TO_AXIS =
+        new MessageConverter<XMLMessage,AxisMessage>() {
+
+        public AxisMessage convert(ClientOptions options, XMLMessage message) throws Exception {
+            XMLMessage.Type type = message.getType();
+            AxisMessage result = new AxisMessage();
+            SOAPFactory factory;
+            if (type == XMLMessage.Type.SOAP12) {
+                factory = OMAbstractFactory.getSOAP12Factory();
+            } else {
+                factory = OMAbstractFactory.getSOAP11Factory();
+            }
+            result.setMessageType(type.getContentType());
+            SOAPEnvelope envelope = factory.getDefaultEnvelope();
+            envelope.getBody().addChild(message.getPayload());
+            result.setEnvelope(envelope);
+            return result;
+        }
+    };
+    
+    MessageConverter<AxisMessage,XMLMessage> AXIS_TO_XML =
+        new MessageConverter<AxisMessage,XMLMessage>() {
+
+        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);
+        }
+    };
+    
     MessageConverter<XMLMessage,ByteArrayMessage> XML_TO_BYTE =
         new MessageConverter<XMLMessage,ByteArrayMessage>() {
 
@@ -72,8 +119,36 @@
             OMOutputFormat outputFormat = new OMOutputFormat();
             outputFormat.setCharSetEncoding(options.getCharset());
             outputFormat.setIgnoreXMLDeclaration(true);
-            message.getXmlMessageType().getMessage(message.getPayload()).serializeAndConsume(baos, outputFormat);
-            return new ByteArrayMessage(message.getContentType(), baos.toByteArray());
+            message.getMessageElement().serializeAndConsume(baos, outputFormat);
+            return new ByteArrayMessage(new ContentType(message.getContentType()), baos.toByteArray());
+        }
+    };
+    
+    MessageConverter<ByteArrayMessage,XMLMessage> BYTE_TO_XML =
+        new MessageConverter<ByteArrayMessage,XMLMessage>() {
+
+        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);
         }
     };
     
@@ -84,31 +159,41 @@
             OMOutputFormat format = new OMOutputFormat();
             format.setIgnoreXMLDeclaration(true);
             StringWriter sw = new StringWriter();
-            message.getXmlMessageType().getMessage(message.getPayload()).serializeAndConsume(sw, format);
+            message.getMessageElement().serializeAndConsume(sw, format);
             return new StringMessage(message.getContentType(), sw.toString());
         }
     };
     
-    MessageConverter<ByteArrayMessage,XMLMessage> BINARY_WRAPPER =
-        new MessageConverter<ByteArrayMessage,XMLMessage>() {
+    MessageConverter<ByteArrayMessage,AxisMessage> BINARY_WRAPPER =
+        new MessageConverter<ByteArrayMessage,AxisMessage>() {
 
-        public XMLMessage convert(ClientOptions options, ByteArrayMessage message) throws Exception {
-            OMFactory omFactory = XMLMessageType.SOAP11.getOMFactory();
-            OMElement wrapper = omFactory.createOMElement(BaseConstants.DEFAULT_BINARY_WRAPPER);
+        public AxisMessage convert(ClientOptions options, ByteArrayMessage 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()));
-            wrapper.addChild(omFactory.createOMText(dataHandler, true));
-            return new XMLMessage(message.getContentType(), wrapper, XMLMessageType.SOAP11);
+            wrapper.addChild(factory.createOMText(dataHandler, true));
+            envelope.getBody().addChild(wrapper);
+            result.setEnvelope(envelope);
+            return result;
         }
     };
     
-    MessageConverter<StringMessage,XMLMessage> TEXT_WRAPPER =
-        new MessageConverter<StringMessage,XMLMessage>() {
-
-        public XMLMessage convert(ClientOptions options, StringMessage message) throws Exception {
-            OMFactory omFactory = XMLMessageType.SOAP11.getOMFactory();
-            OMElement wrapper = omFactory.createOMElement(BaseConstants.DEFAULT_TEXT_WRAPPER);
-            wrapper.addChild(omFactory.createOMText(message.getContent()));
-            return new XMLMessage(message.getContentType(), wrapper, XMLMessageType.SOAP11);
+    MessageConverter<StringMessage,AxisMessage> TEXT_WRAPPER =
+        new MessageConverter<StringMessage,AxisMessage>() {
+
+        public AxisMessage convert(ClientOptions options, StringMessage 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_TEXT_WRAPPER);
+            wrapper.addChild(factory.createOMText(message.getContent()));
+            envelope.getBody().addChild(wrapper);
+            result.setEnvelope(envelope);
+            return result;
         }
     };
     
@@ -116,7 +201,7 @@
         new MessageConverter<StringMessage,ByteArrayMessage>() {
 
         public ByteArrayMessage convert(ClientOptions options, StringMessage message) throws Exception {
-            return new ByteArrayMessage(message.getContentType(), message.getContent().getBytes(options.getCharset()));
+            return new ByteArrayMessage(new ContentType(message.getContentType()), message.getContent().getBytes(options.getCharset()));
         }
     };
     
@@ -124,9 +209,9 @@
         new MessageConverter<ByteArrayMessage,StringMessage>() {
 
         public StringMessage convert(ClientOptions options, ByteArrayMessage message) throws Exception {
-            ContentType contentType = new ContentType(message.getContentType());
+            ContentType contentType = message.getContentType();
             String charset = contentType.getParameter("charset");
-            return new StringMessage(message.getContentType(), new String(message.getContent(), charset));
+            return new StringMessage(contentType.toString(), new String(message.getContent(), charset));
         }
     };