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:
parent
320bfdf413
commit
5d4ee09d53
|
@ -79,9 +79,8 @@ public abstract class AbstractJackson2Encoder extends Jackson2CodecSupport imple
|
||||||
@Override
|
@Override
|
||||||
public boolean canEncode(ResolvableType elementType, @Nullable MimeType mimeType) {
|
public boolean canEncode(ResolvableType elementType, @Nullable MimeType mimeType) {
|
||||||
Class<?> clazz = elementType.resolve(Object.class);
|
Class<?> clazz = elementType.resolve(Object.class);
|
||||||
return (Object.class == clazz) ||
|
return supportsMimeType(mimeType) && (Object.class == clazz ||
|
||||||
!String.class.isAssignableFrom(elementType.resolve(clazz)) &&
|
(!String.class.isAssignableFrom(elementType.resolve(clazz)) && getObjectMapper().canSerialize(clazz)));
|
||||||
getObjectMapper().canSerialize(clazz) && supportsMimeType(mimeType);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -61,6 +61,9 @@ public class Jackson2JsonEncoderTests extends AbstractDataBufferAllocatingTestCa
|
||||||
|
|
||||||
// SPR-15464
|
// SPR-15464
|
||||||
assertTrue(this.encoder.canEncode(ResolvableType.NONE, null));
|
assertTrue(this.encoder.canEncode(ResolvableType.NONE, null));
|
||||||
|
|
||||||
|
// SPR-15910
|
||||||
|
assertFalse(this.encoder.canEncode(ResolvableType.forClass(Object.class), APPLICATION_OCTET_STREAM));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // SPR-15866
|
@Test // SPR-15866
|
||||||
|
|
Loading…
Reference in New Issue