From 7ed03d01c66f1f5f504bd0130b6eb473603697de Mon Sep 17 00:00:00 2001 From: Sebastien Deleuze Date: Mon, 4 Jul 2016 15:45:32 +0200 Subject: [PATCH] Fix JacksonJsonEncoder for streams with more than 2 elements --- .../http/codec/json/JacksonJsonEncoder.java | 2 +- .../http/codec/json/JacksonJsonEncoderTests.java | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/spring-web-reactive/src/main/java/org/springframework/http/codec/json/JacksonJsonEncoder.java b/spring-web-reactive/src/main/java/org/springframework/http/codec/json/JacksonJsonEncoder.java index 862edd712a..7499826d7c 100644 --- a/spring-web-reactive/src/main/java/org/springframework/http/codec/json/JacksonJsonEncoder.java +++ b/spring-web-reactive/src/main/java/org/springframework/http/codec/json/JacksonJsonEncoder.java @@ -83,7 +83,7 @@ public class JacksonJsonEncoder extends AbstractEncoder { Mono startArray = Mono.just(bufferFactory.wrap(START_ARRAY_BUFFER)); Flux arraySeparators = - Mono.just(bufferFactory.wrap(SEPARATOR_BUFFER)).repeat(); + Mono.fromSupplier(() -> bufferFactory.wrap(SEPARATOR_BUFFER)).repeat(); Mono endArray = Mono.just(bufferFactory.wrap(END_ARRAY_BUFFER)); diff --git a/spring-web-reactive/src/test/java/org/springframework/http/codec/json/JacksonJsonEncoderTests.java b/spring-web-reactive/src/test/java/org/springframework/http/codec/json/JacksonJsonEncoderTests.java index 6f33966118..ebcfe78b19 100644 --- a/spring-web-reactive/src/test/java/org/springframework/http/codec/json/JacksonJsonEncoderTests.java +++ b/spring-web-reactive/src/test/java/org/springframework/http/codec/json/JacksonJsonEncoderTests.java @@ -52,7 +52,11 @@ public class JacksonJsonEncoderTests extends AbstractDataBufferAllocatingTestCas @Test public void encode() { - Flux source = Flux.just(new Pojo("foofoo", "barbar"), new Pojo("foofoofoo", "barbarbar")); + Flux source = Flux.just( + new Pojo("foo", "bar"), + new Pojo("foofoo", "barbar"), + new Pojo("foofoofoo", "barbarbar") + ); ResolvableType type = ResolvableType.forClass(Pojo.class); Flux output = @@ -62,11 +66,15 @@ public class JacksonJsonEncoderTests extends AbstractDataBufferAllocatingTestCas .subscribe(output) .assertComplete() .assertNoError() - .assertValuesWith(stringConsumer("["), + .assertValuesWith( + stringConsumer("["), + stringConsumer("{\"foo\":\"foo\",\"bar\":\"bar\"}"), + stringConsumer(","), stringConsumer("{\"foo\":\"foofoo\",\"bar\":\"barbar\"}"), stringConsumer(","), stringConsumer("{\"foo\":\"foofoofoo\",\"bar\":\"barbarbar\"}"), - stringConsumer("]")); + stringConsumer("]") + ); } @Test