Skip to content

Commit 8231812

Browse files
committed
Jackson Encoder/Decoder accept custom MimeType's
Issue: SPR-15474
1 parent afa1c93 commit 8231812

File tree

3 files changed

+10
-7
lines changed

3 files changed

+10
-7
lines changed

spring-web/src/main/java/org/springframework/http/codec/json/Jackson2CodecSupport.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import org.springframework.core.ResolvableType;
3636
import org.springframework.util.Assert;
3737
import org.springframework.util.MimeType;
38+
import org.springframework.util.ObjectUtils;
3839

3940
/**
4041
* Base class providing support methods for Jackson 2.9 encoding and decoding.
@@ -62,19 +63,21 @@ public abstract class Jackson2CodecSupport {
6263

6364
protected final ObjectMapper objectMapper;
6465

66+
private final List<MimeType> mimeTypes;
67+
6568

6669
/**
6770
* Constructor with a Jackson {@link ObjectMapper} to use.
6871
*/
69-
protected Jackson2CodecSupport(ObjectMapper objectMapper) {
72+
protected Jackson2CodecSupport(ObjectMapper objectMapper, MimeType... mimeTypes) {
7073
Assert.notNull(objectMapper, "ObjectMapper must not be null");
7174
this.objectMapper = objectMapper;
75+
this.mimeTypes = !ObjectUtils.isEmpty(mimeTypes) ? Arrays.asList(mimeTypes) : JSON_MIME_TYPES;
7276
}
7377

7478

7579
protected boolean supportsMimeType(MimeType mimeType) {
76-
return (mimeType == null ||
77-
JSON_MIME_TYPES.stream().anyMatch(m -> m.isCompatibleWith(mimeType)));
80+
return (mimeType == null || this.mimeTypes.stream().anyMatch(m -> m.isCompatibleWith(mimeType)));
7881
}
7982

8083
protected JavaType getJavaType(Type type, Class<?> contextClass) {

spring-web/src/main/java/org/springframework/http/codec/json/Jackson2JsonDecoder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ public Jackson2JsonDecoder() {
6161
super(Jackson2ObjectMapperBuilder.json().build());
6262
}
6363

64-
public Jackson2JsonDecoder(ObjectMapper mapper) {
65-
super(mapper);
64+
public Jackson2JsonDecoder(ObjectMapper mapper, MimeType... mimeTypes) {
65+
super(mapper, mimeTypes);
6666
}
6767

6868

spring-web/src/main/java/org/springframework/http/codec/json/Jackson2JsonEncoder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ public Jackson2JsonEncoder() {
7171
this(Jackson2ObjectMapperBuilder.json().build());
7272
}
7373

74-
public Jackson2JsonEncoder(ObjectMapper mapper) {
75-
super(mapper);
74+
public Jackson2JsonEncoder(ObjectMapper mapper, MimeType... mimeTypes) {
75+
super(mapper, mimeTypes);
7676
this.streamingMediaTypes.add(MediaType.APPLICATION_STREAM_JSON);
7777
this.ssePrettyPrinter = initSsePrettyPrinter();
7878
}

0 commit comments

Comments
 (0)