Fix AbstractJackson2Encoder#canEncode

This commit ensures that the Jackson encoder is selected only
with supported mime types.

Issue: SPR-15910
This commit is contained in:
Sebastien Deleuze 2017-09-05 13:12:29 +02:00
parent 320bfdf413
commit 5d4ee09d53
2 changed files with 5 additions and 3 deletions

View File

@ -79,9 +79,8 @@ public abstract class AbstractJackson2Encoder extends Jackson2CodecSupport imple
@Override
public boolean canEncode(ResolvableType elementType, @Nullable MimeType mimeType) {
Class<?> clazz = elementType.resolve(Object.class);
return (Object.class == clazz) ||
!String.class.isAssignableFrom(elementType.resolve(clazz)) &&
getObjectMapper().canSerialize(clazz) && supportsMimeType(mimeType);
return supportsMimeType(mimeType) && (Object.class == clazz ||
(!String.class.isAssignableFrom(elementType.resolve(clazz)) && getObjectMapper().canSerialize(clazz)));
}
@Override

View File

@ -61,6 +61,9 @@ public class Jackson2JsonEncoderTests extends AbstractDataBufferAllocatingTestCa
// SPR-15464
assertTrue(this.encoder.canEncode(ResolvableType.NONE, null));
// SPR-15910
assertFalse(this.encoder.canEncode(ResolvableType.forClass(Object.class), APPLICATION_OCTET_STREAM));
}
@Test // SPR-15866