From 35de61459a96e84fcd3248dafaeaa5612e80c890 Mon Sep 17 00:00:00 2001 From: mhyeon-lee Date: Sat, 21 Feb 2026 20:19:21 +0900 Subject: [PATCH 1/2] feat: add getMetadata method for RequestContext --- .../server/agentexecution/RequestContext.java | 10 ++++++++++ .../agentexecution/RequestContextTest.java | 20 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/server-common/src/main/java/io/a2a/server/agentexecution/RequestContext.java b/server-common/src/main/java/io/a2a/server/agentexecution/RequestContext.java index beee9bf7e..a7f0ec184 100644 --- a/server-common/src/main/java/io/a2a/server/agentexecution/RequestContext.java +++ b/server-common/src/main/java/io/a2a/server/agentexecution/RequestContext.java @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.UUID; import java.util.stream.Collectors; @@ -198,6 +199,15 @@ public List getRelatedTasks() { return params != null ? params.configuration() : null; } + /** + * Returns the request metadata. + * + * @return the metadata, or null if not available + */ + public @Nullable Map getMetadata() { + return (params != null && params.metadata() != null) ? Collections.unmodifiableMap(params.metadata()) : null; + } + /** * Returns the server call context. *

diff --git a/server-common/src/test/java/io/a2a/server/agentexecution/RequestContextTest.java b/server-common/src/test/java/io/a2a/server/agentexecution/RequestContextTest.java index 2fc0c62e9..ab700564a 100644 --- a/server-common/src/test/java/io/a2a/server/agentexecution/RequestContextTest.java +++ b/server-common/src/test/java/io/a2a/server/agentexecution/RequestContextTest.java @@ -10,6 +10,7 @@ import static org.mockito.Mockito.mockStatic; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.UUID; @@ -38,6 +39,7 @@ public void testInitWithoutParams() { RequestContext context = new RequestContext.Builder().build(); assertNull(context.getMessage()); + assertNull(context.getMetadata()); assertNotNull(context.getTaskId()); // Generated UUID assertNotNull(context.getContextId()); // Generated UUID assertNull(context.getTask()); @@ -70,6 +72,24 @@ public void testInitWithParamsNoIds() { } } + @Test + public void testInitWithParamsMetadata() { + var message = Message.builder().role(Message.Role.ROLE_USER).parts(List.of(new TextPart(""))).build(); + var metadata = new HashMap(); + metadata.put("key", "value"); + + var params = MessageSendParams.builder() + .message(message) + .metadata(metadata) + .build(); + + RequestContext context = new RequestContext.Builder() + .setParams(params) + .build(); + + assertEquals(metadata, context.getMetadata()); + } + @Test public void testInitWithTaskId() { String taskId = "task-123"; From 48f2a09471f69f3a45c4c1e59b2c99e0a1bda91c Mon Sep 17 00:00:00 2001 From: mhyeon-lee Date: Sat, 21 Feb 2026 21:19:32 +0900 Subject: [PATCH 2/2] Enhance test for immutable --- .../java/io/a2a/server/agentexecution/RequestContextTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/server-common/src/test/java/io/a2a/server/agentexecution/RequestContextTest.java b/server-common/src/test/java/io/a2a/server/agentexecution/RequestContextTest.java index ab700564a..7e05ea739 100644 --- a/server-common/src/test/java/io/a2a/server/agentexecution/RequestContextTest.java +++ b/server-common/src/test/java/io/a2a/server/agentexecution/RequestContextTest.java @@ -88,6 +88,7 @@ public void testInitWithParamsMetadata() { .build(); assertEquals(metadata, context.getMetadata()); + assertThrows(UnsupportedOperationException.class, () -> context.getMetadata().put("anotherKey", "anotherValue")); } @Test