|
1 | 1 | package org.wildfly.extras.a2a.server.apps.jsonrpc; |
2 | 2 |
|
3 | | -import static io.a2a.server.ServerCallContext.TRANSPORT_KEY; |
4 | | -import static io.a2a.transport.jsonrpc.context.JSONRPCContextKeys.HEADERS_KEY; |
5 | | -import static io.a2a.transport.jsonrpc.context.JSONRPCContextKeys.TENANT_KEY; |
| 3 | +import static org.a2aproject.sdk.server.ServerCallContext.TRANSPORT_KEY; |
| 4 | +import static org.a2aproject.sdk.transport.jsonrpc.context.JSONRPCContextKeys.HEADERS_KEY; |
| 5 | +import static org.a2aproject.sdk.transport.jsonrpc.context.JSONRPCContextKeys.TENANT_KEY; |
6 | 6 |
|
7 | 7 | import java.io.IOException; |
8 | 8 | import java.io.PrintWriter; |
|
36 | 36 | import jakarta.ws.rs.core.SecurityContext; |
37 | 37 |
|
38 | 38 | import com.google.gson.JsonSyntaxException; |
39 | | -import io.a2a.common.A2AHeaders; |
40 | | -import io.a2a.grpc.utils.JSONRPCUtils; |
41 | | -import io.a2a.grpc.utils.ProtoUtils; |
42 | | -import io.a2a.jsonrpc.common.json.IdJsonMappingException; |
43 | | -import io.a2a.jsonrpc.common.json.InvalidParamsJsonMappingException; |
44 | | -import io.a2a.jsonrpc.common.json.JsonMappingException; |
45 | | -import io.a2a.jsonrpc.common.json.JsonProcessingException; |
46 | | -import io.a2a.jsonrpc.common.json.MethodNotFoundJsonMappingException; |
47 | | -import io.a2a.jsonrpc.common.wrappers.A2AErrorResponse; |
48 | | -import io.a2a.jsonrpc.common.wrappers.A2ARequest; |
49 | | -import io.a2a.jsonrpc.common.wrappers.A2AResponse; |
50 | | -import io.a2a.jsonrpc.common.wrappers.CancelTaskRequest; |
51 | | -import io.a2a.jsonrpc.common.wrappers.CreateTaskPushNotificationConfigRequest; |
52 | | -import io.a2a.jsonrpc.common.wrappers.DeleteTaskPushNotificationConfigRequest; |
53 | | -import io.a2a.jsonrpc.common.wrappers.GetExtendedAgentCardRequest; |
54 | | -import io.a2a.jsonrpc.common.wrappers.GetTaskPushNotificationConfigRequest; |
55 | | -import io.a2a.jsonrpc.common.wrappers.GetTaskRequest; |
56 | | -import io.a2a.jsonrpc.common.wrappers.ListTaskPushNotificationConfigsRequest; |
57 | | -import io.a2a.jsonrpc.common.wrappers.ListTasksRequest; |
58 | | -import io.a2a.jsonrpc.common.wrappers.NonStreamingJSONRPCRequest; |
59 | | -import io.a2a.jsonrpc.common.wrappers.SendMessageRequest; |
60 | | -import io.a2a.jsonrpc.common.wrappers.SendStreamingMessageRequest; |
61 | | -import io.a2a.jsonrpc.common.wrappers.StreamingJSONRPCRequest; |
62 | | -import io.a2a.jsonrpc.common.wrappers.SubscribeToTaskRequest; |
63 | | -import io.a2a.server.ExtendedAgentCard; |
64 | | -import io.a2a.server.ServerCallContext; |
65 | | -import io.a2a.server.auth.UnauthenticatedUser; |
66 | | -import io.a2a.server.auth.User; |
67 | | -import io.a2a.server.extensions.A2AExtensions; |
68 | | -import io.a2a.server.util.async.Internal; |
69 | | -import io.a2a.server.util.sse.SseFormatter; |
70 | | -import io.a2a.spec.A2AError; |
71 | | -import io.a2a.spec.AgentCard; |
72 | | -import io.a2a.spec.InternalError; |
73 | | -import io.a2a.spec.InvalidParamsError; |
74 | | -import io.a2a.spec.InvalidRequestError; |
75 | | -import io.a2a.spec.JSONParseError; |
76 | | -import io.a2a.spec.MethodNotFoundError; |
77 | | -import io.a2a.spec.TransportProtocol; |
78 | | -import io.a2a.spec.UnsupportedOperationError; |
79 | | -import io.a2a.transport.jsonrpc.handler.JSONRPCHandler; |
| 39 | +import org.a2aproject.sdk.common.A2AHeaders; |
| 40 | +import org.a2aproject.sdk.grpc.utils.JSONRPCUtils; |
| 41 | +import org.a2aproject.sdk.grpc.utils.ProtoUtils; |
| 42 | +import org.a2aproject.sdk.jsonrpc.common.json.IdJsonMappingException; |
| 43 | +import org.a2aproject.sdk.jsonrpc.common.json.InvalidParamsJsonMappingException; |
| 44 | +import org.a2aproject.sdk.jsonrpc.common.json.JsonMappingException; |
| 45 | +import org.a2aproject.sdk.jsonrpc.common.json.JsonProcessingException; |
| 46 | +import org.a2aproject.sdk.jsonrpc.common.json.MethodNotFoundJsonMappingException; |
| 47 | +import org.a2aproject.sdk.jsonrpc.common.wrappers.A2AErrorResponse; |
| 48 | +import org.a2aproject.sdk.jsonrpc.common.wrappers.A2ARequest; |
| 49 | +import org.a2aproject.sdk.jsonrpc.common.wrappers.A2AResponse; |
| 50 | +import org.a2aproject.sdk.jsonrpc.common.wrappers.CancelTaskRequest; |
| 51 | +import org.a2aproject.sdk.jsonrpc.common.wrappers.CreateTaskPushNotificationConfigRequest; |
| 52 | +import org.a2aproject.sdk.jsonrpc.common.wrappers.DeleteTaskPushNotificationConfigRequest; |
| 53 | +import org.a2aproject.sdk.jsonrpc.common.wrappers.GetExtendedAgentCardRequest; |
| 54 | +import org.a2aproject.sdk.jsonrpc.common.wrappers.GetTaskPushNotificationConfigRequest; |
| 55 | +import org.a2aproject.sdk.jsonrpc.common.wrappers.GetTaskRequest; |
| 56 | +import org.a2aproject.sdk.jsonrpc.common.wrappers.ListTaskPushNotificationConfigsRequest; |
| 57 | +import org.a2aproject.sdk.jsonrpc.common.wrappers.ListTasksRequest; |
| 58 | +import org.a2aproject.sdk.jsonrpc.common.wrappers.NonStreamingJSONRPCRequest; |
| 59 | +import org.a2aproject.sdk.jsonrpc.common.wrappers.SendMessageRequest; |
| 60 | +import org.a2aproject.sdk.jsonrpc.common.wrappers.SendStreamingMessageRequest; |
| 61 | +import org.a2aproject.sdk.jsonrpc.common.wrappers.StreamingJSONRPCRequest; |
| 62 | +import org.a2aproject.sdk.jsonrpc.common.wrappers.SubscribeToTaskRequest; |
| 63 | +import org.a2aproject.sdk.server.ExtendedAgentCard; |
| 64 | +import org.a2aproject.sdk.server.ServerCallContext; |
| 65 | +import org.a2aproject.sdk.server.auth.UnauthenticatedUser; |
| 66 | +import org.a2aproject.sdk.server.auth.User; |
| 67 | +import org.a2aproject.sdk.server.extensions.A2AExtensions; |
| 68 | +import org.a2aproject.sdk.server.util.async.Internal; |
| 69 | +import org.a2aproject.sdk.server.util.sse.SseFormatter; |
| 70 | +import org.a2aproject.sdk.spec.A2AError; |
| 71 | +import org.a2aproject.sdk.spec.AgentCard; |
| 72 | +import org.a2aproject.sdk.spec.InternalError; |
| 73 | +import org.a2aproject.sdk.spec.InvalidParamsError; |
| 74 | +import org.a2aproject.sdk.spec.InvalidRequestError; |
| 75 | +import org.a2aproject.sdk.spec.JSONParseError; |
| 76 | +import org.a2aproject.sdk.spec.MethodNotFoundError; |
| 77 | +import org.a2aproject.sdk.spec.TransportProtocol; |
| 78 | +import org.a2aproject.sdk.spec.UnsupportedOperationError; |
| 79 | +import org.a2aproject.sdk.transport.jsonrpc.handler.JSONRPCHandler; |
80 | 80 | import org.slf4j.Logger; |
81 | 81 | import org.slf4j.LoggerFactory; |
82 | 82 |
|
@@ -151,7 +151,7 @@ public Response handleNonStreamingRequests( |
151 | 151 | // Serialize response using protobuf conversion |
152 | 152 | String serialized = serializeResponse(response); |
153 | 153 |
|
154 | | - String contentType = io.a2a.common.MediaType.APPLICATION_JSON; |
| 154 | + String contentType = org.a2aproject.sdk.common.MediaType.APPLICATION_JSON; |
155 | 155 |
|
156 | 156 | // Return Response with explicit content-type header |
157 | 157 | return Response.status(Response.Status.OK) |
@@ -223,6 +223,9 @@ public void handleStreamingRequests( |
223 | 223 | } catch (JsonProcessingException e) { |
224 | 224 | LOGGER.warn("JSON processing error in streaming request: {}", e.getMessage()); |
225 | 225 | sendErrorSSE(response, null, new JSONParseError()); |
| 226 | + } catch (A2AError e) { |
| 227 | + LOGGER.debug("A2AError in streaming request: {}", e.getMessage()); |
| 228 | + sendErrorSSE(response, request != null ? request.getId() : null, e); |
226 | 229 | } catch (Throwable e) { |
227 | 230 | LOGGER.error("Unexpected error processing streaming request: {}", e.getMessage(), e); |
228 | 231 | sendErrorSSE(response, null, new InternalError(e.getMessage())); |
@@ -522,26 +525,26 @@ private static String serializeResponse(A2AResponse<?> response) { |
522 | 525 | * Converts A2A response objects to their protobuf equivalents. |
523 | 526 | */ |
524 | 527 | private static com.google.protobuf.MessageOrBuilder convertToProto(A2AResponse<?> response) { |
525 | | - if (response instanceof io.a2a.jsonrpc.common.wrappers.GetTaskResponse r) { |
| 528 | + if (response instanceof org.a2aproject.sdk.jsonrpc.common.wrappers.GetTaskResponse r) { |
526 | 529 | return ProtoUtils.ToProto.task(r.getResult()); |
527 | | - } else if (response instanceof io.a2a.jsonrpc.common.wrappers.CancelTaskResponse r) { |
| 530 | + } else if (response instanceof org.a2aproject.sdk.jsonrpc.common.wrappers.CancelTaskResponse r) { |
528 | 531 | return ProtoUtils.ToProto.task(r.getResult()); |
529 | | - } else if (response instanceof io.a2a.jsonrpc.common.wrappers.SendMessageResponse r) { |
| 532 | + } else if (response instanceof org.a2aproject.sdk.jsonrpc.common.wrappers.SendMessageResponse r) { |
530 | 533 | return ProtoUtils.ToProto.taskOrMessage(r.getResult()); |
531 | | - } else if (response instanceof io.a2a.jsonrpc.common.wrappers.ListTasksResponse r) { |
| 534 | + } else if (response instanceof org.a2aproject.sdk.jsonrpc.common.wrappers.ListTasksResponse r) { |
532 | 535 | return ProtoUtils.ToProto.listTasksResult(r.getResult()); |
533 | | - } else if (response instanceof io.a2a.jsonrpc.common.wrappers.CreateTaskPushNotificationConfigResponse r) { |
| 536 | + } else if (response instanceof org.a2aproject.sdk.jsonrpc.common.wrappers.CreateTaskPushNotificationConfigResponse r) { |
534 | 537 | return ProtoUtils.ToProto.createTaskPushNotificationConfigResponse(r.getResult()); |
535 | | - } else if (response instanceof io.a2a.jsonrpc.common.wrappers.GetTaskPushNotificationConfigResponse r) { |
| 538 | + } else if (response instanceof org.a2aproject.sdk.jsonrpc.common.wrappers.GetTaskPushNotificationConfigResponse r) { |
536 | 539 | return ProtoUtils.ToProto.getTaskPushNotificationConfigResponse(r.getResult()); |
537 | | - } else if (response instanceof io.a2a.jsonrpc.common.wrappers.ListTaskPushNotificationConfigsResponse r) { |
| 540 | + } else if (response instanceof org.a2aproject.sdk.jsonrpc.common.wrappers.ListTaskPushNotificationConfigsResponse r) { |
538 | 541 | return ProtoUtils.ToProto.listTaskPushNotificationConfigsResponse(r.getResult()); |
539 | | - } else if (response instanceof io.a2a.jsonrpc.common.wrappers.DeleteTaskPushNotificationConfigResponse) { |
| 542 | + } else if (response instanceof org.a2aproject.sdk.jsonrpc.common.wrappers.DeleteTaskPushNotificationConfigResponse) { |
540 | 543 | // DeleteTaskPushNotificationConfig has no result body, just return empty message |
541 | 544 | return com.google.protobuf.Empty.getDefaultInstance(); |
542 | | - } else if (response instanceof io.a2a.jsonrpc.common.wrappers.GetExtendedAgentCardResponse r) { |
| 545 | + } else if (response instanceof org.a2aproject.sdk.jsonrpc.common.wrappers.GetExtendedAgentCardResponse r) { |
543 | 546 | return ProtoUtils.ToProto.getExtendedCardResponse(r.getResult()); |
544 | | - } else if (response instanceof io.a2a.jsonrpc.common.wrappers.SendStreamingMessageResponse r) { |
| 547 | + } else if (response instanceof org.a2aproject.sdk.jsonrpc.common.wrappers.SendStreamingMessageResponse r) { |
545 | 548 | return ProtoUtils.ToProto.taskOrMessageStream(r.getResult()); |
546 | 549 | } else { |
547 | 550 | throw new IllegalArgumentException("Unknown response type: " + response.getClass().getName()); |
|
0 commit comments