Fix a regression in Kotlin serialization support
After gh-29068, some Type instances can throw an IllegalArgumentException. This commit catches them properly to just return a null serializer in that case. Closes gh-29192
This commit is contained in:
@@ -133,7 +133,11 @@ public class KotlinSerializationJsonDecoder extends AbstractDecoder<Object> {
|
||||
private KSerializer<Object> serializer(Type type) {
|
||||
KSerializer<Object> serializer = serializerCache.get(type);
|
||||
if (serializer == null) {
|
||||
serializer = SerializersKt.serializerOrNull(type);
|
||||
try {
|
||||
serializer = SerializersKt.serializerOrNull(type);
|
||||
}
|
||||
catch (IllegalArgumentException ignored) {
|
||||
}
|
||||
if (serializer == null || hasPolymorphism(serializer.getDescriptor(), new HashSet<>())) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -121,7 +121,11 @@ public class KotlinSerializationJsonEncoder extends AbstractEncoder<Object> {
|
||||
private KSerializer<Object> serializer(Type type) {
|
||||
KSerializer<Object> serializer = serializerCache.get(type);
|
||||
if (serializer == null) {
|
||||
serializer = SerializersKt.serializerOrNull(type);
|
||||
try {
|
||||
serializer = SerializersKt.serializerOrNull(type);
|
||||
}
|
||||
catch (IllegalArgumentException ignored) {
|
||||
}
|
||||
if (serializer == null || hasPolymorphism(serializer.getDescriptor(), new HashSet<>())) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -173,7 +173,11 @@ public class KotlinSerializationJsonHttpMessageConverter extends AbstractGeneric
|
||||
private KSerializer<Object> serializer(Type type) {
|
||||
KSerializer<Object> serializer = serializerCache.get(type);
|
||||
if (serializer == null) {
|
||||
serializer = SerializersKt.serializerOrNull(type);
|
||||
try {
|
||||
serializer = SerializersKt.serializerOrNull(type);
|
||||
}
|
||||
catch (IllegalArgumentException ignored) {
|
||||
}
|
||||
if (serializer == null || hasPolymorphism(serializer.getDescriptor(), new HashSet<>())) {
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user