You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "shashank (Jira)" <ji...@apache.org> on 2026/10/06 00:34:00 UTC
[jira] [Commented] (CAMEL-25068) camel-core - Route templates: follow-ups from the deep review
[ https://issues.apache.org/jira/browse/CAMEL-25068?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18123580#comment-18123580 ]
shashank commented on CAMEL-25068:
----------------------------------
I went through both items on current main (374c04877418) with a JUnit test each. Both reproduce, and both need a decision, so no PR yet; options and a recommendation below.
*1. A bean given to {{TemplatedRouteBuilder}} with the same name as a {{templateBean}}* - reproduced, and the precedence depends on how the caller binds the bean:
* {{TemplatedRouteBuilder...bean("greeting", mine)}}: the template bean wins;
* {{TemplatedRouteDefinition.bean("greeting", ...)}} ({{addRouteFromTemplatedRoute}}): the template bean wins;
* {{TemplatedRouteBuilder...configure(rtc -> rtc.bind("greeting", mine))}}: the caller's bean wins.
The caller's beans are bound before {{DefaultModel.doAddRouteFromTemplate}}, which then binds the template beans into the same local registry and replaces them; configurers run later, when the route is created.
Options:
* (a) the caller's bean wins: {{addTemplateBeans}} skips a template bean whose name the caller already bound. Consistent with the configurer, with CAMEL-25048 item 6 (the builder's configurer runs after the template's), with parameters overriding template defaults, and with replacing a bean by a mock in tests. Kamelets are not affected (they only pass parameters). Needs an upgrade note and a sentence in route-template.adoc;
* (b) the template bean wins: document it, and bind the template beans after the configurers so the configurer path agrees;
* (c) fail on a clash.
Recommendation: (a).
*2. A route id from a template that is the same as an existing route* - reproduced: with a route {{existing}} ({{from("direct:existing")}}), {{TemplatedRouteBuilder...routeId("existing")...add()}} does not throw, and afterwards the only route {{existing}} consumes from the template's endpoint; the original route is gone. Kamelets go through the same code, so two {{kamelet:tmpl/myRoute?...}} endpoints with the same explicit route id and different parameters replace each other's route as well.
Options:
* (a) fail with {{FailedToCreateRouteFromTemplateException}} when a route with that id already exists, for routes from templates (and Kamelets) - consistent with the existing "Duplicate id detected" check for node ids. Needs an upgrade note. Route reload with the default {{removeAllRoutes=true}} removes all routes first and is not affected; with {{removeAllRoutes=false}} a reloaded {{templatedRoute}} would need its old route removed first (to be covered by a test);
* (b) log a WARN and keep replacing;
* (c) keep and document.
Recommendation: (a).
Both are small changes once decided; I'll send a PR for each referencing this ticket.
_Claude Code on behalf of allthingssecurity_
> camel-core - Route templates: follow-ups from the deep review
> -------------------------------------------------------------
>
> Key: CAMEL-25068
> URL: https://issues.apache.org/jira/browse/CAMEL-25068
> Project: Camel
> Issue Type: Improvement
> Components: camel-core
> Reporter: Claus Ibsen
> Priority: Minor
>
> Follow-ups found in the review of CAMEL-25048 (https://github.com/apache/camel/pull/26929), not changed there:
> # A bean given to TemplatedRouteBuilder with the same name as a templateBean is overridden by the template bean. Which one should win needs a decision (and documentation).
> # A route id from a template that is the same as an existing route silently replaces that route (as adding a route with an existing id does). Consider failing or warning for templated routes.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)