Skip to content

feat(spring): switch default HTTP client to symphony-bdk-http-jdk - #907

Merged
symphony-enrico merged 1 commit into
finos:mainfrom
symphony-enrico:feat/switch-default-http-jdk
Oct 5, 2026
Merged

symphony-enrico merged 1 commit into
finos:mainfrom
symphony-enrico:feat/switch-default-http-jdk

Conversation

@symphony-enrico

Copy link
Copy Markdown
Contributor

Description

Switches the default HTTP client in symphony-bdk-spring (and across the CLI and example modules) to symphony-bdk-http-jdk, completing the transition to Java's built-in java.net.http.HttpClient as the default transport for BDK 4.x.

Key changes:

  • symphony-bdk-core-spring-boot-starter:
    • Replaced the implementation dependency on symphony-bdk-http-jersey with symphony-bdk-http-jdk.
    • Exposed an ApiClientBuilderProvider bean in BdkCoreConfig annotated with @ConditionalOnMissingBean that defaults to ApiClientBuilderProviderJdk, enabling simple transport overrides without having to re-declare ApiClientFactory.
    • Injected ApiClientBuilderProvider into ApiClientFactory bean method, and retained apiClientFactory(properties) for source compatibility.
    • Kept symphony-bdk-http-jersey strictly at testImplementation scope for MockApiClient compatibility, and explicitly passed new ApiClientBuilderProviderJdk() in ApiClientFactoryMock to prevent classpath SPI lookup conflicts during testing.
  • symphony-bdk-cli: Switched bundled standalone distribution runtime dependency from symphony-bdk-http-jersey to symphony-bdk-http-jdk.
  • symphony-bdk-examples: Updated bdk-ai-agent-example, bdk-core-examples, bdk-group-example, and bdk-multi-instances-example to use symphony-bdk-http-jdk by default, removing unused Jersey dependencies from bdk-core-examples.
  • Documentation: Updated docs/migration.md to reference symphony-bdk-http-jdk as the default runtime HTTP transport.
  • OpenSpec: Added switch-default-http-jdk change artifacts (proposal.md, specs/jdk-http-transport/spec.md, design.md, tasks.md).

Dependencies

None.

Checklist

  • Filled properly the description and dependencies, if any
  • Unit/Integration tests updated or added
  • Javadoc added or updated
  • Updated the documentation in docs folder

@symphony-enrico
symphony-enrico marked this pull request as draft October 2, 2026 16:35
@thibauult

Copy link
Copy Markdown
Member

Thanks @symphony-enrico for opening this one. My biggest concern here is that it could be seen as a breaking change. Even though one of the main purpose of the BDK 4.x release is to have the symphony-bdk-http-jdk as a default HTTP implementation layer.

@symphony-enrico
symphony-enrico force-pushed the feat/switch-default-http-jdk branch 2 times, most recently from a0fc5a2 to ab0d15d Compare October 5, 2026 14:07
@symphony-enrico
symphony-enrico marked this pull request as ready for review October 5, 2026 14:17
@symphony-enrico

Copy link
Copy Markdown
Contributor Author

Thanks @symphony-enrico for opening this one. My biggest concern here is that it could be seen as a breaking change. Even though one of the main purpose of the BDK 4.x release is to have the symphony-bdk-http-jdk as a default HTTP implementation layer.

In most cases the change is transparent. Added in migration note details about it

- Switch symphony-bdk-core-spring-boot-starter implementation dependency from symphony-bdk-http-jersey to symphony-bdk-http-jdk
- Expose ApiClientBuilderProvider as a @ConditionalOnMissingBean in BdkCoreConfig defaulting to ApiClientBuilderProviderJdk
- Wire ApiClientBuilderProvider into ApiClientFactory and provide single-arg overload for backwards compatibility
- Switch bundled runtime HTTP client in symphony-bdk-cli and all examples to symphony-bdk-http-jdk
- Retain symphony-bdk-http-jersey at testImplementation scope in starter for MockApiClient test fixture compatibility
- Update docs/migration.md to reflect symphony-bdk-http-jdk as the default runtime HTTP transport
- Add OpenSpec change switch-default-http-jdk detailing proposal, specs, design, and completed tasks
@symphony-enrico
symphony-enrico force-pushed the feat/switch-default-http-jdk branch from ab0d15d to 8130484 Compare October 5, 2026 14:29

@thibauult thibauult left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM 👍🏻

@symphony-enrico
symphony-enrico merged commit 2f77274 into finos:main Oct 5, 2026
4 checks passed
Tahak-Symphony pushed a commit to Tahak-Symphony/symphony-bdk-java that referenced this pull request Oct 15, 2026
…nos#907)

- Switch symphony-bdk-core-spring-boot-starter implementation dependency from symphony-bdk-http-jersey to symphony-bdk-http-jdk
- Expose ApiClientBuilderProvider as a @ConditionalOnMissingBean in BdkCoreConfig defaulting to ApiClientBuilderProviderJdk
- Wire ApiClientBuilderProvider into ApiClientFactory and provide single-arg overload for backwards compatibility
- Switch bundled runtime HTTP client in symphony-bdk-cli and all examples to symphony-bdk-http-jdk
- Retain symphony-bdk-http-jersey at testImplementation scope in starter for MockApiClient test fixture compatibility
- Update docs/migration.md to reflect symphony-bdk-http-jdk as the default runtime HTTP transport
- Add OpenSpec change switch-default-http-jdk detailing proposal, specs, design, and completed tasks
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.

2 participants