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

Raymond updated CAMEL-20890:
----------------------------
    Attachment: routetemplate-xml.zip

> 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
>            Priority: Minor
>         Attachments: routetemplate-xml.zip
>
>
> 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)

Reply via email to