Skip to content

Commit fbf600b

Browse files
committed
fix: Ensure onSetTaskPushNotificationConfig returns the updated pushNotificationConfig
1 parent c55e828 commit fbf600b

File tree

5 files changed

+31
-16
lines changed

5 files changed

+31
-16
lines changed

server-common/src/main/java/io/a2a/server/requesthandlers/DefaultRequestHandler.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -273,9 +273,8 @@ public TaskPushNotificationConfig onSetTaskPushNotificationConfig(
273273
throw new TaskNotFoundError();
274274
}
275275

276-
pushConfigStore.setInfo(params.taskId(), params.pushNotificationConfig());
277-
278-
return params;
276+
PushNotificationConfig pushNotificationConfig = pushConfigStore.setInfo(params.taskId(), params.pushNotificationConfig());
277+
return new TaskPushNotificationConfig(params.taskId(), pushNotificationConfig);
279278
}
280279

281280
@Override

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public InMemoryPushNotificationConfigStore() {
2727
}
2828

2929
@Override
30-
public void setInfo(String taskId, PushNotificationConfig notificationConfig) {
30+
public PushNotificationConfig setInfo(String taskId, PushNotificationConfig notificationConfig) {
3131
List<PushNotificationConfig> notificationConfigList = pushNotificationInfos.getOrDefault(taskId, new ArrayList<>());
3232
PushNotificationConfig.Builder builder = new PushNotificationConfig.Builder(notificationConfig);
3333
if (notificationConfig.id() == null) {
@@ -45,6 +45,7 @@ public void setInfo(String taskId, PushNotificationConfig notificationConfig) {
4545
}
4646
notificationConfigList.add(notificationConfig);
4747
pushNotificationInfos.put(taskId, notificationConfigList);
48+
return notificationConfig;
4849
}
4950

5051
@Override

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@ public interface PushNotificationConfigStore {
1313
* Sets or updates the push notification configuration for a task.
1414
* @param taskId the task ID
1515
* @param notificationConfig the push notification configuration
16+
* @return the potentially updated push notification configuration
1617
*/
17-
void setInfo(String taskId, PushNotificationConfig notificationConfig);
18+
PushNotificationConfig setInfo(String taskId, PushNotificationConfig notificationConfig);
1819

1920
/**
2021
* Retrieves the push notification configuration for a task.

spec-grpc/src/main/java/io/a2a/grpc/utils/ProtoUtils.java

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -687,24 +687,38 @@ public static MessageSendParams messageSendParams(io.a2a.grpc.SendMessageRequest
687687
return builder.build();
688688
}
689689

690-
public static TaskPushNotificationConfig taskPushNotificationConfig(io.a2a.grpc.CreateTaskPushNotificationConfigRequest request) {
691-
return taskPushNotificationConfig(request.getConfig());
690+
public static TaskPushNotificationConfig taskPushNotificationConfig(io.a2a.grpc.CreateTaskPushNotificationConfigRequestOrBuilder request) {
691+
return taskPushNotificationConfig(request.getConfig(), true);
692692
}
693693

694-
public static TaskPushNotificationConfig taskPushNotificationConfig(io.a2a.grpc.TaskPushNotificationConfig config) {
694+
public static TaskPushNotificationConfig taskPushNotificationConfig(io.a2a.grpc.TaskPushNotificationConfigOrBuilder config) {
695+
return taskPushNotificationConfig(config, false);
696+
}
697+
698+
private static TaskPushNotificationConfig taskPushNotificationConfig(io.a2a.grpc.TaskPushNotificationConfigOrBuilder config, boolean create) {
695699
String name = config.getName(); // "tasks/{id}/pushNotificationConfigs/{push_id}"
696700
String[] parts = name.split("/");
697-
if (parts.length < 4) {
698-
throw new IllegalArgumentException("Invalid name format for TaskPushNotificationConfig: " + name);
701+
String configId = "";
702+
if (create) {
703+
if (parts.length < 3) {
704+
throw new IllegalArgumentException("Invalid name format for TaskPushNotificationConfig: " + name);
705+
}
706+
if (parts.length == 4) {
707+
configId = parts[3];
708+
}
709+
} else {
710+
if (parts.length < 4) {
711+
throw new IllegalArgumentException("Invalid name format for TaskPushNotificationConfig: " + name);
712+
}
713+
configId = parts[3];
699714
}
700715
String taskId = parts[1];
701-
String configId = parts[3];
702716
PushNotificationConfig pnc = pushNotification(config.getPushNotificationConfig(), configId);
703717
return new TaskPushNotificationConfig(taskId, pnc);
704718
}
705719

706720
public static GetTaskPushNotificationConfigParams getTaskPushNotificationConfigParams(io.a2a.grpc.GetTaskPushNotificationConfigRequest request) {
707-
String name = request.getName(); // "tasks/{id}/pushNotificationConfigs/{push_id}" or /tasks/{id}
721+
String name = request.getName(); // "tasks/{id}/pushNotificationConfigs/{push_id}"
708722
String[] parts = name.split("/");
709723
String taskId = parts[1];
710724
String configId;
@@ -775,9 +789,6 @@ private static PushNotificationConfig pushNotification(io.a2a.grpc.PushNotificat
775789
}
776790

777791
private static PushNotificationConfig pushNotification(io.a2a.grpc.PushNotificationConfig pushNotification) {
778-
/*if (pushNotification == null) {
779-
return null;
780-
}*/
781792
return pushNotification(pushNotification, pushNotification.getId());
782793
}
783794

transport/jsonrpc/src/test/java/io/a2a/transport/jsonrpc/handler/JSONRPCHandlerTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -557,7 +557,10 @@ public void testSetPushNotificationConfigSuccess() {
557557
MINIMAL_TASK.getId(), new PushNotificationConfig.Builder().url("http://example.com").build());
558558
SetTaskPushNotificationConfigRequest request = new SetTaskPushNotificationConfigRequest("1", taskPushConfig);
559559
SetTaskPushNotificationConfigResponse response = handler.setPushNotificationConfig(request, callContext);
560-
Assertions.assertSame(taskPushConfig, response.getResult());
560+
TaskPushNotificationConfig taskPushConfigResult =
561+
new TaskPushNotificationConfig(
562+
MINIMAL_TASK.getId(), new PushNotificationConfig.Builder().url("http://example.com").id(MINIMAL_TASK.getId()).build());
563+
Assertions.assertEquals(taskPushConfigResult, response.getResult());
561564
}
562565

563566
@Test

0 commit comments

Comments
 (0)