You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Stefano Rocca (Jira)" <ji...@apache.org> on 2022/01/19 18:35:00 UTC

[jira] [Created] (CAMEL-17516) Environment variables takes precedence over route template parameter

Stefano Rocca created CAMEL-17516:
-------------------------------------

             Summary: Environment variables takes precedence over route template parameter
                 Key: CAMEL-17516
                 URL: https://issues.apache.org/jira/browse/CAMEL-17516
             Project: Camel
          Issue Type: Bug
          Components: came-core
    Affects Versions: 3.11.5, 3.11.1
         Environment: Windows 10
Java 8.0.282
            Reporter: Stefano Rocca
             Fix For: 3.14.0
         Attachments: sample_code.txt

While setting up a route template, if you use a parameter named like an environment variable, camel resolves first the environment variable and ignores the value of the parameter set using the TemplateRouteBuilder.

Here follows a short program that exhibit this behaviour (this code is also attached to this issue as "sample_code.txt")

import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.builder.TemplatedRouteBuilder;
import org.apache.camel.main.ConfigureRouteTemplates;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    
    public static final Logger LOG = LoggerFactory.getLogger(Main.class);
    
    public static class MyRouteBuilder extends RouteBuilder {
        
        public void configure() throws Exception {
            routeTemplate("myTemplate")
                .templateParameter("name")
                .templateParameter("path")
                .templateParameter("myPeriod", "3s")
                .from("timer:\{{name}}?period=\{{myPeriod}}")
                    .log("\{{path}}");
        }
    }

    public static class MyTemplateBuilder implements ConfigureRouteTemplates {

        public void configure(CamelContext context) {
            TemplatedRouteBuilder.builder(context, "myTemplate")
                .parameter("name", "one")
                .parameter("path", "test path")
            .add();
        }
    }
    public static void main(String[] args) throws Exception {
        org.apache.camel.main.Main m = new org.apache.camel.main.Main();
        m.configure().addRoutesBuilder(MyRouteBuilder.class);
        m.bind("myTemplateBuilder", new MyTemplateBuilder());
        m.run(args);
    }

}

This sample code, when run with Camell 3.11.1 or 3.11.5, outputs the content of the PATH variable.
If you run it with Camel 3.14.0, it outputs "test path".



--
This message was sent by Atlassian Jira
(v8.20.1#820001)