mirror of
https://github.com/spring-projects/spring-framework
synced 2026-06-08 17:33:33 +00:00
Refine AbstractKotlinSerializationHttpMessageConverter#canWrite
AbstractKotlinSerializationHttpMessageConverter#writeInternal is able to resolve the ResolvableType from the Object parameter when the provided one via the ResolvableType parameter is not resolvable, but AbstractKotlinSerializationHttpMessageConverter#canWrite lacks of such capability. This commit refines AbstractKotlinSerializationHttpMessageConverter#canWrite to resolve the ResolvableType from the Class<?> parameter when the provided one via the ResolvableType parameter is not resolvable. Closes gh-35920
This commit is contained in:
+4
-3
@@ -112,11 +112,12 @@ public abstract class AbstractKotlinSerializationHttpMessageConverter<T extends
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canWrite(ResolvableType type, Class<?> clazz, @Nullable MediaType mediaType) {
|
||||
if (!this.typePredicate.test(type) || ResolvableType.NONE.equals(type)) {
|
||||
public boolean canWrite(ResolvableType type, Class<?> valueClass, @Nullable MediaType mediaType) {
|
||||
ResolvableType resolvableType = (ResolvableType.NONE.equals(type) ? ResolvableType.forClass(valueClass) : type);
|
||||
if (!this.typePredicate.test(resolvableType)) {
|
||||
return false;
|
||||
}
|
||||
return serializer(type, null) != null && canWrite(mediaType);
|
||||
return serializer(resolvableType, null) != null && canWrite(mediaType);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
-2
@@ -128,7 +128,7 @@ class KotlinSerializationJsonHttpMessageConverterTests {
|
||||
assertThat(converter.canWrite(resolvableTypeOf<Ordered>(), Ordered::class.java, MediaType.APPLICATION_JSON)).isFalse()
|
||||
assertThat(converter.canWrite(resolvableTypeOf<OrderedImpl>(), OrderedImpl::class.java, MediaType.APPLICATION_JSON)).isFalse()
|
||||
|
||||
assertThat(converter.canWrite(ResolvableType.NONE, SerializableBean::class.java, MediaType.APPLICATION_JSON)).isFalse()
|
||||
assertThat(converter.canWrite(ResolvableType.NONE, SerializableBean::class.java, MediaType.APPLICATION_JSON)).isTrue()
|
||||
|
||||
assertThat(converter.canWrite(ResolvableType.forType(BigDecimal::class.java), BigDecimal::class.java, MediaType.APPLICATION_JSON)).isFalse()
|
||||
}
|
||||
@@ -156,7 +156,7 @@ class KotlinSerializationJsonHttpMessageConverterTests {
|
||||
assertThat(converterWithAllTypes.canWrite(resolvableTypeOf<Ordered>(), Ordered::class.java, MediaType.APPLICATION_JSON)).isTrue()
|
||||
assertThat(converterWithAllTypes.canWrite(resolvableTypeOf<OrderedImpl>(), OrderedImpl::class.java, MediaType.APPLICATION_JSON)).isFalse()
|
||||
|
||||
assertThat(converterWithAllTypes.canWrite(ResolvableType.NONE, SerializableBean::class.java, MediaType.APPLICATION_JSON)).isFalse()
|
||||
assertThat(converterWithAllTypes.canWrite(ResolvableType.NONE, SerializableBean::class.java, MediaType.APPLICATION_JSON)).isTrue()
|
||||
|
||||
assertThat(converterWithAllTypes.canWrite(ResolvableType.forType(BigDecimal::class.java), BigDecimal::class.java, MediaType.APPLICATION_JSON)).isFalse()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user