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

Tadayoshi Sato commented on CAMEL-12982:
----------------------------------------

I understand that diverging ideas without clear needs isn't good at this 
moment. Meanwhile, at least there is a need that a user occasionally wants to 
use RAW values like {{foo)&+bar}} in the URI, so let's go back and stick to 
this original request and support RAW{} syntax to solve it. A pull req will 
follow soon.

While working on the fix, I learned the current limitations (including my fix) 
of RAW syntax handling in Camel. Let me write them down here:

Currently Camel supports RAW() syntax in two parts of the endpoint URI: 1) 
query part and 2) host/path part.

# Query part: e.g. {{?password=RAW(p+?%w0rd)&username=scott}}
** In this part almost every character is allowed, including ')' and '}'. If 
you want to use ')&' or '}&' inside RAW then use the other brackets, i.e. 
RAW{..} for ')&' and RAW(..) for '}&'.
** RAW can be used only in the value of a query. A key cannot be notated with 
RAW. If you use RAW in value, use it entirely. Partial usage such as 
{{password=RAW(%%%)bar&...}} is not allowed.
** Implementation details: The query scanner detects the occurrence of ')&' or 
'}&' as the closing of each RAW token.
# Host/path part: e.g. {{mock:RAW(se+ret)+language:xpath:/order/@uri}}
** I don't know when it's useful but for some components usages of RAW syntax 
in the URI are allowed (e.g. mock component).
** However, unlike the query part, it's not possible to use RAW(foo)bar) or 
RAW{foo}bar} in this part. It's still possible to use RAW(foo}bar) and 
RAW{foo)bar} though.
** Implementation details: This is because the scanner cannot rely on ')&' or 
'}&' for the closing mark in host/path part and thus picks up the first 
occurrence of the closing bracket as the closing.

> Add support for alternative RAW() syntax
> ----------------------------------------
>
>                 Key: CAMEL-12982
>                 URL: https://issues.apache.org/jira/browse/CAMEL-12982
>             Project: Camel
>          Issue Type: New Feature
>          Components: camel-core
>            Reporter: Claus Ibsen
>            Assignee: Tadayoshi Sato
>            Priority: Major
>             Fix For: 3.0.0, 2.24.0
>
>
> In some edge case you may have a password=foo)+bar which you want to use 
> as-is. The + sign gets escaped and therefore you need to use RAW syntax. But 
> the closing paranthesis is used the first one. And the parser is not always 
> smart enough. But this can be tricky to improve as you can use &a=v as will 
> and the parser thinks its a new option etc.
> So instead we should add an alternative syntax such as RAW{} where we use 
> curly brackets.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to