Skip to content

Commit 8d31ddf

Browse files
authored
feat: Externalise sdk-jakarta, add list of integrations and make Quarkus reference implementation (#178)
# Description Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly: - [x] Follow the [`CONTRIBUTING` Guide](../CONTRIBUTING.md). - [x] Make your Pull Request title in the <https://www.conventionalcommits.org/> specification. - Important Prefixes for [release-please](https://github.com/googleapis/release-please): - `fix:` which represents bug fixes, and correlates to a [SemVer](https://semver.org/) patch. - `feat:` represents a new feature, and correlates to a SemVer minor. - `feat!:`, or `fix!:`, `refactor!:`, etc., which represent a breaking change (indicated by the `!`) and will result in a SemVer major. - [x] Ensure the tests pass - [x] Appropriate READMEs were updated (if necessary) Fixes #176 🦕
1 parent 03ed17e commit 8d31ddf

File tree

22 files changed

+43
-762
lines changed

22 files changed

+43
-762
lines changed

CONTRIBUTING_INTEGRATIONS.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Contributing A2A SDK Integrations
2+
3+
To add your A2A SDK Integration for your chosen runtime to the list of integrations in the [README](README.md#server-integrations), open a pull request adding it to the list.
4+
5+
The pull request should contain a link to your project page.
6+
7+
Then the project page itself needs to contain the following information as a minimum:
8+
9+
* How to use the integration.
10+
* Ideally there should be a sample demonstrating how to use it
11+
* The integration should have tests, extending [AbstractA2AServerTest](tests/server-common/src/test/java/io/a2a/server/apps/common/AbstractA2AServerTest.java)
12+
* The integration should pass the [TCK](https://github.com/a2aproject/a2a-tck), and make it obvious how to see that it has passed.
13+
* Ideally, the integration should be deployed in Maven Central. If that is not possible, provide clear instructions for how to build it.
14+
15+
If some of the above points are problematic, feel free to point that out in your pull request, and we can discuss further. For example, AbstractA2AServerTest is currently written with only the initial runtimes in mind, and might need some tweaking.

README.md

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -33,32 +33,23 @@ The A2A Java SDK provides a Java server implementation of the [Agent2Agent (A2A)
3333
- [Add a class that creates an A2A Agent Card](#2-add-a-class-that-creates-an-a2a-agent-card)
3434
- [Add a class that creates an A2A Agent Executor](#3-add-a-class-that-creates-an-a2a-agent-executor)
3535

36-
### 1. Add an A2A Java SDK Server Maven dependency to your project
36+
### 1. Add the A2A Java SDK Server Maven dependency to your project
3737

3838
Adding a dependency on an A2A Java SDK Server will provide access to the core classes that make up the A2A specification
3939
and allow you to run your agentic Java application as an A2A server agent.
4040

41-
The A2A Java SDK provides two A2A server endpoint implementations, one based on Jakarta REST (`a2a-java-sdk-server-jakarta`) and one based on Quarkus Reactive Routes (`a2a-java-sdk-server-quarkus`). You can choose the one that best fits your application.
41+
The A2A Java SDK provides a [reference A2A server implementation](reference-impl/README.md) based on [Quarkus](https://quarkus.io) for use with our tests and examples. However, the project is designed in such a way that it is trivial to integrate with various Java runtimes.
4242

43-
Add **one** of the following dependencies to your project:
43+
[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.
4444

45-
> *⚠️ The `io.github.a2asdk` `groupId` below is temporary and will likely change for future releases.*
45+
To use the reference implementation add the following dependency to your project:
4646

47-
```xml
48-
<dependency>
49-
<groupId>io.github.a2asdk</groupId>
50-
<artifactId>a2a-java-sdk-server-jakarta</artifactId>
51-
<!-- Use a released version from https://github.com/a2aproject/a2a-java/releases -->
52-
<version>${io.a2a.sdk.version}</version>
53-
</dependency>
54-
```
55-
56-
OR
47+
> *⚠️ The `io.github.a2asdk` `groupId` below is temporary and will likely change for future releases.*
5748
5849
```xml
5950
<dependency>
6051
<groupId>io.github.a2asdk</groupId>
61-
<artifactId>a2a-java-sdk-server-quarkus</artifactId>
52+
<artifactId>a2a-java-reference-server</artifactId>
6253
<!-- Use a released version from https://github.com/a2aproject/a2a-java/releases -->
6354
<version>${io.a2a.sdk.version}</version>
6455
</dependency>
@@ -372,5 +363,13 @@ This project is licensed under the terms of the [Apache 2.0 License](LICENSE).
372363

373364
See [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines.
374365

366+
## Server Integrations
367+
The following list contains community contributed integrations with various Java Runtimes.
368+
369+
To contribute an integration, please see [CONTRIBUTING_INTEGRATIONS.md](CONTRIBUTING_INTEGRATIONS.md).
370+
371+
* [reference-impl/README.md](reference-impl/README.md) - Reference implementation, based on Quarkus.
372+
* https://github.com/wildfly-extras/a2a-java-sdk-server-jakarta - This integration is based on Jakarta EE, and should work in all runtimes supporting the [Jakarta EE Web Profile](https://jakarta.ee/specifications/webprofile/).
373+
375374

376375

examples/helloworld/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
</dependency>
3434
<dependency>
3535
<groupId>io.github.a2asdk</groupId>
36-
<artifactId>a2a-java-sdk-server-quarkus</artifactId>
36+
<artifactId>a2a-java-reference-server</artifactId>
3737
<version>${project.version}</version>
3838
</dependency>
3939
</dependencies>

examples/helloworld/server/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<dependencies>
1919
<dependency>
2020
<groupId>io.github.a2asdk</groupId>
21-
<artifactId>a2a-java-sdk-server-quarkus</artifactId>
21+
<artifactId>a2a-java-reference-server</artifactId>
2222
</dependency>
2323
<dependency>
2424
<groupId>io.quarkus</groupId>

pom.xml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -271,8 +271,7 @@
271271
<module>common</module>
272272
<module>spec</module>
273273
<module>client</module>
274-
<module>sdk-jakarta</module>
275-
<module>sdk-quarkus</module>
274+
<module>reference-impl</module>
276275
<module>tck</module>
277276
<module>examples/helloworld</module>
278277
<module>tests/server-common</module>

reference-impl/README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# A2A Java SDK Reference Server Integration
2+
3+
This is a reference server for the A2A SDK for Java, that we use to run tests, as well as to demonstrate examples.
4+
5+
It is based on [Quarkus](https://quarkus.io), and makes use of Quarkus's [Reactive Routes](https://quarkus.io/guides/reactive-routes).
6+
7+
It is a great choice if you use Quarkus!
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
<artifactId>a2a-java-sdk-parent</artifactId>
1010
<version>0.2.3.Beta2-SNAPSHOT</version>
1111
</parent>
12-
<artifactId>a2a-java-sdk-server-quarkus</artifactId>
12+
<artifactId>a2a-java-reference-server</artifactId>
1313

1414
<packaging>jar</packaging>
1515

16-
<name>Java A2A SDK for Quarkus</name>
17-
<description>Java SDK for the Agent2Agent Protocol (A2A) - SDK - Quarkus</description>
16+
<name>Java A2A Reference Server</name>
17+
<description>Java SDK for the Agent2Agent Protocol (A2A) - A2A Reference Server (based on Quarkus)</description>
1818

1919
<dependencies>
2020
<dependency>

sdk-quarkus/src/main/java/io/a2a/server/apps/quarkus/A2AServerRoutes.java renamed to reference-impl/src/main/java/io/a2a/server/apps/quarkus/A2AServerRoutes.java

File renamed without changes.
File renamed without changes.

sdk-quarkus/src/test/java/io/a2a/server/apps/quarkus/QuarkusA2AServerTest.java renamed to reference-impl/src/test/java/io/a2a/server/apps/quarkus/QuarkusA2AServerTest.java

File renamed without changes.

0 commit comments

Comments
 (0)