From 4ee0a8ee3321df8055dce16eb645aca8bf6f1ee5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Deleuze?= Date: Mon, 24 Nov 2025 17:43:21 +0100 Subject: [PATCH] Refine Kotlin Serialization codec type checks ServerSentEvent and String checks, removed from KotlinSerializationSupport in Spring Framework 7.0, are reintroduced by this commit at the right level (KotlinSerializationSupport for ServerSentEvent and KotlinSerializationString(Decoder|Encoder) for String). Closes gh-35885 --- .../http/codec/KotlinSerializationStringDecoder.java | 2 +- .../http/codec/KotlinSerializationStringEncoder.java | 2 +- .../springframework/http/codec/KotlinSerializationSupport.java | 2 +- .../http/codec/json/KotlinSerializationJsonDecoderTests.kt | 2 +- .../http/codec/json/KotlinSerializationJsonEncoderTests.kt | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/http/codec/KotlinSerializationStringDecoder.java b/spring-web/src/main/java/org/springframework/http/codec/KotlinSerializationStringDecoder.java index 684df592298..2529a81997a 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/KotlinSerializationStringDecoder.java +++ b/spring-web/src/main/java/org/springframework/http/codec/KotlinSerializationStringDecoder.java @@ -102,7 +102,7 @@ public abstract class KotlinSerializationStringDecoder e @Override public boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) { - return canSerialize(elementType, mimeType); + return canSerialize(elementType, mimeType) && !CharSequence.class.isAssignableFrom(elementType.toClass()); } @Override diff --git a/spring-web/src/main/java/org/springframework/http/codec/KotlinSerializationStringEncoder.java b/spring-web/src/main/java/org/springframework/http/codec/KotlinSerializationStringEncoder.java index 18d7330b453..c9046bee552 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/KotlinSerializationStringEncoder.java +++ b/spring-web/src/main/java/org/springframework/http/codec/KotlinSerializationStringEncoder.java @@ -101,7 +101,7 @@ public abstract class KotlinSerializationStringEncoder e @Override public boolean canEncode(ResolvableType elementType, @Nullable MimeType mimeType) { - return canSerialize(elementType, mimeType); + return canSerialize(elementType, mimeType) && !String.class.isAssignableFrom(elementType.toClass()); } @Override diff --git a/spring-web/src/main/java/org/springframework/http/codec/KotlinSerializationSupport.java b/spring-web/src/main/java/org/springframework/http/codec/KotlinSerializationSupport.java index 1d144926c0a..b69dae1253a 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/KotlinSerializationSupport.java +++ b/spring-web/src/main/java/org/springframework/http/codec/KotlinSerializationSupport.java @@ -117,7 +117,7 @@ public abstract class KotlinSerializationSupport { if (!this.typePredicate.test(type) || ResolvableType.NONE.equals(type)) { return false; } - return serializer(type) != null && supports(mimeType); + return serializer(type) != null && supports(mimeType) && !ServerSentEvent.class.isAssignableFrom(type.toClass()); } private boolean supports(@Nullable MimeType mimeType) { diff --git a/spring-web/src/test/kotlin/org/springframework/http/codec/json/KotlinSerializationJsonDecoderTests.kt b/spring-web/src/test/kotlin/org/springframework/http/codec/json/KotlinSerializationJsonDecoderTests.kt index 10689531892..28c8f87ec5b 100644 --- a/spring-web/src/test/kotlin/org/springframework/http/codec/json/KotlinSerializationJsonDecoderTests.kt +++ b/spring-web/src/test/kotlin/org/springframework/http/codec/json/KotlinSerializationJsonDecoderTests.kt @@ -80,7 +80,7 @@ class KotlinSerializationJsonDecoderTests : AbstractDecoderTests