Skip to content

Commit 113db2f

Browse files
committed
Fix regression in AbstractJackson2Decoder
Closes gh-29307
1 parent 19cbba6 commit 113db2f

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,10 @@ public List<MimeType> getDecodableMimeTypes() {
292292
return getMimeTypes();
293293
}
294294

295+
@Override
296+
public List<MimeType> getDecodableMimeTypes(ResolvableType targetType) {
297+
return getMimeTypes(targetType);
298+
}
295299

296300
// Jackson2CodecSupport
297301

spring-web/src/test/java/org/springframework/http/codec/json/Jackson2JsonDecoderTests.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2021 the original author or authors.
2+
* Copyright 2002-2022 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -95,7 +95,7 @@ public void canDecode() {
9595

9696
@Test
9797
public void canDecodeWithObjectMapperRegistrationForType() {
98-
MediaType halJsonMediaType = MediaType.parseMediaType("application/hal+json");
98+
MediaType halJsonMediaType = MediaType.parseMediaType("application/hal+json");
9999
MediaType halFormsJsonMediaType = MediaType.parseMediaType("application/prs.hal-forms+json");
100100

101101
assertThat(decoder.canDecode(ResolvableType.forClass(Pojo.class), halJsonMediaType)).isTrue();
@@ -132,6 +132,18 @@ public void decodableMimeTypesIsImmutable() {
132132
decoder.getMimeTypes().add(new MimeType("text", "ecmascript")));
133133
}
134134

135+
@Test
136+
public void decodableMimeTypesWithObjectMapperRegistration() {
137+
MimeType mimeType1 = MediaType.parseMediaType("application/hal+json");
138+
MimeType mimeType2 = new MimeType("text", "javascript", StandardCharsets.UTF_8);
139+
140+
Jackson2JsonDecoder decoder = new Jackson2JsonDecoder(new ObjectMapper(), mimeType2);
141+
decoder.registerObjectMappersForType(Pojo.class, map -> map.put(mimeType1, new ObjectMapper()));
142+
143+
assertThat(decoder.getDecodableMimeTypes(ResolvableType.forClass(Pojo.class)))
144+
.containsExactly(mimeType1);
145+
}
146+
135147
@Override
136148
@Test
137149
public void decode() {

0 commit comments

Comments
 (0)