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

Vyacheslav Boyko updated CAMEL-13922:
-------------------------------------
    Description: 
I'm trying to describe a route with Enrich EIP. It should be done as:

1) template producer gives an year (2019, 2012 etc), set it in header and push 
the message into route

2) from that endpoint message should be enriched from URI composed by template:
{code:java}
from("seda:calendar-update-process")
        .setHeader("calendar-uri", 
simple("xmlcalendar.ru/data/ru/${header["+HEADER_YEAR+"]}/calendar.xml"))
        .log(LoggingLevel.WARN, log, "Updating calendar from url: 
${header.calendar-uri}")
        .enrich("http4:$\\{header.calendar-uri\\}", (oldExchange, newExchange) 
-> {
            oldExchange.getIn().setBody(newExchange.getIn().getBody());
            return oldExchange;
        })

{code}
{color:#6a8759}{color}{color:#6a8759}as described on{color} 
[https://camel.apache.org/manual/latest/content-enricher.html] in part named 
'Using dynamic uris'

 

But it cannot parse that expression. I get an error:

 
{code:java}
org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: 
http4://$%5C%7Bheader.calendar-uri%5C%7D due to: Expected scheme-specific part 
at index 6: http4:
        at 
org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:753)
        at 
org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:80)
        at 
org.apache.camel.util.ExchangeHelper.resolveEndpoint(ExchangeHelper.java:91)
        at 
org.apache.camel.processor.Enricher.resolveEndpoint(Enricher.java:299)
        at org.apache.camel.processor.Enricher.process(Enricher.java:165)
        at 
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
        at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:138)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
        at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
        at 
org.apache.camel.component.seda.SedaConsumer.sendToConsumers(SedaConsumer.java:298)
        at 
org.apache.camel.component.seda.SedaConsumer.doRun(SedaConsumer.java:210)
        at 
org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:155)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.URISyntaxException: Expected scheme-specific part at index 
6: http4:
        at java.net.URI$Parser.fail(URI.java:2848)
        at java.net.URI$Parser.failExpecting(URI.java:2854)
        at java.net.URI$Parser.parse(URI.java:3057)
        at java.net.URI.<init>(URI.java:673)
        at 
org.apache.camel.component.http4.HttpComponent.createEndpoint(HttpComponent.java:269)
        at 
org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:130)
        at 
org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:706)
        ... 15 common frames omitted
{code}
 

 

  was:
I'm trying to describe a route with Enrich EIP. It should be done as:

1) template producer gives an year (2019, 2012 etc), set it in header and push 
the message into route

2) from that endpoint message should be enriched from URI composed by template:

{color:#6a8759}"http4://xmlcalendar.ru/data/ru/
$\{header["{color}+{color:#9876aa}HEADER_YEAR{color}+{color:#6a8759}"]
}/calendar.xml" as described on{color} 
[https://camel.apache.org/manual/latest/content-enricher.html] in part named 
'Using dynamic uris'
 
  
 
 But it cannot parse that expression. I get an error:
 
  
{code:java}
org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: 
http4://$%5C%7Bheader.calendar-uri%5C%7D due to: Expected scheme-specific part 
at index 6: http4:
        at 
org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:753)
        at 
org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:80)
        at 
org.apache.camel.util.ExchangeHelper.resolveEndpoint(ExchangeHelper.java:91)
        at 
org.apache.camel.processor.Enricher.resolveEndpoint(Enricher.java:299)
        at org.apache.camel.processor.Enricher.process(Enricher.java:165)
        at 
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
        at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:138)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
        at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
        at 
org.apache.camel.component.seda.SedaConsumer.sendToConsumers(SedaConsumer.java:298)
        at 
org.apache.camel.component.seda.SedaConsumer.doRun(SedaConsumer.java:210)
        at 
org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:155)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.URISyntaxException: Expected scheme-specific part at index 
6: http4:
        at java.net.URI$Parser.fail(URI.java:2848)
        at java.net.URI$Parser.failExpecting(URI.java:2854)
        at java.net.URI$Parser.parse(URI.java:3057)
        at java.net.URI.<init>(URI.java:673)
        at 
org.apache.camel.component.http4.HttpComponent.createEndpoint(HttpComponent.java:269)
        at 
org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:130)
        at 
org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:706)
        ... 15 common frames omitted
{code}

  

 


> http4 does not recognize part of URI provided with header
> ---------------------------------------------------------
>
>                 Key: CAMEL-13922
>                 URL: https://issues.apache.org/jira/browse/CAMEL-13922
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-http4
>    Affects Versions: 2.24.1
>            Reporter: Vyacheslav Boyko
>            Priority: Major
>
> I'm trying to describe a route with Enrich EIP. It should be done as:
> 1) template producer gives an year (2019, 2012 etc), set it in header and 
> push the message into route
> 2) from that endpoint message should be enriched from URI composed by 
> template:
> {code:java}
> from("seda:calendar-update-process")
>         .setHeader("calendar-uri", 
> simple("xmlcalendar.ru/data/ru/${header["+HEADER_YEAR+"]}/calendar.xml"))
>         .log(LoggingLevel.WARN, log, "Updating calendar from url: 
> ${header.calendar-uri}")
>         .enrich("http4:$\\{header.calendar-uri\\}", (oldExchange, 
> newExchange) -> {
>             oldExchange.getIn().setBody(newExchange.getIn().getBody());
>             return oldExchange;
>         })
> {code}
> {color:#6a8759}{color}{color:#6a8759}as described on{color} 
> [https://camel.apache.org/manual/latest/content-enricher.html] in part named 
> 'Using dynamic uris'
>  
> But it cannot parse that expression. I get an error:
>  
> {code:java}
> org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: 
> http4://$%5C%7Bheader.calendar-uri%5C%7D due to: Expected scheme-specific 
> part at index 6: http4:
>       at 
> org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:753)
>       at 
> org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:80)
>       at 
> org.apache.camel.util.ExchangeHelper.resolveEndpoint(ExchangeHelper.java:91)
>       at 
> org.apache.camel.processor.Enricher.resolveEndpoint(Enricher.java:299)
>       at org.apache.camel.processor.Enricher.process(Enricher.java:165)
>       at 
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
>       at 
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
>       at org.apache.camel.processor.Pipeline.process(Pipeline.java:138)
>       at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
>       at 
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
>       at 
> org.apache.camel.component.seda.SedaConsumer.sendToConsumers(SedaConsumer.java:298)
>       at 
> org.apache.camel.component.seda.SedaConsumer.doRun(SedaConsumer.java:210)
>       at 
> org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:155)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>       at java.lang.Thread.run(Thread.java:748)
> Caused by: java.net.URISyntaxException: Expected scheme-specific part at 
> index 6: http4:
>       at java.net.URI$Parser.fail(URI.java:2848)
>       at java.net.URI$Parser.failExpecting(URI.java:2854)
>       at java.net.URI$Parser.parse(URI.java:3057)
>       at java.net.URI.<init>(URI.java:673)
>       at 
> org.apache.camel.component.http4.HttpComponent.createEndpoint(HttpComponent.java:269)
>       at 
> org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:130)
>       at 
> org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:706)
>       ... 15 common frames omitted
> {code}
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

Reply via email to