[
https://issues.apache.org/jira/browse/CAMEL-25180?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Work on CAMEL-25180 started by Claus Ibsen.
-------------------------------------------
> camel-jbang - camel overview and camel validate should share one set of
> route/endpoint rules
> --------------------------------------------------------------------------------------------
>
> Key: CAMEL-25180
> URL: https://issues.apache.org/jira/browse/CAMEL-25180
> Project: Camel
> Issue Type: Improvement
> Components: camel-jbang, camel-yaml-dsl
> Reporter: Claus Ibsen
> Assignee: Claus Ibsen
> Priority: Major
>
> *camel overview* (CAMEL-25143) and *camel validate* (YAML DSL validator) each
> have their own route/endpoint analysis, and a third regex-based reader
> (EndpointConsumerChecks) feeds the consumer check of camel validate for
> Java/XML. They disagree on the same project, for example:
> * A {{poll:}} consumer counts only in overview, so the validator reports the
> endpoint as unconsumed.
> * {{to: direct:$\{header.x\}}} gives overview a missing-route warning, while
> the validator treats it as dynamic (and suggests toD).
> * The validator is silent when unsure (placeholder consumers, route
> templates, Kamelets, Maven subdirectory), but overview still warns.
> * {{deadLetterUri}}, REST {{to:}} and top-level
> onException/routeConfiguration count as senders only in overview.
> * Integration / Pipe CRs: the validator gives false "unconsumed" results.
> * overview merges scheme families (disruptor:q is linked to seda:q), which
> are different endpoints at runtime.
> * The internal-scheme sets differ between overview, RouteGraph.INTERNAL and
> the runtime DefaultRouteTopologyDumper; two of them still list vm/direct-vm,
> which do not exist in Camel 4.
> * Inside the validator, BodyTypeFlow does not strip {{//}} but
> EndpointConsumers does.
> *Proposal*
> # Put the endpoint rules in one shared public helper in
> camel-yaml-dsl-validator (camel-jbang-core already depends on it): internal
> schemes (aligned with the runtime), URI normalization, dynamic detection
> ({{$\{}} and {{\{\{}} for to/toD), producer keys (to, toD, wireTap, enrich,
> deadLetterUri, saga compensation/completion, REST to, top-level
> onException/routeConfiguration), and consumer keys (from, poll).
> # Make both camel overview (missing-route, unreferenced) and camel validate
> use it. Adopt the validator's "silent when unknown" rules in overview, or
> downgrade those findings with a reason. Fix the validator gaps listed above.
> # Add a parity test in camel-jbang-core with a shared set of YAML fixtures,
> asserting that the overview findings and the validate findings agree.
> *Later (not in scope here, noted so it is not forgotten):* one DSL-neutral
> analysis over the real Camel model (RoutesDefinition), shared by validate and
> overview. The Java reader in CAMEL-25148 / #27122 (JavaRouteReader over
> LwJavaParser) is most of that model walker already; XML can use ModelParser.
> Keep the structural YAML reader for now (YAML to model needs a CamelContext
> and component URI factories, and --apply-descriptions needs line positions).
> Port EndpointConsumers, BodyTypeFlow, cycle and duplicate-id checks onto that
> graph.
> Related: CAMEL-25143, CAMEL-24955, CAMEL-24844, CAMEL-25148, and PR #27100
> (camel topology, drafted in favour of camel overview).
> _Filed by Claude Code on behalf of davsclaus_
--
This message was sent by Atlassian Jira
(v8.20.10#820010)