Skip to content

Commit 038191a

Browse files
flex-myeonghyeonkabir
authored andcommitted
fix: merge metadata instead of replacing in TaskManager.TaskStatusUpdateEvent #426 (#427)
1 parent b695641 commit 038191a

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

server-common/src/main/java/io/a2a/server/tasks/TaskManager.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
import static io.a2a.util.Utils.appendArtifactToTask;
66

77
import java.util.ArrayList;
8+
import java.util.HashMap;
89
import java.util.List;
10+
import java.util.Map;
911

1012
import io.a2a.spec.A2AServerException;
1113
import io.a2a.spec.Artifact;
@@ -78,7 +80,9 @@ Task saveTaskEvent(TaskStatusUpdateEvent event) throws A2AServerException {
7880

7981
// Handle metadata from the event
8082
if (event.getMetadata() != null) {
81-
builder.metadata(event.getMetadata());
83+
Map<String, Object> metadata = task.getMetadata() == null ? new HashMap<>() : new HashMap<>(task.getMetadata());
84+
metadata.putAll(event.getMetadata());
85+
builder.metadata(metadata);
8286
}
8387

8488
task = builder.build();

server-common/src/test/java/io/a2a/server/tasks/TaskManagerTest.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -588,8 +588,8 @@ public void testSaveTaskEventMetadataUpdateNull() throws A2AServerException {
588588
}
589589

590590
@Test
591-
public void testSaveTaskEventMetadataUpdateOverwritesExisting() throws A2AServerException {
592-
// Test that metadata update overwrites existing metadata
591+
public void testSaveTaskEventMetadataMergeExisting() throws A2AServerException {
592+
// Test that metadata update merges with existing metadata
593593
Map<String, Object> originalMetadata = new HashMap<>();
594594
originalMetadata.put("original_key", "original_value");
595595

@@ -612,8 +612,10 @@ public void testSaveTaskEventMetadataUpdateOverwritesExisting() throws A2AServer
612612
taskManager.saveTaskEvent(event);
613613

614614
Task updatedTask = taskManager.getTask();
615-
assertEquals(newMetadata, updatedTask.getMetadata());
616-
assertNotEquals(originalMetadata, updatedTask.getMetadata());
615+
616+
Map<String, Object> mergedMetadata = new HashMap<>(originalMetadata);
617+
mergedMetadata.putAll(newMetadata);
618+
assertEquals(mergedMetadata, updatedTask.getMetadata());
617619
}
618620

619621
@Test

0 commit comments

Comments
 (0)