Jackson encoder skips String.class

Jackson2Encoder explicitly disables String from the supported types
consistent with the same change on the decoder side:

https://github.com/spring-projects/spring-framework/commit/0662dbf0447d8e788575fcf73fafe248b74cbe8d

Issue: SPR-15443
This commit is contained in:
Rossen Stoyanchev
2017-04-14 17:18:44 -04:00
parent 2ba4a224a6
commit 3efb76c852
7 changed files with 43 additions and 16 deletions
@@ -69,7 +69,7 @@ public class Jackson2JsonDecoder extends Jackson2CodecSupport implements HttpMes
@Override
public boolean canDecode(ResolvableType elementType, MimeType mimeType) {
JavaType javaType = this.objectMapper.getTypeFactory().constructType(elementType.getType());
// Skip String (CharSequenceDecoder + "*/*" comes after)
// Skip String: CharSequenceDecoder + "*/*" comes after
return (!CharSequence.class.isAssignableFrom(elementType.resolve(Object.class)) &&
this.objectMapper.canDeserialize(javaType) && supportsMimeType(mimeType));
}
@@ -105,7 +105,9 @@ public class Jackson2JsonEncoder extends Jackson2CodecSupport implements HttpMes
@Override
public boolean canEncode(ResolvableType elementType, MimeType mimeType) {
Class<?> clazz = elementType.getRawClass();
return (this.objectMapper.canSerialize(clazz) && supportsMimeType(mimeType));
// Skip String: StringDecoder + "*/*" comes after
return (!String.class.isAssignableFrom(elementType.resolve(Object.class)) &&
this.objectMapper.canSerialize(clazz) && supportsMimeType(mimeType));
}
@Override