[ 
https://issues.apache.org/jira/browse/CAMEL-8962?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14625510#comment-14625510
 ] 

Chris Pimlott commented on CAMEL-8962:
--------------------------------------

This happens because of the second line in 
VelocityEndpoint.findOrCreateEndpoint:

{code}
    public VelocityEndpoint findOrCreateEndpoint(String uri, String 
newResourceUri) {
        String newUri = uri.replace(getResourceUri(), newResourceUri);
        log.debug("Getting endpoint with URI: {}", newUri);
        return getCamelContext().getEndpoint(newUri, VelocityEndpoint.class);
    }
{code}

The problem is a mismatch in encoding between {{uri}} and {{getResourceUri()}}.
{code}
* url: velocity://%5Btemplate-in-header%5D
* getResourceUri(): [template-in-header]
{code}

The solution may just to be urlencode the first argument to {{replace.call}} 
but I'm not confident enough about my understanding of where and when encoding 
is done in Camel URIs to be absolutely certain.

> CamelVelocityResourceUri does not work when velocity URL contains URL encoded 
> characters
> ----------------------------------------------------------------------------------------
>
>                 Key: CAMEL-8962
>                 URL: https://issues.apache.org/jira/browse/CAMEL-8962
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-velocity
>            Reporter: Chris Pimlott
>
> Specifying the a velocity template via the {{CamelVelocityResourceUri}} does 
> not work correctly if the {{velocity:}} used contains a character that is URL 
> encoded.
> For example:
> {code}
> from("direct:input")
> .setHeader(VelocityConstants.VELOCITY_RESOURCE_URI).constant("velocity/letter.vm")
> .to("velocity:[template-in-header]")
> .to("mock:results");
> {code}
> Results in: java.io.FileNotFoundException: Cannot find resource: 
> [template-in-header] in classpath for URI: [template-in-header]



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to