From 66b0e4979b353ec9f48ba595322177ea49e55aac Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Fri, 30 Jul 2010 09:36:29 +0000 Subject: [PATCH] Made WebServiceMessageFactory generic SWS-631 - ResponseCallback -> ResponseCreator --- .../ws/WebServiceMessageFactory.java | 8 +-- .../ws/pox/dom/DomPoxMessageFactory.java | 4 +- .../ws/soap/SoapMessageFactory.java | 27 +--------- .../soap/axiom/AxiomSoapMessageFactory.java | 4 +- .../ws/soap/saaj/SaajSoapMessageFactory.java | 4 +- .../ws/MockWebServiceMessageFactory.java | 8 +-- .../mock/client/AbstractResponseCreator.java | 54 +++++++++++++++++++ ...allback.java => ErrorResponseCreator.java} | 12 +++-- ...ack.java => ExceptionResponseCreator.java} | 13 +++-- .../ws/mock/client/MockSenderConnection.java | 26 ++++----- .../mock/client/PayloadResponseCallback.java | 6 +-- .../ws/mock/client/RequestMatcher.java | 4 +- .../ws/mock/client/ResponseActions.java | 6 +-- ...onseCallback.java => ResponseCreator.java} | 18 +++---- .../client/SoapFaultResponseCallback.java | 22 +++----- .../ws/mock/client/WebServiceMock.java | 26 ++++----- .../client/ErrorResponseCallbackTest.java | 4 +- .../client/ExceptionResponseCallbackTest.java | 8 +-- .../mock/client/MockSenderConnectionTest.java | 2 +- .../ws/mock/client/WebServiceMockTest.java | 17 +++--- 20 files changed, 155 insertions(+), 118 deletions(-) create mode 100644 test/src/main/java/org/springframework/ws/mock/client/AbstractResponseCreator.java rename test/src/main/java/org/springframework/ws/mock/client/{ErrorResponseCallback.java => ErrorResponseCreator.java} (66%) rename test/src/main/java/org/springframework/ws/mock/client/{ExceptionResponseCallback.java => ExceptionResponseCreator.java} (65%) rename test/src/main/java/org/springframework/ws/mock/client/{ResponseCallback.java => ResponseCreator.java} (61%) diff --git a/core/src/main/java/org/springframework/ws/WebServiceMessageFactory.java b/core/src/main/java/org/springframework/ws/WebServiceMessageFactory.java index 0260b95c..23b4af4e 100644 --- a/core/src/main/java/org/springframework/ws/WebServiceMessageFactory.java +++ b/core/src/main/java/org/springframework/ws/WebServiceMessageFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2005-2010 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. @@ -29,14 +29,14 @@ import java.io.InputStream; * @see org.springframework.ws.WebServiceMessage * @since 1.0.0 */ -public interface WebServiceMessageFactory { +public interface WebServiceMessageFactory { /** * Creates a new, empty WebServiceMessage. * * @return the empty message */ - WebServiceMessage createWebServiceMessage(); + T createWebServiceMessage(); /** * Reads a {@link WebServiceMessage} from the given input stream. @@ -48,6 +48,6 @@ public interface WebServiceMessageFactory { * @return the created message * @throws java.io.IOException if an I/O exception occurs */ - WebServiceMessage createWebServiceMessage(InputStream inputStream) throws IOException; + T createWebServiceMessage(InputStream inputStream) throws IOException; } diff --git a/core/src/main/java/org/springframework/ws/pox/dom/DomPoxMessageFactory.java b/core/src/main/java/org/springframework/ws/pox/dom/DomPoxMessageFactory.java index 2eb38c4d..c96c7676 100644 --- a/core/src/main/java/org/springframework/ws/pox/dom/DomPoxMessageFactory.java +++ b/core/src/main/java/org/springframework/ws/pox/dom/DomPoxMessageFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2005-2010 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. @@ -37,7 +37,7 @@ import org.xml.sax.SAXException; * @see org.springframework.ws.pox.dom.DomPoxMessage * @since 1.0.0 */ -public class DomPoxMessageFactory extends TransformerObjectSupport implements WebServiceMessageFactory { +public class DomPoxMessageFactory extends TransformerObjectSupport implements WebServiceMessageFactory { /** The default content type for the POX messages. */ public static final String DEFAULT_CONTENT_TYPE = "application/xml"; diff --git a/core/src/main/java/org/springframework/ws/soap/SoapMessageFactory.java b/core/src/main/java/org/springframework/ws/soap/SoapMessageFactory.java index aaf1d6ef..e3717159 100644 --- a/core/src/main/java/org/springframework/ws/soap/SoapMessageFactory.java +++ b/core/src/main/java/org/springframework/ws/soap/SoapMessageFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2005-2010 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,9 +16,6 @@ package org.springframework.ws.soap; -import java.io.IOException; -import java.io.InputStream; - import org.springframework.ws.WebServiceMessageFactory; /** @@ -30,7 +27,7 @@ import org.springframework.ws.WebServiceMessageFactory; * @author Arjen Poutsma * @since 1.0.0 */ -public interface SoapMessageFactory extends WebServiceMessageFactory { +public interface SoapMessageFactory extends WebServiceMessageFactory { /** * Sets the SOAP Version used by this factory. @@ -41,24 +38,4 @@ public interface SoapMessageFactory extends WebServiceMessageFactory { */ void setSoapVersion(SoapVersion version); - /** - * Creates a new, empty SoapMessage. - * - * @return the empty message - */ - SoapMessage createWebServiceMessage(); - - /** - * Reads a {@link SoapMessage} from the given input stream. - *

- * If the given stream is an instance of {@link org.springframework.ws.transport.TransportInputStream - * TransportInputStream}, the headers will be read from the request. - * - * @param inputStream the input stream to read the message from - * @return the created message - * @throws java.io.IOException if an I/O exception occurs - */ - SoapMessage createWebServiceMessage(InputStream inputStream) throws IOException; - - } diff --git a/core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapMessageFactory.java b/core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapMessageFactory.java index 13f41776..7b7e0e1b 100644 --- a/core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapMessageFactory.java +++ b/core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapMessageFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2005-2010 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. @@ -79,7 +79,7 @@ import org.apache.commons.logging.LogFactory; * @since 1.0.0 */ @SuppressWarnings("Since15") -public class AxiomSoapMessageFactory implements SoapMessageFactory, InitializingBean { +public class AxiomSoapMessageFactory implements SoapMessageFactory, InitializingBean { private static final String CHARSET_PARAMETER = "charset"; diff --git a/core/src/main/java/org/springframework/ws/soap/saaj/SaajSoapMessageFactory.java b/core/src/main/java/org/springframework/ws/soap/saaj/SaajSoapMessageFactory.java index fa05dee0..d77fba31 100644 --- a/core/src/main/java/org/springframework/ws/soap/saaj/SaajSoapMessageFactory.java +++ b/core/src/main/java/org/springframework/ws/soap/saaj/SaajSoapMessageFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2005-2010 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. @@ -55,7 +55,7 @@ import org.apache.commons.logging.LogFactory; * @see org.springframework.ws.soap.saaj.SaajSoapMessage * @since 1.0.0 */ -public class SaajSoapMessageFactory implements SoapMessageFactory, InitializingBean { +public class SaajSoapMessageFactory implements SoapMessageFactory, InitializingBean { private static final Log logger = LogFactory.getLog(SaajSoapMessageFactory.class); diff --git a/core/src/test/java/org/springframework/ws/MockWebServiceMessageFactory.java b/core/src/test/java/org/springframework/ws/MockWebServiceMessageFactory.java index 9124d5a9..021a8a76 100644 --- a/core/src/test/java/org/springframework/ws/MockWebServiceMessageFactory.java +++ b/core/src/test/java/org/springframework/ws/MockWebServiceMessageFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2006 the original author or authors. + * Copyright 2005-2010 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. @@ -21,13 +21,13 @@ import java.io.InputStream; import javax.xml.transform.TransformerException; import javax.xml.transform.stream.StreamSource; -public class MockWebServiceMessageFactory implements WebServiceMessageFactory { +public class MockWebServiceMessageFactory implements WebServiceMessageFactory { - public WebServiceMessage createWebServiceMessage() { + public MockWebServiceMessage createWebServiceMessage() { return new MockWebServiceMessage(); } - public WebServiceMessage createWebServiceMessage(InputStream inputStream) throws IOException { + public MockWebServiceMessage createWebServiceMessage(InputStream inputStream) throws IOException { try { return new MockWebServiceMessage(new StreamSource(inputStream)); } diff --git a/test/src/main/java/org/springframework/ws/mock/client/AbstractResponseCreator.java b/test/src/main/java/org/springframework/ws/mock/client/AbstractResponseCreator.java new file mode 100644 index 00000000..70cedca6 --- /dev/null +++ b/test/src/main/java/org/springframework/ws/mock/client/AbstractResponseCreator.java @@ -0,0 +1,54 @@ +/* + * Copyright 2005-2010 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.mock.client; + +import java.io.IOException; +import java.net.URI; + +import org.springframework.ws.WebServiceMessage; +import org.springframework.ws.WebServiceMessageFactory; +import org.springframework.xml.transform.TransformerObjectSupport; + +/** + * Abstract base class for the {@link ResponseCreator} interface. + *

+ * Creates a response using the given {@link WebServiceMessageFactory}, and passes it on to {@link #doWithResponse(URI, + * WebServiceMessage, WebServiceMessage)}. + * + * @author Arjen Poutsma + * @since 2.0 + */ +abstract class AbstractResponseCreator extends TransformerObjectSupport + implements ResponseCreator { + + public final T createResponse(URI uri, T request, WebServiceMessageFactory messageFactory) throws IOException { + T response = messageFactory.createWebServiceMessage(); + doWithResponse(uri, request, response); + return response; + } + + /** + * Execute any number of operations on the supplied response, given the request and URI. + * + * @param uri the URI + * @param request the request message + * @param response the response message + * @throws IOException in case of I/O errors + */ + protected abstract void doWithResponse(URI uri, T request, T response) throws IOException; + +} diff --git a/test/src/main/java/org/springframework/ws/mock/client/ErrorResponseCallback.java b/test/src/main/java/org/springframework/ws/mock/client/ErrorResponseCreator.java similarity index 66% rename from test/src/main/java/org/springframework/ws/mock/client/ErrorResponseCallback.java rename to test/src/main/java/org/springframework/ws/mock/client/ErrorResponseCreator.java index 278235a9..cb6063c2 100644 --- a/test/src/main/java/org/springframework/ws/mock/client/ErrorResponseCallback.java +++ b/test/src/main/java/org/springframework/ws/mock/client/ErrorResponseCreator.java @@ -20,24 +20,28 @@ import java.io.IOException; import java.net.URI; import org.springframework.ws.WebServiceMessage; +import org.springframework.ws.WebServiceMessageFactory; /** - * Implementation of {@link ResponseCallback} that holds an error message. + * Implementation of {@link ResponseCreator} that holds an error message. * * @author Arjen Poutsma * @author Lukas Krecan * @since 2.0 */ -class ErrorResponseCallback implements ResponseCallback { +class ErrorResponseCreator implements ResponseCreator { private final String errorMessage; - ErrorResponseCallback(String errorMessage) { + ErrorResponseCreator(String errorMessage) { this.errorMessage = errorMessage; } - public void doWithResponse(URI uri, WebServiceMessage response, WebServiceMessage request) throws IOException { + public WebServiceMessage createResponse(URI uri, + WebServiceMessage request, + WebServiceMessageFactory factory) throws IOException { // Do nothing + return null; } String getErrorMessage() { diff --git a/test/src/main/java/org/springframework/ws/mock/client/ExceptionResponseCallback.java b/test/src/main/java/org/springframework/ws/mock/client/ExceptionResponseCreator.java similarity index 65% rename from test/src/main/java/org/springframework/ws/mock/client/ExceptionResponseCallback.java rename to test/src/main/java/org/springframework/ws/mock/client/ExceptionResponseCreator.java index a8fd53a9..2bbbc9e9 100644 --- a/test/src/main/java/org/springframework/ws/mock/client/ExceptionResponseCallback.java +++ b/test/src/main/java/org/springframework/ws/mock/client/ExceptionResponseCreator.java @@ -20,27 +20,30 @@ import java.io.IOException; import java.net.URI; import org.springframework.ws.WebServiceMessage; +import org.springframework.ws.WebServiceMessageFactory; /** - * Implementation of {@link ResponseCallback} that responds by throwing either an {@link IOException} or a {@link + * Implementation of {@link ResponseCreator} that responds by throwing either an {@link IOException} or a {@link * RuntimeException}. * * @author Arjen Poutsma * @since 2.0 */ -class ExceptionResponseCallback implements ResponseCallback { +class ExceptionResponseCreator implements ResponseCreator { private final Exception exception; - ExceptionResponseCallback(IOException exception) { + ExceptionResponseCreator(IOException exception) { this.exception = exception; } - ExceptionResponseCallback(RuntimeException exception) { + ExceptionResponseCreator(RuntimeException exception) { this.exception = exception; } - public void doWithResponse(URI uri, WebServiceMessage request, WebServiceMessage response) throws IOException { + public WebServiceMessage createResponse(URI uri, + WebServiceMessage request, + WebServiceMessageFactory factory) throws IOException { if (exception instanceof IOException) { throw (IOException) exception; } diff --git a/test/src/main/java/org/springframework/ws/mock/client/MockSenderConnection.java b/test/src/main/java/org/springframework/ws/mock/client/MockSenderConnection.java index 1f450c7f..e76d1f1b 100644 --- a/test/src/main/java/org/springframework/ws/mock/client/MockSenderConnection.java +++ b/test/src/main/java/org/springframework/ws/mock/client/MockSenderConnection.java @@ -44,7 +44,7 @@ class MockSenderConnection implements FaultAwareWebServiceConnection, ResponseAc private WebServiceMessage request; - private ResponseCallback responseCallback; + private ResponseCreator responseCreator; void addRequestMatcher(RequestMatcher requestMatcher) { Assert.notNull(requestMatcher, "'requestMatcher' must not be null"); @@ -67,13 +67,14 @@ class MockSenderConnection implements FaultAwareWebServiceConnection, ResponseAc return this; } - public void andRespond(ResponseCallback responseCallback) { - Assert.notNull(responseCallback, "'responseCallback' must not be null"); - this.responseCallback = responseCallback; + public void andRespond(ResponseCreator responseCreator) { + Assert.notNull(responseCreator, "'responseCreator' must not be null"); + this.responseCreator = responseCreator; } // FaultAwareWebServiceConnection implementation + @SuppressWarnings("unchecked") public void send(WebServiceMessage message) throws IOException { if (!requestMatchers.isEmpty()) { for (RequestMatcher requestMatcher : requestMatchers) { @@ -86,11 +87,10 @@ class MockSenderConnection implements FaultAwareWebServiceConnection, ResponseAc this.request = message; } + @SuppressWarnings("unchecked") public WebServiceMessage receive(WebServiceMessageFactory messageFactory) throws IOException { - if (responseCallback != null) { - WebServiceMessage response = messageFactory.createWebServiceMessage(); - responseCallback.doWithResponse(uri, request, response); - return response; + if (responseCreator != null) { + return responseCreator.createResponse(uri, request, messageFactory); } else { return null; @@ -102,12 +102,12 @@ class MockSenderConnection implements FaultAwareWebServiceConnection, ResponseAc } public boolean hasError() throws IOException { - return responseCallback instanceof ErrorResponseCallback; + return responseCreator instanceof ErrorResponseCreator; } public String getErrorMessage() throws IOException { - if (responseCallback instanceof ErrorResponseCallback) { - return ((ErrorResponseCallback) responseCallback).getErrorMessage(); + if (responseCreator instanceof ErrorResponseCreator) { + return ((ErrorResponseCreator) responseCreator).getErrorMessage(); } else { return null; @@ -115,7 +115,7 @@ class MockSenderConnection implements FaultAwareWebServiceConnection, ResponseAc } public boolean hasFault() throws IOException { - return responseCallback instanceof SoapFaultResponseCallback; + return responseCreator instanceof SoapFaultResponseCallback; } public void setFault(boolean fault) throws IOException { @@ -125,7 +125,7 @@ class MockSenderConnection implements FaultAwareWebServiceConnection, ResponseAc public void close() throws IOException { requestMatchers.clear(); request = null; - responseCallback = null; + responseCreator = null; uri = null; if (lastConnection) { MockWebServiceMessageSenderHolder.clear(); diff --git a/test/src/main/java/org/springframework/ws/mock/client/PayloadResponseCallback.java b/test/src/main/java/org/springframework/ws/mock/client/PayloadResponseCallback.java index dc5ce0ff..5ec9351d 100644 --- a/test/src/main/java/org/springframework/ws/mock/client/PayloadResponseCallback.java +++ b/test/src/main/java/org/springframework/ws/mock/client/PayloadResponseCallback.java @@ -22,15 +22,14 @@ import javax.xml.transform.Source; import javax.xml.transform.TransformerException; import org.springframework.ws.WebServiceMessage; -import org.springframework.xml.transform.TransformerObjectSupport; /** - * Implementation of {@link ResponseCallback} that writes a {@link Source} response. + * Implementation of {@link ResponseCreator} that writes a {@link Source} response. * * @author Arjen Poutsma * @since 2.0 */ -class PayloadResponseCallback extends TransformerObjectSupport implements ResponseCallback { +class PayloadResponseCallback extends AbstractResponseCreator { private final Source payload; @@ -38,6 +37,7 @@ class PayloadResponseCallback extends TransformerObjectSupport implements Respon this.payload = payload; } + @Override public void doWithResponse(URI uri, WebServiceMessage request, WebServiceMessage response) throws IOException { try { transform(payload, response.getPayloadResult()); diff --git a/test/src/main/java/org/springframework/ws/mock/client/RequestMatcher.java b/test/src/main/java/org/springframework/ws/mock/client/RequestMatcher.java index c309560b..9f779278 100644 --- a/test/src/main/java/org/springframework/ws/mock/client/RequestMatcher.java +++ b/test/src/main/java/org/springframework/ws/mock/client/RequestMatcher.java @@ -28,7 +28,7 @@ import org.springframework.ws.WebServiceMessage; * @author Lukas Krecan * @since 2.0 */ -public interface RequestMatcher { +public interface RequestMatcher { /** * Matches the given request message against the expectations. Implementations typically make use of JUnit-based @@ -39,6 +39,6 @@ public interface RequestMatcher { * @throws IOException in case of I/O errors * @throws AssertionError if expectations are not met */ - void match(URI uri, WebServiceMessage request) throws IOException, AssertionError; + void match(URI uri, T request) throws IOException, AssertionError; } \ No newline at end of file diff --git a/test/src/main/java/org/springframework/ws/mock/client/ResponseActions.java b/test/src/main/java/org/springframework/ws/mock/client/ResponseActions.java index ddf01261..cf75f9ae 100644 --- a/test/src/main/java/org/springframework/ws/mock/client/ResponseActions.java +++ b/test/src/main/java/org/springframework/ws/mock/client/ResponseActions.java @@ -32,10 +32,10 @@ public interface ResponseActions { ResponseActions andExpect(RequestMatcher requestMatcher); /** - * Sets the {@link ResponseCallback} for this mock. + * Sets the {@link ResponseCreator} for this mock. * - * @param responseCallback the response callback + * @param responseCreator the response creator */ - void andRespond(ResponseCallback responseCallback); + void andRespond(ResponseCreator responseCreator); } \ No newline at end of file diff --git a/test/src/main/java/org/springframework/ws/mock/client/ResponseCallback.java b/test/src/main/java/org/springframework/ws/mock/client/ResponseCreator.java similarity index 61% rename from test/src/main/java/org/springframework/ws/mock/client/ResponseCallback.java rename to test/src/main/java/org/springframework/ws/mock/client/ResponseCreator.java index 8613e6f2..5fbf78a7 100644 --- a/test/src/main/java/org/springframework/ws/mock/client/ResponseCallback.java +++ b/test/src/main/java/org/springframework/ws/mock/client/ResponseCreator.java @@ -20,25 +20,25 @@ import java.io.IOException; import java.net.URI; import org.springframework.ws.WebServiceMessage; +import org.springframework.ws.WebServiceMessageFactory; /** - * Callback interface for code that operates on response {@link org.springframework.ws.WebServiceMessage}s. Defines the - * contract for creating responses in test scenarios. + * Allows for creating up responses. Implementations of this interface are returned by {@link WebServiceMock}. * * @author Arjen Poutsma * @author Lukas Krecan * @since 2.0 */ -public interface ResponseCallback { +public interface ResponseCreator { /** - * Execute any number of operations on the supplied response, given the request and URI. + * Create a response for the given the request and URI. * - * @param uri the URI - * @param request the request message - * @param response the response message + * @param uri the URI + * @param request the request message + * @param messageFactory the message that can be used to create responses * @throws IOException in case of I/O errors */ - void doWithResponse(URI uri, WebServiceMessage request, WebServiceMessage response) throws IOException; + T createResponse(URI uri, T request, WebServiceMessageFactory messageFactory) throws IOException; -} \ No newline at end of file +} diff --git a/test/src/main/java/org/springframework/ws/mock/client/SoapFaultResponseCallback.java b/test/src/main/java/org/springframework/ws/mock/client/SoapFaultResponseCallback.java index 36b2e9fd..049b0d5c 100644 --- a/test/src/main/java/org/springframework/ws/mock/client/SoapFaultResponseCallback.java +++ b/test/src/main/java/org/springframework/ws/mock/client/SoapFaultResponseCallback.java @@ -20,32 +20,26 @@ import java.io.IOException; import java.net.URI; import java.util.Locale; -import org.springframework.ws.WebServiceMessage; import org.springframework.ws.soap.SoapBody; import org.springframework.ws.soap.SoapMessage; import static org.springframework.ws.mock.client.Assert.fail; /** - * Implementation of {@link ResponseCallback} that responds with a SOAP fault. + * Implementation of {@link ResponseCreator} that responds with a SOAP fault. * * @author Arjen Poutsma * @since 2.0 */ -abstract class SoapFaultResponseCallback implements ResponseCallback { +abstract class SoapFaultResponseCallback extends AbstractResponseCreator { - public final void doWithResponse(URI uri, WebServiceMessage request, WebServiceMessage response) - throws IOException { - if (!(response instanceof SoapMessage)) { - fail("Response message is not a SOAP message"); - return; + @Override + protected void doWithResponse(URI uri, SoapMessage request, SoapMessage response) throws IOException { + SoapBody responseBody = response.getSoapBody(); + if (responseBody == null) { + fail("SOAP message [" + response + "] does not contain SOAP body"); } - SoapMessage soapResponse = (SoapMessage) response; - SoapBody soapResponseBody = soapResponse.getSoapBody(); - if (soapResponseBody == null) { - fail("SOAP message [" + soapResponse + "] does not contain SOAP body"); - } - addSoapFault(soapResponseBody); + addSoapFault(responseBody); } public abstract void addSoapFault(SoapBody soapBody); diff --git a/test/src/main/java/org/springframework/ws/mock/client/WebServiceMock.java b/test/src/main/java/org/springframework/ws/mock/client/WebServiceMock.java index 94aabdf6..ecfd8f8d 100644 --- a/test/src/main/java/org/springframework/ws/mock/client/WebServiceMock.java +++ b/test/src/main/java/org/springframework/ws/mock/client/WebServiceMock.java @@ -175,7 +175,7 @@ public abstract class WebServiceMock { return new UriMatcher(uri); } - // ResponseCallbacks + // ResponseCreators /** * Respond with the given {@link Source} XML as payload response. @@ -183,7 +183,7 @@ public abstract class WebServiceMock { * @param payload the response payload * @return the response callback */ - public static ResponseCallback withPayload(Source payload) { + public static ResponseCreator withPayload(Source payload) { Assert.notNull(payload, "'payload' must not be null"); return new PayloadResponseCallback(payload); } @@ -194,7 +194,7 @@ public abstract class WebServiceMock { * @param payload the response payload * @return the response callback */ - public static ResponseCallback withPayload(Resource payload) { + public static ResponseCreator withPayload(Resource payload) { Assert.notNull(payload, "'payload' must not be null"); return new PayloadResponseCallback(createResourceSource(payload)); } @@ -207,9 +207,9 @@ public abstract class WebServiceMock { * @see org.springframework.ws.transport.WebServiceConnection#hasError() * @see org.springframework.ws.transport.WebServiceConnection#getErrorMessage() */ - public static ResponseCallback withError(String errorMessage) { + public static ResponseCreator withError(String errorMessage) { Assert.hasLength(errorMessage, "'errorMessage' must not be empty"); - return new ErrorResponseCallback(errorMessage); + return new ErrorResponseCreator(errorMessage); } /** @@ -218,9 +218,9 @@ public abstract class WebServiceMock { * @param ioException the exception to be thrown * @return the response callback */ - public static ResponseCallback withException(IOException ioException) { + public static ResponseCreator withException(IOException ioException) { Assert.notNull(ioException, "'ioException' must not be null"); - return new ExceptionResponseCallback(ioException); + return new ExceptionResponseCreator(ioException); } /** @@ -229,9 +229,9 @@ public abstract class WebServiceMock { * @param ex the runtime exception to be thrown * @return the response callback */ - public static ResponseCallback withException(RuntimeException ex) { + public static ResponseCreator withException(RuntimeException ex) { Assert.notNull(ex, "'ex' must not be null"); - return new ExceptionResponseCallback(ex); + return new ExceptionResponseCreator(ex); } /** @@ -241,7 +241,7 @@ public abstract class WebServiceMock { * @param locale the language of faultStringOrReason. Optional for SOAP 1.1 * @see org.springframework.ws.soap.SoapBody#addMustUnderstandFault(String, Locale) */ - public static ResponseCallback withMustUnderstandFault(String faultStringOrReason, Locale locale) { + public static ResponseCreator withMustUnderstandFault(String faultStringOrReason, Locale locale) { Assert.hasLength(faultStringOrReason, "'faultStringOrReason' must not be empty"); return SoapFaultResponseCallback.createMustUnderstandFault(faultStringOrReason, locale); } @@ -253,7 +253,7 @@ public abstract class WebServiceMock { * @param locale the language of faultStringOrReason. Optional for SOAP 1.1 * @see org.springframework.ws.soap.SoapBody#addClientOrSenderFault(String, Locale) */ - public static ResponseCallback withClientOrSenderFault(String faultStringOrReason, Locale locale) { + public static ResponseCreator withClientOrSenderFault(String faultStringOrReason, Locale locale) { Assert.hasLength(faultStringOrReason, "'faultStringOrReason' must not be empty"); return SoapFaultResponseCallback.createClientOrSenderFault(faultStringOrReason, locale); } @@ -265,7 +265,7 @@ public abstract class WebServiceMock { * @param locale the language of faultStringOrReason. Optional for SOAP 1.1 * @see org.springframework.ws.soap.SoapBody#addServerOrReceiverFault(String, Locale) */ - public static ResponseCallback withServerOrReceiverFault(String faultStringOrReason, Locale locale) { + public static ResponseCreator withServerOrReceiverFault(String faultStringOrReason, Locale locale) { Assert.hasLength(faultStringOrReason, "'faultStringOrReason' must not be empty"); return SoapFaultResponseCallback.createServerOrReceiverFault(faultStringOrReason, locale); } @@ -277,7 +277,7 @@ public abstract class WebServiceMock { * @param locale the language of faultStringOrReason. Optional for SOAP 1.1 * @see org.springframework.ws.soap.SoapBody#addVersionMismatchFault(String, Locale) */ - public static ResponseCallback withVersionMismatchFault(String faultStringOrReason, Locale locale) { + public static ResponseCreator withVersionMismatchFault(String faultStringOrReason, Locale locale) { Assert.hasLength(faultStringOrReason, "'faultStringOrReason' must not be empty"); return SoapFaultResponseCallback.createVersionMismatchFault(faultStringOrReason, locale); } diff --git a/test/src/test/java/org/springframework/ws/mock/client/ErrorResponseCallbackTest.java b/test/src/test/java/org/springframework/ws/mock/client/ErrorResponseCallbackTest.java index 806d5cbd..e349e90a 100644 --- a/test/src/test/java/org/springframework/ws/mock/client/ErrorResponseCallbackTest.java +++ b/test/src/test/java/org/springframework/ws/mock/client/ErrorResponseCallbackTest.java @@ -27,8 +27,8 @@ public class ErrorResponseCallbackTest { @Test public void callback() throws IOException { String errorMessage = "Error message"; - ErrorResponseCallback callback = new ErrorResponseCallback(errorMessage); - callback.doWithResponse(null, null, null); + ErrorResponseCreator callback = new ErrorResponseCreator(errorMessage); + callback.createResponse(null, null, null); assertEquals(errorMessage, callback.getErrorMessage()); } } diff --git a/test/src/test/java/org/springframework/ws/mock/client/ExceptionResponseCallbackTest.java b/test/src/test/java/org/springframework/ws/mock/client/ExceptionResponseCallbackTest.java index bbeaf5a7..20a457b1 100644 --- a/test/src/test/java/org/springframework/ws/mock/client/ExceptionResponseCallbackTest.java +++ b/test/src/test/java/org/springframework/ws/mock/client/ExceptionResponseCallbackTest.java @@ -24,15 +24,15 @@ public class ExceptionResponseCallbackTest { @Test(expected = IOException.class) public void ioException() throws Exception { - ExceptionResponseCallback callback = new ExceptionResponseCallback(new IOException()); + ExceptionResponseCreator callback = new ExceptionResponseCreator(new IOException()); - callback.doWithResponse(null, null, null); + callback.createResponse(null, null, null); } @Test(expected = RuntimeException.class) public void runtimeException() throws Exception { - ExceptionResponseCallback callback = new ExceptionResponseCallback(new RuntimeException()); + ExceptionResponseCreator callback = new ExceptionResponseCreator(new RuntimeException()); - callback.doWithResponse(null, null, null); + callback.createResponse(null, null, null); } } \ No newline at end of file diff --git a/test/src/test/java/org/springframework/ws/mock/client/MockSenderConnectionTest.java b/test/src/test/java/org/springframework/ws/mock/client/MockSenderConnectionTest.java index 04b40e20..db34791c 100644 --- a/test/src/test/java/org/springframework/ws/mock/client/MockSenderConnectionTest.java +++ b/test/src/test/java/org/springframework/ws/mock/client/MockSenderConnectionTest.java @@ -30,7 +30,7 @@ public class MockSenderConnectionTest { public void error() throws IOException { String testErrorMessage = "Test Error Message"; MockSenderConnection connection = new MockSenderConnection(); - connection.andRespond(new ErrorResponseCallback(testErrorMessage)); + connection.andRespond(new ErrorResponseCreator(testErrorMessage)); assertTrue(connection.hasError()); assertEquals(testErrorMessage, connection.getErrorMessage()); } diff --git a/test/src/test/java/org/springframework/ws/mock/client/WebServiceMockTest.java b/test/src/test/java/org/springframework/ws/mock/client/WebServiceMockTest.java index a063fad3..846bdc9d 100644 --- a/test/src/test/java/org/springframework/ws/mock/client/WebServiceMockTest.java +++ b/test/src/test/java/org/springframework/ws/mock/client/WebServiceMockTest.java @@ -21,6 +21,7 @@ import java.net.URI; import java.util.Collections; import java.util.Map; import javax.xml.namespace.QName; +import javax.xml.soap.MessageFactory; import javax.xml.transform.Source; import javax.xml.transform.TransformerException; @@ -31,6 +32,7 @@ import org.springframework.ws.client.core.WebServiceMessageCallback; import org.springframework.ws.client.core.WebServiceTemplate; import org.springframework.ws.soap.SoapMessage; import org.springframework.ws.soap.saaj.SaajSoapMessage; +import org.springframework.ws.soap.saaj.SaajSoapMessageFactory; import org.springframework.xml.transform.StringResult; import org.springframework.xml.transform.StringSource; @@ -56,25 +58,28 @@ public class WebServiceMockTest { } @Test + @SuppressWarnings("unchecked") public void mocks() throws Exception { URI uri = URI.create("http://example.com"); RequestMatcher requestMatcher1 = EasyMock.createStrictMock("requestMatcher1", RequestMatcher.class); RequestMatcher requestMatcher2 = EasyMock.createStrictMock("requestMatcher2", RequestMatcher.class); - ResponseCallback responseCallback = EasyMock.createStrictMock(ResponseCallback.class); + ResponseCreator responseCreator = EasyMock.createStrictMock(ResponseCreator.class); + + SaajSoapMessage response = new SaajSoapMessageFactory(MessageFactory.newInstance()).createWebServiceMessage(); requestMatcher1.match(EasyMock.eq(uri), EasyMock.isA(SaajSoapMessage.class)); requestMatcher2.match(EasyMock.eq(uri), EasyMock.isA(SaajSoapMessage.class)); - responseCallback.doWithResponse(EasyMock.eq(uri), EasyMock.isA(SaajSoapMessage.class), - EasyMock.isA(SaajSoapMessage.class)); + EasyMock.expect(responseCreator.createResponse(EasyMock.eq(uri), EasyMock.isA(SaajSoapMessage.class), + EasyMock.isA(SaajSoapMessageFactory.class))).andReturn(response); - EasyMock.replay(requestMatcher1, requestMatcher2, responseCallback); + EasyMock.replay(requestMatcher1, requestMatcher2, responseCreator); - expect(requestMatcher1).andExpect(requestMatcher2).andRespond(responseCallback); + expect(requestMatcher1).andExpect(requestMatcher2).andRespond(responseCreator); template.sendSourceAndReceiveToResult(uri.toString(), new StringSource(""), new StringResult()); - EasyMock.verify(requestMatcher1, requestMatcher2, responseCallback); + EasyMock.verify(requestMatcher1, requestMatcher2, responseCreator); } @Test