Jackson Encoder/Decoder accept custom MimeType's
Issue: SPR-15474
This commit is contained in:
parent
afa1c93585
commit
8231812a3c
|
|
@ -35,6 +35,7 @@ import org.springframework.core.MethodParameter;
|
|||
import org.springframework.core.ResolvableType;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.MimeType;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
/**
|
||||
* Base class providing support methods for Jackson 2.9 encoding and decoding.
|
||||
|
|
@ -62,19 +63,21 @@ public abstract class Jackson2CodecSupport {
|
|||
|
||||
protected final ObjectMapper objectMapper;
|
||||
|
||||
private final List<MimeType> mimeTypes;
|
||||
|
||||
|
||||
/**
|
||||
* Constructor with a Jackson {@link ObjectMapper} to use.
|
||||
*/
|
||||
protected Jackson2CodecSupport(ObjectMapper objectMapper) {
|
||||
protected Jackson2CodecSupport(ObjectMapper objectMapper, MimeType... mimeTypes) {
|
||||
Assert.notNull(objectMapper, "ObjectMapper must not be null");
|
||||
this.objectMapper = objectMapper;
|
||||
this.mimeTypes = !ObjectUtils.isEmpty(mimeTypes) ? Arrays.asList(mimeTypes) : JSON_MIME_TYPES;
|
||||
}
|
||||
|
||||
|
||||
protected boolean supportsMimeType(MimeType mimeType) {
|
||||
return (mimeType == null ||
|
||||
JSON_MIME_TYPES.stream().anyMatch(m -> m.isCompatibleWith(mimeType)));
|
||||
return (mimeType == null || this.mimeTypes.stream().anyMatch(m -> m.isCompatibleWith(mimeType)));
|
||||
}
|
||||
|
||||
protected JavaType getJavaType(Type type, Class<?> contextClass) {
|
||||
|
|
|
|||
|
|
@ -61,8 +61,8 @@ public class Jackson2JsonDecoder extends Jackson2CodecSupport implements HttpMes
|
|||
super(Jackson2ObjectMapperBuilder.json().build());
|
||||
}
|
||||
|
||||
public Jackson2JsonDecoder(ObjectMapper mapper) {
|
||||
super(mapper);
|
||||
public Jackson2JsonDecoder(ObjectMapper mapper, MimeType... mimeTypes) {
|
||||
super(mapper, mimeTypes);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -71,8 +71,8 @@ public class Jackson2JsonEncoder extends Jackson2CodecSupport implements HttpMes
|
|||
this(Jackson2ObjectMapperBuilder.json().build());
|
||||
}
|
||||
|
||||
public Jackson2JsonEncoder(ObjectMapper mapper) {
|
||||
super(mapper);
|
||||
public Jackson2JsonEncoder(ObjectMapper mapper, MimeType... mimeTypes) {
|
||||
super(mapper, mimeTypes);
|
||||
this.streamingMediaTypes.add(MediaType.APPLICATION_STREAM_JSON);
|
||||
this.ssePrettyPrinter = initSsePrettyPrinter();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue