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 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 final class io/modelcontextprotocol/kotlin/sdk/ResourceTemplate {
public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ResourceTemplate$Companion; 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 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 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 final class io/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification : io/modelcontextprotocol/kotlin/sdk/ServerNotification {
public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$Companion; public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$Companion;
public fun <init> (Lio/modelcontextprotocol/kotlin/sdk/ResourceUpdatedNotification$Params;)V 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. * A reference to a resource or resource template definition.
*/ */
@Serializable @Serializable
public data class ResourceReference( public data class ResourceTemplateReference(
/** /**
* The URI or URI template of the resource. * 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) { internal object ReferencePolymorphicSerializer : JsonContentPolymorphicSerializer<Reference>(Reference::class) {
override fun selectDeserializer(element: JsonElement): DeserializationStrategy<Reference> = override fun selectDeserializer(element: JsonElement): DeserializationStrategy<Reference> =
when (element.jsonObject.getValue("type").jsonPrimitive.content) { when (element.jsonObject.getValue("type").jsonPrimitive.content) {
ResourceReference.TYPE -> ResourceReference.serializer() ResourceTemplateReference.TYPE -> ResourceTemplateReference.serializer()
PromptReference.TYPE -> PromptReference.serializer() PromptReference.TYPE -> PromptReference.serializer()
else -> UnknownReference.serializer() else -> UnknownReference.serializer()
} }

View file

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

View file

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