rename ResourceReference to ResourceTemplateReference (#193)

* chore: rename ResourceReference to ResourceTemplateReference

* rename resource references in tests and update api

---------

Co-authored-by: devcrocod <devcrocod@gmail.com>
This commit is contained in:
zyfy29 2025-08-06 19:30:05 +09:00 • committed by GitHub
commit fc02cecb79
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 42 additions and 42 deletions

View file

@ -2281,35 +2281,6 @@ public final class io/modelcontextprotocol/kotlin/sdk/ResourceListChangedNotific
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class io/modelcontextprotocol/kotlin/sdk/ResourceReference : io/modelcontextprotocol/kotlin/sdk/Reference {
public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ResourceReference$Companion;
public static final field TYPE Ljava/lang/String;
public fun <init> (Ljava/lang/String;)V
public final fun component1 ()Ljava/lang/String;
public final fun copy (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/ResourceReference;
public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ResourceReference;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ResourceReference;
public fun equals (Ljava/lang/Object;)Z
public fun getType ()Ljava/lang/String;
public final fun getUri ()Ljava/lang/String;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
public final synthetic class io/modelcontextprotocol/kotlin/sdk/ResourceReference$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ResourceReference$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ResourceReference;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ResourceReference;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}
public final class io/modelcontextprotocol/kotlin/sdk/ResourceReference$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class io/modelcontextprotocol/kotlin/sdk/ResourceTemplate {
public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ResourceTemplate$Companion;
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
@ -2343,6 +2314,35 @@ public final class io/modelcontextprotocol/kotlin/sdk/ResourceTemplate$Companion
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class io/modelcontextprotocol/kotlin/sdk/ResourceTemplateReference : io/modelcontextprotocol/kotlin/sdk/Reference {
public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ResourceTemplateReference$Companion;
public static final field TYPE Ljava/lang/String;
public fun <init> (Ljava/lang/String;)V
public final fun component1 ()Ljava/lang/String;
public final fun copy (Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/ResourceTemplateReference;
public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ResourceTemplateReference;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ResourceTemplateReference;
public fun equals (Ljava/lang/Object;)Z
public fun getType ()Ljava/lang/String;
public final fun getUri ()Ljava/lang/String;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
public final synthetic class io/modelcontextprotocol/kotlin/sdk/ResourceTemplateReference$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Lio/modelcontextprotocol/kotlin/sdk/ResourceTemplateReference$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/modelcontextprotocol/kotlin/sdk/ResourceTemplateReference;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/modelcontextprotocol/kotlin/sdk/ResourceTemplateReference;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}
public final class io/modelcontextprotocol/kotlin/sdk/ResourceTemplateReference$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}
public final class io/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification : io/modelcontextprotocol/kotlin/sdk/ServerNotification {
public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$Companion;
public fun <init> (Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$Params;)V

View file

@ -1469,7 +1469,7 @@ public sealed interface Reference {
* A reference to a resource or resource template definition.
*/
@Serializable
public data class ResourceReference(
public data class ResourceTemplateReference(
/**
* The URI or URI template of the resource.
*/

View file

@ -75,7 +75,7 @@ internal object StopReasonSerializer : KSerializer<StopReason> {
internal object ReferencePolymorphicSerializer : JsonContentPolymorphicSerializer<Reference>(Reference::class) {
override fun selectDeserializer(element: JsonElement): DeserializationStrategy<Reference> =
when (element.jsonObject.getValue("type").jsonPrimitive.content) {
ResourceReference.TYPE -> ResourceReference.serializer()
ResourceTemplateReference.TYPE -> ResourceTemplateReference.serializer()
PromptReference.TYPE -> PromptReference.serializer()
else -> UnknownReference.serializer()
}

View file

@ -30,21 +30,21 @@ class TypesTest {
// Reference Tests
@Test
fun `should validate ResourceReference`() {
val resourceRef = ResourceReference(uri = "file:///path/to/file.txt")
fun `should validate ResourceTemplateReference`() {
val resourceRef = ResourceTemplateReference(uri = "file:///path/to/file.txt")
assertEquals("ref/resource", resourceRef.type)
assertEquals("file:///path/to/file.txt", resourceRef.uri)
}
@Test
fun `should serialize and deserialize ResourceReference correctly`() {
val resourceRef = ResourceReference(uri = "https://example.com/resource")
fun `should serialize and deserialize ResourceTemplateReference correctly`() {
val resourceRef = ResourceTemplateReference(uri = "https://example.com/resource")
val json = McpJson.encodeToString<Reference>(resourceRef)
val decoded = McpJson.decodeFromString<Reference>(json)
assertIs<ResourceReference>(decoded)
assertIs<ResourceTemplateReference>(decoded)
assertEquals("ref/resource", decoded.type)
assertEquals("https://example.com/resource", decoded.uri)
}
@ -333,12 +333,12 @@ class TypesTest {
@Test
fun `should validate CompleteRequest with resource reference`() {
val request = CompleteRequest(
ref = ResourceReference(uri = "github://repos/{owner}/{repo}"),
ref = ResourceTemplateReference(uri = "github://repos/{owner}/{repo}"),
argument = CompleteRequest.Argument(name = "repo", value = "t"),
)
assertEquals("completion/complete", request.method.value)
assertIs<ResourceReference>(request.ref)
assertIs<ResourceTemplateReference>(request.ref)
val resourceRef = request.ref
assertEquals("github://repos/{owner}/{repo}", resourceRef.uri)
assertEquals("repo", request.argument.name)
@ -366,11 +366,11 @@ class TypesTest {
@Test
fun `should validate CompleteRequest with complex URIs`() {
val request = CompleteRequest(
ref = ResourceReference(uri = "api://v1/{tenant}/{resource}/{id}"),
ref = ResourceTemplateReference(uri = "api://v1/{tenant}/{resource}/{id}"),
argument = CompleteRequest.Argument(name = "id", value = "123"),
)
val resourceRef = request.ref as ResourceReference
val resourceRef = request.ref as ResourceTemplateReference
assertEquals("api://v1/{tenant}/{resource}/{id}", resourceRef.uri)
assertEquals("id", request.argument.name)
assertEquals("123", request.argument.value)

View file

@ -80,12 +80,12 @@ class TypesUtilTest {
// Reference Polymorphic Serializer Tests
@Test
fun `should deserialize ResourceReference polymorphically`() {
fun `should deserialize ResourceTemplateReference polymorphically`() {
val json = """{"type": "ref/resource", "uri": "file:///test.txt"}"""
val decoded = McpJson.decodeFromString<Reference>(json)
assertIs<ResourceReference>(decoded)
assertIs<ResourceTemplateReference>(decoded)
assertEquals("ref/resource", decoded.type)
assertEquals("file:///test.txt", decoded.uri)
}