Skip to content

refactor!: resolve all split packages across Maven modules#987

Merged
ehsavoie merged 3 commits into
a2aproject:mainfrom
kabir:split-packages
Jul 22, 2026
Merged

refactor!: resolve all split packages across Maven modules#987
ehsavoie merged 3 commits into
a2aproject:mainfrom
kabir:split-packages

Conversation

@kabir

@kabir kabir commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

Rename packages in leaf/dependent modules so no Java package spans multiple Maven modules. This eliminates duplicate package-info.class in published jars (which broke Android builds) and enables javadoc:aggregate.

Package moves:

  • org.a2aproject.sdk.util (spec) -> org.a2aproject.sdk.spec.util
  • org.a2aproject.sdk.extras.opentelemetry (server) -> org.a2aproject.sdk.extras.opentelemetry.server
  • org.a2aproject.sdk.client.http (android) -> org.a2aproject.sdk.client.http.android
  • org.a2aproject.sdk.client.http (vertx) -> org.a2aproject.sdk.client.http.vertx
  • org.a2aproject.sdk.compat03.conversion (test) -> org.a2aproject.sdk.compat03.conversion.test
  • org.a2aproject.sdk.examples.helloworld -> .client / .server sub-packages
  • org.a2aproject.sdk.test -> org.a2aproject.sdk.bom.test.{sdk,reference,extras}
  • org.a2aproject.sdk.server.events (test) -> org.a2aproject.sdk.extras.queuemanager.replicated.events

BREAKING CHANGE: While renaming packages isn't ideal, we've aimed to minimize inconvenience, while dealing with the split package problem. As all the moved classes exposed to users are in the extras/ submodules, and not the core SDK, we chose to stay on the 1.1.x stream.

This fixes #978

@kabir kabir changed the title refactor: resolve all split packages across Maven modules refactor!: resolve all split packages across Maven modules Jul 21, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request refactors package structures and imports across multiple modules. Specifically, utility classes (such as CollectionCopies, ErrorDetail, PageToken, and Utils) have been moved from org.a2aproject.sdk.util to org.a2aproject.sdk.spec.util. Additionally, HTTP client implementations for Android and Vert.x, as well as OpenTelemetry server decorators, have been relocated to more specific subpackages. Feedback is provided to eliminate unnecessary reflection when instantiating VertxA2AHttpClient inside VertxA2AHttpClientProvider, as both classes now reside in the same package and module.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Rename packages in leaf/dependent modules so no Java package spans
multiple Maven modules. This eliminates duplicate package-info.class
in published jars (which broke Android builds) and enables
javadoc:aggregate.

Package moves:
- org.a2aproject.sdk.util (spec) -> org.a2aproject.sdk.spec.util
- org.a2aproject.sdk.extras.opentelemetry (server) -> org.a2aproject.sdk.extras.opentelemetry.server
- org.a2aproject.sdk.client.http (android) -> org.a2aproject.sdk.client.http.android
- org.a2aproject.sdk.client.http (vertx) -> org.a2aproject.sdk.client.http.vertx
- org.a2aproject.sdk.compat03.conversion (test) -> org.a2aproject.sdk.compat03.conversion.test
- org.a2aproject.sdk.examples.helloworld -> .client / .server sub-packages
- org.a2aproject.sdk.test -> org.a2aproject.sdk.bom.test.{sdk,reference,extras}
- org.a2aproject.sdk.server.events (test) -> org.a2aproject.sdk.extras.queuemanager.replicated.events

This fixes a2aproject#978

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ehsavoie and others added 2 commits July 22, 2026 12:51
Remove EventQueueTestHelper from org.a2aproject.sdk.server.events in
the replicated module (split package with server-common). Consolidate
tapQueue() into server-common's test-jar EventQueueUtil and add a
test-jar dependency. Normalize trailing newlines in new package-info
files.

Signed-off-by: Emmanuel Hugonnet <ehugonne@redhat.com>
@ehsavoie
ehsavoie merged commit 9bb5aa5 into a2aproject:main Jul 22, 2026
14 of 17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Duplicate package-info.class in a2a-java-sdk-common and -spec breaks Android builds

2 participants