+ * // set up
+ * MockWebServiceMessageSender mockMessageSender = new MockWebServiceMessageSender();
+ * AirlineClient client = new AirlineClient(); // AirlineClient extends WebServiceGatewaySupport
+ * client.getWebServiceTemplate().setMessageSender(mockMessageSender);
+ * // expectations
+ * String uri = "http://example.com/airline";
+ * String expectedRequest = "<getFlightsRequest xmlns=\"http://example.com/\" >";
+ * String response = "<getFlightsResponse xmlns=\"http://example.com/\">";
+ * mockMessageSender.whenConnectingTo(uri).expectPayload(request).andRespondWithPayload(response);
+ * mockMessageSender.replay();
+ * // execution
+ * StringResult result = new StringResult();
+ * template.sendSourceAndReceiveToResult(uri, new StringSource(expectedRequest), stringResult);
+ * assertXMLEqual(response, result.toString()); // from XMLUnit
+ * mockMessageSender.verify();
+ *
+ *
+ * @author Arjen Poutsma
+ * @author Lukas Krecan
+ * @see org.springframework.ws.client.core.WebServiceTemplate#setMessageSender
+ * @see #whenConnecting()
+ * @see #whenConnectingTo
+ * @see RequestExpectations
+ * @see ResponseActions
+ * @see #replay()
+ * @see #verify()
+ * @since 2.0
+ */
+public class MockWebServiceMessageSender implements WebServiceMessageSender {
+
+ private final List