Skip to content

Commit 53700f6

Browse files
committed
Merge branch '4.0.x' into 4.1.x
Closes gh-1667
2 parents 290d444 + 4d1b1ad commit 53700f6

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

spring-ws-core/src/main/java/org/springframework/ws/client/core/WebServiceTemplate.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -429,9 +429,9 @@ public void doWithMessage(WebServiceMessage request) throws IOException, Transfo
429429
"No marshaller registered. Check configuration of WebServiceTemplate.");
430430
}
431431
MarshallingUtils.marshal(marshaller, requestPayload, request);
432-
if (requestCallback != null) {
433-
requestCallback.doWithMessage(request);
434-
}
432+
}
433+
if (requestCallback != null) {
434+
requestCallback.doWithMessage(request);
435435
}
436436
}
437437
}, new WebServiceMessageExtractor<>() {

spring-ws-core/src/test/java/org/springframework/ws/client/core/WebServiceTemplateTests.java

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
import static org.mockito.Mockito.isNull;
5757
import static org.mockito.Mockito.mock;
5858
import static org.mockito.Mockito.reset;
59+
import static org.mockito.Mockito.verify;
5960
import static org.mockito.Mockito.when;
6061

6162
@SuppressWarnings("unchecked")
@@ -271,25 +272,43 @@ void testSendAndReceiveResultNoResponsePayload() throws Exception {
271272

272273
@Test
273274
void testSendAndReceiveMarshalResponse() throws Exception {
275+
Object unmarshalled = new Object();
276+
setupMarshallerAndUnmarshaller(unmarshalled);
277+
Object result = this.template.marshalSendAndReceive(new Object());
278+
assertThat(result).isEqualTo(unmarshalled);
279+
}
274280

281+
@Test
282+
void testSendAndReceiveInvokesCallback() throws Exception {
283+
WebServiceMessageCallback callback = mock(WebServiceMessageCallback.class);
284+
setupMarshallerAndUnmarshaller(new Object());
285+
this.template.marshalSendAndReceive(new Object(), callback);
286+
verify(callback).doWithMessage(isA(MockWebServiceMessage.class));
287+
}
288+
289+
@Test
290+
void testSendAndReceiveWithNoBodyInvokesCallback() throws Exception {
291+
WebServiceMessageCallback callback = mock(WebServiceMessageCallback.class);
292+
setupMarshallerAndUnmarshaller(new Object());
293+
Object requestPayload = null;
294+
this.template.marshalSendAndReceive(requestPayload, callback);
295+
verify(callback).doWithMessage(isA(MockWebServiceMessage.class));
296+
}
297+
298+
private void setupMarshallerAndUnmarshaller(Object unmarshalled) throws Exception {
275299
Marshaller marshallerMock = mock(Marshaller.class);
276300
this.template.setMarshaller(marshallerMock);
277301
marshallerMock.marshal(isA(Object.class), isA(Result.class));
278302

279303
Unmarshaller unmarshallerMock = mock(Unmarshaller.class);
280304
this.template.setUnmarshaller(unmarshallerMock);
281-
Object unmarshalled = new Object();
282305
when(unmarshallerMock.unmarshal(isA(Source.class))).thenReturn(unmarshalled);
283306

284307
this.connectionMock.send(isA(WebServiceMessage.class));
285308
when(this.connectionMock.hasError()).thenReturn(false);
286309
when(this.connectionMock.receive(this.messageFactory)).thenReturn(new MockWebServiceMessage("<response/>"));
287310
when(this.connectionMock.hasFault()).thenReturn(false);
288311
this.connectionMock.close();
289-
290-
Object result = this.template.marshalSendAndReceive(new Object());
291-
292-
assertThat(result).isEqualTo(unmarshalled);
293312
}
294313

295314
@Test

0 commit comments

Comments
 (0)