[ 
https://issues.apache.org/jira/browse/CAMEL-23775?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Luigi De Masi closed CAMEL-23775.
---------------------------------
    Fix Version/s: 4.21.0
       Resolution: Fixed

> Add YAML DSL extension point for component-provided route step deserializers
> ----------------------------------------------------------------------------
>
>                 Key: CAMEL-23775
>                 URL: https://issues.apache.org/jira/browse/CAMEL-23775
>             Project: Camel
>          Issue Type: Improvement
>          Components: dsl
>            Reporter: Luigi De Masi
>            Assignee: Luigi De Masi
>            Priority: Major
>             Fix For: 4.21.0
>
>
> Camel YAML DSL currently supports built-in route model deserializers and 
> custom resolvers registered in the Camel registry. However, optional Camel 
> modules and runtime integrations do not have a generic Camel-owned way to 
> contribute or control YAML route step deserializer discovery before YAML 
> routes are parsed.
>   This makes it difficult for an optional module to expose a custom YAML 
> route step without requiring changes in the YAML DSL module itself or 
> requiring users to manually register YAML resolver beans early enough before 
> route parsing.
>   It also makes runtime integration less flexible, because resolver discovery 
> is tied to runtime classpath scanning. Some runtimes may prefer to provide 
> resolver metadata through their own mechanism, for example build-time 
> discovery or precomputed resolver registration.
>   This improvement adds a YAML DSL extension SPI for route step deserializers.
>   The goal is to let optional modules contribute support for custom YAML step 
> names, map those YAML nodes to Camel route model definitions, and then rely 
> on the existing model/reifier/ProcessorFactory mechanisms for runtime 
> behavior.
>   The extension mechanism should also allow runtimes to replace or customize 
> resolver discovery while preserving the default classpath-based behavior for 
> plain Camel usage.
>   h3. The implementation should:
>    * allow optional modules to contribute {{YamlDeserializerResolver}} 
> implementations;
>    * discover those resolvers before YAML routes are parsed;
>    * provide a Camel-owned provider SPI for resolver discovery;
>    * preserve the default classpath-based resolver discovery behavior;
>    * allow runtimes to replace or customize resolver discovery through the 
> Camel context plugin mechanism;
>    * preserve existing registry-based resolver lookup;
>    * support deterministic ordering or precedence when multiple resolvers are 
> available;
>    * allow custom YAML steps to contain nested steps when the target model 
> definition supports them;
>    * avoid hard-coding component-specific step names in the YAML DSL module.
>   h3. Acceptance criteria:
>    * A test or sample optional module can provide a custom YAML route step 
> deserializer.
>    * The custom YAML step is discovered automatically when the module is 
> available.
>    * The custom YAML step can be parsed into a Camel route model definition.
>    * Nested YAML {{steps}} are supported when the custom model definition 
> supports child outputs.
>    * Existing YAML routes and built-in EIPs continue to parse unchanged.
>    * Existing registry-based resolver discovery continues to work.
>    * Resolver ordering/precedence is deterministic.
>    * Runtime integrations can provide their own resolver discovery provider.
>    * The default implementation preserves existing classpath-based discovery.
>    * The extension mechanism is documented for component authors and runtime 
> integrations.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to