diff --git a/sandbox/src/main/java/org/springframework/ws/client/WebServiceAccessor.java b/sandbox/src/main/java/org/springframework/ws/client/WebServiceAccessor.java
index 1d10c62a..2006abd0 100644
--- a/sandbox/src/main/java/org/springframework/ws/client/WebServiceAccessor.java
+++ b/sandbox/src/main/java/org/springframework/ws/client/WebServiceAccessor.java
@@ -19,19 +19,25 @@ package org.springframework.ws.client;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.util.Assert;
import org.springframework.ws.WebServiceMessageFactory;
+import org.springframework.ws.context.DefaultMessageContext;
+import org.springframework.ws.context.MessageContext;
import org.springframework.ws.endpoint.TransformerObjectSupport;
-import org.springframework.ws.transport.MessageSender;
+import org.springframework.ws.transport.WebServiceMessageSender;
/**
- * Base class for WebServiceTemplate and other WS-accessing helpers.
+ * Base class for WebServiceTemplate and other WS-accessing helpers. Defines common properties like the
+ * {@link org.springframework.ws.WebServiceMessageFactory} and {@link org.springframework.ws.transport.WebServiceMessageSender}.
+ *
MessageContext with an empty message, and the defined
+ * WebServiceMessageFactory.
+ *
+ * @return the created message context
+ */
+ protected MessageContext createMessageContext() {
+ return new DefaultMessageContext(getMessageFactory());
+ }
+
public void afterPropertiesSet() throws Exception {
Assert.notNull(getMessageFactory(), "messageFactory is required");
Assert.notNull(getMessageSender(), "messageSender is required");
diff --git a/sandbox/src/main/java/org/springframework/ws/client/WebServiceClientException.java b/sandbox/src/main/java/org/springframework/ws/client/WebServiceClientException.java
new file mode 100644
index 00000000..0ff193ef
--- /dev/null
+++ b/sandbox/src/main/java/org/springframework/ws/client/WebServiceClientException.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2007 the original author or authors.
+ *
+ * Licensed 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.springframework.ws.client;
+
+import org.springframework.ws.WebServiceException;
+
+/**
+ * @author Arjen Poutsma
+ */
+public class WebServiceClientException extends WebServiceException {
+
+ public WebServiceClientException(String msg) {
+ super(msg);
+ }
+
+ public WebServiceClientException(String msg, Throwable ex) {
+ super(msg, ex);
+ }
+}
diff --git a/sandbox/src/main/java/org/springframework/ws/client/WebServiceMessageCallback.java b/sandbox/src/main/java/org/springframework/ws/client/WebServiceMessageCallback.java
index 70e0147e..35b6951c 100644
--- a/sandbox/src/main/java/org/springframework/ws/client/WebServiceMessageCallback.java
+++ b/sandbox/src/main/java/org/springframework/ws/client/WebServiceMessageCallback.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2006 the original author or authors.
+ * Copyright 2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,6 +16,8 @@
package org.springframework.ws.client;
+import java.io.IOException;
+
import org.springframework.ws.WebServiceMessage;
/**
@@ -23,5 +25,5 @@ import org.springframework.ws.WebServiceMessage;
*/
public interface WebServiceMessageCallback {
- void doInWebServiceMessage(WebServiceMessage message) throws Exception;
+ void doInMessage(WebServiceMessage message) throws IOException;
}
diff --git a/sandbox/src/main/java/org/springframework/ws/client/WebServiceOperations.java b/sandbox/src/main/java/org/springframework/ws/client/WebServiceOperations.java
index a8c2a258..ad899499 100644
--- a/sandbox/src/main/java/org/springframework/ws/client/WebServiceOperations.java
+++ b/sandbox/src/main/java/org/springframework/ws/client/WebServiceOperations.java
@@ -16,8 +16,12 @@
package org.springframework.ws.client;
+import java.io.IOException;
+import javax.xml.transform.Result;
import javax.xml.transform.Source;
+import org.springframework.ws.WebServiceMessage;
+
/**
* @author Arjen Poutsma
*/
@@ -27,19 +31,21 @@ public interface WebServiceOperations {
* Sends a web service message that contains the given payload. Returns the payload of the response message, if
* any.
*
- * @param payload the payload of the message.
+ * @param requestPayload the payload of the request message
* @return the payload of the response message, or null if no response is given
*/
- Source send(Source payload);
+ Source sendAndReceive(Source requestPayload) throws IOException;
/**
* Sends a web service message that contains the given payload, marshalled by the configured
* Marshaller. Returns the unmarshalled payload of the response message, if any.
*
- * @param payload the object to marshal into a message payload
+ * @param requestPayload the object to marshal into the request message payload
* @return the unmarshalled payload of the response message, or null if no response is given
*/
- Object marshalAndSend(Object payload);
+ Object marshalAndSend(Object requestPayload) throws IOException;
- Object send(WebServiceMessageCallback callback, WebServiceMessageExtractor extractor);
+ WebServiceMessage sendAndReceive(WebServiceMessageCallback callback) throws IOException;
+
+ void sendAndReceive(Source requestPayload, Result result) throws IOException;
}
diff --git a/sandbox/src/main/java/org/springframework/ws/client/WebServiceTemplate.java b/sandbox/src/main/java/org/springframework/ws/client/WebServiceTemplate.java
index 91d82d91..6a955b2a 100644
--- a/sandbox/src/main/java/org/springframework/ws/client/WebServiceTemplate.java
+++ b/sandbox/src/main/java/org/springframework/ws/client/WebServiceTemplate.java
@@ -17,14 +17,15 @@
package org.springframework.ws.client;
import java.io.IOException;
+import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
import org.springframework.oxm.Marshaller;
import org.springframework.oxm.Unmarshaller;
-import org.springframework.util.Assert;
-import org.springframework.ws.WebServiceException;
import org.springframework.ws.WebServiceMessage;
+import org.springframework.ws.context.MessageContext;
/**
* @author Arjen Poutsma
@@ -63,30 +64,61 @@ public class WebServiceTemplate extends WebServiceAccessor implements WebService
this.unmarshaller = unmarshaller;
}
- public Object marshalAndSend(final Object payload) {
+ public Object marshalAndSend(final Object requestPayload) throws IOException {
checkMarshallerAndUnmarshaller();
- return send(new WebServiceMessageCallback() {
- public void doInWebServiceMessage(WebServiceMessage message) throws IOException {
- getMarshaller().marshal(payload, message.getPayloadResult());
+ WebServiceMessage response = sendAndReceive(new WebServiceMessageCallback() {
+
+ public void doInMessage(WebServiceMessage message) throws IOException {
+ getMarshaller().marshal(requestPayload, message.getPayloadResult());
}
- }, new WebServiceMessageExtractor() {
- public Object extractData(WebServiceMessage message) throws IOException {
- return getUnmarshaller().unmarshal(message.getPayloadSource());
+ });
+ if (response != null) {
+ return getUnmarshaller().unmarshal(response.getPayloadSource());
+ }
+ else {
+ return null;
+ }
+ }
+
+ public void sendAndReceive(final Source requestPayload, Result result) throws IOException {
+ Source responsePayload = sendAndReceive(requestPayload);
+ if (responsePayload != null) {
+ try {
+ Transformer transformer = createTransformer();
+ transformer.transform(responsePayload, result);
+ }
+ catch (TransformerException e) {
+ throw new WebServiceClientException("Could not transform payload of responsePayload message");
+ }
+ }
+ }
+
+ public Source sendAndReceive(final Source requestPayload) throws IOException {
+ return (Source) sendAndReceive(new WebServiceMessageCallback() {
+ public void doInMessage(WebServiceMessage message) {
+ try {
+ Transformer transformer = createTransformer();
+ transformer.transform(requestPayload, message.getPayloadResult());
+ }
+ catch (TransformerException ex) {
+ throw new WebServiceClientException("Could not transform payload to request message", ex);
+ }
}
});
}
- public Source send(final Source payload) {
- return (Source) send(new WebServiceMessageCallback() {
- public void doInWebServiceMessage(WebServiceMessage message) throws Exception {
- Transformer transformer = createTransformer();
- transformer.transform(payload, message.getPayloadResult());
- }
- }, new WebServiceMessageExtractor() {
- public Object extractData(WebServiceMessage message) throws WebServiceException {
- return message.getPayloadSource();
- }
- });
+ public WebServiceMessage sendAndReceive(WebServiceMessageCallback requestCallback) throws IOException {
+ MessageContext messageContext = createMessageContext();
+ if (requestCallback != null) {
+ requestCallback.doInMessage(messageContext.getRequest());
+ }
+ getMessageSender().sendAndReceive(messageContext);
+ if (messageContext.hasResponse()) {
+ return messageContext.getResponse();
+ }
+ else {
+ return null;
+ }
}
private void checkMarshallerAndUnmarshaller() throws IllegalStateException {
@@ -98,31 +130,4 @@ public class WebServiceTemplate extends WebServiceAccessor implements WebService
}
}
- public WebServiceMessage send(WebServiceMessageCallback callback) {
- return (WebServiceMessage) send(callback, new WebServiceMessageExtractor() {
- public Object extractData(WebServiceMessage message) throws Exception {
- return message;
- }
- });
- }
-
- public Object send(WebServiceMessageCallback callback, WebServiceMessageExtractor extractor) {
- Assert.notNull(callback, "callback must not be null");
- Assert.notNull(extractor, "extractor must not be null");
- WebServiceMessage request = getMessageFactory().createWebServiceMessage();
- try {
- callback.doInWebServiceMessage(request);
- WebServiceMessage response = null; //getMessageSender().send(request);
- if (response == null) {
- return null;
- }
- else {
- return extractor.extractData(response);
- }
- }
- catch (Exception e) {
- e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
- return null;
- }
- }
}
diff --git a/sandbox/src/main/java/org/springframework/ws/transport/MessageSender.java b/sandbox/src/main/java/org/springframework/ws/transport/WebServiceMessageSender.java
similarity index 66%
rename from sandbox/src/main/java/org/springframework/ws/transport/MessageSender.java
rename to sandbox/src/main/java/org/springframework/ws/transport/WebServiceMessageSender.java
index 8f5e35d9..28806e7f 100644
--- a/sandbox/src/main/java/org/springframework/ws/transport/MessageSender.java
+++ b/sandbox/src/main/java/org/springframework/ws/transport/WebServiceMessageSender.java
@@ -7,13 +7,14 @@ import org.springframework.ws.context.MessageContext;
/**
* @author Arjen Poutsma
*/
-public interface MessageSender {
+public interface WebServiceMessageSender {
/**
* Sends the given message context. The response message, if any, is stored in the context.
*
* @param messageContext the message to be sent
+ * @throws IOException in case of I/O errors
*/
- void send(MessageContext messageContext) throws IOException;
+ void sendAndReceive(MessageContext messageContext) throws IOException;
}
diff --git a/sandbox/src/main/java/org/springframework/ws/transport/http/CommonsHttpMessageSender.java b/sandbox/src/main/java/org/springframework/ws/transport/http/CommonsHttpMessageSender.java
index aeaac9b3..245ba2a0 100644
--- a/sandbox/src/main/java/org/springframework/ws/transport/http/CommonsHttpMessageSender.java
+++ b/sandbox/src/main/java/org/springframework/ws/transport/http/CommonsHttpMessageSender.java
@@ -25,11 +25,11 @@ import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
import org.apache.commons.httpclient.methods.PostMethod;
import org.springframework.ws.WebServiceMessage;
import org.springframework.ws.context.MessageContext;
-import org.springframework.ws.transport.MessageSender;
import org.springframework.ws.transport.TransportInputStream;
+import org.springframework.ws.transport.WebServiceMessageSender;
/**
- * MessageSender implementation that uses Jakarta
+ * WebServiceMessageSender implementation that uses Jakarta
* Commons HttpClient to execute POST requests.
*
* Allows to use a preconfigured HttpClient instance, potentially with authentication, HTTP connection pooling, etc.
@@ -38,7 +38,7 @@ import org.springframework.ws.transport.TransportInputStream;
* @author Arjen Poutsma
* @see org.springframework.ws.transport.http.HttpUrlConnectionMessageSender
*/
-public class CommonsHttpMessageSender implements MessageSender {
+public class CommonsHttpMessageSender implements WebServiceMessageSender {
private HttpClient httpClient;
@@ -69,7 +69,7 @@ public class CommonsHttpMessageSender implements MessageSender {
this.httpClient = httpClient;
}
- public void send(MessageContext messageContext) throws IOException {
+ public void sendAndReceive(MessageContext messageContext) throws IOException {
PostMethod postMethod = createPostMethod();
try {
writeRequestMessage(postMethod, messageContext.getRequest());
diff --git a/sandbox/src/main/java/org/springframework/ws/transport/http/HttpUrlConnectionMessageSender.java b/sandbox/src/main/java/org/springframework/ws/transport/http/HttpUrlConnectionMessageSender.java
index 8949d853..34ad360e 100644
--- a/sandbox/src/main/java/org/springframework/ws/transport/http/HttpUrlConnectionMessageSender.java
+++ b/sandbox/src/main/java/org/springframework/ws/transport/http/HttpUrlConnectionMessageSender.java
@@ -23,13 +23,13 @@ import java.net.URLConnection;
import org.springframework.ws.WebServiceMessage;
import org.springframework.ws.context.MessageContext;
-import org.springframework.ws.transport.MessageSender;
import org.springframework.ws.transport.TransportInputStream;
import org.springframework.ws.transport.TransportOutputStream;
+import org.springframework.ws.transport.WebServiceMessageSender;
/**
- * MessageSender implementation that uses standard J2SE facilities to execute POST requests, without
- * support for HTTP authentication or advanced configuration options.
+ * WebServiceMessageSender implementation that uses standard J2SE facilities to execute POST requests,
+ * without support for HTTP authentication or advanced configuration options.
*
* Designed for easy subclassing, customizing specific template methods. However, consider {@link
* org.springframework.ws.transport.http.CommonsHttpMessageSender} for more sophisticated needs: the J2SE
@@ -38,7 +38,7 @@ import org.springframework.ws.transport.TransportOutputStream;
* @author Arjen Poutsma
* @see java.net.HttpURLConnection
*/
-public class HttpUrlConnectionMessageSender implements MessageSender {
+public class HttpUrlConnectionMessageSender implements WebServiceMessageSender {
private static final String HTTP_METHOD_POST = "POST";
@@ -58,7 +58,7 @@ public class HttpUrlConnectionMessageSender implements MessageSender {
this.url = url;
}
- public void send(MessageContext messageContext) throws IOException {
+ public void sendAndReceive(MessageContext messageContext) throws IOException {
HttpURLConnection connection = openConnection();
try {
prepareConnection(connection);
diff --git a/sandbox/src/test/java/org/springframework/ws/client/WebServiceAccessorTest.java b/sandbox/src/test/java/org/springframework/ws/client/WebServiceAccessorTest.java
new file mode 100644
index 00000000..2aa53277
--- /dev/null
+++ b/sandbox/src/test/java/org/springframework/ws/client/WebServiceAccessorTest.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2007 the original author or authors.
+ *
+ * Licensed 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.springframework.ws.client;
+
+import junit.framework.TestCase;
+import org.easymock.MockControl;
+import org.springframework.ws.WebServiceMessage;
+import org.springframework.ws.WebServiceMessageFactory;
+import org.springframework.ws.context.MessageContext;
+
+public class WebServiceAccessorTest extends TestCase {
+
+ private WebServiceAccessor accessor;
+
+ protected void setUp() throws Exception {
+ accessor = new MyWebServiceAccessor();
+ }
+
+ public void testCreateMessageContext() throws Exception {
+ MockControl factoryControl = MockControl.createControl(WebServiceMessageFactory.class);
+ WebServiceMessageFactory factoryMock = (WebServiceMessageFactory) factoryControl.getMock();
+ accessor.setMessageFactory(factoryMock);
+ MockControl messageControl = MockControl.createControl(WebServiceMessage.class);
+ WebServiceMessage messageMock = (WebServiceMessage) messageControl.getMock();
+
+ factoryControl.expectAndReturn(factoryMock.createWebServiceMessage(), messageMock);
+
+ factoryControl.replay();
+ messageControl.replay();
+ MessageContext messageContext = accessor.createMessageContext();
+ assertNotNull("No MesageContext created", messageContext);
+ factoryControl.verify();
+ messageControl.verify();
+ }
+
+ private static class MyWebServiceAccessor extends WebServiceAccessor {
+
+ }
+}
\ No newline at end of file
diff --git a/sandbox/src/test/java/org/springframework/ws/client/WebServiceTemplateTest.java b/sandbox/src/test/java/org/springframework/ws/client/WebServiceTemplateTest.java
index 67edd555..c397c779 100644
--- a/sandbox/src/test/java/org/springframework/ws/client/WebServiceTemplateTest.java
+++ b/sandbox/src/test/java/org/springframework/ws/client/WebServiceTemplateTest.java
@@ -16,35 +16,42 @@
package org.springframework.ws.client;
+import java.io.IOException;
+
import junit.framework.TestCase;
import org.easymock.MockControl;
-import org.springframework.oxm.Marshaller;
-import org.springframework.oxm.Unmarshaller;
+import org.springframework.ws.WebServiceMessage;
+import org.springframework.ws.WebServiceMessageFactory;
+import org.springframework.ws.context.MessageContext;
+import org.springframework.ws.transport.WebServiceMessageSender;
public class WebServiceTemplateTest extends TestCase {
private WebServiceTemplate template;
- private MockControl marshallerControl;
+ private MockControl factoryControl;
- private Marshaller marshallerMock;
+ private WebServiceMessageFactory factoryMock;
- private MockControl unmarshallerControl;
+ private MockControl messageControl;
- private Unmarshaller unmarshallerMock;
+ private WebServiceMessage requestMock;
+
+ private WebServiceMessage responseMock;
protected void setUp() throws Exception {
template = new WebServiceTemplate();
- marshallerControl = MockControl.createControl(Marshaller.class);
- marshallerMock = (Marshaller) marshallerControl.getMock();
- template.setMarshaller(marshallerMock);
- unmarshallerControl = MockControl.createControl(Unmarshaller.class);
- unmarshallerMock = (Unmarshaller) unmarshallerControl.getMock();
- template.setUnmarshaller(unmarshallerMock);
+ factoryControl = MockControl.createControl(WebServiceMessageFactory.class);
+ factoryMock = (WebServiceMessageFactory) factoryControl.getMock();
+ template.setMessageFactory(factoryMock);
+ messageControl = MockControl.createControl(WebServiceMessage.class);
+ requestMock = (WebServiceMessage) messageControl.getMock();
+ responseMock = (WebServiceMessage) messageControl.getMock();
}
public void testMarshalAndSendNoMarshallerSet() throws Exception {
template.setMarshaller(null);
+ replayMockControls();
try {
template.marshalAndSend(new Object());
fail("IllegalStateException expected");
@@ -52,10 +59,12 @@ public class WebServiceTemplateTest extends TestCase {
catch (IllegalStateException ex) {
// expected behavior
}
+ verifyMockControls();
}
public void testMarshalAndSendNoUnmarshallerSet() throws Exception {
template.setUnmarshaller(null);
+ replayMockControls();
try {
template.marshalAndSend(new Object());
fail("IllegalStateException expected");
@@ -63,5 +72,38 @@ public class WebServiceTemplateTest extends TestCase {
catch (IllegalStateException ex) {
// expected behavior
}
+ verifyMockControls();
}
+
+ public void testSendAndReceiveMessageResponse() throws Exception {
+ factoryControl.expectAndReturn(factoryMock.createWebServiceMessage(), requestMock);
+ factoryControl.expectAndReturn(factoryMock.createWebServiceMessage(), responseMock);
+ template.setMessageSender(new WebServiceMessageSender() {
+
+ public void sendAndReceive(MessageContext messageContext) throws IOException {
+ assertEquals("Invalid request message", requestMock, messageContext.getRequest());
+ messageContext.getResponse();
+ }
+ });
+ replayMockControls();
+ WebServiceMessage response = template.sendAndReceive(new WebServiceMessageCallback() {
+ public void doInMessage(WebServiceMessage message) throws IOException {
+ assertEquals("Invalid request message", requestMock, message);
+ }
+ });
+ assertEquals("No response", responseMock, response);
+ verifyMockControls();
+ }
+
+ private void replayMockControls() {
+ factoryControl.replay();
+ messageControl.replay();
+ }
+
+ private void verifyMockControls() {
+ factoryControl.verify();
+ messageControl.verify();
+ }
+
+
}
\ No newline at end of file
diff --git a/sandbox/src/test/java/org/springframework/ws/transport/http/CommonsHttpMessageSenderTest.java b/sandbox/src/test/java/org/springframework/ws/transport/http/CommonsHttpMessageSenderTest.java
index 56f75935..6b634c01 100644
--- a/sandbox/src/test/java/org/springframework/ws/transport/http/CommonsHttpMessageSenderTest.java
+++ b/sandbox/src/test/java/org/springframework/ws/transport/http/CommonsHttpMessageSenderTest.java
@@ -22,7 +22,6 @@ import javax.xml.soap.SOAPMessage;
import org.springframework.ws.context.DefaultMessageContext;
import org.springframework.ws.context.MessageContext;
-import org.springframework.ws.soap.saaj.SaajSoapMessage;
import org.springframework.ws.soap.saaj.SaajSoapMessageFactory;
public class CommonsHttpMessageSenderTest extends AbstractHttpWebServiceMessageSenderTestCase {
@@ -40,11 +39,8 @@ public class CommonsHttpMessageSenderTest extends AbstractHttpWebServiceMessageS
public void testSend() throws Exception {
SOAPMessage message = messageFactory.createMessage();
message.getMimeHeaders().addHeader(HEADER_NAME, HEADER_VALUE);
- SaajSoapMessage request = new SaajSoapMessage(message);
- MessageContext context = new DefaultMessageContext(request, new SaajSoapMessageFactory(messageFactory));
-// AxiomSoapMessageFactory soapMessageFactory = new AxiomSoapMessageFactory();
-// MessageContext context = new DefaultMessageContext(soapMessageFactory);
- sender.send(context);
+ MessageContext context = new DefaultMessageContext(new SaajSoapMessageFactory(messageFactory));
+ sender.sendAndReceive(context);
assertTrue("No response", context.hasResponse());
context.getResponse().writeTo(System.out);
diff --git a/sandbox/src/test/java/org/springframework/ws/transport/http/HttpUrlConnectionMessageSenderTest.java b/sandbox/src/test/java/org/springframework/ws/transport/http/HttpUrlConnectionMessageSenderTest.java
index 4206b07a..becb9e97 100644
--- a/sandbox/src/test/java/org/springframework/ws/transport/http/HttpUrlConnectionMessageSenderTest.java
+++ b/sandbox/src/test/java/org/springframework/ws/transport/http/HttpUrlConnectionMessageSenderTest.java
@@ -44,7 +44,7 @@ public class HttpUrlConnectionMessageSenderTest extends AbstractHttpWebServiceMe
MessageContext context = new DefaultMessageContext(request, new SaajSoapMessageFactory(messageFactory));
// AxiomSoapMessageFactory soapMessageFactory = new AxiomSoapMessageFactory();
// MessageContext context = new DefaultMessageContext(soapMessageFactory);
- sender.send(context);
+ sender.sendAndReceive(context);
assertTrue("No response", context.hasResponse());
context.getResponse().writeTo(System.out);
diff --git a/sandbox/src/test/java/org/springframework/ws/transport/jms/MessageEndpointMessageListenerTest.java b/sandbox/src/test/java/org/springframework/ws/transport/jms/MessageEndpointMessageListenerTest.java
index 3af5e1a6..a3d961e6 100644
--- a/sandbox/src/test/java/org/springframework/ws/transport/jms/MessageEndpointMessageListenerTest.java
+++ b/sandbox/src/test/java/org/springframework/ws/transport/jms/MessageEndpointMessageListenerTest.java
@@ -94,7 +94,7 @@ public class MessageEndpointMessageListenerTest extends TestCase {
request.reset();
sessionControl.expectAndReturn(sessionMock.createBytesMessage(), response);
sessionControl.expectAndReturn(sessionMock.createProducer(replyTo), producerMock);
- producerMock.send(response);
+ producerMock.sendAndReceive(response);
sessionControl.replay();
producerControl.replay();