Skip to content

Commit b76e5f5

Browse files
committed
Merge branch '4.1.x'
Closes gh-1668
2 parents 1afdda3 + 53700f6 commit b76e5f5

File tree

2 files changed

+28
-9
lines changed

2 files changed

+28
-9
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,7 @@ private void initFaultMessageResolver(DefaultStrategiesHelper helper) throws Bea
413413
}
414414

415415
@Override
416-
public @Nullable Object marshalSendAndReceive(final Object requestPayload,
416+
public @Nullable Object marshalSendAndReceive(final @Nullable Object requestPayload,
417417
final @Nullable WebServiceMessageCallback requestCallback) {
418418
String defaultUri = getDefaultUri();
419419
Assert.notNull(defaultUri, "'defaultUri' must not be null");
@@ -433,9 +433,9 @@ public void doWithMessage(WebServiceMessage request) throws IOException, Transfo
433433
"No marshaller registered. Check configuration of WebServiceTemplate.");
434434
}
435435
MarshallingUtils.marshal(marshaller, requestPayload, request);
436-
if (requestCallback != null) {
437-
requestCallback.doWithMessage(request);
438-
}
436+
}
437+
if (requestCallback != null) {
438+
requestCallback.doWithMessage(request);
439439
}
440440
}
441441
}, 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)