Skip to content

Commit 487cd46

Browse files
authored
feat!: Unify spec domain classes as records (#548)
Getter signatures are now changed. Errors are not converted since they need to extend RuntimeException etc. Similarly the Request/Response objects are not converted either, as we are evaluating moving them out of the spec package. However, first we need to double check if they are still used in the client facing API. Fixes #507 🦕 Replaces: #509
1 parent f71c698 commit 487cd46

File tree

80 files changed

+1443
-2046
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+1443
-2046
lines changed

client/base/src/main/java/io/a2a/client/ClientTaskManager.java

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,10 @@ public Task saveTaskEvent(Task task) throws A2AClientInvalidArgsError {
5252

5353
public Task saveTaskEvent(TaskStatusUpdateEvent taskStatusUpdateEvent) throws A2AClientError {
5454
if (taskId == null) {
55-
taskId = taskStatusUpdateEvent.getTaskId();
55+
taskId = taskStatusUpdateEvent.taskId();
5656
}
5757
if (contextId == null) {
58-
contextId = taskStatusUpdateEvent.getContextId();
58+
contextId = taskStatusUpdateEvent.contextId();
5959
}
6060
Task task = currentTask;
6161
if (task == null) {
@@ -67,31 +67,31 @@ public Task saveTaskEvent(TaskStatusUpdateEvent taskStatusUpdateEvent) throws A2
6767
}
6868

6969
Task.Builder taskBuilder = Task.builder(task);
70-
if (taskStatusUpdateEvent.getStatus().message() != null) {
71-
if (task.getHistory() == null) {
72-
taskBuilder.history(taskStatusUpdateEvent.getStatus().message());
70+
if (taskStatusUpdateEvent.status().message() != null) {
71+
if (task.history() == null) {
72+
taskBuilder.history(taskStatusUpdateEvent.status().message());
7373
} else {
74-
List<Message> history = new ArrayList<>(task.getHistory());
75-
history.add(taskStatusUpdateEvent.getStatus().message());
74+
List<Message> history = new ArrayList<>(task.history());
75+
history.add(taskStatusUpdateEvent.status().message());
7676
taskBuilder.history(history);
7777
}
7878
}
79-
if (taskStatusUpdateEvent.getMetadata() != null) {
80-
Map<String, Object> newMetadata = task.getMetadata() != null ? new HashMap<>(task.getMetadata()) : new HashMap<>();
81-
newMetadata.putAll(taskStatusUpdateEvent.getMetadata());
79+
if (taskStatusUpdateEvent.metadata() != null) {
80+
Map<String, Object> newMetadata = task.metadata() != null ? new HashMap<>(task.metadata()) : new HashMap<>();
81+
newMetadata.putAll(taskStatusUpdateEvent.metadata());
8282
taskBuilder.metadata(newMetadata);
8383
}
84-
taskBuilder.status(taskStatusUpdateEvent.getStatus());
84+
taskBuilder.status(taskStatusUpdateEvent.status());
8585
currentTask = taskBuilder.build();
8686
return currentTask;
8787
}
8888

8989
public Task saveTaskEvent(TaskArtifactUpdateEvent taskArtifactUpdateEvent) {
9090
if (taskId == null) {
91-
taskId = taskArtifactUpdateEvent.getTaskId();
91+
taskId = taskArtifactUpdateEvent.taskId();
9292
}
9393
if (contextId == null) {
94-
contextId = taskArtifactUpdateEvent.getContextId();
94+
contextId = taskArtifactUpdateEvent.contextId();
9595
}
9696
Task task = currentTask;
9797
if (task == null) {
@@ -115,13 +115,13 @@ public Task saveTaskEvent(TaskArtifactUpdateEvent taskArtifactUpdateEvent) {
115115
*/
116116
public Task updateWithMessage(Message message, Task task) {
117117
Task.Builder taskBuilder = Task.builder(task);
118-
List<Message> history = task.getHistory();
118+
List<Message> history = task.history();
119119
if (history == null) {
120120
history = new ArrayList<>();
121121
}
122-
if (task.getStatus().message() != null) {
123-
history.add(task.getStatus().message());
124-
taskBuilder.status(new TaskStatus(task.getStatus().state(), null, task.getStatus().timestamp()));
122+
if (task.status().message() != null) {
123+
history.add(task.status().message());
124+
taskBuilder.status(new TaskStatus(task.status().state(), null, task.status().timestamp()));
125125
}
126126
history.add(message);
127127
taskBuilder.history(history);
@@ -132,8 +132,8 @@ public Task updateWithMessage(Message message, Task task) {
132132
private void saveTask(Task task) {
133133
currentTask = task;
134134
if (taskId == null) {
135-
taskId = currentTask.getId();
136-
contextId = currentTask.getContextId();
135+
taskId = currentTask.id();
136+
contextId = currentTask.contextId();
137137
}
138138
}
139139
}

client/base/src/main/java/io/a2a/client/MessageEvent.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,15 @@ public Message getMessage() {
2525
@Override
2626
public String toString() {
2727
String messageAsString = "{"
28-
+ "role=" + message.getRole()
29-
+ ", parts=" + message.getParts()
30-
+ ", messageId=" + message.getMessageId()
31-
+ ", contextId=" + message.getContextId()
32-
+ ", taskId=" + message.getTaskId()
33-
+ ", metadata=" + message.getMetadata()
34-
+ ", kind=" + message.getKind()
35-
+ ", referenceTaskIds=" + message.getReferenceTaskIds()
36-
+ ", extensions=" + message.getExtensions() + '}';
28+
+ "role=" + message.role()
29+
+ ", parts=" + message.parts()
30+
+ ", messageId=" + message.messageId()
31+
+ ", contextId=" + message.contextId()
32+
+ ", taskId=" + message.taskId()
33+
+ ", metadata=" + message.metadata()
34+
+ ", kind=" + message.kind()
35+
+ ", referenceTaskIds=" + message.referenceTaskIds()
36+
+ ", extensions=" + message.extensions() + '}';
3737
return "MessageEvent{" + "message=" + messageAsString + '}';
3838
}
3939
}

client/base/src/test/java/io/a2a/A2ATest.java

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@ public void testToUserMessage() {
2020
String text = "Hello, world!";
2121
Message message = A2A.toUserMessage(text);
2222

23-
assertEquals(Message.Role.USER, message.getRole());
24-
assertEquals(1, message.getParts().size());
25-
assertEquals(text, ((TextPart) message.getParts().get(0)).getText());
26-
assertNotNull(message.getMessageId());
27-
assertNull(message.getContextId());
28-
assertNull(message.getTaskId());
23+
assertEquals(Message.Role.USER, message.role());
24+
assertEquals(1, message.parts().size());
25+
assertEquals(text, ((TextPart) message.parts().get(0)).text());
26+
assertNotNull(message.messageId());
27+
assertNull(message.contextId());
28+
assertNull(message.taskId());
2929
}
3030

3131
@Test
@@ -34,19 +34,19 @@ public void testToUserMessageWithId() {
3434
String messageId = "test-message-id";
3535
Message message = A2A.toUserMessage(text, messageId);
3636

37-
assertEquals(Message.Role.USER, message.getRole());
38-
assertEquals(messageId, message.getMessageId());
37+
assertEquals(Message.Role.USER, message.role());
38+
assertEquals(messageId, message.messageId());
3939
}
4040

4141
@Test
4242
public void testToAgentMessage() {
4343
String text = "Hello, I'm an agent!";
4444
Message message = A2A.toAgentMessage(text);
4545

46-
assertEquals(Message.Role.AGENT, message.getRole());
47-
assertEquals(1, message.getParts().size());
48-
assertEquals(text, ((TextPart) message.getParts().get(0)).getText());
49-
assertNotNull(message.getMessageId());
46+
assertEquals(Message.Role.AGENT, message.role());
47+
assertEquals(1, message.parts().size());
48+
assertEquals(text, ((TextPart) message.parts().get(0)).text());
49+
assertNotNull(message.messageId());
5050
}
5151

5252
@Test
@@ -55,8 +55,8 @@ public void testToAgentMessageWithId() {
5555
String messageId = "agent-message-id";
5656
Message message = A2A.toAgentMessage(text, messageId);
5757

58-
assertEquals(Message.Role.AGENT, message.getRole());
59-
assertEquals(messageId, message.getMessageId());
58+
assertEquals(Message.Role.AGENT, message.role());
59+
assertEquals(messageId, message.messageId());
6060
}
6161

6262
@Test
@@ -67,14 +67,14 @@ public void testCreateUserTextMessage() {
6767

6868
Message message = A2A.createUserTextMessage(text, contextId, taskId);
6969

70-
assertEquals(Message.Role.USER, message.getRole());
71-
assertEquals(contextId, message.getContextId());
72-
assertEquals(taskId, message.getTaskId());
73-
assertEquals(1, message.getParts().size());
74-
assertEquals(text, ((TextPart) message.getParts().get(0)).getText());
75-
assertNotNull(message.getMessageId());
76-
assertNull(message.getMetadata());
77-
assertNull(message.getReferenceTaskIds());
70+
assertEquals(Message.Role.USER, message.role());
71+
assertEquals(contextId, message.contextId());
72+
assertEquals(taskId, message.taskId());
73+
assertEquals(1, message.parts().size());
74+
assertEquals(text, ((TextPart) message.parts().get(0)).text());
75+
assertNotNull(message.messageId());
76+
assertNull(message.metadata());
77+
assertNull(message.referenceTaskIds());
7878
}
7979

8080
@Test
@@ -83,11 +83,11 @@ public void testCreateUserTextMessageWithNullParams() {
8383

8484
Message message = A2A.createUserTextMessage(text, null, null);
8585

86-
assertEquals(Message.Role.USER, message.getRole());
87-
assertNull(message.getContextId());
88-
assertNull(message.getTaskId());
89-
assertEquals(1, message.getParts().size());
90-
assertEquals(text, ((TextPart) message.getParts().get(0)).getText());
86+
assertEquals(Message.Role.USER, message.role());
87+
assertNull(message.contextId());
88+
assertNull(message.taskId());
89+
assertEquals(1, message.parts().size());
90+
assertEquals(text, ((TextPart) message.parts().get(0)).text());
9191
}
9292

9393
@Test
@@ -98,12 +98,12 @@ public void testCreateAgentTextMessage() {
9898

9999
Message message = A2A.createAgentTextMessage(text, contextId, taskId);
100100

101-
assertEquals(Message.Role.AGENT, message.getRole());
102-
assertEquals(contextId, message.getContextId());
103-
assertEquals(taskId, message.getTaskId());
104-
assertEquals(1, message.getParts().size());
105-
assertEquals(text, ((TextPart) message.getParts().get(0)).getText());
106-
assertNotNull(message.getMessageId());
101+
assertEquals(Message.Role.AGENT, message.role());
102+
assertEquals(contextId, message.contextId());
103+
assertEquals(taskId, message.taskId());
104+
assertEquals(1, message.parts().size());
105+
assertEquals(text, ((TextPart) message.parts().get(0)).text());
106+
assertNotNull(message.messageId());
107107
}
108108

109109
@Test
@@ -117,12 +117,12 @@ public void testCreateAgentPartsMessage() {
117117

118118
Message message = A2A.createAgentPartsMessage(parts, contextId, taskId);
119119

120-
assertEquals(Message.Role.AGENT, message.getRole());
121-
assertEquals(contextId, message.getContextId());
122-
assertEquals(taskId, message.getTaskId());
123-
assertEquals(2, message.getParts().size());
124-
assertEquals("Part 1", ((TextPart) message.getParts().get(0)).getText());
125-
assertEquals("Part 2", ((TextPart) message.getParts().get(1)).getText());
120+
assertEquals(Message.Role.AGENT, message.role());
121+
assertEquals(contextId, message.contextId());
122+
assertEquals(taskId, message.taskId());
123+
assertEquals(2, message.parts().size());
124+
assertEquals("Part 1", ((TextPart) message.parts().get(0)).text());
125+
assertEquals("Part 2", ((TextPart) message.parts().get(1)).text());
126126
}
127127

128128
@Test

client/transport/jsonrpc/src/test/java/io/a2a/client/transport/jsonrpc/JSONRPCTransportStreamingTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@ public void testSendStreamingMessageParams() {
7474
assertNotNull(params);
7575
assertEquals(message, params.message());
7676
assertEquals(configuration, params.configuration());
77-
assertEquals(Message.Role.USER, params.message().getRole());
78-
assertEquals("test message", ((TextPart) params.message().getParts().get(0)).getText());
77+
assertEquals(Message.Role.USER, params.message().role());
78+
assertEquals("test message", ((TextPart) params.message().parts().get(0)).text());
7979
}
8080

8181
@Test
@@ -159,16 +159,16 @@ public void testA2AClientResubscribeToTask() throws Exception {
159159
assertNotNull(eventKind);
160160
assertInstanceOf(Task.class, eventKind);
161161
Task task = (Task) eventKind;
162-
assertEquals("2", task.getId());
163-
assertEquals("context-1234", task.getContextId());
164-
assertEquals(TaskState.COMPLETED, task.getStatus().state());
165-
List<Artifact> artifacts = task.getArtifacts();
162+
assertEquals("2", task.id());
163+
assertEquals("context-1234", task.contextId());
164+
assertEquals(TaskState.COMPLETED, task.status().state());
165+
List<Artifact> artifacts = task.artifacts();
166166
assertEquals(1, artifacts.size());
167167
Artifact artifact = artifacts.get(0);
168168
assertEquals("artifact-1", artifact.artifactId());
169169
assertEquals("joke", artifact.name());
170170
Part<?> part = artifact.parts().get(0);
171171
assertEquals(Part.Kind.TEXT, part.getKind());
172-
assertEquals("Why did the chicken cross the road? To get to the other side!", ((TextPart) part).getText());
172+
assertEquals("Why did the chicken cross the road? To get to the other side!", ((TextPart) part).text());
173173
}
174174
}

0 commit comments

Comments
 (0)