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

Work on CAMEL-25598 started by Claus Ibsen.
-------------------------------------------
> camel-core - Routes created from route templates should record their source 
> files for reload and tooling
> --------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-25598
>                 URL: https://issues.apache.org/jira/browse/CAMEL-25598
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-core
>            Reporter: Claus Ibsen
>            Assignee: Claus Ibsen
>            Priority: Minor
>             Fix For: 4.24.0
>
>
> A route created from a {{templatedRoute}} (or a route template / Kamelet) 
> does not record which files it comes from, so dev mode reload and tooling 
> cannot find them.
> h3. Problem
> * {{Route.getSourceResource()}} is null for a route created from a route 
> template or Kamelet, although {{Route.getSourceLocation()}} points at the 
> template's file and line ({{RouteTemplateDefinition.asRouteDefinition}} 
> copies the input, with its location, but not the resource). The debugger and 
> message history dev consoles show no source code for these routes, and the 
> management HTTP server cannot serve their source file.
> * The file that declares a {{templatedRoute}} is not recorded anywhere once 
> the route is created.
> * {{RouteWatcherReloadStrategy}} (file-watch reload with 
> {{removeAllRoutes=true}}, the default) works out which files to load again 
> from the source resource of the running routes. When one file changes, a file 
> holding only {{templatedRoute}} entries, or only the {{routeTemplate}}, is 
> not loaded again: its routes are gone after the reload, or the reload fails 
> with "Cannot find RouteTemplate" and the previous routes are restored. 
> On-demand reload loads all files and is not affected.
> h3. Proposal
> * A route created from a route template gets the template's resource as its 
> source resource, so {{getSourceResource()}} and {{getSourceLocation()}} agree.
> * A route created from a {{templatedRoute}} remembers the resource that 
> declares it, kept apart from the source resource (the line numbers are in the 
> template file): {{RouteDefinition}} / 
> {{NamedRoute.getTemplatedRouteResource()}} and 
> {{Route.getTemplatedRouteResource()}}. The route template id is exposed on 
> {{Route}} too.
> * Expose both for tools, not only the built-in reloader: JMX 
> ({{ManagedRouteMBean}}: route template id, templated route source) and the 
> route dev console (JSON and text), so the CLI and MCP tools can show and use 
> them.
> * {{RouteWatcherReloadStrategy}} collects the source resource and the 
> templated route resource of the running routes (Kamelet routes are skipped: 
> they come from their Kamelet, and are created again with their parent route).
> Follows CAMEL-25554, which makes route reload create the templated routes 
> again.



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

Reply via email to