Stream custom types in Jackson2JsonEncoder

Issue: SPR-15727
This commit is contained in:
Sebastien Deleuze
2017-07-03 10:13:56 +02:00
parent 9901c38f9d
commit 727ca4514a
2 changed files with 23 additions and 1 deletions

View File

@@ -16,6 +16,7 @@
package org.springframework.http.codec.json;
import java.util.Arrays;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@@ -32,6 +33,7 @@ import reactor.test.StepVerifier;
import org.springframework.core.ResolvableType;
import org.springframework.core.io.buffer.AbstractDataBufferAllocatingTestCase;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.http.MediaType;
import org.springframework.http.codec.Pojo;
import org.springframework.http.codec.ServerSentEvent;
@@ -108,6 +110,26 @@ public class Jackson2JsonEncoderTests extends AbstractDataBufferAllocatingTestCa
.verifyComplete();
}
@Test // SPR-15727
public void encodeAsStreamWithCustomStreamingType() throws Exception {
MediaType fooMediaType = new MediaType("application", "foo");
MediaType barMediaType = new MediaType("application", "bar");
this.encoder.setStreamingMediaTypes(Arrays.asList(fooMediaType, barMediaType));
Flux<Pojo> source = Flux.just(
new Pojo("foo", "bar"),
new Pojo("foofoo", "barbar"),
new Pojo("foofoofoo", "barbarbar")
);
ResolvableType type = ResolvableType.forClass(Pojo.class);
Flux<DataBuffer> output = this.encoder.encode(source, this.bufferFactory, type, barMediaType, emptyMap());
StepVerifier.create(output)
.consumeNextWith(stringConsumer("{\"foo\":\"foo\",\"bar\":\"bar\"}\n"))
.consumeNextWith(stringConsumer("{\"foo\":\"foofoo\",\"bar\":\"barbar\"}\n"))
.consumeNextWith(stringConsumer("{\"foo\":\"foofoofoo\",\"bar\":\"barbarbar\"}\n"))
.verifyComplete();
}
@Test
public void fieldLevelJsonView() throws Exception {
JacksonViewBean bean = new JacksonViewBean();