Fix JacksonJsonEncoder for streams with more than 2 elements

This commit is contained in:
Sebastien Deleuze 2016-07-04 15:45:32 +02:00
parent c1518c3fde
commit 7ed03d01c6
2 changed files with 12 additions and 4 deletions

View File

@ -83,7 +83,7 @@ public class JacksonJsonEncoder extends AbstractEncoder<Object> {
Mono<DataBuffer> startArray = Mono<DataBuffer> startArray =
Mono.just(bufferFactory.wrap(START_ARRAY_BUFFER)); Mono.just(bufferFactory.wrap(START_ARRAY_BUFFER));
Flux<DataBuffer> arraySeparators = Flux<DataBuffer> arraySeparators =
Mono.just(bufferFactory.wrap(SEPARATOR_BUFFER)).repeat(); Mono.fromSupplier(() -> bufferFactory.wrap(SEPARATOR_BUFFER)).repeat();
Mono<DataBuffer> endArray = Mono<DataBuffer> endArray =
Mono.just(bufferFactory.wrap(END_ARRAY_BUFFER)); Mono.just(bufferFactory.wrap(END_ARRAY_BUFFER));

View File

@ -52,7 +52,11 @@ public class JacksonJsonEncoderTests extends AbstractDataBufferAllocatingTestCas
@Test @Test
public void encode() { public void encode() {
Flux<Pojo> source = Flux.just(new Pojo("foofoo", "barbar"), new Pojo("foofoofoo", "barbarbar")); Flux<Pojo> source = Flux.just(
new Pojo("foo", "bar"),
new Pojo("foofoo", "barbar"),
new Pojo("foofoofoo", "barbarbar")
);
ResolvableType type = ResolvableType.forClass(Pojo.class); ResolvableType type = ResolvableType.forClass(Pojo.class);
Flux<DataBuffer> output = Flux<DataBuffer> output =
@ -62,11 +66,15 @@ public class JacksonJsonEncoderTests extends AbstractDataBufferAllocatingTestCas
.subscribe(output) .subscribe(output)
.assertComplete() .assertComplete()
.assertNoError() .assertNoError()
.assertValuesWith(stringConsumer("["), .assertValuesWith(
stringConsumer("["),
stringConsumer("{\"foo\":\"foo\",\"bar\":\"bar\"}"),
stringConsumer(","),
stringConsumer("{\"foo\":\"foofoo\",\"bar\":\"barbar\"}"), stringConsumer("{\"foo\":\"foofoo\",\"bar\":\"barbar\"}"),
stringConsumer(","), stringConsumer(","),
stringConsumer("{\"foo\":\"foofoofoo\",\"bar\":\"barbarbar\"}"), stringConsumer("{\"foo\":\"foofoofoo\",\"bar\":\"barbarbar\"}"),
stringConsumer("]")); stringConsumer("]")
);
} }
@Test @Test