From bbb2c95aa19d0eec1342f9b2fb1b503163b44e1e Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Mon, 31 May 2010 09:22:34 +0000 Subject: [PATCH] SWS-610 - Incompatibility with WS-I requirement R2750 --- .../ws/client/core/WebServiceTemplate.java | 4 +- .../client/core/WebServiceTemplateTest.java | 67 ++++++++++++------- 2 files changed, 46 insertions(+), 25 deletions(-) diff --git a/core/src/main/java/org/springframework/ws/client/core/WebServiceTemplate.java b/core/src/main/java/org/springframework/ws/client/core/WebServiceTemplate.java index 23b91c96..60f88a81 100644 --- a/core/src/main/java/org/springframework/ws/client/core/WebServiceTemplate.java +++ b/core/src/main/java/org/springframework/ws/client/core/WebServiceTemplate.java @@ -401,7 +401,9 @@ public class WebServiceTemplate extends WebServiceAccessor implements WebService new SourceExtractor() { public Boolean extractData(Source source) throws IOException, TransformerException { - transformer.transform(source, responseResult); + if (source != null) { + transformer.transform(source, responseResult); + } return Boolean.TRUE; } }); diff --git a/core/src/test/java/org/springframework/ws/client/core/WebServiceTemplateTest.java b/core/src/test/java/org/springframework/ws/client/core/WebServiceTemplateTest.java index 606de8e9..e82b039a 100644 --- a/core/src/test/java/org/springframework/ws/client/core/WebServiceTemplateTest.java +++ b/core/src/test/java/org/springframework/ws/client/core/WebServiceTemplateTest.java @@ -37,11 +37,11 @@ import org.springframework.ws.transport.WebServiceMessageSender; import org.springframework.xml.transform.StringResult; import org.springframework.xml.transform.StringSource; -import org.junit.Assert; import org.junit.Before; import org.junit.Test; import static org.easymock.EasyMock.*; +import static org.junit.Assert.*; public class WebServiceTemplateTest { @@ -53,9 +53,8 @@ public class WebServiceTemplateTest { @Before public void setUp() throws Exception { - template = new WebServiceTemplate(); messageFactory = new MockWebServiceMessageFactory(); - template.setMessageFactory(messageFactory); + template = new WebServiceTemplate(messageFactory); connectionMock = createMock(FaultAwareWebServiceConnection.class); final URI expectedUri = new URI("http://www.springframework.org/spring-ws"); expect(connectionMock.getUri()).andReturn(expectedUri).anyTimes(); @@ -66,7 +65,7 @@ public class WebServiceTemplateTest { } public boolean supports(URI uri) { - Assert.assertEquals("Invalid uri", expectedUri, uri); + assertEquals("Invalid uri", expectedUri, uri); return true; } }); @@ -82,7 +81,7 @@ public class WebServiceTemplateTest { template.setMarshaller(null); try { template.marshalSendAndReceive(new Object()); - Assert.fail("IllegalStateException expected"); + fail("IllegalStateException expected"); } catch (IllegalStateException ex) { // expected behavior @@ -100,7 +99,7 @@ public class WebServiceTemplateTest { template.setUnmarshaller(null); try { template.marshalSendAndReceive(new Object()); - Assert.fail("IllegalStateException expected"); + fail("IllegalStateException expected"); } catch (IllegalStateException ex) { // expected behavior @@ -127,7 +126,7 @@ public class WebServiceTemplateTest { replay(connectionMock, requestCallback, extractorMock); Object result = template.sendAndReceive(requestCallback, extractorMock); - Assert.assertEquals("Invalid response", extracted, result); + assertEquals("Invalid response", extracted, result); verify(connectionMock, requestCallback, extractorMock); } @@ -144,7 +143,7 @@ public class WebServiceTemplateTest { replay(connectionMock, extractorMock); Object result = template.sendAndReceive(null, extractorMock); - Assert.assertNull("Invalid response", result); + assertNull("Invalid response", result); verify(connectionMock, extractorMock); } @@ -169,7 +168,7 @@ public class WebServiceTemplateTest { replay(connectionMock, extractorMock, faultMessageResolverMock); Object result = template.sendAndReceive(null, extractorMock); - Assert.assertNull("Invalid response", result); + assertNull("Invalid response", result); verify(connectionMock, extractorMock, faultMessageResolverMock); } @@ -191,11 +190,11 @@ public class WebServiceTemplateTest { try { template.sendAndReceive(null, extractorMock); - Assert.fail("Expected WebServiceTransportException"); + fail("Expected WebServiceTransportException"); } catch (WebServiceTransportException ex) { //expected - Assert.assertEquals("Invalid exception message", errorMessage, ex.getMessage()); + assertEquals("Invalid exception message", errorMessage, ex.getMessage()); } verify(connectionMock, extractorMock); @@ -216,7 +215,7 @@ public class WebServiceTemplateTest { replay(connectionMock, extractorMock); Object result = template.sendSourceAndReceive(new StringSource(""), extractorMock); - Assert.assertEquals("Invalid response", extracted, result); + assertEquals("Invalid response", extracted, result); verify(connectionMock, extractorMock); } @@ -233,7 +232,7 @@ public class WebServiceTemplateTest { replay(connectionMock, extractorMock); Object result = template.sendSourceAndReceive(new StringSource(""), extractorMock); - Assert.assertNull("Invalid response", result); + assertNull("Invalid response", result); verify(connectionMock, extractorMock); } @@ -250,7 +249,7 @@ public class WebServiceTemplateTest { StringResult result = new StringResult(); boolean b = template.sendSourceAndReceiveToResult(new StringSource(""), result); - Assert.assertTrue("Invalid result", b); + assertTrue("Invalid result", b); verify(connectionMock); } @@ -266,11 +265,31 @@ public class WebServiceTemplateTest { StringResult result = new StringResult(); boolean b = template.sendSourceAndReceiveToResult(new StringSource(""), result); - Assert.assertFalse("Invalid result", b); + assertFalse("Invalid result", b); verify(connectionMock); } + @Test + public void testSendAndReceiveResultNoResponsePayload() throws Exception { + connectionMock.send(isA(WebServiceMessage.class)); + expect(connectionMock.hasError()).andReturn(false); + WebServiceMessage response = createMock(WebServiceMessage.class); + expect(connectionMock.receive(messageFactory)).andReturn(response); + expect(connectionMock.hasFault()).andReturn(false); + expect(response.getPayloadSource()).andReturn(null); + connectionMock.close(); + + replay(connectionMock, response); + + StringResult result = new StringResult(); + boolean b = template.sendSourceAndReceiveToResult(new StringSource(""), result); + assertTrue("Invalid result", b); + + verify(connectionMock, response); + } + + @Test public void testSendAndReceiveMarshalResponse() throws Exception { Marshaller marshallerMock = createMock(Marshaller.class); @@ -291,7 +310,7 @@ public class WebServiceTemplateTest { replay(connectionMock, marshallerMock, unmarshallerMock); Object result = template.marshalSendAndReceive(new Object()); - Assert.assertEquals("Invalid result", unmarshalled, result); + assertEquals("Invalid result", unmarshalled, result); verify(connectionMock, marshallerMock, unmarshallerMock); } @@ -310,7 +329,7 @@ public class WebServiceTemplateTest { replay(connectionMock, marshallerMock); Object result = template.marshalSendAndReceive(new Object()); - Assert.assertNull("Invalid result", result); + assertNull("Invalid result", result); verify(connectionMock, marshallerMock); } @@ -325,7 +344,7 @@ public class WebServiceTemplateTest { } public boolean supports(URI uri) { - Assert.assertEquals("Invalid uri", customUri, uri); + assertEquals("Invalid uri", customUri, uri); return true; } }); @@ -345,7 +364,7 @@ public class WebServiceTemplateTest { replay(connectionMock, requestCallback, extractorMock); Object result = template.sendAndReceive(customUri.toString(), requestCallback, extractorMock); - Assert.assertEquals("Invalid response", extracted, result); + assertEquals("Invalid response", extracted, result); verify(connectionMock, requestCallback, extractorMock); } @@ -376,7 +395,7 @@ public class WebServiceTemplateTest { replay(connectionMock, interceptorMock1, interceptorMock2, requestCallback, extractorMock); Object result = template.sendAndReceive(requestCallback, extractorMock); - Assert.assertEquals("Invalid response", extracted, result); + assertEquals("Invalid response", extracted, result); verify(connectionMock, interceptorMock1, interceptorMock2, requestCallback, extractorMock); } @@ -406,7 +425,7 @@ public class WebServiceTemplateTest { replay(connectionMock, interceptorMock1, interceptorMock2, requestCallback, extractorMock); Object result = template.doSendAndReceive(messageContext, connectionMock, requestCallback, extractorMock); - Assert.assertEquals("Invalid response", extracted, result); + assertEquals("Invalid response", extracted, result); verify(connectionMock, interceptorMock1, interceptorMock2, requestCallback, extractorMock); } @@ -435,7 +454,7 @@ public class WebServiceTemplateTest { replay(connectionMock, interceptorMock1, interceptorMock2, requestCallback, extractorMock); Object result = template.doSendAndReceive(messageContext, connectionMock, requestCallback, extractorMock); - Assert.assertEquals("Invalid response", extracted, result); + assertEquals("Invalid response", extracted, result); verify(connectionMock, interceptorMock1, interceptorMock2, requestCallback, extractorMock); } @@ -454,7 +473,7 @@ public class WebServiceTemplateTest { } public boolean supports(URI uri) { - Assert.assertEquals("Invalid uri", providerUri, uri); + assertEquals("Invalid uri", providerUri, uri); return true; } }); @@ -471,7 +490,7 @@ public class WebServiceTemplateTest { replay(connectionMock, extractorMock, providerMock); Object result = template.sendAndReceive(null, extractorMock); - Assert.assertNull("Invalid response", result); + assertNull("Invalid response", result); verify(connectionMock, extractorMock, providerMock); }