Raymond created CAMEL-20890: ------------------------------- Summary: Use Step ID's in routeTemplate Key: CAMEL-20890 URL: https://issues.apache.org/jira/browse/CAMEL-20890 Project: Camel Issue Type: Bug Components: camel-core Affects Versions: 4.6.0 Reporter: Raymond
I like to use steps in my routeTemplates. This works, however when I want to specify the ID I cannot use template parameter: {code:java} <routeTemplates id="camel" xmlns="http://camel.apache.org/schema/spring"> <!-- create a route template with the given name --> <routeTemplate id="myTemplate"> <!-- here we define the required input parameters (can have default values) --> <templateParameter name="name"/> <templateParameter name="greeting"/> <templateParameter name="myPeriod" defaultValue="3s"/> <route> <from uri="timer:{{name}}?period={{myPeriod}}"/> <step id="{{name}}"> <setBody> <simple>{{greeting}} {{name}}</simple> </setBody> <log message="${body}"/> </step> </route> </routeTemplate> </routeTemplates> {code} When I create 2 routes with the above template I get the following error: {code:java} java.lang.reflect.InvocationTargetException at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:118) at java.lang.reflect.Method.invoke (Method.java:580) at org.apache.camel.maven.RunMojo$1.run (RunMojo.java:402) at java.lang.Thread.run (Thread.java:1583) Caused by: org.apache.camel.FailedToCreateRouteFromTemplateException: Failed to create route deux from template myTemplate because of duplicate id detected: {{name}}. Please correct ids to be unique among all your routes. at org.apache.camel.impl.DefaultModel.addRouteFromTemplate (DefaultModel.java:518) at org.apache.camel.impl.DefaultModel.addRouteFromTemplatedRoute (DefaultModel.java:566) at org.apache.camel.impl.DefaultCamelContext.addRouteFromTemplatedRoute (DefaultCamelContext.java:384) at org.apache.camel.model.Model.addRouteFromTemplatedRoutes (Model.java:275) at org.apache.camel.builder.RouteBuilder.populateTemplatedRoutes (RouteBuilder.java:822) at org.apache.camel.builder.RouteBuilder.addTemplatedRoutesToCamelContext (RouteBuilder.java:678) at org.apache.camel.impl.engine.AbstractCamelContext.addTemplatedRoutes (AbstractCamelContext.java:993) at org.apache.camel.main.RoutesConfigurer.addDiscoveredRoutes (RoutesConfigurer.java:259) at org.apache.camel.main.RoutesConfigurer.configureRoutes (RoutesConfigurer.java:236) at org.apache.camel.main.BaseMainSupport.configureRoutes (BaseMainSupport.java:613) at org.apache.camel.main.BaseMainSupport.postProcessCamelContext (BaseMainSupport.java:693) at org.apache.camel.main.MainSupport.initCamelContext (MainSupport.java:339) at org.apache.camel.main.Main.doInit (Main.java:133) at org.apache.camel.support.service.BaseService.init (BaseService.java:78) at org.apache.camel.main.MainSupport.run (MainSupport.java:84) at org.apache.camel.main.MainCommandLineSupport.run (MainCommandLineSupport.java:237) at org.apache.camel.example.MyApplication.main (MyApplication.java:41) at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103) at java.lang.reflect.Method.invoke (Method.java:580) at org.apache.camel.maven.RunMojo$1.run (RunMojo.java:402) at java.lang.Thread.run (Thread.java:1583) {code} The step ID doesn't get interpolated and is used a the literal "\{{name}}". I need to set the step id myself to get information about the specific route. Note that I run into when I was using kamelets with the step EIP, but this is a smaller example. -- This message was sent by Atlassian Jira (v8.20.10#820010)