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

Claus Ibsen resolved CAMEL-24362.
---------------------------------
    Resolution: Fixed

> Generate YAML DSL completion tree from canonical schema and catalog metadata
> ----------------------------------------------------------------------------
>
>                 Key: CAMEL-24362
>                 URL: https://issues.apache.org/jira/browse/CAMEL-24362
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-yaml-dsl, tooling
>            Reporter: Claus Ibsen
>            Assignee: Claus Ibsen
>            Priority: Major
>             Fix For: 4.22.0
>
>
> Currently the TUI source editor tab completion for YAML DSL routes is 
> hand-coded per context level — each nesting depth (EIP options, expression 
> languages, language options, data format names, data format options, route 
> options, top-level elements) has its own context detection method in 
> SourceViewer and provider method in SourceTab.
> This approach works but does not scale: adding a new EIP option kind or a new 
> nesting level requires manual code changes. It also risks going stale when 
> the EIP model changes.
> h3. Proposal
> Generate a completion tree during the build (via 
> {{camel-package-maven-plugin}} or a new mojo) that maps every valid YAML DSL 
> position to its children, derived from:
> - The canonical YAML DSL JSON schema ({{camelYamlDsl-canonical.json}}) — 
> defines the structural tree of valid keys at each level
> - The EIP/component/language/dataformat catalog metadata — provides 
> descriptions, types, required flags, default values, enum values, and 
> deprecated status
> The generated artifact (a JSON file or Java class in the catalog) would be a 
> single tree that the TUI completor walks at runtime instead of querying the 
> catalog API and doing per-context logic.
> h3. Benefits
> - Automatically up to date when EIP models, languages, or data formats change
> - No manual code changes needed per context level
> - Single source of truth for what is valid where in YAML DSL
> - Could also be used by other tooling (IDE plugins, MCP server, LSP) for YAML 
> DSL completion
> - Replaces ~500 lines of hand-coded context detection and provider methods
> h3. Implementation notes
> - Follow the same pattern as the existing catalog and YAML schema generation 
> (source-generated during build, committed to {{src/generated}})
> - The tree should include: valid child keys at each position, their types, 
> descriptions, required/deprecated flags, default values, enum choices, and 
> whether they expect a value or nested structure
> - The tree root corresponds to the YAML DSL document root (top-level elements 
> like route, from, rest, beans, etc.)



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

Reply via email to