Support empty body in Jackson2JsonDecoder.decodeToMono

Prior to this commit, extracting an HTTP response with an empty body
and no Content-Type header using the WebClient would:

* trigger the use of the Jackson2JsonDecoder
* throw a NoSuchElementException because of the use of `Flux.single()`

This commit changes this behavior to `Flux.singleOrEmpty()` to avoid
throwing exceptions for empty Flux instances.

Issue: SPR-14582
This commit is contained in:
Brian Clozel
2016-08-23 16:10:41 +02:00
parent 93d2287894
commit e4575330c3
2 changed files with 13 additions and 1 deletions

View File

@@ -105,6 +105,18 @@ public class Jackson2JsonDecoderTests extends AbstractDataBufferAllocatingTestCa
});
}
@Test
public void decodeEmptyBodyToMono() throws Exception {
Flux<DataBuffer> source = Flux.empty();
ResolvableType elementType = ResolvableType.forClass(Pojo.class);
Mono<Object> flux = new Jackson2JsonDecoder().decodeToMono(source, elementType, null);
TestSubscriber.subscribe(flux)
.assertNoError()
.assertComplete()
.assertValueCount(0);
}
void handle(List<Pojo> list) {
}