From 374fe8e63c3ea430f2ed4545390e25a21f5c1afa Mon Sep 17 00:00:00 2001 From: mhyeon-lee Date: Sat, 21 Feb 2026 19:52:31 +0900 Subject: [PATCH 1/2] Add getMetadata for RequestContext --- .../server/agentexecution/RequestContext.java | 10 ++++++++++ .../agentexecution/RequestContextTest.java | 18 ++++++++++++++++++ 2 files changed, 28 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 e79298703..03fec2277 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; + } + /** * 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 433ebcac3..8a4825697 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; @@ -32,6 +33,7 @@ public void testInitWithoutParams() { assertNull(context.getTaskId()); assertNull(context.getContextId()); assertNull(context.getTask()); + assertNull(context.getMetadata()); assertTrue(context.getRelatedTasks().isEmpty()); } @@ -59,6 +61,22 @@ public void testInitWithParamsNoIds() { } } + @Test + public void testInitWithParamsMetadata() { + var message = Message.builder().role(Message.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(params, null, null, null, null, null); + + assertEquals(metadata, context.getMetadata()); + } + @Test public void testInitWithTaskId() { String taskId = "task-123"; From 7d75c430b4126eb3c5ecefdde5445cb7a3d96b0a Mon Sep 17 00:00:00 2001 From: mhyeon-lee Date: Sat, 21 Feb 2026 19:56:00 +0900 Subject: [PATCH 2/2] Fix to immutable --- .../main/java/io/a2a/server/agentexecution/RequestContext.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 03fec2277..d8408f46d 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 @@ -205,7 +205,7 @@ public List getRelatedTasks() { * @return the metadata, or null if not available */ public @Nullable Map getMetadata() { - return params != null ? params.metadata() : null; + return (params != null && params.metadata() != null) ? Collections.unmodifiableMap(params.metadata()) : null; } /**