From 1fbf819ac5d51f5f2d6bfaa332af473a57ad5398 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=9A=A9=EC=A7=84?= <90879448+Leesin0222@users.noreply.github.com> Date: Wed, 26 Mar 2025 18:05:43 +0900 Subject: [PATCH] Change ErrorCodeSerializer descriptor kind (#54) * Change descriptor to INT for correct serialization * Remove @OptIn(ExperimentalSerializationApi::class) bacause The opt-in annotation is redundant: no matching experimental API is used --------- Co-authored-by: Leonid Stashevsky --- .../io/modelcontextprotocol/kotlin/sdk/types.util.kt | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types.util.kt b/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types.util.kt index e990119..cb7b100 100644 --- a/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types.util.kt +++ b/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types.util.kt @@ -3,7 +3,6 @@ package io.modelcontextprotocol.kotlin.sdk import io.github.oshai.kotlinlogging.KotlinLogging import io.modelcontextprotocol.kotlin.sdk.LoggingMessageNotification.SetLevelRequest import kotlinx.serialization.DeserializationStrategy -import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.KSerializer import kotlinx.serialization.descriptors.PrimitiveKind import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor @@ -17,17 +16,16 @@ private val logger = KotlinLogging.logger {} internal object ErrorCodeSerializer : KSerializer { override val descriptor: SerialDescriptor = - PrimitiveSerialDescriptor("io.modelcontextprotocol.kotlin.sdk.ErrorCode", PrimitiveKind.STRING) + PrimitiveSerialDescriptor("io.modelcontextprotocol.kotlin.sdk.ErrorCode", PrimitiveKind.INT) - @OptIn(ExperimentalSerializationApi::class) override fun serialize(encoder: Encoder, value: ErrorCode) { encoder.encodeInt(value.code) } override fun deserialize(decoder: Decoder): ErrorCode { - val decodedString = decoder.decodeInt() - return ErrorCode.Defined.entries.firstOrNull { it.code == decodedString } - ?: ErrorCode.Unknown(decodedString) + val decodedInt = decoder.decodeInt() + return ErrorCode.Defined.entries.firstOrNull { it.code == decodedInt } + ?: ErrorCode.Unknown(decodedInt) } } @@ -35,7 +33,6 @@ internal object RequestMethodSerializer : KSerializer { override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("io.modelcontextprotocol.kotlin.sdk.Method", PrimitiveKind.STRING) - @OptIn(ExperimentalSerializationApi::class) override fun serialize(encoder: Encoder, value: Method) { encoder.encodeString(value.value) } @@ -51,7 +48,6 @@ internal object StopReasonSerializer : KSerializer { override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("io.modelcontextprotocol.kotlin.sdk.StopReason", PrimitiveKind.STRING) - @OptIn(ExperimentalSerializationApi::class) override fun serialize(encoder: Encoder, value: StopReason) { encoder.encodeString(value.value) }