Skip to content

CAMEL-23338: camel-opensearch - Add OpenSearchClient as component option - #24980

Merged
davsclaus merged 1 commit into
mainfrom
feature/CAMEL-23338-opensearch-custom-client
Jul 21, 2026
Merged

CAMEL-23338: camel-opensearch - Add OpenSearchClient as component option#24980
davsclaus merged 1 commit into
mainfrom
feature/CAMEL-23338-opensearch-custom-client

Conversation

@davsclaus

Copy link
Copy Markdown
Contributor

Summary

Claude Code on behalf of davsclaus

Adds a new openSearchClient component option to camel-opensearch, allowing users to provide a pre-configured OpenSearchClient instance instead of having the component build one internally from host addresses. This is useful when a custom transport is needed, for example when connecting to AWS OpenSearch Service with IAM-based authentication via AwsSdk2Transport.

Key design points:

  • Component-level option with @Metadata(label = "advanced", autowired = true) — follows the same pattern as the existing client (RestClient) option
  • When both RestClient and OpenSearchClient are available, the OpenSearchClient takes precedence
  • All lifecycle methods (doStart, process, cleanup, doStop) are properly guarded — the component never closes or manages resources it doesn't own (the user's custom client/transport)

Changes:

  • OpensearchComponent — new openSearchClient field with autowiring
  • OpensearchEndpoint — stores and exposes the client
  • OpensearchProducer — branches on custom client in process(), guards lifecycle in doStart/doStop/cleanup
  • Documentation — new "Custom OpenSearchClient Example" section
  • Generated files — catalog, component configurer, component DSL all regenerated

Supersedes: #24320 (contributor did not complete review feedback after multiple rounds)

Test plan

  • Unit tests pass (mvn test in components/camel-opensearch)
  • CI build passes
  • Integration tests with OpenSearch container validate default (RestClient) path is unbroken

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Claus Ibsen <claus.ibsen@gmail.com>
@github-actions

Copy link
Copy Markdown
Contributor

🌟 Thank you for your contribution to the Apache Camel project! 🌟
🤖 CI automation will test this PR automatically.

🐫 Apache Camel Committers, please review the following items:

  • First-time contributors require MANUAL approval for the GitHub Actions to run
  • You can use the command /component-test (camel-)component-name1 (camel-)component-name2.. to request a test from the test bot although they are normally detected and executed by CI.
  • You can label PRs using skip-tests and test-dependents to fine-tune the checks executed by this PR.
  • Build and test logs are available in the summary page. Only Apache Camel committers have access to the summary.

⚠️ Be careful when sharing logs. Review their contents before sharing them publicly.

@gnodet gnodet 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.

Review: CAMEL-23338 — Add OpenSearchClient as component option

Clean feature addition following the existing client (RestClient) option pattern. The implementation is well-structured:

  • Transport extraction via _transport() is the right approach — avoids duplicating async client creation logic
  • Lifecycle guards are thoroughdoStart(), cleanup(), and doStop() all properly skip when a user-provided openSearchClient is set, preventing the component from closing resources it doesn't own
  • Documentation targets the real-world use case (AWS OpenSearch + IAM auth)

Suggestions

  1. Tests: No new tests exercise the openSearchClient != null path. A unit test verifying transport extraction and lifecycle guard behavior would add confidence — even without a running OpenSearch instance.

  2. disconnect interaction: When openSearchClient is set, the disconnect endpoint option is silently skipped (correctly). A note in the docs would help users understand this.

Neither blocks the merge — the logic is straightforward and well-guarded.

LGTM ✅


Reviewed with Claude Code on behalf of gnodet. This review was generated by an AI agent and may contain inaccuracies; please verify all suggestions before applying.

@github-actions

Copy link
Copy Markdown
Contributor

🧪 CI tested the following changed modules:

  • catalog/camel-catalog
  • components/camel-opensearch
  • dsl/camel-componentdsl

🔬 Scalpel shadow comparison — Scalpel: 11 tested, 27 compile-only — current: 9 all tested

Maveniverse Scalpel detected 38 affected modules (current approach: 9).

