You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Vladimir Dobos (Jira)" <ji...@apache.org> on 2020/08/24 08:23:00 UTC
[jira] [Created] (CAMEL-15455) EndpointDSL breaks expressions in
query parameters
Vladimir Dobos created CAMEL-15455:
--------------------------------------
Summary: EndpointDSL breaks expressions in query parameters
Key: CAMEL-15455
URL: https://issues.apache.org/jira/browse/CAMEL-15455
Project: Camel
Issue Type: Bug
Components: camel-endpointdsl
Affects Versions: 3.4.3
Reporter: Vladimir Dobos
Expressions in parameters are destroyed by url-encoding during url creation in AbstractEndpointBuilder (using little non-sensical example to make reproduction setup easier).
For example:
{code:java}
.toD(seda("someName").size("${header.size}")){code}
will be translated by AbstractEndpointBuilder#computeUri (which uses URISupport#createQueryString) to
_seda://someName?size=%24%7Bheader.size%7D_
This will, of course, throw exception on endpoint creation.
For some reason, thrown exception is url-decoded, so parameter names will look OK, even when they are broken (this makes the error more difficult to spot)
{code:java}
...
java.lang.String to the required type: int with value ${header.size} due to org.apache.camel.TypeConversionException: Error during type conversion from type: java.lang.String to the required type: java.lang.Integer with value ${header.size} due to java.lang.NumberFormatException: For input string: "${header.size}"
...
{code}
Enclosing expressions in RAW(..), fixes the issue, it is however quite suboptimal.
Following workaround will work:
{code:java}
.toD(seda("someName").size("RAW(${header.size})")){code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)