From 3cccfbd383e05d82b1accdc99910337d3a4cd9ee Mon Sep 17 00:00:00 2001 From: Kabir Khan Date: Mon, 4 Aug 2025 16:30:21 +0100 Subject: [PATCH 01/10] Move grpc module under transports/ --- client/pom.xml | 2 +- pom.xml | 8 ++++---- reference-grpc/pom.xml | 2 +- sdk-server-common/pom.xml | 2 +- {grpc => transport/grpc}/pom.xml | 3 ++- .../grpc}/src/main/java/io/a2a/grpc/A2A.java | 0 .../grpc}/src/main/java/io/a2a/grpc/A2AServiceGrpc.java | 0 .../src/main/java/io/a2a/grpc/APIKeySecurityScheme.java | 0 .../java/io/a2a/grpc/APIKeySecuritySchemeOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/AgentCapabilities.java | 0 .../main/java/io/a2a/grpc/AgentCapabilitiesOrBuilder.java | 0 .../grpc}/src/main/java/io/a2a/grpc/AgentCard.java | 0 .../src/main/java/io/a2a/grpc/AgentCardOrBuilder.java | 0 .../grpc}/src/main/java/io/a2a/grpc/AgentExtension.java | 0 .../main/java/io/a2a/grpc/AgentExtensionOrBuilder.java | 0 .../grpc}/src/main/java/io/a2a/grpc/AgentInterface.java | 0 .../main/java/io/a2a/grpc/AgentInterfaceOrBuilder.java | 0 .../grpc}/src/main/java/io/a2a/grpc/AgentProvider.java | 0 .../src/main/java/io/a2a/grpc/AgentProviderOrBuilder.java | 0 .../grpc}/src/main/java/io/a2a/grpc/AgentSkill.java | 0 .../src/main/java/io/a2a/grpc/AgentSkillOrBuilder.java | 0 .../grpc}/src/main/java/io/a2a/grpc/Artifact.java | 0 .../src/main/java/io/a2a/grpc/ArtifactOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/AuthenticationInfo.java | 0 .../java/io/a2a/grpc/AuthenticationInfoOrBuilder.java | 0 .../main/java/io/a2a/grpc/AuthorizationCodeOAuthFlow.java | 0 .../io/a2a/grpc/AuthorizationCodeOAuthFlowOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/CancelTaskRequest.java | 0 .../main/java/io/a2a/grpc/CancelTaskRequestOrBuilder.java | 0 .../main/java/io/a2a/grpc/ClientCredentialsOAuthFlow.java | 0 .../io/a2a/grpc/ClientCredentialsOAuthFlowOrBuilder.java | 0 .../a2a/grpc/CreateTaskPushNotificationConfigRequest.java | 0 .../CreateTaskPushNotificationConfigRequestOrBuilder.java | 0 .../grpc}/src/main/java/io/a2a/grpc/DataPart.java | 0 .../src/main/java/io/a2a/grpc/DataPartOrBuilder.java | 0 .../a2a/grpc/DeleteTaskPushNotificationConfigRequest.java | 0 .../DeleteTaskPushNotificationConfigRequestOrBuilder.java | 0 .../grpc}/src/main/java/io/a2a/grpc/FilePart.java | 0 .../src/main/java/io/a2a/grpc/FilePartOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/GetAgentCardRequest.java | 0 .../java/io/a2a/grpc/GetAgentCardRequestOrBuilder.java | 0 .../io/a2a/grpc/GetTaskPushNotificationConfigRequest.java | 0 .../GetTaskPushNotificationConfigRequestOrBuilder.java | 0 .../grpc}/src/main/java/io/a2a/grpc/GetTaskRequest.java | 0 .../main/java/io/a2a/grpc/GetTaskRequestOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/HTTPAuthSecurityScheme.java | 0 .../java/io/a2a/grpc/HTTPAuthSecuritySchemeOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/ImplicitOAuthFlow.java | 0 .../main/java/io/a2a/grpc/ImplicitOAuthFlowOrBuilder.java | 0 .../a2a/grpc/ListTaskPushNotificationConfigRequest.java | 0 .../ListTaskPushNotificationConfigRequestOrBuilder.java | 0 .../a2a/grpc/ListTaskPushNotificationConfigResponse.java | 0 .../ListTaskPushNotificationConfigResponseOrBuilder.java | 0 .../grpc}/src/main/java/io/a2a/grpc/Message.java | 0 .../grpc}/src/main/java/io/a2a/grpc/MessageOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/OAuth2SecurityScheme.java | 0 .../java/io/a2a/grpc/OAuth2SecuritySchemeOrBuilder.java | 0 .../grpc}/src/main/java/io/a2a/grpc/OAuthFlows.java | 0 .../src/main/java/io/a2a/grpc/OAuthFlowsOrBuilder.java | 0 .../java/io/a2a/grpc/OpenIdConnectSecurityScheme.java | 0 .../io/a2a/grpc/OpenIdConnectSecuritySchemeOrBuilder.java | 0 .../grpc}/src/main/java/io/a2a/grpc/Part.java | 0 .../grpc}/src/main/java/io/a2a/grpc/PartOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/PasswordOAuthFlow.java | 0 .../main/java/io/a2a/grpc/PasswordOAuthFlowOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/PushNotificationConfig.java | 0 .../java/io/a2a/grpc/PushNotificationConfigOrBuilder.java | 0 .../grpc}/src/main/java/io/a2a/grpc/Role.java | 0 .../grpc}/src/main/java/io/a2a/grpc/Security.java | 0 .../src/main/java/io/a2a/grpc/SecurityOrBuilder.java | 0 .../grpc}/src/main/java/io/a2a/grpc/SecurityScheme.java | 0 .../main/java/io/a2a/grpc/SecuritySchemeOrBuilder.java | 0 .../main/java/io/a2a/grpc/SendMessageConfiguration.java | 0 .../io/a2a/grpc/SendMessageConfigurationOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/SendMessageRequest.java | 0 .../java/io/a2a/grpc/SendMessageRequestOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/SendMessageResponse.java | 0 .../java/io/a2a/grpc/SendMessageResponseOrBuilder.java | 0 .../grpc}/src/main/java/io/a2a/grpc/StreamResponse.java | 0 .../main/java/io/a2a/grpc/StreamResponseOrBuilder.java | 0 .../grpc}/src/main/java/io/a2a/grpc/StringList.java | 0 .../src/main/java/io/a2a/grpc/StringListOrBuilder.java | 0 .../grpc}/src/main/java/io/a2a/grpc/Task.java | 0 .../main/java/io/a2a/grpc/TaskArtifactUpdateEvent.java | 0 .../io/a2a/grpc/TaskArtifactUpdateEventOrBuilder.java | 0 .../grpc}/src/main/java/io/a2a/grpc/TaskOrBuilder.java | 0 .../main/java/io/a2a/grpc/TaskPushNotificationConfig.java | 0 .../io/a2a/grpc/TaskPushNotificationConfigOrBuilder.java | 0 .../grpc}/src/main/java/io/a2a/grpc/TaskState.java | 0 .../grpc}/src/main/java/io/a2a/grpc/TaskStatus.java | 0 .../src/main/java/io/a2a/grpc/TaskStatusOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/TaskStatusUpdateEvent.java | 0 .../java/io/a2a/grpc/TaskStatusUpdateEventOrBuilder.java | 0 .../main/java/io/a2a/grpc/TaskSubscriptionRequest.java | 0 .../io/a2a/grpc/TaskSubscriptionRequestOrBuilder.java | 0 .../grpc}/src/main/java/io/a2a/grpc/utils/ProtoUtils.java | 0 .../grpc}/src/main/resources/META-INF/beans.xml | 0 97 files changed, 9 insertions(+), 8 deletions(-) rename {grpc => transport/grpc}/pom.xml (92%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/A2A.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/A2AServiceGrpc.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/APIKeySecurityScheme.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/APIKeySecuritySchemeOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/AgentCapabilities.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/AgentCapabilitiesOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/AgentCard.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/AgentCardOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/AgentExtension.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/AgentExtensionOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/AgentInterface.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/AgentInterfaceOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/AgentProvider.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/AgentProviderOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/AgentSkill.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/AgentSkillOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/Artifact.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/ArtifactOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/AuthenticationInfo.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/AuthenticationInfoOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/AuthorizationCodeOAuthFlow.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/AuthorizationCodeOAuthFlowOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/CancelTaskRequest.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/CancelTaskRequestOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/ClientCredentialsOAuthFlow.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/ClientCredentialsOAuthFlowOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/CreateTaskPushNotificationConfigRequest.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/CreateTaskPushNotificationConfigRequestOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/DataPart.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/DataPartOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/DeleteTaskPushNotificationConfigRequest.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/DeleteTaskPushNotificationConfigRequestOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/FilePart.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/FilePartOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/GetAgentCardRequest.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/GetAgentCardRequestOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/GetTaskPushNotificationConfigRequest.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/GetTaskPushNotificationConfigRequestOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/GetTaskRequest.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/GetTaskRequestOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/HTTPAuthSecurityScheme.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/HTTPAuthSecuritySchemeOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/ImplicitOAuthFlow.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/ImplicitOAuthFlowOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigRequest.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigRequestOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigResponse.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigResponseOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/Message.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/MessageOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/OAuth2SecurityScheme.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/OAuth2SecuritySchemeOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/OAuthFlows.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/OAuthFlowsOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/OpenIdConnectSecurityScheme.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/OpenIdConnectSecuritySchemeOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/Part.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/PartOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/PasswordOAuthFlow.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/PasswordOAuthFlowOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/PushNotificationConfig.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/PushNotificationConfigOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/Role.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/Security.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/SecurityOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/SecurityScheme.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/SecuritySchemeOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/SendMessageConfiguration.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/SendMessageConfigurationOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/SendMessageRequest.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/SendMessageRequestOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/SendMessageResponse.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/SendMessageResponseOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/StreamResponse.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/StreamResponseOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/StringList.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/StringListOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/Task.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/TaskArtifactUpdateEvent.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/TaskArtifactUpdateEventOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/TaskOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/TaskPushNotificationConfig.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/TaskPushNotificationConfigOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/TaskState.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/TaskStatus.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/TaskStatusOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/TaskStatusUpdateEvent.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/TaskStatusUpdateEventOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/TaskSubscriptionRequest.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/TaskSubscriptionRequestOrBuilder.java (100%) rename {grpc => transport/grpc}/src/main/java/io/a2a/grpc/utils/ProtoUtils.java (100%) rename {grpc => transport/grpc}/src/main/resources/META-INF/beans.xml (100%) diff --git a/client/pom.xml b/client/pom.xml index d593b54ef..62c5c48a8 100644 --- a/client/pom.xml +++ b/client/pom.xml @@ -24,7 +24,7 @@ ${project.groupId} - a2a-java-sdk-grpc + a2a-java-sdk-transport-grpc ${project.version} diff --git a/pom.xml b/pom.xml index 95898110e..edc6c10fb 100644 --- a/pom.xml +++ b/pom.xml @@ -276,16 +276,16 @@ - sdk-server-common + client common - grpc + examples/helloworld + sdk-server-common spec - client reference-grpc reference-impl tck - examples/helloworld tests/server-common + transport/grpc diff --git a/reference-grpc/pom.xml b/reference-grpc/pom.xml index d80dae49f..10e584fb7 100644 --- a/reference-grpc/pom.xml +++ b/reference-grpc/pom.xml @@ -17,7 +17,7 @@ ${project.groupId} - a2a-java-sdk-grpc + a2a-java-sdk-transport-grpc ${project.version} diff --git a/sdk-server-common/pom.xml b/sdk-server-common/pom.xml index a0ed10cca..e677f296d 100644 --- a/sdk-server-common/pom.xml +++ b/sdk-server-common/pom.xml @@ -29,7 +29,7 @@ ${project.groupId} - a2a-java-sdk-grpc + a2a-java-sdk-transport-grpc ${project.version} diff --git a/grpc/pom.xml b/transport/grpc/pom.xml similarity index 92% rename from grpc/pom.xml rename to transport/grpc/pom.xml index a8e7d634e..cf6268dc0 100644 --- a/grpc/pom.xml +++ b/transport/grpc/pom.xml @@ -8,8 +8,9 @@ io.github.a2asdk a2a-java-sdk-parent 0.2.6.Beta1-SNAPSHOT + ../../pom.xml - a2a-java-sdk-grpc + a2a-java-sdk-transport-grpc jar diff --git a/grpc/src/main/java/io/a2a/grpc/A2A.java b/transport/grpc/src/main/java/io/a2a/grpc/A2A.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/A2A.java rename to transport/grpc/src/main/java/io/a2a/grpc/A2A.java diff --git a/grpc/src/main/java/io/a2a/grpc/A2AServiceGrpc.java b/transport/grpc/src/main/java/io/a2a/grpc/A2AServiceGrpc.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/A2AServiceGrpc.java rename to transport/grpc/src/main/java/io/a2a/grpc/A2AServiceGrpc.java diff --git a/grpc/src/main/java/io/a2a/grpc/APIKeySecurityScheme.java b/transport/grpc/src/main/java/io/a2a/grpc/APIKeySecurityScheme.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/APIKeySecurityScheme.java rename to transport/grpc/src/main/java/io/a2a/grpc/APIKeySecurityScheme.java diff --git a/grpc/src/main/java/io/a2a/grpc/APIKeySecuritySchemeOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/APIKeySecuritySchemeOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/APIKeySecuritySchemeOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/APIKeySecuritySchemeOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/AgentCapabilities.java b/transport/grpc/src/main/java/io/a2a/grpc/AgentCapabilities.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/AgentCapabilities.java rename to transport/grpc/src/main/java/io/a2a/grpc/AgentCapabilities.java diff --git a/grpc/src/main/java/io/a2a/grpc/AgentCapabilitiesOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/AgentCapabilitiesOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/AgentCapabilitiesOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/AgentCapabilitiesOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/AgentCard.java b/transport/grpc/src/main/java/io/a2a/grpc/AgentCard.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/AgentCard.java rename to transport/grpc/src/main/java/io/a2a/grpc/AgentCard.java diff --git a/grpc/src/main/java/io/a2a/grpc/AgentCardOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/AgentCardOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/AgentCardOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/AgentCardOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/AgentExtension.java b/transport/grpc/src/main/java/io/a2a/grpc/AgentExtension.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/AgentExtension.java rename to transport/grpc/src/main/java/io/a2a/grpc/AgentExtension.java diff --git a/grpc/src/main/java/io/a2a/grpc/AgentExtensionOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/AgentExtensionOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/AgentExtensionOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/AgentExtensionOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/AgentInterface.java b/transport/grpc/src/main/java/io/a2a/grpc/AgentInterface.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/AgentInterface.java rename to transport/grpc/src/main/java/io/a2a/grpc/AgentInterface.java diff --git a/grpc/src/main/java/io/a2a/grpc/AgentInterfaceOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/AgentInterfaceOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/AgentInterfaceOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/AgentInterfaceOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/AgentProvider.java b/transport/grpc/src/main/java/io/a2a/grpc/AgentProvider.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/AgentProvider.java rename to transport/grpc/src/main/java/io/a2a/grpc/AgentProvider.java diff --git a/grpc/src/main/java/io/a2a/grpc/AgentProviderOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/AgentProviderOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/AgentProviderOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/AgentProviderOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/AgentSkill.java b/transport/grpc/src/main/java/io/a2a/grpc/AgentSkill.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/AgentSkill.java rename to transport/grpc/src/main/java/io/a2a/grpc/AgentSkill.java diff --git a/grpc/src/main/java/io/a2a/grpc/AgentSkillOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/AgentSkillOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/AgentSkillOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/AgentSkillOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/Artifact.java b/transport/grpc/src/main/java/io/a2a/grpc/Artifact.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/Artifact.java rename to transport/grpc/src/main/java/io/a2a/grpc/Artifact.java diff --git a/grpc/src/main/java/io/a2a/grpc/ArtifactOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/ArtifactOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/ArtifactOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/ArtifactOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/AuthenticationInfo.java b/transport/grpc/src/main/java/io/a2a/grpc/AuthenticationInfo.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/AuthenticationInfo.java rename to transport/grpc/src/main/java/io/a2a/grpc/AuthenticationInfo.java diff --git a/grpc/src/main/java/io/a2a/grpc/AuthenticationInfoOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/AuthenticationInfoOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/AuthenticationInfoOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/AuthenticationInfoOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/AuthorizationCodeOAuthFlow.java b/transport/grpc/src/main/java/io/a2a/grpc/AuthorizationCodeOAuthFlow.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/AuthorizationCodeOAuthFlow.java rename to transport/grpc/src/main/java/io/a2a/grpc/AuthorizationCodeOAuthFlow.java diff --git a/grpc/src/main/java/io/a2a/grpc/AuthorizationCodeOAuthFlowOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/AuthorizationCodeOAuthFlowOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/AuthorizationCodeOAuthFlowOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/AuthorizationCodeOAuthFlowOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/CancelTaskRequest.java b/transport/grpc/src/main/java/io/a2a/grpc/CancelTaskRequest.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/CancelTaskRequest.java rename to transport/grpc/src/main/java/io/a2a/grpc/CancelTaskRequest.java diff --git a/grpc/src/main/java/io/a2a/grpc/CancelTaskRequestOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/CancelTaskRequestOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/CancelTaskRequestOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/CancelTaskRequestOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/ClientCredentialsOAuthFlow.java b/transport/grpc/src/main/java/io/a2a/grpc/ClientCredentialsOAuthFlow.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/ClientCredentialsOAuthFlow.java rename to transport/grpc/src/main/java/io/a2a/grpc/ClientCredentialsOAuthFlow.java diff --git a/grpc/src/main/java/io/a2a/grpc/ClientCredentialsOAuthFlowOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/ClientCredentialsOAuthFlowOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/ClientCredentialsOAuthFlowOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/ClientCredentialsOAuthFlowOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/CreateTaskPushNotificationConfigRequest.java b/transport/grpc/src/main/java/io/a2a/grpc/CreateTaskPushNotificationConfigRequest.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/CreateTaskPushNotificationConfigRequest.java rename to transport/grpc/src/main/java/io/a2a/grpc/CreateTaskPushNotificationConfigRequest.java diff --git a/grpc/src/main/java/io/a2a/grpc/CreateTaskPushNotificationConfigRequestOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/CreateTaskPushNotificationConfigRequestOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/CreateTaskPushNotificationConfigRequestOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/CreateTaskPushNotificationConfigRequestOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/DataPart.java b/transport/grpc/src/main/java/io/a2a/grpc/DataPart.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/DataPart.java rename to transport/grpc/src/main/java/io/a2a/grpc/DataPart.java diff --git a/grpc/src/main/java/io/a2a/grpc/DataPartOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/DataPartOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/DataPartOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/DataPartOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/DeleteTaskPushNotificationConfigRequest.java b/transport/grpc/src/main/java/io/a2a/grpc/DeleteTaskPushNotificationConfigRequest.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/DeleteTaskPushNotificationConfigRequest.java rename to transport/grpc/src/main/java/io/a2a/grpc/DeleteTaskPushNotificationConfigRequest.java diff --git a/grpc/src/main/java/io/a2a/grpc/DeleteTaskPushNotificationConfigRequestOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/DeleteTaskPushNotificationConfigRequestOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/DeleteTaskPushNotificationConfigRequestOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/DeleteTaskPushNotificationConfigRequestOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/FilePart.java b/transport/grpc/src/main/java/io/a2a/grpc/FilePart.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/FilePart.java rename to transport/grpc/src/main/java/io/a2a/grpc/FilePart.java diff --git a/grpc/src/main/java/io/a2a/grpc/FilePartOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/FilePartOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/FilePartOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/FilePartOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/GetAgentCardRequest.java b/transport/grpc/src/main/java/io/a2a/grpc/GetAgentCardRequest.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/GetAgentCardRequest.java rename to transport/grpc/src/main/java/io/a2a/grpc/GetAgentCardRequest.java diff --git a/grpc/src/main/java/io/a2a/grpc/GetAgentCardRequestOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/GetAgentCardRequestOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/GetAgentCardRequestOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/GetAgentCardRequestOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/GetTaskPushNotificationConfigRequest.java b/transport/grpc/src/main/java/io/a2a/grpc/GetTaskPushNotificationConfigRequest.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/GetTaskPushNotificationConfigRequest.java rename to transport/grpc/src/main/java/io/a2a/grpc/GetTaskPushNotificationConfigRequest.java diff --git a/grpc/src/main/java/io/a2a/grpc/GetTaskPushNotificationConfigRequestOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/GetTaskPushNotificationConfigRequestOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/GetTaskPushNotificationConfigRequestOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/GetTaskPushNotificationConfigRequestOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/GetTaskRequest.java b/transport/grpc/src/main/java/io/a2a/grpc/GetTaskRequest.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/GetTaskRequest.java rename to transport/grpc/src/main/java/io/a2a/grpc/GetTaskRequest.java diff --git a/grpc/src/main/java/io/a2a/grpc/GetTaskRequestOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/GetTaskRequestOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/GetTaskRequestOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/GetTaskRequestOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/HTTPAuthSecurityScheme.java b/transport/grpc/src/main/java/io/a2a/grpc/HTTPAuthSecurityScheme.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/HTTPAuthSecurityScheme.java rename to transport/grpc/src/main/java/io/a2a/grpc/HTTPAuthSecurityScheme.java diff --git a/grpc/src/main/java/io/a2a/grpc/HTTPAuthSecuritySchemeOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/HTTPAuthSecuritySchemeOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/HTTPAuthSecuritySchemeOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/HTTPAuthSecuritySchemeOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/ImplicitOAuthFlow.java b/transport/grpc/src/main/java/io/a2a/grpc/ImplicitOAuthFlow.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/ImplicitOAuthFlow.java rename to transport/grpc/src/main/java/io/a2a/grpc/ImplicitOAuthFlow.java diff --git a/grpc/src/main/java/io/a2a/grpc/ImplicitOAuthFlowOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/ImplicitOAuthFlowOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/ImplicitOAuthFlowOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/ImplicitOAuthFlowOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigRequest.java b/transport/grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigRequest.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigRequest.java rename to transport/grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigRequest.java diff --git a/grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigRequestOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigRequestOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigRequestOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigRequestOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigResponse.java b/transport/grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigResponse.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigResponse.java rename to transport/grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigResponse.java diff --git a/grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigResponseOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigResponseOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigResponseOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigResponseOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/Message.java b/transport/grpc/src/main/java/io/a2a/grpc/Message.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/Message.java rename to transport/grpc/src/main/java/io/a2a/grpc/Message.java diff --git a/grpc/src/main/java/io/a2a/grpc/MessageOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/MessageOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/MessageOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/MessageOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/OAuth2SecurityScheme.java b/transport/grpc/src/main/java/io/a2a/grpc/OAuth2SecurityScheme.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/OAuth2SecurityScheme.java rename to transport/grpc/src/main/java/io/a2a/grpc/OAuth2SecurityScheme.java diff --git a/grpc/src/main/java/io/a2a/grpc/OAuth2SecuritySchemeOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/OAuth2SecuritySchemeOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/OAuth2SecuritySchemeOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/OAuth2SecuritySchemeOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/OAuthFlows.java b/transport/grpc/src/main/java/io/a2a/grpc/OAuthFlows.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/OAuthFlows.java rename to transport/grpc/src/main/java/io/a2a/grpc/OAuthFlows.java diff --git a/grpc/src/main/java/io/a2a/grpc/OAuthFlowsOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/OAuthFlowsOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/OAuthFlowsOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/OAuthFlowsOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/OpenIdConnectSecurityScheme.java b/transport/grpc/src/main/java/io/a2a/grpc/OpenIdConnectSecurityScheme.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/OpenIdConnectSecurityScheme.java rename to transport/grpc/src/main/java/io/a2a/grpc/OpenIdConnectSecurityScheme.java diff --git a/grpc/src/main/java/io/a2a/grpc/OpenIdConnectSecuritySchemeOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/OpenIdConnectSecuritySchemeOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/OpenIdConnectSecuritySchemeOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/OpenIdConnectSecuritySchemeOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/Part.java b/transport/grpc/src/main/java/io/a2a/grpc/Part.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/Part.java rename to transport/grpc/src/main/java/io/a2a/grpc/Part.java diff --git a/grpc/src/main/java/io/a2a/grpc/PartOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/PartOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/PartOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/PartOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/PasswordOAuthFlow.java b/transport/grpc/src/main/java/io/a2a/grpc/PasswordOAuthFlow.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/PasswordOAuthFlow.java rename to transport/grpc/src/main/java/io/a2a/grpc/PasswordOAuthFlow.java diff --git a/grpc/src/main/java/io/a2a/grpc/PasswordOAuthFlowOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/PasswordOAuthFlowOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/PasswordOAuthFlowOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/PasswordOAuthFlowOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/PushNotificationConfig.java b/transport/grpc/src/main/java/io/a2a/grpc/PushNotificationConfig.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/PushNotificationConfig.java rename to transport/grpc/src/main/java/io/a2a/grpc/PushNotificationConfig.java diff --git a/grpc/src/main/java/io/a2a/grpc/PushNotificationConfigOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/PushNotificationConfigOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/PushNotificationConfigOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/PushNotificationConfigOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/Role.java b/transport/grpc/src/main/java/io/a2a/grpc/Role.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/Role.java rename to transport/grpc/src/main/java/io/a2a/grpc/Role.java diff --git a/grpc/src/main/java/io/a2a/grpc/Security.java b/transport/grpc/src/main/java/io/a2a/grpc/Security.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/Security.java rename to transport/grpc/src/main/java/io/a2a/grpc/Security.java diff --git a/grpc/src/main/java/io/a2a/grpc/SecurityOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/SecurityOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/SecurityOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/SecurityOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/SecurityScheme.java b/transport/grpc/src/main/java/io/a2a/grpc/SecurityScheme.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/SecurityScheme.java rename to transport/grpc/src/main/java/io/a2a/grpc/SecurityScheme.java diff --git a/grpc/src/main/java/io/a2a/grpc/SecuritySchemeOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/SecuritySchemeOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/SecuritySchemeOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/SecuritySchemeOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/SendMessageConfiguration.java b/transport/grpc/src/main/java/io/a2a/grpc/SendMessageConfiguration.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/SendMessageConfiguration.java rename to transport/grpc/src/main/java/io/a2a/grpc/SendMessageConfiguration.java diff --git a/grpc/src/main/java/io/a2a/grpc/SendMessageConfigurationOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/SendMessageConfigurationOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/SendMessageConfigurationOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/SendMessageConfigurationOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/SendMessageRequest.java b/transport/grpc/src/main/java/io/a2a/grpc/SendMessageRequest.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/SendMessageRequest.java rename to transport/grpc/src/main/java/io/a2a/grpc/SendMessageRequest.java diff --git a/grpc/src/main/java/io/a2a/grpc/SendMessageRequestOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/SendMessageRequestOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/SendMessageRequestOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/SendMessageRequestOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/SendMessageResponse.java b/transport/grpc/src/main/java/io/a2a/grpc/SendMessageResponse.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/SendMessageResponse.java rename to transport/grpc/src/main/java/io/a2a/grpc/SendMessageResponse.java diff --git a/grpc/src/main/java/io/a2a/grpc/SendMessageResponseOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/SendMessageResponseOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/SendMessageResponseOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/SendMessageResponseOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/StreamResponse.java b/transport/grpc/src/main/java/io/a2a/grpc/StreamResponse.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/StreamResponse.java rename to transport/grpc/src/main/java/io/a2a/grpc/StreamResponse.java diff --git a/grpc/src/main/java/io/a2a/grpc/StreamResponseOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/StreamResponseOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/StreamResponseOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/StreamResponseOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/StringList.java b/transport/grpc/src/main/java/io/a2a/grpc/StringList.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/StringList.java rename to transport/grpc/src/main/java/io/a2a/grpc/StringList.java diff --git a/grpc/src/main/java/io/a2a/grpc/StringListOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/StringListOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/StringListOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/StringListOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/Task.java b/transport/grpc/src/main/java/io/a2a/grpc/Task.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/Task.java rename to transport/grpc/src/main/java/io/a2a/grpc/Task.java diff --git a/grpc/src/main/java/io/a2a/grpc/TaskArtifactUpdateEvent.java b/transport/grpc/src/main/java/io/a2a/grpc/TaskArtifactUpdateEvent.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/TaskArtifactUpdateEvent.java rename to transport/grpc/src/main/java/io/a2a/grpc/TaskArtifactUpdateEvent.java diff --git a/grpc/src/main/java/io/a2a/grpc/TaskArtifactUpdateEventOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/TaskArtifactUpdateEventOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/TaskArtifactUpdateEventOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/TaskArtifactUpdateEventOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/TaskOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/TaskOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/TaskOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/TaskOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/TaskPushNotificationConfig.java b/transport/grpc/src/main/java/io/a2a/grpc/TaskPushNotificationConfig.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/TaskPushNotificationConfig.java rename to transport/grpc/src/main/java/io/a2a/grpc/TaskPushNotificationConfig.java diff --git a/grpc/src/main/java/io/a2a/grpc/TaskPushNotificationConfigOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/TaskPushNotificationConfigOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/TaskPushNotificationConfigOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/TaskPushNotificationConfigOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/TaskState.java b/transport/grpc/src/main/java/io/a2a/grpc/TaskState.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/TaskState.java rename to transport/grpc/src/main/java/io/a2a/grpc/TaskState.java diff --git a/grpc/src/main/java/io/a2a/grpc/TaskStatus.java b/transport/grpc/src/main/java/io/a2a/grpc/TaskStatus.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/TaskStatus.java rename to transport/grpc/src/main/java/io/a2a/grpc/TaskStatus.java diff --git a/grpc/src/main/java/io/a2a/grpc/TaskStatusOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/TaskStatusOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/TaskStatusOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/TaskStatusOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/TaskStatusUpdateEvent.java b/transport/grpc/src/main/java/io/a2a/grpc/TaskStatusUpdateEvent.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/TaskStatusUpdateEvent.java rename to transport/grpc/src/main/java/io/a2a/grpc/TaskStatusUpdateEvent.java diff --git a/grpc/src/main/java/io/a2a/grpc/TaskStatusUpdateEventOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/TaskStatusUpdateEventOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/TaskStatusUpdateEventOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/TaskStatusUpdateEventOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/TaskSubscriptionRequest.java b/transport/grpc/src/main/java/io/a2a/grpc/TaskSubscriptionRequest.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/TaskSubscriptionRequest.java rename to transport/grpc/src/main/java/io/a2a/grpc/TaskSubscriptionRequest.java diff --git a/grpc/src/main/java/io/a2a/grpc/TaskSubscriptionRequestOrBuilder.java b/transport/grpc/src/main/java/io/a2a/grpc/TaskSubscriptionRequestOrBuilder.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/TaskSubscriptionRequestOrBuilder.java rename to transport/grpc/src/main/java/io/a2a/grpc/TaskSubscriptionRequestOrBuilder.java diff --git a/grpc/src/main/java/io/a2a/grpc/utils/ProtoUtils.java b/transport/grpc/src/main/java/io/a2a/grpc/utils/ProtoUtils.java similarity index 100% rename from grpc/src/main/java/io/a2a/grpc/utils/ProtoUtils.java rename to transport/grpc/src/main/java/io/a2a/grpc/utils/ProtoUtils.java diff --git a/grpc/src/main/resources/META-INF/beans.xml b/transport/grpc/src/main/resources/META-INF/beans.xml similarity index 100% rename from grpc/src/main/resources/META-INF/beans.xml rename to transport/grpc/src/main/resources/META-INF/beans.xml From 2d1ef6ffba79e7721e14b35cb05f2b44c293aad5 Mon Sep 17 00:00:00 2001 From: Kabir Khan Date: Mon, 4 Aug 2025 16:32:22 +0100 Subject: [PATCH 02/10] Move reference implementations under reference/ --- pom.xml | 4 ++-- {reference-grpc => reference/grpc}/pom.xml | 2 +- .../java/io/a2a/server/grpc/quarkus/QuarkusGrpcHandler.java | 0 .../grpc}/src/main/resources/application.properties | 0 .../test/java/io/a2a/server/grpc/quarkus/A2ATestResource.java | 0 .../java/io/a2a/server/grpc/quarkus/QuarkusA2AGrpcTest.java | 0 {reference-impl => reference/impl}/README.md | 0 {reference-impl => reference/impl}/pom.xml | 1 + .../main/java/io/a2a/server/apps/quarkus/A2AServerRoutes.java | 0 .../java/io/a2a/server/apps/quarkus/CallContextFactory.java | 0 .../java/io/a2a/server/apps/quarkus/DefaultProducers.java | 0 .../impl}/src/main/resources/META-INF/beans.xml | 0 .../test/java/io/a2a/server/apps/quarkus/A2ATestRoutes.java | 0 .../java/io/a2a/server/apps/quarkus/QuarkusA2AServerTest.java | 0 .../impl}/src/test/resources/application.properties | 0 15 files changed, 4 insertions(+), 3 deletions(-) rename {reference-grpc => reference/grpc}/pom.xml (98%) rename {reference-grpc => reference/grpc}/src/main/java/io/a2a/server/grpc/quarkus/QuarkusGrpcHandler.java (100%) rename {reference-grpc => reference/grpc}/src/main/resources/application.properties (100%) rename {reference-grpc => reference/grpc}/src/test/java/io/a2a/server/grpc/quarkus/A2ATestResource.java (100%) rename {reference-grpc => reference/grpc}/src/test/java/io/a2a/server/grpc/quarkus/QuarkusA2AGrpcTest.java (100%) rename {reference-impl => reference/impl}/README.md (100%) rename {reference-impl => reference/impl}/pom.xml (98%) rename {reference-impl => reference/impl}/src/main/java/io/a2a/server/apps/quarkus/A2AServerRoutes.java (100%) rename {reference-impl => reference/impl}/src/main/java/io/a2a/server/apps/quarkus/CallContextFactory.java (100%) rename {reference-impl => reference/impl}/src/main/java/io/a2a/server/apps/quarkus/DefaultProducers.java (100%) rename {reference-impl => reference/impl}/src/main/resources/META-INF/beans.xml (100%) rename {reference-impl => reference/impl}/src/test/java/io/a2a/server/apps/quarkus/A2ATestRoutes.java (100%) rename {reference-impl => reference/impl}/src/test/java/io/a2a/server/apps/quarkus/QuarkusA2AServerTest.java (100%) rename {reference-impl => reference/impl}/src/test/resources/application.properties (100%) diff --git a/pom.xml b/pom.xml index edc6c10fb..c8e35c454 100644 --- a/pom.xml +++ b/pom.xml @@ -281,8 +281,8 @@ examples/helloworld sdk-server-common spec - reference-grpc - reference-impl + reference/grpc + reference/impl tck tests/server-common transport/grpc diff --git a/reference-grpc/pom.xml b/reference/grpc/pom.xml similarity index 98% rename from reference-grpc/pom.xml rename to reference/grpc/pom.xml index 10e584fb7..6e606e138 100644 --- a/reference-grpc/pom.xml +++ b/reference/grpc/pom.xml @@ -7,7 +7,7 @@ io.github.a2asdk a2a-java-sdk-parent 0.2.6.Beta1-SNAPSHOT - ../pom.xml + ../../pom.xml reference-grpc diff --git a/reference-grpc/src/main/java/io/a2a/server/grpc/quarkus/QuarkusGrpcHandler.java b/reference/grpc/src/main/java/io/a2a/server/grpc/quarkus/QuarkusGrpcHandler.java similarity index 100% rename from reference-grpc/src/main/java/io/a2a/server/grpc/quarkus/QuarkusGrpcHandler.java rename to reference/grpc/src/main/java/io/a2a/server/grpc/quarkus/QuarkusGrpcHandler.java diff --git a/reference-grpc/src/main/resources/application.properties b/reference/grpc/src/main/resources/application.properties similarity index 100% rename from reference-grpc/src/main/resources/application.properties rename to reference/grpc/src/main/resources/application.properties diff --git a/reference-grpc/src/test/java/io/a2a/server/grpc/quarkus/A2ATestResource.java b/reference/grpc/src/test/java/io/a2a/server/grpc/quarkus/A2ATestResource.java similarity index 100% rename from reference-grpc/src/test/java/io/a2a/server/grpc/quarkus/A2ATestResource.java rename to reference/grpc/src/test/java/io/a2a/server/grpc/quarkus/A2ATestResource.java diff --git a/reference-grpc/src/test/java/io/a2a/server/grpc/quarkus/QuarkusA2AGrpcTest.java b/reference/grpc/src/test/java/io/a2a/server/grpc/quarkus/QuarkusA2AGrpcTest.java similarity index 100% rename from reference-grpc/src/test/java/io/a2a/server/grpc/quarkus/QuarkusA2AGrpcTest.java rename to reference/grpc/src/test/java/io/a2a/server/grpc/quarkus/QuarkusA2AGrpcTest.java diff --git a/reference-impl/README.md b/reference/impl/README.md similarity index 100% rename from reference-impl/README.md rename to reference/impl/README.md diff --git a/reference-impl/pom.xml b/reference/impl/pom.xml similarity index 98% rename from reference-impl/pom.xml rename to reference/impl/pom.xml index b128aa3f0..fb1fad20c 100644 --- a/reference-impl/pom.xml +++ b/reference/impl/pom.xml @@ -8,6 +8,7 @@ io.github.a2asdk a2a-java-sdk-parent 0.2.6.Beta1-SNAPSHOT + ../../pom.xml a2a-java-reference-server diff --git a/reference-impl/src/main/java/io/a2a/server/apps/quarkus/A2AServerRoutes.java b/reference/impl/src/main/java/io/a2a/server/apps/quarkus/A2AServerRoutes.java similarity index 100% rename from reference-impl/src/main/java/io/a2a/server/apps/quarkus/A2AServerRoutes.java rename to reference/impl/src/main/java/io/a2a/server/apps/quarkus/A2AServerRoutes.java diff --git a/reference-impl/src/main/java/io/a2a/server/apps/quarkus/CallContextFactory.java b/reference/impl/src/main/java/io/a2a/server/apps/quarkus/CallContextFactory.java similarity index 100% rename from reference-impl/src/main/java/io/a2a/server/apps/quarkus/CallContextFactory.java rename to reference/impl/src/main/java/io/a2a/server/apps/quarkus/CallContextFactory.java diff --git a/reference-impl/src/main/java/io/a2a/server/apps/quarkus/DefaultProducers.java b/reference/impl/src/main/java/io/a2a/server/apps/quarkus/DefaultProducers.java similarity index 100% rename from reference-impl/src/main/java/io/a2a/server/apps/quarkus/DefaultProducers.java rename to reference/impl/src/main/java/io/a2a/server/apps/quarkus/DefaultProducers.java diff --git a/reference-impl/src/main/resources/META-INF/beans.xml b/reference/impl/src/main/resources/META-INF/beans.xml similarity index 100% rename from reference-impl/src/main/resources/META-INF/beans.xml rename to reference/impl/src/main/resources/META-INF/beans.xml diff --git a/reference-impl/src/test/java/io/a2a/server/apps/quarkus/A2ATestRoutes.java b/reference/impl/src/test/java/io/a2a/server/apps/quarkus/A2ATestRoutes.java similarity index 100% rename from reference-impl/src/test/java/io/a2a/server/apps/quarkus/A2ATestRoutes.java rename to reference/impl/src/test/java/io/a2a/server/apps/quarkus/A2ATestRoutes.java diff --git a/reference-impl/src/test/java/io/a2a/server/apps/quarkus/QuarkusA2AServerTest.java b/reference/impl/src/test/java/io/a2a/server/apps/quarkus/QuarkusA2AServerTest.java similarity index 100% rename from reference-impl/src/test/java/io/a2a/server/apps/quarkus/QuarkusA2AServerTest.java rename to reference/impl/src/test/java/io/a2a/server/apps/quarkus/QuarkusA2AServerTest.java diff --git a/reference-impl/src/test/resources/application.properties b/reference/impl/src/test/resources/application.properties similarity index 100% rename from reference-impl/src/test/resources/application.properties rename to reference/impl/src/test/resources/application.properties From 03e7438badb3347296cb8b0e505dede22f4d0de8 Mon Sep 17 00:00:00 2001 From: Kabir Khan Date: Mon, 4 Aug 2025 16:34:08 +0100 Subject: [PATCH 03/10] Rename reference-server to reference-jsonrpc --- README.md | 2 +- examples/helloworld/pom.xml | 2 +- examples/helloworld/server/pom.xml | 2 +- reference/impl/pom.xml | 2 +- tck/pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 2186dde3b..08a662bfa 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ To use the reference implementation add the following dependency to your project ```xml io.github.a2asdk - a2a-java-reference-server + a2a-java-sdk-reference-jsonrpc ${io.a2a.sdk.version} diff --git a/examples/helloworld/pom.xml b/examples/helloworld/pom.xml index 7900d3cef..d026edb21 100644 --- a/examples/helloworld/pom.xml +++ b/examples/helloworld/pom.xml @@ -33,7 +33,7 @@ io.github.a2asdk - a2a-java-reference-server + a2a-java-sdk-reference-jsonrpc ${project.version} diff --git a/examples/helloworld/server/pom.xml b/examples/helloworld/server/pom.xml index ee7c5324b..3a051dbab 100644 --- a/examples/helloworld/server/pom.xml +++ b/examples/helloworld/server/pom.xml @@ -18,7 +18,7 @@ io.github.a2asdk - a2a-java-reference-server + a2a-java-sdk-reference-jsonrpc io.quarkus diff --git a/reference/impl/pom.xml b/reference/impl/pom.xml index fb1fad20c..4094d5d1e 100644 --- a/reference/impl/pom.xml +++ b/reference/impl/pom.xml @@ -10,7 +10,7 @@ 0.2.6.Beta1-SNAPSHOT ../../pom.xml - a2a-java-reference-server + a2a-java-sdk-reference-jsonrpc jar diff --git a/tck/pom.xml b/tck/pom.xml index 42c25a6db..5272c1a1c 100644 --- a/tck/pom.xml +++ b/tck/pom.xml @@ -18,7 +18,7 @@ io.github.a2asdk - a2a-java-reference-server + a2a-java-sdk-reference-jsonrpc ${project.version} From 3486f2a5fb57f94ddf88fd3e1d6180f275989996 Mon Sep 17 00:00:00 2001 From: Kabir Khan Date: Mon, 4 Aug 2025 16:46:24 +0100 Subject: [PATCH 04/10] Rename reference-impl -> reference-jsonrpc --- pom.xml | 3 ++- reference/{impl => jsonrpc}/README.md | 0 reference/{impl => jsonrpc}/pom.xml | 0 .../main/java/io/a2a/server/apps/quarkus/A2AServerRoutes.java | 0 .../java/io/a2a/server/apps/quarkus/CallContextFactory.java | 0 .../main/java/io/a2a/server/apps/quarkus/DefaultProducers.java | 0 .../{impl => jsonrpc}/src/main/resources/META-INF/beans.xml | 0 .../test/java/io/a2a/server/apps/quarkus/A2ATestRoutes.java | 0 .../java/io/a2a/server/apps/quarkus/QuarkusA2AServerTest.java | 0 .../src/test/resources/application.properties | 0 transport/grpc/pom.xml | 2 +- 11 files changed, 3 insertions(+), 2 deletions(-) rename reference/{impl => jsonrpc}/README.md (100%) rename reference/{impl => jsonrpc}/pom.xml (100%) rename reference/{impl => jsonrpc}/src/main/java/io/a2a/server/apps/quarkus/A2AServerRoutes.java (100%) rename reference/{impl => jsonrpc}/src/main/java/io/a2a/server/apps/quarkus/CallContextFactory.java (100%) rename reference/{impl => jsonrpc}/src/main/java/io/a2a/server/apps/quarkus/DefaultProducers.java (100%) rename reference/{impl => jsonrpc}/src/main/resources/META-INF/beans.xml (100%) rename reference/{impl => jsonrpc}/src/test/java/io/a2a/server/apps/quarkus/A2ATestRoutes.java (100%) rename reference/{impl => jsonrpc}/src/test/java/io/a2a/server/apps/quarkus/QuarkusA2AServerTest.java (100%) rename reference/{impl => jsonrpc}/src/test/resources/application.properties (100%) diff --git a/pom.xml b/pom.xml index c8e35c454..ff05266ca 100644 --- a/pom.xml +++ b/pom.xml @@ -282,9 +282,10 @@ sdk-server-common spec reference/grpc - reference/impl + reference/jsonrpc tck tests/server-common + transport/jsonrpc transport/grpc diff --git a/reference/impl/README.md b/reference/jsonrpc/README.md similarity index 100% rename from reference/impl/README.md rename to reference/jsonrpc/README.md diff --git a/reference/impl/pom.xml b/reference/jsonrpc/pom.xml similarity index 100% rename from reference/impl/pom.xml rename to reference/jsonrpc/pom.xml diff --git a/reference/impl/src/main/java/io/a2a/server/apps/quarkus/A2AServerRoutes.java b/reference/jsonrpc/src/main/java/io/a2a/server/apps/quarkus/A2AServerRoutes.java similarity index 100% rename from reference/impl/src/main/java/io/a2a/server/apps/quarkus/A2AServerRoutes.java rename to reference/jsonrpc/src/main/java/io/a2a/server/apps/quarkus/A2AServerRoutes.java diff --git a/reference/impl/src/main/java/io/a2a/server/apps/quarkus/CallContextFactory.java b/reference/jsonrpc/src/main/java/io/a2a/server/apps/quarkus/CallContextFactory.java similarity index 100% rename from reference/impl/src/main/java/io/a2a/server/apps/quarkus/CallContextFactory.java rename to reference/jsonrpc/src/main/java/io/a2a/server/apps/quarkus/CallContextFactory.java diff --git a/reference/impl/src/main/java/io/a2a/server/apps/quarkus/DefaultProducers.java b/reference/jsonrpc/src/main/java/io/a2a/server/apps/quarkus/DefaultProducers.java similarity index 100% rename from reference/impl/src/main/java/io/a2a/server/apps/quarkus/DefaultProducers.java rename to reference/jsonrpc/src/main/java/io/a2a/server/apps/quarkus/DefaultProducers.java diff --git a/reference/impl/src/main/resources/META-INF/beans.xml b/reference/jsonrpc/src/main/resources/META-INF/beans.xml similarity index 100% rename from reference/impl/src/main/resources/META-INF/beans.xml rename to reference/jsonrpc/src/main/resources/META-INF/beans.xml diff --git a/reference/impl/src/test/java/io/a2a/server/apps/quarkus/A2ATestRoutes.java b/reference/jsonrpc/src/test/java/io/a2a/server/apps/quarkus/A2ATestRoutes.java similarity index 100% rename from reference/impl/src/test/java/io/a2a/server/apps/quarkus/A2ATestRoutes.java rename to reference/jsonrpc/src/test/java/io/a2a/server/apps/quarkus/A2ATestRoutes.java diff --git a/reference/impl/src/test/java/io/a2a/server/apps/quarkus/QuarkusA2AServerTest.java b/reference/jsonrpc/src/test/java/io/a2a/server/apps/quarkus/QuarkusA2AServerTest.java similarity index 100% rename from reference/impl/src/test/java/io/a2a/server/apps/quarkus/QuarkusA2AServerTest.java rename to reference/jsonrpc/src/test/java/io/a2a/server/apps/quarkus/QuarkusA2AServerTest.java diff --git a/reference/impl/src/test/resources/application.properties b/reference/jsonrpc/src/test/resources/application.properties similarity index 100% rename from reference/impl/src/test/resources/application.properties rename to reference/jsonrpc/src/test/resources/application.properties diff --git a/transport/grpc/pom.xml b/transport/grpc/pom.xml index cf6268dc0..8061efb79 100644 --- a/transport/grpc/pom.xml +++ b/transport/grpc/pom.xml @@ -14,7 +14,7 @@ jar - Java SDK A2A gRPC + Java SDK A2A Transport: gRPC Java SDK for the Agent2Agent Protocol (A2A) - gRPC From 2adb708e30ebdd53e3f650dbd022ecd8c0ac0c23 Mon Sep 17 00:00:00 2001 From: Kabir Khan Date: Mon, 4 Aug 2025 17:37:12 +0100 Subject: [PATCH 05/10] Split out a spec-grpc module --- client/pom.xml | 4 +- pom.xml | 5 +- reference/grpc/pom.xml | 2 +- .../grpc/quarkus/QuarkusGrpcHandler.java | 11 +- .../src/main/resources/application.properties | 2 +- .../server/grpc/quarkus/A2ATestResource.java | 2 +- reference/jsonrpc/pom.xml | 6 +- .../server/apps/quarkus/A2AServerRoutes.java | 2 +- ...erTest.java => QuarkusA2AJSONRPCTest.java} | 4 +- sdk-server-common/pom.xml | 26 +- .../AbstractA2ARequestHandlerTest.java | 21 +- spec-grpc/pom.xml | 47 +++ .../src/main/java/io/a2a/grpc/A2A.java | 0 .../main/java/io/a2a/grpc/A2AServiceGrpc.java | 0 .../io/a2a/grpc/APIKeySecurityScheme.java | 0 .../grpc/APIKeySecuritySchemeOrBuilder.java | 0 .../java/io/a2a/grpc/AgentCapabilities.java | 0 .../a2a/grpc/AgentCapabilitiesOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/AgentCard.java | 0 .../java/io/a2a/grpc/AgentCardOrBuilder.java | 0 .../main/java/io/a2a/grpc/AgentExtension.java | 0 .../io/a2a/grpc/AgentExtensionOrBuilder.java | 0 .../main/java/io/a2a/grpc/AgentInterface.java | 0 .../io/a2a/grpc/AgentInterfaceOrBuilder.java | 0 .../main/java/io/a2a/grpc/AgentProvider.java | 0 .../io/a2a/grpc/AgentProviderOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/AgentSkill.java | 0 .../java/io/a2a/grpc/AgentSkillOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/Artifact.java | 0 .../java/io/a2a/grpc/ArtifactOrBuilder.java | 0 .../java/io/a2a/grpc/AuthenticationInfo.java | 0 .../a2a/grpc/AuthenticationInfoOrBuilder.java | 0 .../a2a/grpc/AuthorizationCodeOAuthFlow.java | 0 .../AuthorizationCodeOAuthFlowOrBuilder.java | 0 .../java/io/a2a/grpc/CancelTaskRequest.java | 0 .../a2a/grpc/CancelTaskRequestOrBuilder.java | 0 .../a2a/grpc/ClientCredentialsOAuthFlow.java | 0 .../ClientCredentialsOAuthFlowOrBuilder.java | 0 ...eateTaskPushNotificationConfigRequest.java | 0 ...ushNotificationConfigRequestOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/DataPart.java | 0 .../java/io/a2a/grpc/DataPartOrBuilder.java | 0 ...leteTaskPushNotificationConfigRequest.java | 0 ...ushNotificationConfigRequestOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/FilePart.java | 0 .../java/io/a2a/grpc/FilePartOrBuilder.java | 0 .../java/io/a2a/grpc/GetAgentCardRequest.java | 0 .../grpc/GetAgentCardRequestOrBuilder.java | 0 .../GetTaskPushNotificationConfigRequest.java | 0 ...ushNotificationConfigRequestOrBuilder.java | 0 .../main/java/io/a2a/grpc/GetTaskRequest.java | 0 .../io/a2a/grpc/GetTaskRequestOrBuilder.java | 0 .../io/a2a/grpc/HTTPAuthSecurityScheme.java | 0 .../grpc/HTTPAuthSecuritySchemeOrBuilder.java | 0 .../java/io/a2a/grpc/ImplicitOAuthFlow.java | 0 .../a2a/grpc/ImplicitOAuthFlowOrBuilder.java | 0 ...ListTaskPushNotificationConfigRequest.java | 0 ...ushNotificationConfigRequestOrBuilder.java | 0 ...istTaskPushNotificationConfigResponse.java | 0 ...shNotificationConfigResponseOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/Message.java | 0 .../java/io/a2a/grpc/MessageOrBuilder.java | 0 .../io/a2a/grpc/OAuth2SecurityScheme.java | 0 .../grpc/OAuth2SecuritySchemeOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/OAuthFlows.java | 0 .../java/io/a2a/grpc/OAuthFlowsOrBuilder.java | 0 .../a2a/grpc/OpenIdConnectSecurityScheme.java | 0 .../OpenIdConnectSecuritySchemeOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/Part.java | 0 .../main/java/io/a2a/grpc/PartOrBuilder.java | 0 .../java/io/a2a/grpc/PasswordOAuthFlow.java | 0 .../a2a/grpc/PasswordOAuthFlowOrBuilder.java | 0 .../io/a2a/grpc/PushNotificationConfig.java | 0 .../grpc/PushNotificationConfigOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/Role.java | 0 .../src/main/java/io/a2a/grpc/Security.java | 0 .../java/io/a2a/grpc/SecurityOrBuilder.java | 0 .../main/java/io/a2a/grpc/SecurityScheme.java | 0 .../io/a2a/grpc/SecuritySchemeOrBuilder.java | 0 .../io/a2a/grpc/SendMessageConfiguration.java | 0 .../SendMessageConfigurationOrBuilder.java | 0 .../java/io/a2a/grpc/SendMessageRequest.java | 0 .../a2a/grpc/SendMessageRequestOrBuilder.java | 0 .../java/io/a2a/grpc/SendMessageResponse.java | 0 .../grpc/SendMessageResponseOrBuilder.java | 0 .../main/java/io/a2a/grpc/StreamResponse.java | 0 .../io/a2a/grpc/StreamResponseOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/StringList.java | 0 .../java/io/a2a/grpc/StringListOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/Task.java | 0 .../io/a2a/grpc/TaskArtifactUpdateEvent.java | 0 .../TaskArtifactUpdateEventOrBuilder.java | 0 .../main/java/io/a2a/grpc/TaskOrBuilder.java | 0 .../a2a/grpc/TaskPushNotificationConfig.java | 0 .../TaskPushNotificationConfigOrBuilder.java | 0 .../src/main/java/io/a2a/grpc/TaskState.java | 0 .../src/main/java/io/a2a/grpc/TaskStatus.java | 0 .../java/io/a2a/grpc/TaskStatusOrBuilder.java | 0 .../io/a2a/grpc/TaskStatusUpdateEvent.java | 0 .../grpc/TaskStatusUpdateEventOrBuilder.java | 0 .../io/a2a/grpc/TaskSubscriptionRequest.java | 0 .../TaskSubscriptionRequestOrBuilder.java | 0 .../java/io/a2a/grpc/utils/ProtoUtils.java | 0 .../src/main/resources/META-INF/beans.xml | 6 + transport/grpc/pom.xml | 53 ++- .../io/a2a/grpc/handler}/GrpcHandler.java | 4 +- .../io/a2a/grpc/handler}/GrpcHandlerTest.java | 328 +++++++++--------- transport/jsonrpc/pom.xml | 51 +++ .../a2a/jsonrpc/handler}/JSONRPCHandler.java | 4 +- .../src/main/resources/META-INF/beans.xml | 6 + .../jsonrpc/handler}/JSONRPCHandlerTest.java | 231 ++++++------ 111 files changed, 487 insertions(+), 328 deletions(-) rename reference/jsonrpc/src/test/java/io/a2a/server/apps/quarkus/{QuarkusA2AServerTest.java => QuarkusA2AJSONRPCTest.java} (63%) create mode 100644 spec-grpc/pom.xml rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/A2A.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/A2AServiceGrpc.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/APIKeySecurityScheme.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/APIKeySecuritySchemeOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/AgentCapabilities.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/AgentCapabilitiesOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/AgentCard.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/AgentCardOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/AgentExtension.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/AgentExtensionOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/AgentInterface.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/AgentInterfaceOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/AgentProvider.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/AgentProviderOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/AgentSkill.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/AgentSkillOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/Artifact.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/ArtifactOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/AuthenticationInfo.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/AuthenticationInfoOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/AuthorizationCodeOAuthFlow.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/AuthorizationCodeOAuthFlowOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/CancelTaskRequest.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/CancelTaskRequestOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/ClientCredentialsOAuthFlow.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/ClientCredentialsOAuthFlowOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/CreateTaskPushNotificationConfigRequest.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/CreateTaskPushNotificationConfigRequestOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/DataPart.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/DataPartOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/DeleteTaskPushNotificationConfigRequest.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/DeleteTaskPushNotificationConfigRequestOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/FilePart.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/FilePartOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/GetAgentCardRequest.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/GetAgentCardRequestOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/GetTaskPushNotificationConfigRequest.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/GetTaskPushNotificationConfigRequestOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/GetTaskRequest.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/GetTaskRequestOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/HTTPAuthSecurityScheme.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/HTTPAuthSecuritySchemeOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/ImplicitOAuthFlow.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/ImplicitOAuthFlowOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigRequest.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigRequestOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigResponse.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigResponseOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/Message.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/MessageOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/OAuth2SecurityScheme.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/OAuth2SecuritySchemeOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/OAuthFlows.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/OAuthFlowsOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/OpenIdConnectSecurityScheme.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/OpenIdConnectSecuritySchemeOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/Part.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/PartOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/PasswordOAuthFlow.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/PasswordOAuthFlowOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/PushNotificationConfig.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/PushNotificationConfigOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/Role.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/Security.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/SecurityOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/SecurityScheme.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/SecuritySchemeOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/SendMessageConfiguration.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/SendMessageConfigurationOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/SendMessageRequest.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/SendMessageRequestOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/SendMessageResponse.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/SendMessageResponseOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/StreamResponse.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/StreamResponseOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/StringList.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/StringListOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/Task.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/TaskArtifactUpdateEvent.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/TaskArtifactUpdateEventOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/TaskOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/TaskPushNotificationConfig.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/TaskPushNotificationConfigOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/TaskState.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/TaskStatus.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/TaskStatusOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/TaskStatusUpdateEvent.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/TaskStatusUpdateEventOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/TaskSubscriptionRequest.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/TaskSubscriptionRequestOrBuilder.java (100%) rename {transport/grpc => spec-grpc}/src/main/java/io/a2a/grpc/utils/ProtoUtils.java (100%) create mode 100644 spec-grpc/src/main/resources/META-INF/beans.xml rename {sdk-server-common/src/main/java/io/a2a/server/requesthandlers => transport/grpc/src/main/java/io/a2a/grpc/handler}/GrpcHandler.java (99%) rename {sdk-server-common/src/test/java/io/a2a/server/requesthandlers => transport/grpc/src/test/java/io/a2a/grpc/handler}/GrpcHandlerTest.java (68%) create mode 100644 transport/jsonrpc/pom.xml rename {sdk-server-common/src/main/java/io/a2a/server/requesthandlers => transport/jsonrpc/src/main/java/io/a2a/jsonrpc/handler}/JSONRPCHandler.java (99%) create mode 100644 transport/jsonrpc/src/main/resources/META-INF/beans.xml rename {sdk-server-common/src/test/java/io/a2a/server/requesthandlers => transport/jsonrpc/src/test/java/io/a2a/jsonrpc/handler}/JSONRPCHandlerTest.java (86%) diff --git a/client/pom.xml b/client/pom.xml index 62c5c48a8..0a71440b4 100644 --- a/client/pom.xml +++ b/client/pom.xml @@ -24,12 +24,12 @@ ${project.groupId} - a2a-java-sdk-transport-grpc + a2a-java-sdk-spec ${project.version} ${project.groupId} - a2a-java-sdk-spec + a2a-java-sdk-spec-grpc ${project.version} diff --git a/pom.xml b/pom.xml index ff05266ca..13aca788d 100644 --- a/pom.xml +++ b/pom.xml @@ -279,10 +279,11 @@ client common examples/helloworld - sdk-server-common - spec reference/grpc reference/jsonrpc + sdk-server-common + spec + spec-grpc tck tests/server-common transport/jsonrpc diff --git a/reference/grpc/pom.xml b/reference/grpc/pom.xml index 6e606e138..b61cdd3e9 100644 --- a/reference/grpc/pom.xml +++ b/reference/grpc/pom.xml @@ -10,7 +10,7 @@ ../../pom.xml - reference-grpc + a2a-java-sdk-reference-grpc Java A2A gRPC Reference Server Java SDK for the Agent2Agent Protocol (A2A) - A2A gRPC Reference Server (based on Quarkus) diff --git a/reference/grpc/src/main/java/io/a2a/server/grpc/quarkus/QuarkusGrpcHandler.java b/reference/grpc/src/main/java/io/a2a/server/grpc/quarkus/QuarkusGrpcHandler.java index 05207321b..40abbc95c 100644 --- a/reference/grpc/src/main/java/io/a2a/server/grpc/quarkus/QuarkusGrpcHandler.java +++ b/reference/grpc/src/main/java/io/a2a/server/grpc/quarkus/QuarkusGrpcHandler.java @@ -1,20 +1,11 @@ package io.a2a.server.grpc.quarkus; -import jakarta.enterprise.inject.Instance; import jakarta.inject.Inject; -import io.a2a.grpc.SendMessageRequest; -import io.a2a.grpc.SendMessageResponse; -import io.a2a.grpc.StreamResponse; -import io.a2a.grpc.Task; -import io.a2a.grpc.TaskState; -import io.a2a.grpc.TaskStatus; -import io.a2a.grpc.TaskStatusUpdateEvent; import io.a2a.server.PublicAgentCard; -import io.a2a.server.requesthandlers.GrpcHandler; +import io.a2a.grpc.handler.GrpcHandler; import io.a2a.server.requesthandlers.RequestHandler; import io.a2a.spec.AgentCard; -import io.grpc.stub.StreamObserver; import io.quarkus.grpc.GrpcService; @GrpcService diff --git a/reference/grpc/src/main/resources/application.properties b/reference/grpc/src/main/resources/application.properties index f8286bd6f..5504ba5b6 100644 --- a/reference/grpc/src/main/resources/application.properties +++ b/reference/grpc/src/main/resources/application.properties @@ -2,4 +2,4 @@ quarkus.grpc.clients.a2-a-service.host=localhost quarkus.grpc.clients.a2-a-service.port=9001 # The GrpcHandler @ApplicationScoped annotation is not compatible with Quarkus -quarkus.arc.exclude-types=io.a2a.server.requesthandlers.GrpcHandler \ No newline at end of file +quarkus.arc.exclude-types=io.a2a.grpc.handler.GrpcHandler \ No newline at end of file diff --git a/reference/grpc/src/test/java/io/a2a/server/grpc/quarkus/A2ATestResource.java b/reference/grpc/src/test/java/io/a2a/server/grpc/quarkus/A2ATestResource.java index 917606e42..25758da9c 100644 --- a/reference/grpc/src/test/java/io/a2a/server/grpc/quarkus/A2ATestResource.java +++ b/reference/grpc/src/test/java/io/a2a/server/grpc/quarkus/A2ATestResource.java @@ -19,7 +19,7 @@ import jakarta.ws.rs.core.Response; import io.a2a.server.apps.common.TestUtilsBean; -import io.a2a.server.requesthandlers.GrpcHandler; +import io.a2a.grpc.handler.GrpcHandler; import io.a2a.spec.PushNotificationConfig; import io.a2a.spec.Task; import io.a2a.spec.TaskArtifactUpdateEvent; diff --git a/reference/jsonrpc/pom.xml b/reference/jsonrpc/pom.xml index 4094d5d1e..abb448853 100644 --- a/reference/jsonrpc/pom.xml +++ b/reference/jsonrpc/pom.xml @@ -14,13 +14,13 @@ jar - Java A2A Reference Server - Java SDK for the Agent2Agent Protocol (A2A) - A2A Reference Server (based on Quarkus) + Java A2A JSONRPC Reference Server + Java SDK for the Agent2Agent Protocol (A2A) - A2A JSONRPC Reference Server (based on Quarkus) ${project.groupId} - a2a-java-sdk-spec + a2a-java-sdk-transport-jsonrpc ${project.version} diff --git a/reference/jsonrpc/src/main/java/io/a2a/server/apps/quarkus/A2AServerRoutes.java b/reference/jsonrpc/src/main/java/io/a2a/server/apps/quarkus/A2AServerRoutes.java index 988736c91..3ebf22ccd 100644 --- a/reference/jsonrpc/src/main/java/io/a2a/server/apps/quarkus/A2AServerRoutes.java +++ b/reference/jsonrpc/src/main/java/io/a2a/server/apps/quarkus/A2AServerRoutes.java @@ -20,11 +20,11 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.io.JsonEOFException; import com.fasterxml.jackson.databind.JsonNode; +import io.a2a.jsonrpc.handler.JSONRPCHandler; import io.a2a.server.ExtendedAgentCard; import io.a2a.server.ServerCallContext; import io.a2a.server.auth.UnauthenticatedUser; import io.a2a.server.auth.User; -import io.a2a.server.requesthandlers.JSONRPCHandler; import io.a2a.server.util.async.Internal; import io.a2a.spec.AgentCard; import io.a2a.spec.CancelTaskRequest; diff --git a/reference/jsonrpc/src/test/java/io/a2a/server/apps/quarkus/QuarkusA2AServerTest.java b/reference/jsonrpc/src/test/java/io/a2a/server/apps/quarkus/QuarkusA2AJSONRPCTest.java similarity index 63% rename from reference/jsonrpc/src/test/java/io/a2a/server/apps/quarkus/QuarkusA2AServerTest.java rename to reference/jsonrpc/src/test/java/io/a2a/server/apps/quarkus/QuarkusA2AJSONRPCTest.java index f9ed48643..f1442da33 100644 --- a/reference/jsonrpc/src/test/java/io/a2a/server/apps/quarkus/QuarkusA2AServerTest.java +++ b/reference/jsonrpc/src/test/java/io/a2a/server/apps/quarkus/QuarkusA2AJSONRPCTest.java @@ -4,9 +4,9 @@ import io.quarkus.test.junit.QuarkusTest; @QuarkusTest -public class QuarkusA2AServerTest extends AbstractA2AServerTest { +public class QuarkusA2AJSONRPCTest extends AbstractA2AServerTest { - public QuarkusA2AServerTest() { + public QuarkusA2AJSONRPCTest() { super(8081); } } diff --git a/sdk-server-common/pom.xml b/sdk-server-common/pom.xml index e677f296d..2585f679b 100644 --- a/sdk-server-common/pom.xml +++ b/sdk-server-common/pom.xml @@ -27,11 +27,6 @@ a2a-java-sdk-client ${project.version} - - ${project.groupId} - a2a-java-sdk-transport-grpc - ${project.version} - com.fasterxml.jackson.core jackson-databind @@ -99,11 +94,22 @@ logback-classic test - - io.grpc - grpc-testing - test - + + + + org.apache.maven.plugins + maven-jar-plugin + + + + test-jar + + + + + + + \ No newline at end of file diff --git a/sdk-server-common/src/test/java/io/a2a/server/requesthandlers/AbstractA2ARequestHandlerTest.java b/sdk-server-common/src/test/java/io/a2a/server/requesthandlers/AbstractA2ARequestHandlerTest.java index a8cf3fcf0..7232d1a0c 100644 --- a/sdk-server-common/src/test/java/io/a2a/server/requesthandlers/AbstractA2ARequestHandlerTest.java +++ b/sdk-server-common/src/test/java/io/a2a/server/requesthandlers/AbstractA2ARequestHandlerTest.java @@ -54,15 +54,15 @@ public class AbstractA2ARequestHandlerTest { .parts(new TextPart("test message")) .build(); - AgentExecutor executor; - TaskStore taskStore; - RequestHandler requestHandler; - AgentExecutorMethod agentExecutorExecute; - AgentExecutorMethod agentExecutorCancel; - InMemoryQueueManager queueManager; - TestHttpClient httpClient; + protected AgentExecutor executor; + protected TaskStore taskStore; + protected RequestHandler requestHandler; + protected AgentExecutorMethod agentExecutorExecute; + protected AgentExecutorMethod agentExecutorCancel; + protected InMemoryQueueManager queueManager; + protected TestHttpClient httpClient; - final Executor internalExecutor = Executors.newCachedThreadPool(); + protected final Executor internalExecutor = Executors.newCachedThreadPool(); @BeforeEach public void init() { @@ -123,8 +123,8 @@ protected interface AgentExecutorMethod { @Dependent @IfBuildProfile("test") protected static class TestHttpClient implements A2AHttpClient { - final List tasks = Collections.synchronizedList(new ArrayList<>()); - volatile CountDownLatch latch; + public final List tasks = Collections.synchronizedList(new ArrayList<>()); + public volatile CountDownLatch latch; @Override public GetBuilder createGet() { @@ -183,6 +183,7 @@ public PostBuilder url(String s) { public PostBuilder addHeader(String name, String value) { return this; } + } } } diff --git a/spec-grpc/pom.xml b/spec-grpc/pom.xml new file mode 100644 index 000000000..129be2d7c --- /dev/null +++ b/spec-grpc/pom.xml @@ -0,0 +1,47 @@ + + + 4.0.0 + + + io.github.a2asdk + a2a-java-sdk-parent + 0.2.6.Beta1-SNAPSHOT + + a2a-java-sdk-spec-grpc + + jar + + Java SDK A2A Spec: gRPC + Java SDK for the Agent2Agent Protocol (A2A) - Spec: gRPC + + + + ${project.groupId} + a2a-java-sdk-spec + ${project.version} + + + com.google.protobuf + protobuf-java + + + io.grpc + grpc-protobuf + + + io.grpc + grpc-stub + + + jakarta.enterprise + jakarta.enterprise.cdi-api + + + jakarta.inject + jakarta.inject-api + + + + diff --git a/transport/grpc/src/main/java/io/a2a/grpc/A2A.java b/spec-grpc/src/main/java/io/a2a/grpc/A2A.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/A2A.java rename to spec-grpc/src/main/java/io/a2a/grpc/A2A.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/A2AServiceGrpc.java b/spec-grpc/src/main/java/io/a2a/grpc/A2AServiceGrpc.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/A2AServiceGrpc.java rename to spec-grpc/src/main/java/io/a2a/grpc/A2AServiceGrpc.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/APIKeySecurityScheme.java b/spec-grpc/src/main/java/io/a2a/grpc/APIKeySecurityScheme.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/APIKeySecurityScheme.java rename to spec-grpc/src/main/java/io/a2a/grpc/APIKeySecurityScheme.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/APIKeySecuritySchemeOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/APIKeySecuritySchemeOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/APIKeySecuritySchemeOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/APIKeySecuritySchemeOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/AgentCapabilities.java b/spec-grpc/src/main/java/io/a2a/grpc/AgentCapabilities.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/AgentCapabilities.java rename to spec-grpc/src/main/java/io/a2a/grpc/AgentCapabilities.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/AgentCapabilitiesOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/AgentCapabilitiesOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/AgentCapabilitiesOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/AgentCapabilitiesOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/AgentCard.java b/spec-grpc/src/main/java/io/a2a/grpc/AgentCard.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/AgentCard.java rename to spec-grpc/src/main/java/io/a2a/grpc/AgentCard.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/AgentCardOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/AgentCardOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/AgentCardOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/AgentCardOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/AgentExtension.java b/spec-grpc/src/main/java/io/a2a/grpc/AgentExtension.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/AgentExtension.java rename to spec-grpc/src/main/java/io/a2a/grpc/AgentExtension.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/AgentExtensionOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/AgentExtensionOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/AgentExtensionOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/AgentExtensionOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/AgentInterface.java b/spec-grpc/src/main/java/io/a2a/grpc/AgentInterface.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/AgentInterface.java rename to spec-grpc/src/main/java/io/a2a/grpc/AgentInterface.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/AgentInterfaceOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/AgentInterfaceOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/AgentInterfaceOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/AgentInterfaceOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/AgentProvider.java b/spec-grpc/src/main/java/io/a2a/grpc/AgentProvider.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/AgentProvider.java rename to spec-grpc/src/main/java/io/a2a/grpc/AgentProvider.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/AgentProviderOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/AgentProviderOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/AgentProviderOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/AgentProviderOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/AgentSkill.java b/spec-grpc/src/main/java/io/a2a/grpc/AgentSkill.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/AgentSkill.java rename to spec-grpc/src/main/java/io/a2a/grpc/AgentSkill.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/AgentSkillOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/AgentSkillOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/AgentSkillOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/AgentSkillOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/Artifact.java b/spec-grpc/src/main/java/io/a2a/grpc/Artifact.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/Artifact.java rename to spec-grpc/src/main/java/io/a2a/grpc/Artifact.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/ArtifactOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/ArtifactOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/ArtifactOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/ArtifactOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/AuthenticationInfo.java b/spec-grpc/src/main/java/io/a2a/grpc/AuthenticationInfo.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/AuthenticationInfo.java rename to spec-grpc/src/main/java/io/a2a/grpc/AuthenticationInfo.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/AuthenticationInfoOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/AuthenticationInfoOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/AuthenticationInfoOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/AuthenticationInfoOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/AuthorizationCodeOAuthFlow.java b/spec-grpc/src/main/java/io/a2a/grpc/AuthorizationCodeOAuthFlow.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/AuthorizationCodeOAuthFlow.java rename to spec-grpc/src/main/java/io/a2a/grpc/AuthorizationCodeOAuthFlow.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/AuthorizationCodeOAuthFlowOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/AuthorizationCodeOAuthFlowOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/AuthorizationCodeOAuthFlowOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/AuthorizationCodeOAuthFlowOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/CancelTaskRequest.java b/spec-grpc/src/main/java/io/a2a/grpc/CancelTaskRequest.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/CancelTaskRequest.java rename to spec-grpc/src/main/java/io/a2a/grpc/CancelTaskRequest.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/CancelTaskRequestOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/CancelTaskRequestOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/CancelTaskRequestOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/CancelTaskRequestOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/ClientCredentialsOAuthFlow.java b/spec-grpc/src/main/java/io/a2a/grpc/ClientCredentialsOAuthFlow.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/ClientCredentialsOAuthFlow.java rename to spec-grpc/src/main/java/io/a2a/grpc/ClientCredentialsOAuthFlow.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/ClientCredentialsOAuthFlowOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/ClientCredentialsOAuthFlowOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/ClientCredentialsOAuthFlowOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/ClientCredentialsOAuthFlowOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/CreateTaskPushNotificationConfigRequest.java b/spec-grpc/src/main/java/io/a2a/grpc/CreateTaskPushNotificationConfigRequest.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/CreateTaskPushNotificationConfigRequest.java rename to spec-grpc/src/main/java/io/a2a/grpc/CreateTaskPushNotificationConfigRequest.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/CreateTaskPushNotificationConfigRequestOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/CreateTaskPushNotificationConfigRequestOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/CreateTaskPushNotificationConfigRequestOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/CreateTaskPushNotificationConfigRequestOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/DataPart.java b/spec-grpc/src/main/java/io/a2a/grpc/DataPart.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/DataPart.java rename to spec-grpc/src/main/java/io/a2a/grpc/DataPart.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/DataPartOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/DataPartOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/DataPartOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/DataPartOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/DeleteTaskPushNotificationConfigRequest.java b/spec-grpc/src/main/java/io/a2a/grpc/DeleteTaskPushNotificationConfigRequest.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/DeleteTaskPushNotificationConfigRequest.java rename to spec-grpc/src/main/java/io/a2a/grpc/DeleteTaskPushNotificationConfigRequest.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/DeleteTaskPushNotificationConfigRequestOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/DeleteTaskPushNotificationConfigRequestOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/DeleteTaskPushNotificationConfigRequestOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/DeleteTaskPushNotificationConfigRequestOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/FilePart.java b/spec-grpc/src/main/java/io/a2a/grpc/FilePart.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/FilePart.java rename to spec-grpc/src/main/java/io/a2a/grpc/FilePart.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/FilePartOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/FilePartOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/FilePartOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/FilePartOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/GetAgentCardRequest.java b/spec-grpc/src/main/java/io/a2a/grpc/GetAgentCardRequest.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/GetAgentCardRequest.java rename to spec-grpc/src/main/java/io/a2a/grpc/GetAgentCardRequest.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/GetAgentCardRequestOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/GetAgentCardRequestOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/GetAgentCardRequestOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/GetAgentCardRequestOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/GetTaskPushNotificationConfigRequest.java b/spec-grpc/src/main/java/io/a2a/grpc/GetTaskPushNotificationConfigRequest.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/GetTaskPushNotificationConfigRequest.java rename to spec-grpc/src/main/java/io/a2a/grpc/GetTaskPushNotificationConfigRequest.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/GetTaskPushNotificationConfigRequestOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/GetTaskPushNotificationConfigRequestOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/GetTaskPushNotificationConfigRequestOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/GetTaskPushNotificationConfigRequestOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/GetTaskRequest.java b/spec-grpc/src/main/java/io/a2a/grpc/GetTaskRequest.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/GetTaskRequest.java rename to spec-grpc/src/main/java/io/a2a/grpc/GetTaskRequest.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/GetTaskRequestOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/GetTaskRequestOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/GetTaskRequestOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/GetTaskRequestOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/HTTPAuthSecurityScheme.java b/spec-grpc/src/main/java/io/a2a/grpc/HTTPAuthSecurityScheme.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/HTTPAuthSecurityScheme.java rename to spec-grpc/src/main/java/io/a2a/grpc/HTTPAuthSecurityScheme.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/HTTPAuthSecuritySchemeOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/HTTPAuthSecuritySchemeOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/HTTPAuthSecuritySchemeOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/HTTPAuthSecuritySchemeOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/ImplicitOAuthFlow.java b/spec-grpc/src/main/java/io/a2a/grpc/ImplicitOAuthFlow.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/ImplicitOAuthFlow.java rename to spec-grpc/src/main/java/io/a2a/grpc/ImplicitOAuthFlow.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/ImplicitOAuthFlowOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/ImplicitOAuthFlowOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/ImplicitOAuthFlowOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/ImplicitOAuthFlowOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigRequest.java b/spec-grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigRequest.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigRequest.java rename to spec-grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigRequest.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigRequestOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigRequestOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigRequestOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigRequestOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigResponse.java b/spec-grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigResponse.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigResponse.java rename to spec-grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigResponse.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigResponseOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigResponseOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigResponseOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/ListTaskPushNotificationConfigResponseOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/Message.java b/spec-grpc/src/main/java/io/a2a/grpc/Message.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/Message.java rename to spec-grpc/src/main/java/io/a2a/grpc/Message.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/MessageOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/MessageOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/MessageOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/MessageOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/OAuth2SecurityScheme.java b/spec-grpc/src/main/java/io/a2a/grpc/OAuth2SecurityScheme.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/OAuth2SecurityScheme.java rename to spec-grpc/src/main/java/io/a2a/grpc/OAuth2SecurityScheme.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/OAuth2SecuritySchemeOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/OAuth2SecuritySchemeOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/OAuth2SecuritySchemeOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/OAuth2SecuritySchemeOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/OAuthFlows.java b/spec-grpc/src/main/java/io/a2a/grpc/OAuthFlows.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/OAuthFlows.java rename to spec-grpc/src/main/java/io/a2a/grpc/OAuthFlows.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/OAuthFlowsOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/OAuthFlowsOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/OAuthFlowsOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/OAuthFlowsOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/OpenIdConnectSecurityScheme.java b/spec-grpc/src/main/java/io/a2a/grpc/OpenIdConnectSecurityScheme.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/OpenIdConnectSecurityScheme.java rename to spec-grpc/src/main/java/io/a2a/grpc/OpenIdConnectSecurityScheme.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/OpenIdConnectSecuritySchemeOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/OpenIdConnectSecuritySchemeOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/OpenIdConnectSecuritySchemeOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/OpenIdConnectSecuritySchemeOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/Part.java b/spec-grpc/src/main/java/io/a2a/grpc/Part.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/Part.java rename to spec-grpc/src/main/java/io/a2a/grpc/Part.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/PartOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/PartOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/PartOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/PartOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/PasswordOAuthFlow.java b/spec-grpc/src/main/java/io/a2a/grpc/PasswordOAuthFlow.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/PasswordOAuthFlow.java rename to spec-grpc/src/main/java/io/a2a/grpc/PasswordOAuthFlow.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/PasswordOAuthFlowOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/PasswordOAuthFlowOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/PasswordOAuthFlowOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/PasswordOAuthFlowOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/PushNotificationConfig.java b/spec-grpc/src/main/java/io/a2a/grpc/PushNotificationConfig.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/PushNotificationConfig.java rename to spec-grpc/src/main/java/io/a2a/grpc/PushNotificationConfig.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/PushNotificationConfigOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/PushNotificationConfigOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/PushNotificationConfigOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/PushNotificationConfigOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/Role.java b/spec-grpc/src/main/java/io/a2a/grpc/Role.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/Role.java rename to spec-grpc/src/main/java/io/a2a/grpc/Role.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/Security.java b/spec-grpc/src/main/java/io/a2a/grpc/Security.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/Security.java rename to spec-grpc/src/main/java/io/a2a/grpc/Security.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/SecurityOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/SecurityOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/SecurityOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/SecurityOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/SecurityScheme.java b/spec-grpc/src/main/java/io/a2a/grpc/SecurityScheme.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/SecurityScheme.java rename to spec-grpc/src/main/java/io/a2a/grpc/SecurityScheme.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/SecuritySchemeOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/SecuritySchemeOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/SecuritySchemeOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/SecuritySchemeOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/SendMessageConfiguration.java b/spec-grpc/src/main/java/io/a2a/grpc/SendMessageConfiguration.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/SendMessageConfiguration.java rename to spec-grpc/src/main/java/io/a2a/grpc/SendMessageConfiguration.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/SendMessageConfigurationOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/SendMessageConfigurationOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/SendMessageConfigurationOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/SendMessageConfigurationOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/SendMessageRequest.java b/spec-grpc/src/main/java/io/a2a/grpc/SendMessageRequest.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/SendMessageRequest.java rename to spec-grpc/src/main/java/io/a2a/grpc/SendMessageRequest.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/SendMessageRequestOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/SendMessageRequestOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/SendMessageRequestOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/SendMessageRequestOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/SendMessageResponse.java b/spec-grpc/src/main/java/io/a2a/grpc/SendMessageResponse.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/SendMessageResponse.java rename to spec-grpc/src/main/java/io/a2a/grpc/SendMessageResponse.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/SendMessageResponseOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/SendMessageResponseOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/SendMessageResponseOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/SendMessageResponseOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/StreamResponse.java b/spec-grpc/src/main/java/io/a2a/grpc/StreamResponse.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/StreamResponse.java rename to spec-grpc/src/main/java/io/a2a/grpc/StreamResponse.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/StreamResponseOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/StreamResponseOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/StreamResponseOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/StreamResponseOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/StringList.java b/spec-grpc/src/main/java/io/a2a/grpc/StringList.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/StringList.java rename to spec-grpc/src/main/java/io/a2a/grpc/StringList.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/StringListOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/StringListOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/StringListOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/StringListOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/Task.java b/spec-grpc/src/main/java/io/a2a/grpc/Task.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/Task.java rename to spec-grpc/src/main/java/io/a2a/grpc/Task.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/TaskArtifactUpdateEvent.java b/spec-grpc/src/main/java/io/a2a/grpc/TaskArtifactUpdateEvent.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/TaskArtifactUpdateEvent.java rename to spec-grpc/src/main/java/io/a2a/grpc/TaskArtifactUpdateEvent.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/TaskArtifactUpdateEventOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/TaskArtifactUpdateEventOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/TaskArtifactUpdateEventOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/TaskArtifactUpdateEventOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/TaskOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/TaskOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/TaskOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/TaskOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/TaskPushNotificationConfig.java b/spec-grpc/src/main/java/io/a2a/grpc/TaskPushNotificationConfig.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/TaskPushNotificationConfig.java rename to spec-grpc/src/main/java/io/a2a/grpc/TaskPushNotificationConfig.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/TaskPushNotificationConfigOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/TaskPushNotificationConfigOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/TaskPushNotificationConfigOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/TaskPushNotificationConfigOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/TaskState.java b/spec-grpc/src/main/java/io/a2a/grpc/TaskState.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/TaskState.java rename to spec-grpc/src/main/java/io/a2a/grpc/TaskState.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/TaskStatus.java b/spec-grpc/src/main/java/io/a2a/grpc/TaskStatus.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/TaskStatus.java rename to spec-grpc/src/main/java/io/a2a/grpc/TaskStatus.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/TaskStatusOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/TaskStatusOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/TaskStatusOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/TaskStatusOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/TaskStatusUpdateEvent.java b/spec-grpc/src/main/java/io/a2a/grpc/TaskStatusUpdateEvent.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/TaskStatusUpdateEvent.java rename to spec-grpc/src/main/java/io/a2a/grpc/TaskStatusUpdateEvent.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/TaskStatusUpdateEventOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/TaskStatusUpdateEventOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/TaskStatusUpdateEventOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/TaskStatusUpdateEventOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/TaskSubscriptionRequest.java b/spec-grpc/src/main/java/io/a2a/grpc/TaskSubscriptionRequest.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/TaskSubscriptionRequest.java rename to spec-grpc/src/main/java/io/a2a/grpc/TaskSubscriptionRequest.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/TaskSubscriptionRequestOrBuilder.java b/spec-grpc/src/main/java/io/a2a/grpc/TaskSubscriptionRequestOrBuilder.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/TaskSubscriptionRequestOrBuilder.java rename to spec-grpc/src/main/java/io/a2a/grpc/TaskSubscriptionRequestOrBuilder.java diff --git a/transport/grpc/src/main/java/io/a2a/grpc/utils/ProtoUtils.java b/spec-grpc/src/main/java/io/a2a/grpc/utils/ProtoUtils.java similarity index 100% rename from transport/grpc/src/main/java/io/a2a/grpc/utils/ProtoUtils.java rename to spec-grpc/src/main/java/io/a2a/grpc/utils/ProtoUtils.java diff --git a/spec-grpc/src/main/resources/META-INF/beans.xml b/spec-grpc/src/main/resources/META-INF/beans.xml new file mode 100644 index 000000000..be7990041 --- /dev/null +++ b/spec-grpc/src/main/resources/META-INF/beans.xml @@ -0,0 +1,6 @@ + + + \ No newline at end of file diff --git a/transport/grpc/pom.xml b/transport/grpc/pom.xml index 8061efb79..e078a381d 100644 --- a/transport/grpc/pom.xml +++ b/transport/grpc/pom.xml @@ -20,7 +20,19 @@ io.github.a2asdk - a2a-java-sdk-spec + a2a-java-sdk-server-common + ${project.version} + + + ${project.groupId} + a2a-java-sdk-server-common + ${project.version} + test-jar + test + + + io.github.a2asdk + a2a-java-sdk-spec-grpc ${project.version} @@ -35,6 +47,45 @@ io.grpc grpc-stub + + jakarta.enterprise + jakarta.enterprise.cdi-api + + + jakarta.inject + jakarta.inject-api + + + ch.qos.logback + logback-classic + test + + + jakarta.ws.rs + jakarta.ws.rs-api + test + + + ch.qos.logback + logback-classic + test + + + org.junit.jupiter + junit-jupiter-api + test + + + org.mockito + mockito-core + test + + + io.grpc + grpc-testing + test + + diff --git a/sdk-server-common/src/main/java/io/a2a/server/requesthandlers/GrpcHandler.java b/transport/grpc/src/main/java/io/a2a/grpc/handler/GrpcHandler.java similarity index 99% rename from sdk-server-common/src/main/java/io/a2a/server/requesthandlers/GrpcHandler.java rename to transport/grpc/src/main/java/io/a2a/grpc/handler/GrpcHandler.java index e514feae7..68311009f 100644 --- a/sdk-server-common/src/main/java/io/a2a/server/requesthandlers/GrpcHandler.java +++ b/transport/grpc/src/main/java/io/a2a/grpc/handler/GrpcHandler.java @@ -1,4 +1,4 @@ -package io.a2a.server.requesthandlers; +package io.a2a.grpc.handler; import static io.a2a.grpc.utils.ProtoUtils.FromProto; import static io.a2a.grpc.utils.ProtoUtils.ToProto; @@ -18,6 +18,8 @@ import io.a2a.server.ServerCallContext; import io.a2a.server.auth.UnauthenticatedUser; import io.a2a.server.auth.User; +import io.a2a.server.requesthandlers.CallContextFactory; +import io.a2a.server.requesthandlers.RequestHandler; import io.a2a.spec.AgentCard; import io.a2a.spec.ContentTypeNotSupportedError; import io.a2a.spec.DeleteTaskPushNotificationConfigParams; diff --git a/sdk-server-common/src/test/java/io/a2a/server/requesthandlers/GrpcHandlerTest.java b/transport/grpc/src/test/java/io/a2a/grpc/handler/GrpcHandlerTest.java similarity index 68% rename from sdk-server-common/src/test/java/io/a2a/server/requesthandlers/GrpcHandlerTest.java rename to transport/grpc/src/test/java/io/a2a/grpc/handler/GrpcHandlerTest.java index 87a1a9bc8..75956f8b8 100644 --- a/sdk-server-common/src/test/java/io/a2a/server/requesthandlers/GrpcHandlerTest.java +++ b/transport/grpc/src/test/java/io/a2a/grpc/handler/GrpcHandlerTest.java @@ -1,4 +1,4 @@ -package io.a2a.server.requesthandlers; +package io.a2a.grpc.handler; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; @@ -36,6 +36,8 @@ import io.a2a.grpc.TaskSubscriptionRequest; import io.a2a.server.ServerCallContext; import io.a2a.server.events.EventConsumer; +import io.a2a.server.requesthandlers.AbstractA2ARequestHandlerTest; +import io.a2a.server.requesthandlers.DefaultRequestHandler; import io.a2a.server.tasks.TaskUpdater; import io.a2a.spec.AgentCard; import io.a2a.spec.Artifact; @@ -60,42 +62,42 @@ public class GrpcHandlerTest extends AbstractA2ARequestHandlerTest { private static final Message GRPC_MESSAGE = Message.newBuilder() - .setTaskId(MINIMAL_TASK.getId()) - .setContextId(MINIMAL_TASK.getContextId()) - .setMessageId(MESSAGE.getMessageId()) + .setTaskId(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId()) + .setContextId(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getContextId()) + .setMessageId(AbstractA2ARequestHandlerTest.MESSAGE.getMessageId()) .setRole(Role.ROLE_AGENT) - .addContent(Part.newBuilder().setText(((TextPart)MESSAGE.getParts().get(0)).getText()).build()) + .addContent(Part.newBuilder().setText(((TextPart) AbstractA2ARequestHandlerTest.MESSAGE.getParts().get(0)).getText()).build()) .setMetadata(Struct.newBuilder().build()) .build(); @Test public void testOnGetTaskSuccess() throws Exception { - GrpcHandler handler = new GrpcHandler(CARD, requestHandler); - taskStore.save(MINIMAL_TASK); + GrpcHandler handler = new GrpcHandler(AbstractA2ARequestHandlerTest.CARD, requestHandler); + taskStore.save(AbstractA2ARequestHandlerTest.MINIMAL_TASK); GetTaskRequest request = GetTaskRequest.newBuilder() - .setName("tasks/" + MINIMAL_TASK.getId()) + .setName("tasks/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId()) .build(); StreamRecorder streamRecorder = StreamRecorder.create(); handler.getTask(request, streamRecorder); streamRecorder.awaitCompletion(5, TimeUnit.SECONDS); - assertNull(streamRecorder.getError()); + Assertions.assertNull(streamRecorder.getError()); List result = streamRecorder.getValues(); - assertNotNull(result); - assertEquals(1, result.size()); + Assertions.assertNotNull(result); + Assertions.assertEquals(1, result.size()); Task task = result.get(0); - assertEquals(MINIMAL_TASK.getId(), task.getId()); - assertEquals(MINIMAL_TASK.getContextId(), task.getContextId()); + assertEquals(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId(), task.getId()); + assertEquals(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getContextId(), task.getContextId()); assertEquals(TaskState.TASK_STATE_SUBMITTED, task.getStatus().getState()); } @Test public void testOnGetTaskNotFound() throws Exception { - GrpcHandler handler = new GrpcHandler(CARD, requestHandler); + GrpcHandler handler = new GrpcHandler(AbstractA2ARequestHandlerTest.CARD, requestHandler); GetTaskRequest request = GetTaskRequest.newBuilder() - .setName("tasks/" + MINIMAL_TASK.getId()) + .setName("tasks/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId()) .build(); StreamRecorder streamRecorder = StreamRecorder.create(); @@ -107,8 +109,8 @@ public void testOnGetTaskNotFound() throws Exception { @Test public void testOnCancelTaskSuccess() throws Exception { - GrpcHandler handler = new GrpcHandler(CARD, requestHandler); - taskStore.save(MINIMAL_TASK); + GrpcHandler handler = new GrpcHandler(AbstractA2ARequestHandlerTest.CARD, requestHandler); + taskStore.save(AbstractA2ARequestHandlerTest.MINIMAL_TASK); agentExecutorCancel = (context, eventQueue) -> { // We need to cancel the task or the EventConsumer never finds a 'final' event. @@ -120,33 +122,33 @@ public void testOnCancelTaskSuccess() throws Exception { }; CancelTaskRequest request = CancelTaskRequest.newBuilder() - .setName("tasks/" + MINIMAL_TASK.getId()) + .setName("tasks/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId()) .build(); StreamRecorder streamRecorder = StreamRecorder.create(); handler.cancelTask(request, streamRecorder); streamRecorder.awaitCompletion(5, TimeUnit.SECONDS); - assertNull(streamRecorder.getError()); + Assertions.assertNull(streamRecorder.getError()); List result = streamRecorder.getValues(); - assertNotNull(result); - assertEquals(1, result.size()); + Assertions.assertNotNull(result); + Assertions.assertEquals(1, result.size()); Task task = result.get(0); - assertEquals(MINIMAL_TASK.getId(), task.getId()); - assertEquals(MINIMAL_TASK.getContextId(), task.getContextId()); + assertEquals(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId(), task.getId()); + assertEquals(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getContextId(), task.getContextId()); assertEquals(TaskState.TASK_STATE_CANCELLED, task.getStatus().getState()); } @Test public void testOnCancelTaskNotSupported() throws Exception { - GrpcHandler handler = new GrpcHandler(CARD, requestHandler); - taskStore.save(MINIMAL_TASK); + GrpcHandler handler = new GrpcHandler(AbstractA2ARequestHandlerTest.CARD, requestHandler); + taskStore.save(AbstractA2ARequestHandlerTest.MINIMAL_TASK); agentExecutorCancel = (context, eventQueue) -> { throw new UnsupportedOperationError(); }; CancelTaskRequest request = CancelTaskRequest.newBuilder() - .setName("tasks/" + MINIMAL_TASK.getId()) + .setName("tasks/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId()) .build(); StreamRecorder streamRecorder = StreamRecorder.create(); handler.cancelTask(request, streamRecorder); @@ -157,9 +159,9 @@ public void testOnCancelTaskNotSupported() throws Exception { @Test public void testOnCancelTaskNotFound() throws Exception { - GrpcHandler handler = new GrpcHandler(CARD, requestHandler); + GrpcHandler handler = new GrpcHandler(AbstractA2ARequestHandlerTest.CARD, requestHandler); CancelTaskRequest request = CancelTaskRequest.newBuilder() - .setName("tasks/" + MINIMAL_TASK.getId()) + .setName("tasks/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId()) .build(); StreamRecorder streamRecorder = StreamRecorder.create(); handler.cancelTask(request, streamRecorder); @@ -170,39 +172,39 @@ public void testOnCancelTaskNotFound() throws Exception { @Test public void testOnMessageNewMessageSuccess() throws Exception { - GrpcHandler handler = new GrpcHandler(CARD, requestHandler); + GrpcHandler handler = new GrpcHandler(AbstractA2ARequestHandlerTest.CARD, requestHandler); agentExecutorExecute = (context, eventQueue) -> { eventQueue.enqueueEvent(context.getMessage()); }; StreamRecorder streamRecorder = sendMessageRequest(handler); - assertNull(streamRecorder.getError()); + Assertions.assertNull(streamRecorder.getError()); List result = streamRecorder.getValues(); - assertNotNull(result); - assertEquals(1, result.size()); + Assertions.assertNotNull(result); + Assertions.assertEquals(1, result.size()); SendMessageResponse response = result.get(0); assertEquals(GRPC_MESSAGE, response.getMsg()); } @Test public void testOnMessageNewMessageWithExistingTaskSuccess() throws Exception { - GrpcHandler handler = new GrpcHandler(CARD, requestHandler); - taskStore.save(MINIMAL_TASK); + GrpcHandler handler = new GrpcHandler(AbstractA2ARequestHandlerTest.CARD, requestHandler); + taskStore.save(AbstractA2ARequestHandlerTest.MINIMAL_TASK); agentExecutorExecute = (context, eventQueue) -> { eventQueue.enqueueEvent(context.getMessage()); }; StreamRecorder streamRecorder = sendMessageRequest(handler); - assertNull(streamRecorder.getError()); + Assertions.assertNull(streamRecorder.getError()); List result = streamRecorder.getValues(); - assertNotNull(result); - assertEquals(1, result.size()); + Assertions.assertNotNull(result); + Assertions.assertEquals(1, result.size()); SendMessageResponse response = result.get(0); assertEquals(GRPC_MESSAGE, response.getMsg()); } @Test public void testOnMessageError() throws Exception { - GrpcHandler handler = new GrpcHandler(CARD, requestHandler); + GrpcHandler handler = new GrpcHandler(AbstractA2ARequestHandlerTest.CARD, requestHandler); agentExecutorExecute = (context, eventQueue) -> { eventQueue.enqueueEvent(new UnsupportedOperationError()); }; @@ -212,56 +214,56 @@ public void testOnMessageError() throws Exception { @Test public void testSetPushNotificationConfigSuccess() throws Exception { - GrpcHandler handler = new GrpcHandler(CARD, requestHandler); - String NAME = "tasks/" + MINIMAL_TASK.getId() + "/pushNotificationConfigs/" + "config456"; + GrpcHandler handler = new GrpcHandler(AbstractA2ARequestHandlerTest.CARD, requestHandler); + String NAME = "tasks/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId() + "/pushNotificationConfigs/" + "config456"; StreamRecorder streamRecorder = createTaskPushNotificationConfigRequest(handler, NAME); - assertNull(streamRecorder.getError()); + Assertions.assertNull(streamRecorder.getError()); List result = streamRecorder.getValues(); - assertNotNull(result); - assertEquals(1, result.size()); + Assertions.assertNotNull(result); + Assertions.assertEquals(1, result.size()); TaskPushNotificationConfig response = result.get(0); assertEquals(NAME, response.getName()); PushNotificationConfig responseConfig = response.getPushNotificationConfig(); assertEquals("config456", responseConfig.getId()); assertEquals("http://example.com", responseConfig.getUrl()); assertEquals(AuthenticationInfo.getDefaultInstance(), responseConfig.getAuthentication()); - assertTrue(responseConfig.getToken().isEmpty()); + Assertions.assertTrue(responseConfig.getToken().isEmpty()); } @Test public void testGetPushNotificationConfigSuccess() throws Exception { - GrpcHandler handler = new GrpcHandler(CARD, requestHandler); + GrpcHandler handler = new GrpcHandler(AbstractA2ARequestHandlerTest.CARD, requestHandler); agentExecutorExecute = (context, eventQueue) -> { eventQueue.enqueueEvent(context.getTask() != null ? context.getTask() : context.getMessage()); }; - String NAME = "tasks/" + MINIMAL_TASK.getId() + "/pushNotificationConfigs/" + "config456"; + String NAME = "tasks/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId() + "/pushNotificationConfigs/" + "config456"; // first set the task push notification config StreamRecorder streamRecorder = createTaskPushNotificationConfigRequest(handler, NAME); - assertNull(streamRecorder.getError()); + Assertions.assertNull(streamRecorder.getError()); // then get the task push notification config streamRecorder = getTaskPushNotificationConfigRequest(handler, NAME); - assertNull(streamRecorder.getError()); + Assertions.assertNull(streamRecorder.getError()); List result = streamRecorder.getValues(); - assertNotNull(result); - assertEquals(1, result.size()); + Assertions.assertNotNull(result); + Assertions.assertEquals(1, result.size()); TaskPushNotificationConfig response = result.get(0); assertEquals(NAME, response.getName()); PushNotificationConfig responseConfig = response.getPushNotificationConfig(); assertEquals("config456", responseConfig.getId()); assertEquals("http://example.com", responseConfig.getUrl()); assertEquals(AuthenticationInfo.getDefaultInstance(), responseConfig.getAuthentication()); - assertTrue(responseConfig.getToken().isEmpty()); + Assertions.assertTrue(responseConfig.getToken().isEmpty()); } @Test public void testPushNotificationsNotSupportedError() throws Exception { - AgentCard card = createAgentCard(true, false, true); + AgentCard card = AbstractA2ARequestHandlerTest.createAgentCard(true, false, true); GrpcHandler handler = new GrpcHandler(card, requestHandler); - String NAME = "tasks/" + MINIMAL_TASK.getId() + "/pushNotificationConfigs/" + MINIMAL_TASK.getId(); + String NAME = "tasks/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId() + "/pushNotificationConfigs/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId(); StreamRecorder streamRecorder = createTaskPushNotificationConfigRequest(handler, NAME); assertGrpcError(streamRecorder, Status.Code.UNIMPLEMENTED); } @@ -271,9 +273,9 @@ public void testOnGetPushNotificationNoPushNotifierConfig() throws Exception { // Create request handler without a push notifier DefaultRequestHandler requestHandler = new DefaultRequestHandler(executor, taskStore, queueManager, null, null, internalExecutor); - AgentCard card = createAgentCard(false, true, false); + AgentCard card = AbstractA2ARequestHandlerTest.createAgentCard(false, true, false); GrpcHandler handler = new GrpcHandler(card, requestHandler); - String NAME = "tasks/" + MINIMAL_TASK.getId() + "/pushNotificationConfigs/" + MINIMAL_TASK.getId(); + String NAME = "tasks/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId() + "/pushNotificationConfigs/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId(); StreamRecorder streamRecorder = getTaskPushNotificationConfigRequest(handler, NAME); assertGrpcError(streamRecorder, Status.Code.UNIMPLEMENTED); } @@ -283,39 +285,39 @@ public void testOnSetPushNotificationNoPushNotifierConfig() throws Exception { // Create request handler without a push notifier DefaultRequestHandler requestHandler = new DefaultRequestHandler(executor, taskStore, queueManager, null, null, internalExecutor); - AgentCard card = createAgentCard(false, true, false); + AgentCard card = AbstractA2ARequestHandlerTest.createAgentCard(false, true, false); GrpcHandler handler = new GrpcHandler(card, requestHandler); - String NAME = "tasks/" + MINIMAL_TASK.getId() + "/pushNotificationConfigs/" + MINIMAL_TASK.getId(); + String NAME = "tasks/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId() + "/pushNotificationConfigs/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId(); StreamRecorder streamRecorder = createTaskPushNotificationConfigRequest(handler, NAME); assertGrpcError(streamRecorder, Status.Code.UNIMPLEMENTED); } @Test public void testOnMessageStreamNewMessageSuccess() throws Exception { - GrpcHandler handler = new GrpcHandler(CARD, requestHandler); + GrpcHandler handler = new GrpcHandler(AbstractA2ARequestHandlerTest.CARD, requestHandler); agentExecutorExecute = (context, eventQueue) -> { eventQueue.enqueueEvent(context.getTask() != null ? context.getTask() : context.getMessage()); }; StreamRecorder streamRecorder = sendStreamingMessageRequest(handler); - assertNull(streamRecorder.getError()); + Assertions.assertNull(streamRecorder.getError()); List result = streamRecorder.getValues(); - assertNotNull(result); - assertEquals(1, result.size()); + Assertions.assertNotNull(result); + Assertions.assertEquals(1, result.size()); StreamResponse response = result.get(0); - assertTrue(response.hasMsg()); + Assertions.assertTrue(response.hasMsg()); Message message = response.getMsg(); - assertEquals(GRPC_MESSAGE, message); + Assertions.assertEquals(GRPC_MESSAGE, message); } @Test public void testOnMessageStreamNewMessageExistingTaskSuccess() throws Exception { - GrpcHandler handler = new GrpcHandler(CARD, requestHandler); + GrpcHandler handler = new GrpcHandler(AbstractA2ARequestHandlerTest.CARD, requestHandler); agentExecutorExecute = (context, eventQueue) -> { eventQueue.enqueueEvent(context.getTask() != null ? context.getTask() : context.getMessage()); }; - io.a2a.spec.Task task = new io.a2a.spec.Task.Builder(MINIMAL_TASK) + io.a2a.spec.Task task = new io.a2a.spec.Task.Builder(AbstractA2ARequestHandlerTest.MINIMAL_TASK) .history(new ArrayList<>()) .build(); taskStore.save(task); @@ -342,15 +344,15 @@ public void onCompleted() { }; sendStreamingMessageRequest(handler, streamObserver); Assertions.assertTrue(latch.await(1, TimeUnit.SECONDS)); - assertTrue(errors.isEmpty()); - assertEquals(1, results.size()); + Assertions.assertTrue(errors.isEmpty()); + Assertions.assertEquals(1, results.size()); StreamResponse response = results.get(0); - assertTrue(response.hasTask()); + Assertions.assertTrue(response.hasTask()); Task taskResponse = response.getTask(); Task expected = Task.newBuilder() - .setId(MINIMAL_TASK.getId()) - .setContextId(MINIMAL_TASK.getContextId()) + .setId(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId()) + .setContextId(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getContextId()) .addAllHistory(List.of(GRPC_MESSAGE)) .setStatus(TaskStatus.newBuilder().setStateValue(TaskState.TASK_STATE_SUBMITTED_VALUE)) .build(); @@ -362,9 +364,9 @@ public void onCompleted() { @Test public void testOnMessageStreamNewMessageExistingTaskSuccessMocks() throws Exception { - GrpcHandler handler = new GrpcHandler(CARD, requestHandler); + GrpcHandler handler = new GrpcHandler(AbstractA2ARequestHandlerTest.CARD, requestHandler); - io.a2a.spec.Task task = new io.a2a.spec.Task.Builder(MINIMAL_TASK) + io.a2a.spec.Task task = new io.a2a.spec.Task.Builder(AbstractA2ARequestHandlerTest.MINIMAL_TASK) .history(new ArrayList<>()) .build(); taskStore.save(task); @@ -392,18 +394,18 @@ public void testOnMessageStreamNewMessageExistingTaskSuccessMocks() throws Excep Mockito.doReturn(ZeroPublisher.fromIterable(events)).when(mock).consumeAll();})){ streamRecorder = sendStreamingMessageRequest(handler); } - assertNull(streamRecorder.getError()); + Assertions.assertNull(streamRecorder.getError()); List result = streamRecorder.getValues(); - assertEquals(2, result.size()); + Assertions.assertEquals(2, result.size()); StreamResponse first = result.get(0); - assertTrue(first.hasArtifactUpdate()); + Assertions.assertTrue(first.hasArtifactUpdate()); io.a2a.grpc.TaskArtifactUpdateEvent taskArtifactUpdateEvent = first.getArtifactUpdate(); assertEquals(task.getId(), taskArtifactUpdateEvent.getTaskId()); assertEquals(task.getContextId(), taskArtifactUpdateEvent.getContextId()); assertEquals("11", taskArtifactUpdateEvent.getArtifact().getArtifactId()); assertEquals("text", taskArtifactUpdateEvent.getArtifact().getParts(0).getText()); StreamResponse second = result.get(1); - assertTrue(second.hasStatusUpdate()); + Assertions.assertTrue(second.hasStatusUpdate()); io.a2a.grpc.TaskStatusUpdateEvent taskStatusUpdateEvent = second.getStatusUpdate(); assertEquals(task.getId(), taskStatusUpdateEvent.getTaskId()); assertEquals(task.getContextId(), taskStatusUpdateEvent.getContextId()); @@ -412,20 +414,20 @@ public void testOnMessageStreamNewMessageExistingTaskSuccessMocks() throws Excep @Test public void testOnMessageStreamNewMessageSendPushNotificationSuccess() throws Exception { - GrpcHandler handler = new GrpcHandler(CARD, requestHandler); + GrpcHandler handler = new GrpcHandler(AbstractA2ARequestHandlerTest.CARD, requestHandler); List events = List.of( - MINIMAL_TASK, + AbstractA2ARequestHandlerTest.MINIMAL_TASK, new TaskArtifactUpdateEvent.Builder() - .taskId(MINIMAL_TASK.getId()) - .contextId(MINIMAL_TASK.getContextId()) + .taskId(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId()) + .contextId(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getContextId()) .artifact(new Artifact.Builder() .artifactId("11") .parts(new TextPart("text")) .build()) .build(), new TaskStatusUpdateEvent.Builder() - .taskId(MINIMAL_TASK.getId()) - .contextId(MINIMAL_TASK.getContextId()) + .taskId(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId()) + .contextId(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getContextId()) .status(new io.a2a.spec.TaskStatus(io.a2a.spec.TaskState.COMPLETED)) .build()); @@ -437,9 +439,9 @@ public void testOnMessageStreamNewMessageSendPushNotificationSuccess() throws Ex } }; - String NAME = "tasks/" + MINIMAL_TASK.getId() + "/pushNotificationConfigs/" + MINIMAL_TASK.getId(); + String NAME = "tasks/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId() + "/pushNotificationConfigs/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId(); StreamRecorder pushStreamRecorder = createTaskPushNotificationConfigRequest(handler, NAME); - assertNull(pushStreamRecorder.getError()); + Assertions.assertNull(pushStreamRecorder.getError()); List results = new ArrayList<>(); List errors = new ArrayList<>(); @@ -462,39 +464,39 @@ public void onCompleted() { } }; sendStreamingMessageRequest(handler, streamObserver); - assertTrue(latch.await(5, TimeUnit.SECONDS)); - assertTrue(errors.isEmpty()); - assertEquals(3, results.size()); - assertEquals(3, httpClient.tasks.size()); + Assertions.assertTrue(latch.await(5, TimeUnit.SECONDS)); + Assertions.assertTrue(errors.isEmpty()); + Assertions.assertEquals(3, results.size()); + Assertions.assertEquals(3, httpClient.tasks.size()); io.a2a.spec.Task curr = httpClient.tasks.get(0); - assertEquals(MINIMAL_TASK.getId(), curr.getId()); - assertEquals(MINIMAL_TASK.getContextId(), curr.getContextId()); - assertEquals(MINIMAL_TASK.getStatus().state(), curr.getStatus().state()); - assertEquals(0, curr.getArtifacts() == null ? 0 : curr.getArtifacts().size()); + Assertions.assertEquals(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId(), curr.getId()); + Assertions.assertEquals(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getContextId(), curr.getContextId()); + Assertions.assertEquals(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getStatus().state(), curr.getStatus().state()); + Assertions.assertEquals(0, curr.getArtifacts() == null ? 0 : curr.getArtifacts().size()); curr = httpClient.tasks.get(1); - assertEquals(MINIMAL_TASK.getId(), curr.getId()); - assertEquals(MINIMAL_TASK.getContextId(), curr.getContextId()); - assertEquals(MINIMAL_TASK.getStatus().state(), curr.getStatus().state()); - assertEquals(1, curr.getArtifacts().size()); - assertEquals(1, curr.getArtifacts().get(0).parts().size()); - assertEquals("text", ((TextPart)curr.getArtifacts().get(0).parts().get(0)).getText()); + Assertions.assertEquals(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId(), curr.getId()); + Assertions.assertEquals(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getContextId(), curr.getContextId()); + Assertions.assertEquals(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getStatus().state(), curr.getStatus().state()); + Assertions.assertEquals(1, curr.getArtifacts().size()); + Assertions.assertEquals(1, curr.getArtifacts().get(0).parts().size()); + Assertions.assertEquals("text", ((TextPart)curr.getArtifacts().get(0).parts().get(0)).getText()); curr = httpClient.tasks.get(2); - assertEquals(MINIMAL_TASK.getId(), curr.getId()); - assertEquals(MINIMAL_TASK.getContextId(), curr.getContextId()); - assertEquals(io.a2a.spec.TaskState.COMPLETED, curr.getStatus().state()); - assertEquals(1, curr.getArtifacts().size()); - assertEquals(1, curr.getArtifacts().get(0).parts().size()); - assertEquals("text", ((TextPart)curr.getArtifacts().get(0).parts().get(0)).getText()); + Assertions.assertEquals(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId(), curr.getId()); + Assertions.assertEquals(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getContextId(), curr.getContextId()); + Assertions.assertEquals(io.a2a.spec.TaskState.COMPLETED, curr.getStatus().state()); + Assertions.assertEquals(1, curr.getArtifacts().size()); + Assertions.assertEquals(1, curr.getArtifacts().get(0).parts().size()); + Assertions.assertEquals("text", ((TextPart)curr.getArtifacts().get(0).parts().get(0)).getText()); } @Test public void testOnResubscribeNoExistingTaskError() throws Exception { - GrpcHandler handler = new GrpcHandler(CARD, requestHandler); + GrpcHandler handler = new GrpcHandler(AbstractA2ARequestHandlerTest.CARD, requestHandler); TaskSubscriptionRequest request = TaskSubscriptionRequest.newBuilder() - .setName("tasks/" + MINIMAL_TASK.getId()) + .setName("tasks/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId()) .build(); StreamRecorder streamRecorder = StreamRecorder.create(); handler.taskSubscription(request, streamRecorder); @@ -504,9 +506,9 @@ public void testOnResubscribeNoExistingTaskError() throws Exception { @Test public void testOnResubscribeExistingTaskSuccess() throws Exception { - GrpcHandler handler = new GrpcHandler(CARD, requestHandler); - taskStore.save(MINIMAL_TASK); - queueManager.createOrTap(MINIMAL_TASK.getId()); + GrpcHandler handler = new GrpcHandler(AbstractA2ARequestHandlerTest.CARD, requestHandler); + taskStore.save(AbstractA2ARequestHandlerTest.MINIMAL_TASK); + queueManager.createOrTap(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId()); agentExecutorExecute = (context, eventQueue) -> { eventQueue.enqueueEvent(context.getMessage()); @@ -514,7 +516,7 @@ public void testOnResubscribeExistingTaskSuccess() throws Exception { StreamRecorder streamRecorder = StreamRecorder.create(); TaskSubscriptionRequest request = TaskSubscriptionRequest.newBuilder() - .setName("tasks/" + MINIMAL_TASK.getId()) + .setName("tasks/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId()) .build(); handler.taskSubscription(request, streamRecorder); @@ -525,42 +527,42 @@ public void testOnResubscribeExistingTaskSuccess() throws Exception { StreamRecorder messageRecorder = StreamRecorder.create(); handler.sendStreamingMessage(sendMessageRequest, messageRecorder); messageRecorder.awaitCompletion(5, TimeUnit.SECONDS); - assertNull(messageRecorder.getError()); + Assertions.assertNull(messageRecorder.getError()); streamRecorder.awaitCompletion(5, TimeUnit.SECONDS); List result = streamRecorder.getValues(); - assertNotNull(result); - assertEquals(1, result.size()); + Assertions.assertNotNull(result); + Assertions.assertEquals(1, result.size()); StreamResponse response = result.get(0); - assertTrue(response.hasMsg()); + Assertions.assertTrue(response.hasMsg()); assertEquals(GRPC_MESSAGE, response.getMsg()); - assertNull(streamRecorder.getError()); + Assertions.assertNull(streamRecorder.getError()); } @Test public void testOnResubscribeExistingTaskSuccessMocks() throws Exception { - GrpcHandler handler = new GrpcHandler(CARD, requestHandler); - taskStore.save(MINIMAL_TASK); - queueManager.createOrTap(MINIMAL_TASK.getId()); + GrpcHandler handler = new GrpcHandler(AbstractA2ARequestHandlerTest.CARD, requestHandler); + taskStore.save(AbstractA2ARequestHandlerTest.MINIMAL_TASK); + queueManager.createOrTap(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId()); List events = List.of( new TaskArtifactUpdateEvent.Builder() - .taskId(MINIMAL_TASK.getId()) - .contextId(MINIMAL_TASK.getContextId()) + .taskId(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId()) + .contextId(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getContextId()) .artifact(new Artifact.Builder() .artifactId("11") .parts(new TextPart("text")) .build()) .build(), new TaskStatusUpdateEvent.Builder() - .taskId(MINIMAL_TASK.getId()) - .contextId(MINIMAL_TASK.getContextId()) + .taskId(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId()) + .contextId(AbstractA2ARequestHandlerTest.MINIMAL_TASK.getContextId()) .status(new io.a2a.spec.TaskStatus(io.a2a.spec.TaskState.WORKING)) .build()); StreamRecorder streamRecorder = StreamRecorder.create(); TaskSubscriptionRequest request = TaskSubscriptionRequest.newBuilder() - .setName("tasks/" + MINIMAL_TASK.getId()) + .setName("tasks/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId()) .build(); try (MockedConstruction mocked = Mockito.mockConstruction( EventConsumer.class, @@ -570,20 +572,20 @@ public void testOnResubscribeExistingTaskSuccessMocks() throws Exception { streamRecorder.awaitCompletion(5, TimeUnit.SECONDS); } List result = streamRecorder.getValues(); - assertEquals(events.size(), result.size()); + Assertions.assertEquals(events.size(), result.size()); StreamResponse first = result.get(0); - assertTrue(first.hasArtifactUpdate()); + Assertions.assertTrue(first.hasArtifactUpdate()); io.a2a.grpc.TaskArtifactUpdateEvent event = first.getArtifactUpdate(); assertEquals("11", event.getArtifact().getArtifactId()); assertEquals("text", (event.getArtifact().getParts(0)).getText()); StreamResponse second = result.get(1); - assertTrue(second.hasStatusUpdate()); + Assertions.assertTrue(second.hasStatusUpdate()); assertEquals(TaskState.TASK_STATE_WORKING, second.getStatusUpdate().getStatus().getState()); } @Test public void testStreamingNotSupportedError() throws Exception { - AgentCard card = createAgentCard(false, true, true); + AgentCard card = AbstractA2ARequestHandlerTest.createAgentCard(false, true, true); GrpcHandler handler = new GrpcHandler(card, requestHandler); StreamRecorder streamRecorder = sendStreamingMessageRequest(handler); assertGrpcError(streamRecorder, Status.Code.INVALID_ARGUMENT); @@ -592,10 +594,10 @@ public void testStreamingNotSupportedError() throws Exception { @Test public void testStreamingNotSupportedErrorOnResubscribeToTask() throws Exception { // This test does not exist in the Python implementation - AgentCard card = createAgentCard(false, true, true); + AgentCard card = AbstractA2ARequestHandlerTest.createAgentCard(false, true, true); GrpcHandler handler = new GrpcHandler(card, requestHandler); TaskSubscriptionRequest request = TaskSubscriptionRequest.newBuilder() - .setName("tasks/" + MINIMAL_TASK.getId()) + .setName("tasks/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId()) .build(); StreamRecorder streamRecorder = StreamRecorder.create(); handler.taskSubscription(request, streamRecorder); @@ -607,47 +609,47 @@ public void testStreamingNotSupportedErrorOnResubscribeToTask() throws Exception public void testOnMessageStreamInternalError() throws Exception { DefaultRequestHandler mocked = Mockito.mock(DefaultRequestHandler.class); Mockito.doThrow(new InternalError("Internal Error")).when(mocked).onMessageSendStream(Mockito.any(MessageSendParams.class), Mockito.any(ServerCallContext.class)); - GrpcHandler handler = new GrpcHandler(CARD, mocked); + GrpcHandler handler = new GrpcHandler(AbstractA2ARequestHandlerTest.CARD, mocked); StreamRecorder streamRecorder = sendStreamingMessageRequest(handler); assertGrpcError(streamRecorder, Status.Code.INTERNAL); } @Test public void testListPushNotificationConfig() throws Exception { - GrpcHandler handler = new GrpcHandler(CARD, requestHandler); - taskStore.save(MINIMAL_TASK); + GrpcHandler handler = new GrpcHandler(AbstractA2ARequestHandlerTest.CARD, requestHandler); + taskStore.save(AbstractA2ARequestHandlerTest.MINIMAL_TASK); agentExecutorExecute = (context, eventQueue) -> { eventQueue.enqueueEvent(context.getTask() != null ? context.getTask() : context.getMessage()); }; - String NAME = "tasks/" + MINIMAL_TASK.getId() + "/pushNotificationConfigs/" + MINIMAL_TASK.getId(); + String NAME = "tasks/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId() + "/pushNotificationConfigs/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId(); StreamRecorder pushRecorder = createTaskPushNotificationConfigRequest(handler, NAME); - assertNull(pushRecorder.getError()); + Assertions.assertNull(pushRecorder.getError()); ListTaskPushNotificationConfigRequest request = ListTaskPushNotificationConfigRequest.newBuilder() - .setParent("tasks/" + MINIMAL_TASK.getId()) + .setParent("tasks/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId()) .build(); StreamRecorder streamRecorder = StreamRecorder.create(); handler.listTaskPushNotificationConfig(request, streamRecorder); - assertNull(streamRecorder.getError()); + Assertions.assertNull(streamRecorder.getError()); List result = streamRecorder.getValues(); - assertEquals(1, result.size()); + Assertions.assertEquals(1, result.size()); List configList = result.get(0).getConfigsList(); - assertEquals(1, configList.size()); - assertEquals(pushRecorder.getValues().get(0), configList.get(0)); + Assertions.assertEquals(1, configList.size()); + Assertions.assertEquals(pushRecorder.getValues().get(0), configList.get(0)); } @Test public void testListPushNotificationConfigNotSupported() throws Exception { - AgentCard card = createAgentCard(true, false, true); + AgentCard card = AbstractA2ARequestHandlerTest.createAgentCard(true, false, true); GrpcHandler handler = new GrpcHandler(card, requestHandler); - taskStore.save(MINIMAL_TASK); + taskStore.save(AbstractA2ARequestHandlerTest.MINIMAL_TASK); agentExecutorExecute = (context, eventQueue) -> { eventQueue.enqueueEvent(context.getTask() != null ? context.getTask() : context.getMessage()); }; ListTaskPushNotificationConfigRequest request = ListTaskPushNotificationConfigRequest.newBuilder() - .setParent("tasks/" + MINIMAL_TASK.getId()) + .setParent("tasks/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId()) .build(); StreamRecorder streamRecorder = StreamRecorder.create(); handler.listTaskPushNotificationConfig(request, streamRecorder); @@ -658,14 +660,14 @@ public void testListPushNotificationConfigNotSupported() throws Exception { public void testListPushNotificationConfigNoPushConfigStore() { DefaultRequestHandler requestHandler = new DefaultRequestHandler(executor, taskStore, queueManager, null, null, internalExecutor); - GrpcHandler handler = new GrpcHandler(CARD, requestHandler); - taskStore.save(MINIMAL_TASK); + GrpcHandler handler = new GrpcHandler(AbstractA2ARequestHandlerTest.CARD, requestHandler); + taskStore.save(AbstractA2ARequestHandlerTest.MINIMAL_TASK); agentExecutorExecute = (context, eventQueue) -> { eventQueue.enqueueEvent(context.getTask() != null ? context.getTask() : context.getMessage()); }; ListTaskPushNotificationConfigRequest request = ListTaskPushNotificationConfigRequest.newBuilder() - .setParent("tasks/" + MINIMAL_TASK.getId()) + .setParent("tasks/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId()) .build(); StreamRecorder streamRecorder = StreamRecorder.create(); handler.listTaskPushNotificationConfig(request, streamRecorder); @@ -674,13 +676,13 @@ public void testListPushNotificationConfigNoPushConfigStore() { @Test public void testListPushNotificationConfigTaskNotFound() { - GrpcHandler handler = new GrpcHandler(CARD, requestHandler); + GrpcHandler handler = new GrpcHandler(AbstractA2ARequestHandlerTest.CARD, requestHandler); agentExecutorExecute = (context, eventQueue) -> { eventQueue.enqueueEvent(context.getTask() != null ? context.getTask() : context.getMessage()); }; ListTaskPushNotificationConfigRequest request = ListTaskPushNotificationConfigRequest.newBuilder() - .setParent("tasks/" + MINIMAL_TASK.getId()) + .setParent("tasks/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId()) .build(); StreamRecorder streamRecorder = StreamRecorder.create(); handler.listTaskPushNotificationConfig(request, streamRecorder); @@ -689,36 +691,36 @@ public void testListPushNotificationConfigTaskNotFound() { @Test public void testDeletePushNotificationConfig() throws Exception { - GrpcHandler handler = new GrpcHandler(CARD, requestHandler); - taskStore.save(MINIMAL_TASK); + GrpcHandler handler = new GrpcHandler(AbstractA2ARequestHandlerTest.CARD, requestHandler); + taskStore.save(AbstractA2ARequestHandlerTest.MINIMAL_TASK); agentExecutorExecute = (context, eventQueue) -> { eventQueue.enqueueEvent(context.getTask() != null ? context.getTask() : context.getMessage()); }; - String NAME = "tasks/" + MINIMAL_TASK.getId() + "/pushNotificationConfigs/" + MINIMAL_TASK.getId(); + String NAME = "tasks/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId() + "/pushNotificationConfigs/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId(); StreamRecorder pushRecorder = createTaskPushNotificationConfigRequest(handler, NAME); - assertNull(pushRecorder.getError()); + Assertions.assertNull(pushRecorder.getError()); DeleteTaskPushNotificationConfigRequest request = DeleteTaskPushNotificationConfigRequest.newBuilder() .setName(NAME) .build(); StreamRecorder streamRecorder = StreamRecorder.create(); handler.deleteTaskPushNotificationConfig(request, streamRecorder); - assertNull(streamRecorder.getError()); - assertEquals(1, streamRecorder.getValues().size()); + Assertions.assertNull(streamRecorder.getError()); + Assertions.assertEquals(1, streamRecorder.getValues().size()); assertEquals(Empty.getDefaultInstance(), streamRecorder.getValues().get(0)); } @Test public void testDeletePushNotificationConfigNotSupported() throws Exception { - AgentCard card = createAgentCard(true, false, true); + AgentCard card = AbstractA2ARequestHandlerTest.createAgentCard(true, false, true); GrpcHandler handler = new GrpcHandler(card, requestHandler); - taskStore.save(MINIMAL_TASK); + taskStore.save(AbstractA2ARequestHandlerTest.MINIMAL_TASK); agentExecutorExecute = (context, eventQueue) -> { eventQueue.enqueueEvent(context.getTask() != null ? context.getTask() : context.getMessage()); }; - String NAME = "tasks/" + MINIMAL_TASK.getId() + "/pushNotificationConfigs/" + MINIMAL_TASK.getId(); + String NAME = "tasks/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId() + "/pushNotificationConfigs/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId(); DeleteTaskPushNotificationConfigRequest request = DeleteTaskPushNotificationConfigRequest.newBuilder() .setName(NAME) .build(); @@ -731,8 +733,8 @@ public void testDeletePushNotificationConfigNotSupported() throws Exception { public void testDeletePushNotificationConfigNoPushConfigStore() { DefaultRequestHandler requestHandler = new DefaultRequestHandler(executor, taskStore, queueManager, null, null, internalExecutor); - GrpcHandler handler = new GrpcHandler(CARD, requestHandler); - String NAME = "tasks/" + MINIMAL_TASK.getId() + "/pushNotificationConfigs/" + MINIMAL_TASK.getId(); + GrpcHandler handler = new GrpcHandler(AbstractA2ARequestHandlerTest.CARD, requestHandler); + String NAME = "tasks/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId() + "/pushNotificationConfigs/" + AbstractA2ARequestHandlerTest.MINIMAL_TASK.getId(); DeleteTaskPushNotificationConfigRequest request = DeleteTaskPushNotificationConfigRequest.newBuilder() .setName(NAME) .build(); @@ -752,7 +754,7 @@ private StreamRecorder sendMessageRequest(GrpcHandler handl } private StreamRecorder createTaskPushNotificationConfigRequest(GrpcHandler handler, String name) throws Exception { - taskStore.save(MINIMAL_TASK); + taskStore.save(AbstractA2ARequestHandlerTest.MINIMAL_TASK); PushNotificationConfig config = PushNotificationConfig.newBuilder() .setUrl("http://example.com") .build(); @@ -798,9 +800,9 @@ private void sendStreamingMessageRequest(GrpcHandler handler, StreamObserver void assertGrpcError(StreamRecorder streamRecorder, Status.Code expectedStatusCode) { - assertNotNull(streamRecorder.getError()); - assertInstanceOf(StatusRuntimeException.class, streamRecorder.getError()); - assertEquals(expectedStatusCode, ((StatusRuntimeException) streamRecorder.getError()).getStatus().getCode()); - assertTrue(streamRecorder.getValues().isEmpty()); + Assertions.assertNotNull(streamRecorder.getError()); + Assertions.assertInstanceOf(StatusRuntimeException.class, streamRecorder.getError()); + Assertions.assertEquals(expectedStatusCode, ((StatusRuntimeException) streamRecorder.getError()).getStatus().getCode()); + Assertions.assertTrue(streamRecorder.getValues().isEmpty()); } } diff --git a/transport/jsonrpc/pom.xml b/transport/jsonrpc/pom.xml new file mode 100644 index 000000000..b66e3b1f5 --- /dev/null +++ b/transport/jsonrpc/pom.xml @@ -0,0 +1,51 @@ + + + 4.0.0 + + + io.github.a2asdk + a2a-java-sdk-parent + 0.2.6.Beta1-SNAPSHOT + ../../pom.xml + + a2a-java-sdk-transport-jsonrpc + + jar + + Java SDK A2A Transport: JSONRPC + Java SDK for the Agent2Agent Protocol (A2A) - JSONRPC + + + + io.github.a2asdk + a2a-java-sdk-server-common + ${project.version} + + + ${project.groupId} + a2a-java-sdk-server-common + ${project.version} + test-jar + test + + + ch.qos.logback + logback-classic + test + + + org.junit.jupiter + junit-jupiter-api + test + + + org.mockito + mockito-core + test + + + + + diff --git a/sdk-server-common/src/main/java/io/a2a/server/requesthandlers/JSONRPCHandler.java b/transport/jsonrpc/src/main/java/io/a2a/jsonrpc/handler/JSONRPCHandler.java similarity index 99% rename from sdk-server-common/src/main/java/io/a2a/server/requesthandlers/JSONRPCHandler.java rename to transport/jsonrpc/src/main/java/io/a2a/jsonrpc/handler/JSONRPCHandler.java index fb120f981..b2928dfd5 100644 --- a/sdk-server-common/src/main/java/io/a2a/server/requesthandlers/JSONRPCHandler.java +++ b/transport/jsonrpc/src/main/java/io/a2a/jsonrpc/handler/JSONRPCHandler.java @@ -1,8 +1,7 @@ -package io.a2a.server.requesthandlers; +package io.a2a.jsonrpc.handler; import static io.a2a.server.util.async.AsyncUtils.createTubeConfig; import jakarta.enterprise.context.ApplicationScoped; -import jakarta.enterprise.inject.Instance; import jakarta.inject.Inject; import java.util.List; @@ -10,6 +9,7 @@ import io.a2a.server.PublicAgentCard; import io.a2a.server.ServerCallContext; +import io.a2a.server.requesthandlers.RequestHandler; import io.a2a.spec.AgentCard; import io.a2a.spec.CancelTaskRequest; import io.a2a.spec.CancelTaskResponse; diff --git a/transport/jsonrpc/src/main/resources/META-INF/beans.xml b/transport/jsonrpc/src/main/resources/META-INF/beans.xml new file mode 100644 index 000000000..9b2940fc2 --- /dev/null +++ b/transport/jsonrpc/src/main/resources/META-INF/beans.xml @@ -0,0 +1,6 @@ + + + \ No newline at end of file diff --git a/sdk-server-common/src/test/java/io/a2a/server/requesthandlers/JSONRPCHandlerTest.java b/transport/jsonrpc/src/test/java/io/a2a/jsonrpc/handler/JSONRPCHandlerTest.java similarity index 86% rename from sdk-server-common/src/test/java/io/a2a/server/requesthandlers/JSONRPCHandlerTest.java rename to transport/jsonrpc/src/test/java/io/a2a/jsonrpc/handler/JSONRPCHandlerTest.java index 1851a5a90..070df7aa1 100644 --- a/sdk-server-common/src/test/java/io/a2a/server/requesthandlers/JSONRPCHandlerTest.java +++ b/transport/jsonrpc/src/test/java/io/a2a/jsonrpc/handler/JSONRPCHandlerTest.java @@ -1,12 +1,4 @@ -package io.a2a.server.requesthandlers; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertInstanceOf; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertSame; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.fail; +package io.a2a.jsonrpc.handler; import java.util.ArrayList; import java.util.Collections; @@ -21,6 +13,8 @@ import io.a2a.server.ServerCallContext; import io.a2a.server.auth.UnauthenticatedUser; import io.a2a.server.events.EventConsumer; +import io.a2a.server.requesthandlers.AbstractA2ARequestHandlerTest; +import io.a2a.server.requesthandlers.DefaultRequestHandler; import io.a2a.server.tasks.ResultAggregator; import io.a2a.server.tasks.TaskUpdater; import io.a2a.spec.AgentCard; @@ -65,6 +59,7 @@ import io.a2a.spec.TextPart; import io.a2a.spec.UnsupportedOperationError; import mutiny.zero.ZeroPublisher; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.mockito.MockedConstruction; @@ -80,9 +75,9 @@ public void testOnGetTaskSuccess() throws Exception { taskStore.save(MINIMAL_TASK); GetTaskRequest request = new GetTaskRequest("1", new TaskQueryParams(MINIMAL_TASK.getId())); GetTaskResponse response = handler.onGetTask(request, callContext); - assertEquals(request.getId(), response.getId()); - assertSame(MINIMAL_TASK, response.getResult()); - assertNull(response.getError()); + Assertions.assertEquals(request.getId(), response.getId()); + Assertions.assertSame(MINIMAL_TASK, response.getResult()); + Assertions.assertNull(response.getError()); } @Test @@ -90,9 +85,9 @@ public void testOnGetTaskNotFound() throws Exception { JSONRPCHandler handler = new JSONRPCHandler(CARD, requestHandler); GetTaskRequest request = new GetTaskRequest("1", new TaskQueryParams(MINIMAL_TASK.getId())); GetTaskResponse response = handler.onGetTask(request, callContext); - assertEquals(request.getId(), response.getId()); - assertInstanceOf(TaskNotFoundError.class, response.getError()); - assertNull(response.getResult()); + Assertions.assertEquals(request.getId(), response.getId()); + Assertions.assertInstanceOf(TaskNotFoundError.class, response.getError()); + Assertions.assertNull(response.getResult()); } @Test @@ -112,12 +107,12 @@ public void testOnCancelTaskSuccess() throws Exception { CancelTaskRequest request = new CancelTaskRequest("111", new TaskIdParams(MINIMAL_TASK.getId())); CancelTaskResponse response = handler.onCancelTask(request, callContext); - assertNull(response.getError()); - assertEquals(request.getId(), response.getId()); + Assertions.assertNull(response.getError()); + Assertions.assertEquals(request.getId(), response.getId()); Task task = response.getResult(); - assertEquals(MINIMAL_TASK.getId(), task.getId()); - assertEquals(MINIMAL_TASK.getContextId(), task.getContextId()); - assertEquals(TaskState.CANCELED, task.getStatus().state()); + Assertions.assertEquals(MINIMAL_TASK.getId(), task.getId()); + Assertions.assertEquals(MINIMAL_TASK.getContextId(), task.getContextId()); + Assertions.assertEquals(TaskState.CANCELED, task.getStatus().state()); } @Test @@ -131,9 +126,9 @@ public void testOnCancelTaskNotSupported() { CancelTaskRequest request = new CancelTaskRequest("1", new TaskIdParams(MINIMAL_TASK.getId())); CancelTaskResponse response = handler.onCancelTask(request, callContext); - assertEquals(request.getId(), response.getId()); - assertNull(response.getResult()); - assertInstanceOf(UnsupportedOperationError.class, response.getError()); + Assertions.assertEquals(request.getId(), response.getId()); + Assertions.assertNull(response.getResult()); + Assertions.assertInstanceOf(UnsupportedOperationError.class, response.getError()); } @Test @@ -141,9 +136,9 @@ public void testOnCancelTaskNotFound() { JSONRPCHandler handler = new JSONRPCHandler(CARD, requestHandler); CancelTaskRequest request = new CancelTaskRequest("1", new TaskIdParams(MINIMAL_TASK.getId())); CancelTaskResponse response = handler.onCancelTask(request, callContext); - assertEquals(request.getId(), response.getId()); - assertNull(response.getResult()); - assertInstanceOf(TaskNotFoundError.class, response.getError()); + Assertions.assertEquals(request.getId(), response.getId()); + Assertions.assertNull(response.getResult()); + Assertions.assertInstanceOf(TaskNotFoundError.class, response.getError()); } @Test @@ -158,14 +153,14 @@ public void testOnMessageNewMessageSuccess() { .build(); SendMessageRequest request = new SendMessageRequest("1", new MessageSendParams(message, null, null)); SendMessageResponse response = handler.onMessageSend(request, callContext); - assertNull(response.getError()); + Assertions.assertNull(response.getError()); // The Python implementation returns a Task here, but then again they are using hardcoded mocks and // bypassing the whole EventQueue. // If we were to send a Task in agentExecutorExecute EventConsumer.consumeAll() would not exit due to // the Task not having a 'final' state // // See testOnMessageNewMessageSuccessMocks() for a test more similar to the Python implementation - assertSame(message, response.getResult()); + Assertions.assertSame(message, response.getResult()); } @Test @@ -184,8 +179,8 @@ public void testOnMessageNewMessageSuccessMocks() { (mock, context) -> {Mockito.doReturn(ZeroPublisher.fromItems(MINIMAL_TASK)).when(mock).consumeAll();})){ response = handler.onMessageSend(request, callContext); } - assertNull(response.getError()); - assertSame(MINIMAL_TASK, response.getResult()); + Assertions.assertNull(response.getError()); + Assertions.assertSame(MINIMAL_TASK, response.getResult()); } @Test @@ -201,14 +196,14 @@ public void testOnMessageNewMessageWithExistingTaskSuccess() { .build(); SendMessageRequest request = new SendMessageRequest("1", new MessageSendParams(message, null, null)); SendMessageResponse response = handler.onMessageSend(request, callContext); - assertNull(response.getError()); + Assertions.assertNull(response.getError()); // The Python implementation returns a Task here, but then again they are using hardcoded mocks and // bypassing the whole EventQueue. // If we were to send a Task in agentExecutorExecute EventConsumer.consumeAll() would not exit due to // the Task not having a 'final' state // // See testOnMessageNewMessageWithExistingTaskSuccessMocks() for a test more similar to the Python implementation - assertSame(message, response.getResult()); + Assertions.assertSame(message, response.getResult()); } @Test @@ -228,8 +223,8 @@ public void testOnMessageNewMessageWithExistingTaskSuccessMocks() { Mockito.doReturn(ZeroPublisher.fromItems(MINIMAL_TASK)).when(mock).consumeAll();})){ response = handler.onMessageSend(request, callContext); } - assertNull(response.getError()); - assertSame(MINIMAL_TASK, response.getResult()); + Assertions.assertNull(response.getError()); + Assertions.assertSame(MINIMAL_TASK, response.getResult()); } @@ -248,8 +243,8 @@ public void testOnMessageError() { SendMessageRequest request = new SendMessageRequest( "1", new MessageSendParams(message, null, null)); SendMessageResponse response = handler.onMessageSend(request, callContext); - assertInstanceOf(UnsupportedOperationError.class, response.getError()); - assertNull(response.getResult()); + Assertions.assertInstanceOf(UnsupportedOperationError.class, response.getError()); + Assertions.assertNull(response.getResult()); } @Test @@ -269,8 +264,8 @@ public void testOnMessageErrorMocks() { response = handler.onMessageSend(request, callContext); } - assertInstanceOf(UnsupportedOperationError.class, response.getError()); - assertNull(response.getResult()); + Assertions.assertInstanceOf(UnsupportedOperationError.class, response.getError()); + Assertions.assertNull(response.getResult()); } @Test @@ -324,8 +319,8 @@ public void onComplete() { // so there would be no more Events. // // See testOnMessageStreamNewMessageSuccessMocks() for a test more similar to the Python implementation - assertEquals(1, results.size()); - assertSame(message, results.get(0)); + Assertions.assertEquals(1, results.size()); + Assertions.assertSame(message, results.get(0)); } @Test @@ -392,7 +387,7 @@ public void onComplete() { } }); - assertEquals(events, results); + Assertions.assertEquals(events, results); } @Test @@ -451,7 +446,7 @@ public void onComplete() { }); }); - assertTrue(latch.await(1, TimeUnit.SECONDS)); + Assertions.assertTrue(latch.await(1, TimeUnit.SECONDS)); subscriptionRef.get().cancel(); // The Python implementation has several events emitted since it uses mocks. // @@ -459,14 +454,14 @@ public void onComplete() { Task expected = new Task.Builder(task) .history(message) .build(); - assertEquals(1, results.size()); + Assertions.assertEquals(1, results.size()); StreamingEventKind receivedType = results.get(0); - assertInstanceOf(Task.class, receivedType); + Assertions.assertInstanceOf(Task.class, receivedType); Task received = (Task) receivedType; - assertEquals(expected.getId(), received.getId()); - assertEquals(expected.getContextId(), received.getContextId()); - assertEquals(expected.getStatus(), received.getStatus()); - assertEquals(expected.getHistory(), received.getHistory()); + Assertions.assertEquals(expected.getId(), received.getId()); + Assertions.assertEquals(expected.getContextId(), received.getContextId()); + Assertions.assertEquals(expected.getStatus(), received.getStatus()); + Assertions.assertEquals(expected.getHistory(), received.getHistory()); } @Test @@ -540,7 +535,7 @@ public void onComplete() { } }); - assertEquals(events, results); + Assertions.assertEquals(events, results); } @@ -554,7 +549,7 @@ public void testSetPushNotificationConfigSuccess() { MINIMAL_TASK.getId(), new PushNotificationConfig.Builder().url("http://example.com").build()); SetTaskPushNotificationConfigRequest request = new SetTaskPushNotificationConfigRequest("1", taskPushConfig); SetTaskPushNotificationConfigResponse response = handler.setPushNotificationConfig(request, callContext); - assertSame(taskPushConfig, response.getResult()); + Assertions.assertSame(taskPushConfig, response.getResult()); } @Test @@ -579,7 +574,7 @@ public void testGetPushNotificationConfigSuccess() { TaskPushNotificationConfig expectedConfig = new TaskPushNotificationConfig(MINIMAL_TASK.getId(), new PushNotificationConfig.Builder().id(MINIMAL_TASK.getId()).url("http://example.com").build()); - assertEquals(expectedConfig, getResponse.getResult()); + Assertions.assertEquals(expectedConfig, getResponse.getResult()); } @Test @@ -617,7 +612,7 @@ public void testOnMessageStreamNewMessageSendPushNotificationSuccess() throws Ex new PushNotificationConfig.Builder().url("http://example.com").build()); SetTaskPushNotificationConfigRequest stpnRequest = new SetTaskPushNotificationConfigRequest("1", config); SetTaskPushNotificationConfigResponse stpnResponse = handler.setPushNotificationConfig(stpnRequest, callContext); - assertNull(stpnResponse.getError()); + Assertions.assertNull(stpnResponse.getError()); Message msg = new Message.Builder(MESSAGE) .taskId(MINIMAL_TASK.getId()) @@ -659,32 +654,32 @@ public void onComplete() { }); }); - assertTrue(latch.await(5, TimeUnit.SECONDS)); + Assertions.assertTrue(latch.await(5, TimeUnit.SECONDS)); subscriptionRef.get().cancel(); - assertEquals(3, results.size()); - assertEquals(3, httpClient.tasks.size()); + Assertions.assertEquals(3, results.size()); + Assertions.assertEquals(3, httpClient.tasks.size()); Task curr = httpClient.tasks.get(0); - assertEquals(MINIMAL_TASK.getId(), curr.getId()); - assertEquals(MINIMAL_TASK.getContextId(), curr.getContextId()); - assertEquals(MINIMAL_TASK.getStatus().state(), curr.getStatus().state()); - assertEquals(0, curr.getArtifacts() == null ? 0 : curr.getArtifacts().size()); + Assertions.assertEquals(MINIMAL_TASK.getId(), curr.getId()); + Assertions.assertEquals(MINIMAL_TASK.getContextId(), curr.getContextId()); + Assertions.assertEquals(MINIMAL_TASK.getStatus().state(), curr.getStatus().state()); + Assertions.assertEquals(0, curr.getArtifacts() == null ? 0 : curr.getArtifacts().size()); curr = httpClient.tasks.get(1); - assertEquals(MINIMAL_TASK.getId(), curr.getId()); - assertEquals(MINIMAL_TASK.getContextId(), curr.getContextId()); - assertEquals(MINIMAL_TASK.getStatus().state(), curr.getStatus().state()); - assertEquals(1, curr.getArtifacts().size()); - assertEquals(1, curr.getArtifacts().get(0).parts().size()); - assertEquals("text", ((TextPart)curr.getArtifacts().get(0).parts().get(0)).getText()); + Assertions.assertEquals(MINIMAL_TASK.getId(), curr.getId()); + Assertions.assertEquals(MINIMAL_TASK.getContextId(), curr.getContextId()); + Assertions.assertEquals(MINIMAL_TASK.getStatus().state(), curr.getStatus().state()); + Assertions.assertEquals(1, curr.getArtifacts().size()); + Assertions.assertEquals(1, curr.getArtifacts().get(0).parts().size()); + Assertions.assertEquals("text", ((TextPart)curr.getArtifacts().get(0).parts().get(0)).getText()); curr = httpClient.tasks.get(2); - assertEquals(MINIMAL_TASK.getId(), curr.getId()); - assertEquals(MINIMAL_TASK.getContextId(), curr.getContextId()); - assertEquals(TaskState.COMPLETED, curr.getStatus().state()); - assertEquals(1, curr.getArtifacts().size()); - assertEquals(1, curr.getArtifacts().get(0).parts().size()); - assertEquals("text", ((TextPart)curr.getArtifacts().get(0).parts().get(0)).getText()); + Assertions.assertEquals(MINIMAL_TASK.getId(), curr.getId()); + Assertions.assertEquals(MINIMAL_TASK.getContextId(), curr.getContextId()); + Assertions.assertEquals(TaskState.COMPLETED, curr.getStatus().state()); + Assertions.assertEquals(1, curr.getArtifacts().size()); + Assertions.assertEquals(1, curr.getArtifacts().get(0).parts().size()); + Assertions.assertEquals("text", ((TextPart)curr.getArtifacts().get(0).parts().get(0)).getText()); } @Test @@ -713,7 +708,7 @@ public void testOnResubscribeExistingTaskSuccess() { handler.onMessageSend( new SendMessageRequest("1", new MessageSendParams(message, null, null)), callContext); - assertNull(smr.getError()); + Assertions.assertNull(smr.getError()); List results = new ArrayList<>(); @@ -747,7 +742,7 @@ public void onComplete() { // The Python implementation has several events emitted since it uses mocks. // // See testOnMessageStreamNewMessageExistingTaskSuccessMocks() for a test more similar to the Python implementation - assertEquals(1, results.size()); + Assertions.assertEquals(1, results.size()); } @@ -815,7 +810,7 @@ public void onComplete() { // The Python implementation has several events emitted since it uses mocks. // // See testOnMessageStreamNewMessageExistingTaskSuccessMocks() for a test more similar to the Python implementation - assertEquals(events, results); + Assertions.assertEquals(events, results); } @Test @@ -855,9 +850,9 @@ public void onComplete() { } }); - assertEquals(1, results.size()); - assertNull(results.get(0).getResult()); - assertInstanceOf(TaskNotFoundError.class, results.get(0).getError()); + Assertions.assertEquals(1, results.size()); + Assertions.assertNull(results.get(0).getResult()); + Assertions.assertInstanceOf(TaskNotFoundError.class, results.get(0).getError()); } @Test @@ -902,11 +897,11 @@ public void onComplete() { } }); - assertEquals(1, results.size()); + Assertions.assertEquals(1, results.size()); if (results.get(0).getError() != null && results.get(0).getError() instanceof InvalidRequestError ire) { - assertEquals("Streaming is not supported by the agent", ire.getMessage()); + Assertions.assertEquals("Streaming is not supported by the agent", ire.getMessage()); } else { - fail("Expected a response containing an error"); + Assertions.fail("Expected a response containing an error"); } } @@ -948,11 +943,11 @@ public void onComplete() { } }); - assertEquals(1, results.size()); + Assertions.assertEquals(1, results.size()); if (results.get(0).getError() != null && results.get(0).getError() instanceof InvalidRequestError ire) { - assertEquals("Streaming is not supported by the agent", ire.getMessage()); + Assertions.assertEquals("Streaming is not supported by the agent", ire.getMessage()); } else { - fail("Expected a response containing an error"); + Assertions.fail("Expected a response containing an error"); } } @@ -974,7 +969,7 @@ public void testPushNotificationsNotSupportedError() { .params(config) .build(); SetTaskPushNotificationConfigResponse response = handler.setPushNotificationConfig(request, callContext); - assertInstanceOf(PushNotificationNotSupportedError.class, response.getError()); + Assertions.assertInstanceOf(PushNotificationNotSupportedError.class, response.getError()); } @Test @@ -991,9 +986,9 @@ public void testOnGetPushNotificationNoPushNotifierConfig() { new GetTaskPushNotificationConfigRequest("id", new GetTaskPushNotificationConfigParams(MINIMAL_TASK.getId())); GetTaskPushNotificationConfigResponse response = handler.getPushNotificationConfig(request, callContext); - assertNotNull(response.getError()); - assertInstanceOf(UnsupportedOperationError.class, response.getError()); - assertEquals("This operation is not supported", response.getError().getMessage()); + Assertions.assertNotNull(response.getError()); + Assertions.assertInstanceOf(UnsupportedOperationError.class, response.getError()); + Assertions.assertEquals("This operation is not supported", response.getError().getMessage()); } @Test @@ -1018,8 +1013,8 @@ public void testOnSetPushNotificationNoPushNotifierConfig() { .build(); SetTaskPushNotificationConfigResponse response = handler.setPushNotificationConfig(request, callContext); - assertInstanceOf(UnsupportedOperationError.class, response.getError()); - assertEquals("This operation is not supported", response.getError().getMessage()); + Assertions.assertInstanceOf(UnsupportedOperationError.class, response.getError()); + Assertions.assertEquals("This operation is not supported", response.getError().getMessage()); } @Test @@ -1033,7 +1028,7 @@ public void testOnMessageSendInternalError() { SendMessageRequest request = new SendMessageRequest("1", new MessageSendParams(MESSAGE, null, null)); SendMessageResponse response = handler.onMessageSend(request, callContext); - assertInstanceOf(InternalError.class, response.getError()); + Assertions.assertInstanceOf(InternalError.class, response.getError()); } @Test @@ -1077,8 +1072,8 @@ public void onComplete() { } }); - assertEquals(1, results.size()); - assertInstanceOf(InternalError.class, results.get(0).getError()); + Assertions.assertEquals(1, results.size()); + Assertions.assertInstanceOf(InternalError.class, results.get(0).getError()); } @Test @@ -1114,7 +1109,7 @@ public void testOnMessageSendErrorHandling() { response = handler.onMessageSend(request, callContext); } - assertInstanceOf(UnsupportedOperationError.class, response.getError()); + Assertions.assertInstanceOf(UnsupportedOperationError.class, response.getError()); } @@ -1129,7 +1124,7 @@ public void testOnMessageSendTaskIdMismatch() { SendMessageRequest request = new SendMessageRequest("1", new MessageSendParams(MESSAGE, null, null)); SendMessageResponse response = handler.onMessageSend(request, callContext); - assertInstanceOf(InternalError.class, response.getError()); + Assertions.assertInstanceOf(InternalError.class, response.getError()); } @@ -1174,9 +1169,9 @@ public void onComplete() { } }); - assertNull(error.get()); - assertEquals(1, results.size()); - assertInstanceOf(InternalError.class, results.get(0).getError()); + Assertions.assertNull(error.get()); + Assertions.assertEquals(1, results.size()); + Assertions.assertInstanceOf(InternalError.class, results.get(0).getError()); } @Test @@ -1200,9 +1195,9 @@ public void testListPushNotificationConfig() { new ListTaskPushNotificationConfigRequest("111", new ListTaskPushNotificationConfigParams(MINIMAL_TASK.getId())); ListTaskPushNotificationConfigResponse listResponse = handler.listPushNotificationConfig(listRequest, callContext); - assertEquals("111", listResponse.getId()); - assertEquals(1, listResponse.getResult().size()); - assertEquals(taskPushConfig, listResponse.getResult().get(0)); + Assertions.assertEquals("111", listResponse.getId()); + Assertions.assertEquals(1, listResponse.getResult().size()); + Assertions.assertEquals(taskPushConfig, listResponse.getResult().get(0)); } @Test @@ -1228,9 +1223,9 @@ public void testListPushNotificationConfigNotSupported() { ListTaskPushNotificationConfigResponse listResponse = handler.listPushNotificationConfig(listRequest, callContext); - assertEquals("111", listResponse.getId()); - assertNull(listResponse.getResult()); - assertInstanceOf(PushNotificationNotSupportedError.class, listResponse.getError()); + Assertions.assertEquals("111", listResponse.getId()); + Assertions.assertNull(listResponse.getResult()); + Assertions.assertInstanceOf(PushNotificationNotSupportedError.class, listResponse.getError()); } @Test @@ -1248,9 +1243,9 @@ public void testListPushNotificationConfigNoPushConfigStore() { ListTaskPushNotificationConfigResponse listResponse = handler.listPushNotificationConfig(listRequest, callContext); - assertEquals("111", listResponse.getId()); - assertNull(listResponse.getResult()); - assertInstanceOf(UnsupportedOperationError.class, listResponse.getError()); + Assertions.assertEquals("111", listResponse.getId()); + Assertions.assertNull(listResponse.getResult()); + Assertions.assertInstanceOf(UnsupportedOperationError.class, listResponse.getError()); } @Test @@ -1265,9 +1260,9 @@ public void testListPushNotificationConfigTaskNotFound() { ListTaskPushNotificationConfigResponse listResponse = handler.listPushNotificationConfig(listRequest, callContext); - assertEquals("111", listResponse.getId()); - assertNull(listResponse.getResult()); - assertInstanceOf(TaskNotFoundError.class, listResponse.getError()); + Assertions.assertEquals("111", listResponse.getId()); + Assertions.assertNull(listResponse.getResult()); + Assertions.assertInstanceOf(TaskNotFoundError.class, listResponse.getError()); } @Test @@ -1292,9 +1287,9 @@ public void testDeletePushNotificationConfig() { DeleteTaskPushNotificationConfigResponse deleteResponse = handler.deletePushNotificationConfig(deleteRequest, callContext); - assertEquals("111", deleteResponse.getId()); - assertNull(deleteResponse.getError()); - assertNull(deleteResponse.getResult()); + Assertions.assertEquals("111", deleteResponse.getId()); + Assertions.assertNull(deleteResponse.getError()); + Assertions.assertNull(deleteResponse.getResult()); } @Test @@ -1320,9 +1315,9 @@ public void testDeletePushNotificationConfigNotSupported() { DeleteTaskPushNotificationConfigResponse deleteResponse = handler.deletePushNotificationConfig(deleteRequest, callContext); - assertEquals("111", deleteResponse.getId()); - assertNull(deleteResponse.getResult()); - assertInstanceOf(PushNotificationNotSupportedError.class, deleteResponse.getError()); + Assertions.assertEquals("111", deleteResponse.getId()); + Assertions.assertNull(deleteResponse.getResult()); + Assertions.assertInstanceOf(PushNotificationNotSupportedError.class, deleteResponse.getError()); } @Test @@ -1349,9 +1344,9 @@ public void testDeletePushNotificationConfigNoPushConfigStore() { DeleteTaskPushNotificationConfigResponse deleteResponse = handler.deletePushNotificationConfig(deleteRequest, callContext); - assertEquals("111", deleteResponse.getId()); - assertNull(deleteResponse.getResult()); - assertInstanceOf(UnsupportedOperationError.class, deleteResponse.getError()); + Assertions.assertEquals("111", deleteResponse.getId()); + Assertions.assertNull(deleteResponse.getResult()); + Assertions.assertInstanceOf(UnsupportedOperationError.class, deleteResponse.getError()); } } From f4199124ea4aa8fca865646abfb5342b38021158 Mon Sep 17 00:00:00 2001 From: Kabir Khan Date: Mon, 4 Aug 2025 17:48:04 +0100 Subject: [PATCH 06/10] Clean up dependencies --- reference/grpc/pom.xml | 2 +- reference/jsonrpc/pom.xml | 2 +- sdk-server-common/pom.xml | 5 ----- transport/grpc/pom.xml | 9 +++------ 4 files changed, 5 insertions(+), 13 deletions(-) diff --git a/reference/grpc/pom.xml b/reference/grpc/pom.xml index b61cdd3e9..74a8d7268 100644 --- a/reference/grpc/pom.xml +++ b/reference/grpc/pom.xml @@ -11,7 +11,7 @@ a2a-java-sdk-reference-grpc - Java A2A gRPC Reference Server + Java A2A Reference Server: gRPC Java SDK for the Agent2Agent Protocol (A2A) - A2A gRPC Reference Server (based on Quarkus) diff --git a/reference/jsonrpc/pom.xml b/reference/jsonrpc/pom.xml index abb448853..1efdd8a46 100644 --- a/reference/jsonrpc/pom.xml +++ b/reference/jsonrpc/pom.xml @@ -14,7 +14,7 @@ jar - Java A2A JSONRPC Reference Server + Java A2A Reference Server: JSONRPC Java SDK for the Agent2Agent Protocol (A2A) - A2A JSONRPC Reference Server (based on Quarkus) diff --git a/sdk-server-common/pom.xml b/sdk-server-common/pom.xml index 2585f679b..b6090a7d6 100644 --- a/sdk-server-common/pom.xml +++ b/sdk-server-common/pom.xml @@ -84,11 +84,6 @@ mockito-core test - - org.mock-server - mockserver-netty - test - ch.qos.logback logback-classic diff --git a/transport/grpc/pom.xml b/transport/grpc/pom.xml index e078a381d..bde1315bc 100644 --- a/transport/grpc/pom.xml +++ b/transport/grpc/pom.xml @@ -31,7 +31,7 @@ test - io.github.a2asdk + ${project.groupId} a2a-java-sdk-spec-grpc ${project.version} @@ -55,16 +55,13 @@ jakarta.inject jakarta.inject-api - - ch.qos.logback - logback-classic - test - + ch.qos.logback logback-classic From b284d70cb75c3529e203baf4da8eb6497d0f96bc Mon Sep 17 00:00:00 2001 From: Kabir Khan Date: Thu, 7 Aug 2025 11:26:04 +0200 Subject: [PATCH 07/10] PR review --- README.md | 15 ++++++++++++++- pom.xml | 2 +- {sdk-server-common => server-common}/pom.xml | 3 +-- .../java/io/a2a/server/ExtendedAgentCard.java | 0 .../main/java/io/a2a/server/JSONRPCException.java | 0 .../main/java/io/a2a/server/PublicAgentCard.java | 0 .../java/io/a2a/server/ServerCallContext.java | 0 .../a2a/server/agentexecution/AgentExecutor.java | 0 .../a2a/server/agentexecution/RequestContext.java | 0 .../SimpleRequestContextBuilder.java | 0 .../io/a2a/server/auth/UnauthenticatedUser.java | 0 .../src/main/java/io/a2a/server/auth/User.java | 0 .../io/a2a/server/events/EnhancedRunnable.java | 0 .../java/io/a2a/server/events/EventConsumer.java | 0 .../java/io/a2a/server/events/EventQueue.java | 0 .../server/events/EventQueueClosedException.java | 0 .../a2a/server/events/InMemoryQueueManager.java | 0 .../a2a/server/events/NoTaskQueueException.java | 0 .../java/io/a2a/server/events/QueueManager.java | 0 .../server/events/TaskQueueExistsException.java | 0 .../requesthandlers/CallContextFactory.java | 0 .../requesthandlers/DefaultRequestHandler.java | 0 .../server/requesthandlers/RequestHandler.java | 0 .../server/tasks/BasePushNotificationSender.java | 0 .../InMemoryPushNotificationConfigStore.java | 0 .../io/a2a/server/tasks/InMemoryTaskStore.java | 0 .../server/tasks/PushNotificationConfigStore.java | 0 .../a2a/server/tasks/PushNotificationSender.java | 0 .../io/a2a/server/tasks/ResultAggregator.java | 0 .../java/io/a2a/server/tasks/TaskManager.java | 0 .../main/java/io/a2a/server/tasks/TaskStore.java | 0 .../java/io/a2a/server/tasks/TaskUpdater.java | 0 .../server/util/async/AsyncExecutorProducer.java | 0 .../java/io/a2a/server/util/async/AsyncUtils.java | 0 .../java/io/a2a/server/util/async/Internal.java | 0 .../src/main/resources/META-INF/beans.xml | 0 .../server/agentexecution/RequestContextTest.java | 0 .../io/a2a/server/events/EventConsumerTest.java | 0 .../java/io/a2a/server/events/EventQueueTest.java | 0 .../AbstractA2ARequestHandlerTest.java | 0 .../a2a/server/tasks/InMemoryTaskStoreTest.java | 0 .../java/io/a2a/server/tasks/TaskManagerTest.java | 0 .../java/io/a2a/server/tasks/TaskUpdaterTest.java | 0 .../io/a2a/server/util/async/AsyncUtilsTest.java | 0 .../src/test/resources/logback.xml | 0 transport/grpc/pom.xml | 7 ------- 46 files changed, 16 insertions(+), 11 deletions(-) rename {sdk-server-common => server-common}/pom.xml (99%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/ExtendedAgentCard.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/JSONRPCException.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/PublicAgentCard.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/ServerCallContext.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/agentexecution/AgentExecutor.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/agentexecution/RequestContext.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/agentexecution/SimpleRequestContextBuilder.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/auth/UnauthenticatedUser.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/auth/User.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/events/EnhancedRunnable.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/events/EventConsumer.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/events/EventQueue.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/events/EventQueueClosedException.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/events/InMemoryQueueManager.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/events/NoTaskQueueException.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/events/QueueManager.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/events/TaskQueueExistsException.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/requesthandlers/CallContextFactory.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/requesthandlers/DefaultRequestHandler.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/requesthandlers/RequestHandler.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/tasks/BasePushNotificationSender.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/tasks/InMemoryPushNotificationConfigStore.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/tasks/InMemoryTaskStore.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/tasks/PushNotificationConfigStore.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/tasks/PushNotificationSender.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/tasks/ResultAggregator.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/tasks/TaskManager.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/tasks/TaskStore.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/tasks/TaskUpdater.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/util/async/AsyncExecutorProducer.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/util/async/AsyncUtils.java (100%) rename {sdk-server-common => server-common}/src/main/java/io/a2a/server/util/async/Internal.java (100%) rename {sdk-server-common => server-common}/src/main/resources/META-INF/beans.xml (100%) rename {sdk-server-common => server-common}/src/test/java/io/a2a/server/agentexecution/RequestContextTest.java (100%) rename {sdk-server-common => server-common}/src/test/java/io/a2a/server/events/EventConsumerTest.java (100%) rename {sdk-server-common => server-common}/src/test/java/io/a2a/server/events/EventQueueTest.java (100%) rename {sdk-server-common => server-common}/src/test/java/io/a2a/server/requesthandlers/AbstractA2ARequestHandlerTest.java (100%) rename {sdk-server-common => server-common}/src/test/java/io/a2a/server/tasks/InMemoryTaskStoreTest.java (100%) rename {sdk-server-common => server-common}/src/test/java/io/a2a/server/tasks/TaskManagerTest.java (100%) rename {sdk-server-common => server-common}/src/test/java/io/a2a/server/tasks/TaskUpdaterTest.java (100%) rename {sdk-server-common => server-common}/src/test/java/io/a2a/server/util/async/AsyncUtilsTest.java (100%) rename {sdk-server-common => server-common}/src/test/resources/logback.xml (100%) diff --git a/README.md b/README.md index 08a662bfa..d3a3db4a3 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ The A2A Java SDK provides a [reference A2A server implementation](reference-impl [Server Integrations](#server-integrations) contains a list of community contributed integrations of the server with various runtimes. You might be able to use one of these for your target runtime, or you can use them as inspiration to create your own. -To use the reference implementation add the following dependency to your project: +To use the reference implementation with the JSONRPC protocol add the following dependency to your project: > *⚠️ The `io.github.a2asdk` `groupId` below is temporary and will likely change for future releases.* @@ -55,6 +55,19 @@ To use the reference implementation add the following dependency to your project ``` +To use the reference implementation with the gRPC protocol add the following dependency to your project: + +> *⚠️ The `io.github.a2asdk` `groupId` below is temporary and will likely change for future releases.* + +```xml + + io.github.a2asdk + a2a-java-sdk-reference-grpc + + ${io.a2a.sdk.version} + +``` + ### 2. Add a class that creates an A2A Agent Card ```java diff --git a/pom.xml b/pom.xml index 13aca788d..5ff404a5a 100644 --- a/pom.xml +++ b/pom.xml @@ -281,7 +281,7 @@ examples/helloworld reference/grpc reference/jsonrpc - sdk-server-common + server-common spec spec-grpc tck diff --git a/sdk-server-common/pom.xml b/server-common/pom.xml similarity index 99% rename from sdk-server-common/pom.xml rename to server-common/pom.xml index b6090a7d6..caf58b2d1 100644 --- a/sdk-server-common/pom.xml +++ b/server-common/pom.xml @@ -106,5 +106,4 @@ - - \ No newline at end of file + diff --git a/sdk-server-common/src/main/java/io/a2a/server/ExtendedAgentCard.java b/server-common/src/main/java/io/a2a/server/ExtendedAgentCard.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/ExtendedAgentCard.java rename to server-common/src/main/java/io/a2a/server/ExtendedAgentCard.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/JSONRPCException.java b/server-common/src/main/java/io/a2a/server/JSONRPCException.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/JSONRPCException.java rename to server-common/src/main/java/io/a2a/server/JSONRPCException.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/PublicAgentCard.java b/server-common/src/main/java/io/a2a/server/PublicAgentCard.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/PublicAgentCard.java rename to server-common/src/main/java/io/a2a/server/PublicAgentCard.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/ServerCallContext.java b/server-common/src/main/java/io/a2a/server/ServerCallContext.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/ServerCallContext.java rename to server-common/src/main/java/io/a2a/server/ServerCallContext.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/agentexecution/AgentExecutor.java b/server-common/src/main/java/io/a2a/server/agentexecution/AgentExecutor.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/agentexecution/AgentExecutor.java rename to server-common/src/main/java/io/a2a/server/agentexecution/AgentExecutor.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/agentexecution/RequestContext.java b/server-common/src/main/java/io/a2a/server/agentexecution/RequestContext.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/agentexecution/RequestContext.java rename to server-common/src/main/java/io/a2a/server/agentexecution/RequestContext.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/agentexecution/SimpleRequestContextBuilder.java b/server-common/src/main/java/io/a2a/server/agentexecution/SimpleRequestContextBuilder.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/agentexecution/SimpleRequestContextBuilder.java rename to server-common/src/main/java/io/a2a/server/agentexecution/SimpleRequestContextBuilder.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/auth/UnauthenticatedUser.java b/server-common/src/main/java/io/a2a/server/auth/UnauthenticatedUser.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/auth/UnauthenticatedUser.java rename to server-common/src/main/java/io/a2a/server/auth/UnauthenticatedUser.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/auth/User.java b/server-common/src/main/java/io/a2a/server/auth/User.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/auth/User.java rename to server-common/src/main/java/io/a2a/server/auth/User.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/events/EnhancedRunnable.java b/server-common/src/main/java/io/a2a/server/events/EnhancedRunnable.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/events/EnhancedRunnable.java rename to server-common/src/main/java/io/a2a/server/events/EnhancedRunnable.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/events/EventConsumer.java b/server-common/src/main/java/io/a2a/server/events/EventConsumer.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/events/EventConsumer.java rename to server-common/src/main/java/io/a2a/server/events/EventConsumer.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/events/EventQueue.java b/server-common/src/main/java/io/a2a/server/events/EventQueue.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/events/EventQueue.java rename to server-common/src/main/java/io/a2a/server/events/EventQueue.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/events/EventQueueClosedException.java b/server-common/src/main/java/io/a2a/server/events/EventQueueClosedException.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/events/EventQueueClosedException.java rename to server-common/src/main/java/io/a2a/server/events/EventQueueClosedException.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/events/InMemoryQueueManager.java b/server-common/src/main/java/io/a2a/server/events/InMemoryQueueManager.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/events/InMemoryQueueManager.java rename to server-common/src/main/java/io/a2a/server/events/InMemoryQueueManager.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/events/NoTaskQueueException.java b/server-common/src/main/java/io/a2a/server/events/NoTaskQueueException.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/events/NoTaskQueueException.java rename to server-common/src/main/java/io/a2a/server/events/NoTaskQueueException.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/events/QueueManager.java b/server-common/src/main/java/io/a2a/server/events/QueueManager.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/events/QueueManager.java rename to server-common/src/main/java/io/a2a/server/events/QueueManager.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/events/TaskQueueExistsException.java b/server-common/src/main/java/io/a2a/server/events/TaskQueueExistsException.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/events/TaskQueueExistsException.java rename to server-common/src/main/java/io/a2a/server/events/TaskQueueExistsException.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/requesthandlers/CallContextFactory.java b/server-common/src/main/java/io/a2a/server/requesthandlers/CallContextFactory.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/requesthandlers/CallContextFactory.java rename to server-common/src/main/java/io/a2a/server/requesthandlers/CallContextFactory.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/requesthandlers/DefaultRequestHandler.java b/server-common/src/main/java/io/a2a/server/requesthandlers/DefaultRequestHandler.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/requesthandlers/DefaultRequestHandler.java rename to server-common/src/main/java/io/a2a/server/requesthandlers/DefaultRequestHandler.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/requesthandlers/RequestHandler.java b/server-common/src/main/java/io/a2a/server/requesthandlers/RequestHandler.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/requesthandlers/RequestHandler.java rename to server-common/src/main/java/io/a2a/server/requesthandlers/RequestHandler.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/tasks/BasePushNotificationSender.java b/server-common/src/main/java/io/a2a/server/tasks/BasePushNotificationSender.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/tasks/BasePushNotificationSender.java rename to server-common/src/main/java/io/a2a/server/tasks/BasePushNotificationSender.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/tasks/InMemoryPushNotificationConfigStore.java b/server-common/src/main/java/io/a2a/server/tasks/InMemoryPushNotificationConfigStore.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/tasks/InMemoryPushNotificationConfigStore.java rename to server-common/src/main/java/io/a2a/server/tasks/InMemoryPushNotificationConfigStore.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/tasks/InMemoryTaskStore.java b/server-common/src/main/java/io/a2a/server/tasks/InMemoryTaskStore.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/tasks/InMemoryTaskStore.java rename to server-common/src/main/java/io/a2a/server/tasks/InMemoryTaskStore.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/tasks/PushNotificationConfigStore.java b/server-common/src/main/java/io/a2a/server/tasks/PushNotificationConfigStore.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/tasks/PushNotificationConfigStore.java rename to server-common/src/main/java/io/a2a/server/tasks/PushNotificationConfigStore.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/tasks/PushNotificationSender.java b/server-common/src/main/java/io/a2a/server/tasks/PushNotificationSender.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/tasks/PushNotificationSender.java rename to server-common/src/main/java/io/a2a/server/tasks/PushNotificationSender.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/tasks/ResultAggregator.java b/server-common/src/main/java/io/a2a/server/tasks/ResultAggregator.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/tasks/ResultAggregator.java rename to server-common/src/main/java/io/a2a/server/tasks/ResultAggregator.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/tasks/TaskManager.java b/server-common/src/main/java/io/a2a/server/tasks/TaskManager.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/tasks/TaskManager.java rename to server-common/src/main/java/io/a2a/server/tasks/TaskManager.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/tasks/TaskStore.java b/server-common/src/main/java/io/a2a/server/tasks/TaskStore.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/tasks/TaskStore.java rename to server-common/src/main/java/io/a2a/server/tasks/TaskStore.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/tasks/TaskUpdater.java b/server-common/src/main/java/io/a2a/server/tasks/TaskUpdater.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/tasks/TaskUpdater.java rename to server-common/src/main/java/io/a2a/server/tasks/TaskUpdater.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/util/async/AsyncExecutorProducer.java b/server-common/src/main/java/io/a2a/server/util/async/AsyncExecutorProducer.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/util/async/AsyncExecutorProducer.java rename to server-common/src/main/java/io/a2a/server/util/async/AsyncExecutorProducer.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/util/async/AsyncUtils.java b/server-common/src/main/java/io/a2a/server/util/async/AsyncUtils.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/util/async/AsyncUtils.java rename to server-common/src/main/java/io/a2a/server/util/async/AsyncUtils.java diff --git a/sdk-server-common/src/main/java/io/a2a/server/util/async/Internal.java b/server-common/src/main/java/io/a2a/server/util/async/Internal.java similarity index 100% rename from sdk-server-common/src/main/java/io/a2a/server/util/async/Internal.java rename to server-common/src/main/java/io/a2a/server/util/async/Internal.java diff --git a/sdk-server-common/src/main/resources/META-INF/beans.xml b/server-common/src/main/resources/META-INF/beans.xml similarity index 100% rename from sdk-server-common/src/main/resources/META-INF/beans.xml rename to server-common/src/main/resources/META-INF/beans.xml diff --git a/sdk-server-common/src/test/java/io/a2a/server/agentexecution/RequestContextTest.java b/server-common/src/test/java/io/a2a/server/agentexecution/RequestContextTest.java similarity index 100% rename from sdk-server-common/src/test/java/io/a2a/server/agentexecution/RequestContextTest.java rename to server-common/src/test/java/io/a2a/server/agentexecution/RequestContextTest.java diff --git a/sdk-server-common/src/test/java/io/a2a/server/events/EventConsumerTest.java b/server-common/src/test/java/io/a2a/server/events/EventConsumerTest.java similarity index 100% rename from sdk-server-common/src/test/java/io/a2a/server/events/EventConsumerTest.java rename to server-common/src/test/java/io/a2a/server/events/EventConsumerTest.java diff --git a/sdk-server-common/src/test/java/io/a2a/server/events/EventQueueTest.java b/server-common/src/test/java/io/a2a/server/events/EventQueueTest.java similarity index 100% rename from sdk-server-common/src/test/java/io/a2a/server/events/EventQueueTest.java rename to server-common/src/test/java/io/a2a/server/events/EventQueueTest.java diff --git a/sdk-server-common/src/test/java/io/a2a/server/requesthandlers/AbstractA2ARequestHandlerTest.java b/server-common/src/test/java/io/a2a/server/requesthandlers/AbstractA2ARequestHandlerTest.java similarity index 100% rename from sdk-server-common/src/test/java/io/a2a/server/requesthandlers/AbstractA2ARequestHandlerTest.java rename to server-common/src/test/java/io/a2a/server/requesthandlers/AbstractA2ARequestHandlerTest.java diff --git a/sdk-server-common/src/test/java/io/a2a/server/tasks/InMemoryTaskStoreTest.java b/server-common/src/test/java/io/a2a/server/tasks/InMemoryTaskStoreTest.java similarity index 100% rename from sdk-server-common/src/test/java/io/a2a/server/tasks/InMemoryTaskStoreTest.java rename to server-common/src/test/java/io/a2a/server/tasks/InMemoryTaskStoreTest.java diff --git a/sdk-server-common/src/test/java/io/a2a/server/tasks/TaskManagerTest.java b/server-common/src/test/java/io/a2a/server/tasks/TaskManagerTest.java similarity index 100% rename from sdk-server-common/src/test/java/io/a2a/server/tasks/TaskManagerTest.java rename to server-common/src/test/java/io/a2a/server/tasks/TaskManagerTest.java diff --git a/sdk-server-common/src/test/java/io/a2a/server/tasks/TaskUpdaterTest.java b/server-common/src/test/java/io/a2a/server/tasks/TaskUpdaterTest.java similarity index 100% rename from sdk-server-common/src/test/java/io/a2a/server/tasks/TaskUpdaterTest.java rename to server-common/src/test/java/io/a2a/server/tasks/TaskUpdaterTest.java diff --git a/sdk-server-common/src/test/java/io/a2a/server/util/async/AsyncUtilsTest.java b/server-common/src/test/java/io/a2a/server/util/async/AsyncUtilsTest.java similarity index 100% rename from sdk-server-common/src/test/java/io/a2a/server/util/async/AsyncUtilsTest.java rename to server-common/src/test/java/io/a2a/server/util/async/AsyncUtilsTest.java diff --git a/sdk-server-common/src/test/resources/logback.xml b/server-common/src/test/resources/logback.xml similarity index 100% rename from sdk-server-common/src/test/resources/logback.xml rename to server-common/src/test/resources/logback.xml diff --git a/transport/grpc/pom.xml b/transport/grpc/pom.xml index bde1315bc..982ae3b8e 100644 --- a/transport/grpc/pom.xml +++ b/transport/grpc/pom.xml @@ -55,13 +55,6 @@ jakarta.inject jakarta.inject-api - ch.qos.logback logback-classic From f0bf9fae515bb78c7945f7379c376e88a466908a Mon Sep 17 00:00:00 2001 From: Kabir Khan Date: Thu, 7 Aug 2025 11:29:50 +0200 Subject: [PATCH 08/10] Rename grpc client property --- reference/grpc/src/main/resources/application.properties | 4 ++-- .../java/io/a2a/server/grpc/quarkus/QuarkusA2AGrpcTest.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/reference/grpc/src/main/resources/application.properties b/reference/grpc/src/main/resources/application.properties index 5504ba5b6..840386426 100644 --- a/reference/grpc/src/main/resources/application.properties +++ b/reference/grpc/src/main/resources/application.properties @@ -1,5 +1,5 @@ -quarkus.grpc.clients.a2-a-service.host=localhost -quarkus.grpc.clients.a2-a-service.port=9001 +quarkus.grpc.clients.a2a-service.host=localhost +quarkus.grpc.clients.a2a-service.port=9001 # The GrpcHandler @ApplicationScoped annotation is not compatible with Quarkus quarkus.arc.exclude-types=io.a2a.grpc.handler.GrpcHandler \ No newline at end of file diff --git a/reference/grpc/src/test/java/io/a2a/server/grpc/quarkus/QuarkusA2AGrpcTest.java b/reference/grpc/src/test/java/io/a2a/server/grpc/quarkus/QuarkusA2AGrpcTest.java index 076d9a29b..30fb9c71c 100644 --- a/reference/grpc/src/test/java/io/a2a/server/grpc/quarkus/QuarkusA2AGrpcTest.java +++ b/reference/grpc/src/test/java/io/a2a/server/grpc/quarkus/QuarkusA2AGrpcTest.java @@ -88,7 +88,7 @@ public class QuarkusA2AGrpcTest { .build(); public static final String APPLICATION_JSON = "application/json"; - @GrpcClient("a2-a-service") + @GrpcClient("a2a-service") A2AServiceGrpc.A2AServiceBlockingStub client; private final int serverPort = 8081; From a4325ed9ecab96c155ca3157e44aa5424d60a5a4 Mon Sep 17 00:00:00 2001 From: Kabir Khan Date: Thu, 7 Aug 2025 11:33:02 +0200 Subject: [PATCH 09/10] Move the reference/grpc application.properties to the test resources --- .../grpc/src/{main => test}/resources/application.properties | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename reference/grpc/src/{main => test}/resources/application.properties (100%) diff --git a/reference/grpc/src/main/resources/application.properties b/reference/grpc/src/test/resources/application.properties similarity index 100% rename from reference/grpc/src/main/resources/application.properties rename to reference/grpc/src/test/resources/application.properties From 24f7571b2d6b070db8a2984e6ff0e7a2f3c584da Mon Sep 17 00:00:00 2001 From: Kabir Khan Date: Thu, 7 Aug 2025 11:59:32 +0200 Subject: [PATCH 10/10] Move default producers into own module --- pom.xml | 1 + reference/common/pom.xml | 76 +++++++++++++++++++ .../common}/quarkus/DefaultProducers.java | 9 +-- .../src/main/resources/META-INF/beans.xml | 0 reference/grpc/pom.xml | 5 ++ reference/jsonrpc/pom.xml | 5 ++ 6 files changed, 88 insertions(+), 8 deletions(-) create mode 100644 reference/common/pom.xml rename reference/{jsonrpc/src/main/java/io/a2a/server/apps => common/src/main/java/io/a2a/server/common}/quarkus/DefaultProducers.java (83%) create mode 100644 reference/common/src/main/resources/META-INF/beans.xml diff --git a/pom.xml b/pom.xml index 5ff404a5a..f95d6c094 100644 --- a/pom.xml +++ b/pom.xml @@ -279,6 +279,7 @@ client common examples/helloworld + reference/common reference/grpc reference/jsonrpc server-common diff --git a/reference/common/pom.xml b/reference/common/pom.xml new file mode 100644 index 000000000..84f4ff74c --- /dev/null +++ b/reference/common/pom.xml @@ -0,0 +1,76 @@ + + + 4.0.0 + + + io.github.a2asdk + a2a-java-sdk-parent + 0.2.6.Beta1-SNAPSHOT + ../../pom.xml + + a2a-java-sdk-reference-common + + jar + + Java A2A Reference Server: Common + Java SDK for the Agent2Agent Protocol (A2A) - Common classes for A2A Reference Servers (based on Quarkus) + + + + ${project.groupId} + a2a-java-sdk-server-common + ${project.version} + + + ${project.groupId} + a2a-java-sdk-tests-server-common + ${project.version} + provided + + + ${project.groupId} + a2a-java-sdk-tests-server-common + test-jar + test + ${project.version} + + + io.quarkus + quarkus-reactive-routes + + + jakarta.enterprise + jakarta.enterprise.cdi-api + + + jakarta.inject + jakarta.inject-api + + + org.slf4j + slf4j-api + + + io.quarkus + quarkus-junit5 + test + + + io.quarkus + quarkus-rest-client-jackson + test + + + org.junit.jupiter + junit-jupiter-api + test + + + io.rest-assured + rest-assured + test + + + \ No newline at end of file diff --git a/reference/jsonrpc/src/main/java/io/a2a/server/apps/quarkus/DefaultProducers.java b/reference/common/src/main/java/io/a2a/server/common/quarkus/DefaultProducers.java similarity index 83% rename from reference/jsonrpc/src/main/java/io/a2a/server/apps/quarkus/DefaultProducers.java rename to reference/common/src/main/java/io/a2a/server/common/quarkus/DefaultProducers.java index 2264355ac..95227c008 100644 --- a/reference/jsonrpc/src/main/java/io/a2a/server/apps/quarkus/DefaultProducers.java +++ b/reference/common/src/main/java/io/a2a/server/common/quarkus/DefaultProducers.java @@ -1,7 +1,4 @@ -package io.a2a.server.apps.quarkus; - -import java.util.ArrayList; -import java.util.Collections; +package io.a2a.server.common.quarkus; import jakarta.enterprise.context.ApplicationScoped; import jakarta.enterprise.inject.Default; @@ -9,11 +6,7 @@ import io.a2a.server.PublicAgentCard; import io.a2a.server.agentexecution.AgentExecutor; -import io.a2a.server.agentexecution.RequestContext; -import io.a2a.server.events.EventQueue; -import io.a2a.spec.AgentCapabilities; import io.a2a.spec.AgentCard; -import io.a2a.spec.JSONRPCError; import io.quarkus.arc.DefaultBean; /** diff --git a/reference/common/src/main/resources/META-INF/beans.xml b/reference/common/src/main/resources/META-INF/beans.xml new file mode 100644 index 000000000..e69de29bb diff --git a/reference/grpc/pom.xml b/reference/grpc/pom.xml index 74a8d7268..2f2d7edd6 100644 --- a/reference/grpc/pom.xml +++ b/reference/grpc/pom.xml @@ -15,6 +15,11 @@ Java SDK for the Agent2Agent Protocol (A2A) - A2A gRPC Reference Server (based on Quarkus) + + ${project.groupId} + a2a-java-sdk-reference-common + ${project.version} + ${project.groupId} a2a-java-sdk-transport-grpc diff --git a/reference/jsonrpc/pom.xml b/reference/jsonrpc/pom.xml index 1efdd8a46..3f0116ce2 100644 --- a/reference/jsonrpc/pom.xml +++ b/reference/jsonrpc/pom.xml @@ -18,6 +18,11 @@ Java SDK for the Agent2Agent Protocol (A2A) - A2A JSONRPC Reference Server (based on Quarkus) + + ${project.groupId} + a2a-java-sdk-reference-common + ${project.version} + ${project.groupId} a2a-java-sdk-transport-jsonrpc