Skip to content

Commit 0e7215a

Browse files
committed
fix: merge metadata appendArtifactToTask metadata
1 parent 659df81 commit 0e7215a

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ public void testTaskArtifactUpdateEventAppendTrueWithExistingArtifact() throws A
190190
.artifactId("artifact-id")
191191
.name("artifact-1")
192192
.parts(Collections.singletonList(new TextPart("existing content")))
193+
.metadata(Map.of("key1", "value1"))
193194
.build();
194195
Task taskWithArtifact = Task.builder(initialTask)
195196
.artifacts(Collections.singletonList(existingArtifact))
@@ -201,6 +202,7 @@ public void testTaskArtifactUpdateEventAppendTrueWithExistingArtifact() throws A
201202
.artifactId("artifact-id")
202203
.name("artifact-1")
203204
.parts(Collections.singletonList(new TextPart("new content")))
205+
.metadata(Map.of("key2", "value2"))
204206
.build();
205207
TaskArtifactUpdateEvent event = TaskArtifactUpdateEvent.builder()
206208
.taskId(minimalTask.id())
@@ -217,6 +219,9 @@ public void testTaskArtifactUpdateEventAppendTrueWithExistingArtifact() throws A
217219
assertEquals(2, updatedArtifact.parts().size());
218220
assertEquals("existing content", ((TextPart) updatedArtifact.parts().get(0)).text());
219221
assertEquals("new content", ((TextPart) updatedArtifact.parts().get(1)).text());
222+
223+
assertEquals("value1", updatedArtifact.metadata().get("key1"));
224+
assertEquals("value2", updatedArtifact.metadata().get("key2"));
220225
}
221226

222227
@Test

spec/src/main/java/io/a2a/util/Utils.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
import static io.a2a.util.Assert.checkNotNullParam;
44

55
import java.util.ArrayList;
6+
import java.util.HashMap;
67
import java.util.List;
8+
import java.util.Map;
79
import java.util.logging.Logger;
810

911
import com.google.gson.Gson;
@@ -129,8 +131,18 @@ public static Task appendArtifactToTask(Task task, TaskArtifactUpdateEvent event
129131
log.fine(String.format("Appending parts to artifact id %s for task %s", artifactId, taskId));
130132
List<Part<?>> parts = new ArrayList<>(existingArtifact.parts());
131133
parts.addAll(newArtifact.parts());
134+
135+
Map<String, Object> metadata = new HashMap<>();
136+
if (existingArtifact.metadata() != null) {
137+
metadata.putAll(existingArtifact.metadata());
138+
}
139+
if (newArtifact.metadata() != null) {
140+
metadata.putAll(newArtifact.metadata());
141+
}
142+
132143
Artifact updated = Artifact.builder(existingArtifact)
133144
.parts(parts)
145+
.metadata(metadata)
134146
.build();
135147
artifacts.set(existingArtifactIndex, updated);
136148
} else {

0 commit comments

Comments
 (0)