[
https://issues.apache.org/jira/browse/CAMEL-24531?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Federico Mariani updated CAMEL-24531:
-------------------------------------
Description:
*Background*
The seven vault/secrets early-resolution listeners in Camel Spring Boot share
almost identical traversal, placeholder matching, resolution-failure, and
property-source override logic. They are currently implemented separately in
the AWS Secrets Manager, Azure Key Vault, CyberArk Vault, Google Secret
Manager, HashiCorp Vault, IBM Secrets Manager, and Spring Cloud Config starters.
This duplication made the fail-closed change in
https://github.com/apache/camel-spring-boot/pull/1900 touch all seven
implementations and makes future behavioural fixes prone to inconsistent
application.
*Goal*
Introduce a common abstraction in {{core/camel-spring-boot}} (for example
{{EarlyResolutionPropertiesParser}}) and refactor the existing listeners to use
it. The abstraction should centralize the common early-resolution lifecycle and
preserve component-specific client creation and resolver details.
*Scope*
* Preserve Spring property-source precedence and the existing listener ordering.
* Parameterize the component-specific placeholder prefix, resolver function,
and diagnostic wording rather than duplicating the control flow.
* Add focused coverage for shared behaviour and retain component-specific
coverage where needed.
was:
h2 Background
The seven vault/secrets early-resolution listeners in Camel Spring Boot share
almost identical traversal, placeholder matching, resolution-failure, and
property-source override logic. They are currently implemented separately in
the AWS Secrets Manager, Azure Key Vault, CyberArk Vault, Google Secret
Manager, HashiCorp Vault, IBM Secrets Manager, and Spring Cloud Config starters.
This duplication made the fail-closed change in
https://github.com/apache/camel-spring-boot/pull/1900 touch all seven
implementations and makes future behavioural fixes prone to inconsistent
application.
h2 Goal
Introduce a common abstraction in {{core/camel-spring-boot}} (for example
{{EarlyResolutionPropertiesParser}}) and refactor the existing listeners to use
it. The abstraction should centralize the common early-resolution lifecycle and
preserve component-specific client creation and resolver details.
h2 Scope
* Preserve Spring property-source precedence and the existing listener ordering.
* Parameterize the component-specific placeholder prefix, resolver function,
and diagnostic wording rather than duplicating the control flow.
* Add focused coverage for shared behaviour and retain component-specific
coverage where needed.
h2 Context
Raised during review of https://github.com/apache/camel-spring-boot/pull/1900,
particularly
https://github.com/apache/camel-spring-boot/pull/1900#issuecomment-5441526018.
_Created by Codex on behalf of Federico Mariani._
> Camel Spring Boot: Extract a shared early-resolution properties parser
> ----------------------------------------------------------------------
>
> Key: CAMEL-24531
> URL: https://issues.apache.org/jira/browse/CAMEL-24531
> Project: Camel
> Issue Type: Improvement
> Reporter: Federico Mariani
> Priority: Major
>
> *Background*
> The seven vault/secrets early-resolution listeners in Camel Spring Boot share
> almost identical traversal, placeholder matching, resolution-failure, and
> property-source override logic. They are currently implemented separately in
> the AWS Secrets Manager, Azure Key Vault, CyberArk Vault, Google Secret
> Manager, HashiCorp Vault, IBM Secrets Manager, and Spring Cloud Config
> starters.
> This duplication made the fail-closed change in
> https://github.com/apache/camel-spring-boot/pull/1900 touch all seven
> implementations and makes future behavioural fixes prone to inconsistent
> application.
> *Goal*
> Introduce a common abstraction in {{core/camel-spring-boot}} (for example
> {{EarlyResolutionPropertiesParser}}) and refactor the existing listeners to
> use it. The abstraction should centralize the common early-resolution
> lifecycle and preserve component-specific client creation and resolver
> details.
> *Scope*
> * Preserve Spring property-source precedence and the existing listener
> ordering.
> * Parameterize the component-specific placeholder prefix, resolver function,
> and diagnostic wording rather than duplicating the control flow.
> * Add focused coverage for shared behaviour and retain component-specific
> coverage where needed.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)