⚠️ Modules only in Scalpel (29)
  • apache-camel
  • camel-allcomponents
  • camel-catalog
  • camel-catalog-console
  • camel-catalog-lucene
  • camel-catalog-maven
  • camel-catalog-suggest
  • camel-componentdsl
  • camel-csimple-maven-plugin
  • camel-endpointdsl
  • camel-endpointdsl-support
  • camel-itest
  • camel-jbang-core
  • camel-jbang-it
  • camel-jbang-main
  • camel-jbang-plugin-edit
  • camel-jbang-plugin-generate
  • camel-jbang-plugin-kubernetes
  • camel-jbang-plugin-test
  • camel-kamelet-main
  • camel-launcher
  • camel-report-maven-plugin
  • camel-route-parser
  • camel-yaml-dsl
  • camel-yaml-dsl-deserializers
  • camel-yaml-dsl-maven-plugin
  • coverage
  • docs
  • dummy-component

Skip-tests mode would test 11 modules (3 direct + 8 downstream), skip tests for 27 (generated code, meta-modules)

Modules Scalpel would test (11)
  • camel-catalog
  • camel-componentdsl
  • camel-jbang-mcp
  • camel-jbang-plugin-mcp
  • camel-jbang-plugin-route-parser
  • camel-jbang-plugin-tui
  • camel-jbang-plugin-validate
  • camel-launcher-container
  • camel-opensearch
  • camel-yaml-dsl-validator
  • camel-yaml-dsl-validator-maven-plugin
Modules with tests skipped (27)
  • apache-camel
  • camel-allcomponents
  • camel-catalog-console
  • camel-catalog-lucene
  • camel-catalog-maven
  • camel-catalog-suggest
  • camel-csimple-maven-plugin
  • camel-endpointdsl
  • camel-endpointdsl-support
  • camel-itest
  • camel-jbang-core
  • camel-jbang-it
  • camel-jbang-main
  • camel-jbang-plugin-edit
  • camel-jbang-plugin-generate
  • camel-jbang-plugin-kubernetes
  • camel-jbang-plugin-test
  • camel-kamelet-main
  • camel-launcher
  • camel-report-maven-plugin
  • camel-route-parser
  • camel-yaml-dsl
  • camel-yaml-dsl-deserializers
  • camel-yaml-dsl-maven-plugin
  • coverage
  • docs
  • dummy-component

ℹ️ Shadow mode — Scalpel observes but does not affect test execution. Learn more

All tested modules (38 modules)
  • Camel :: All Components Sync point
  • Camel :: Assembly
  • Camel :: Catalog :: CSimple Maven Plugin (deprecated)
  • Camel :: Catalog :: Camel Catalog
  • Camel :: Catalog :: Camel Report Maven Plugin
  • Camel :: Catalog :: Camel Route Parser
  • Camel :: Catalog :: Console
  • Camel :: Catalog :: Dummy Component
  • Camel :: Catalog :: Lucene (deprecated)
  • Camel :: Catalog :: Maven
  • Camel :: Catalog :: Suggest
  • Camel :: Component DSL
  • Camel :: Coverage
  • Camel :: Docs
  • Camel :: Endpoint DSL
  • Camel :: Endpoint DSL :: Support
  • Camel :: Integration Tests
  • Camel :: JBang :: Core
  • Camel :: JBang :: Integration tests
  • Camel :: JBang :: MCP
  • Camel :: JBang :: Main
  • Camel :: JBang :: Plugin :: Edit
  • Camel :: JBang :: Plugin :: Generate
  • Camel :: JBang :: Plugin :: Kubernetes
  • Camel :: JBang :: Plugin :: MCP
  • Camel :: JBang :: Plugin :: Route Parser
  • Camel :: JBang :: Plugin :: TUI
  • Camel :: JBang :: Plugin :: Testing
  • Camel :: JBang :: Plugin :: Validate
  • Camel :: Kamelet Main
  • Camel :: Launcher
  • Camel :: Launcher :: Container
  • Camel :: OpenSearch Java API Client
  • Camel :: YAML DSL
  • Camel :: YAML DSL :: Deserializers
  • Camel :: YAML DSL :: Maven Plugins
  • Camel :: YAML DSL :: Validator
  • Camel :: YAML DSL :: Validator Maven Plugin

⚙️ View full build and test results

@davsclaus davsclaus added this to the 4.22.0 milestone Jul 21, 2026
@davsclaus davsclaus added the enhancement New feature or request label Jul 21, 2026
@davsclaus davsclaus self-assigned this Jul 21, 2026
@davsclaus
davsclaus merged commit d8aec87 into main Jul 21, 2026
6 checks passed
@davsclaus
davsclaus deleted the feature/CAMEL-23338-opensearch-custom-client branch July 21, 2026 14:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants