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

Claus Ibsen resolved CAMEL-24841.
---------------------------------
    Fix Version/s: 4.23.0
       Resolution: Fixed

> jsonpath: a comparison written as the path ($.status == 'paid') should say 
> that jsonpath is a path and how to write the condition
> ---------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-24841
>                 URL: https://issues.apache.org/jira/browse/CAMEL-24841
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-jbang, camel-jsonpath
>            Reporter: Claus Ibsen
>            Priority: Major
>             Fix For: 4.23.0
>
>
> A condition on a JSON body, written the way people first write it:
> {code:yaml}
> - choice:
>     when:
>       - expression:
>           jsonpath:
>             expression: "$.status == 'paid'"
> {code}
> fails at runtime with the Jayway message
> {code}
> com.jayway.jsonpath.InvalidPathException: Use bracket notion ['my prop'] if 
> your property contains blank characters. position: 2
> {code}
> which talks about a property with blanks that does not exist. What happened: 
> a jsonpath is a path, not a comparison. The condition is written as a filter, 
> {{$[?(@.status == 'paid')]}}, or after {{unmarshal: json:}} as {{simple: 
> "${body[status]} == 'paid'"}}.
> Two places to say so:
> * {{camel validate yaml}} (and the camel-jbang-mcp validation tool) can parse 
> the jsonpath expressions with Jayway as it parses Simple today, and translate 
> this case: "Line 17: jsonpath is a path, not a comparison: for a condition 
> write $[?(@.status == 'paid')], or unmarshal the JSON and write simple: 
> ${body[status]} == 'paid'".
> * At runtime, {{camel-jsonpath}} can wrap the InvalidPathException with the 
> same sentence when the expression contains a comparison operator.
> Found in the round-2 local-model benchmark on the camel-jbang-examples ladder 
> (filter-and-multicast). The same file-processing step in the Java DSL gets 
> the same Jayway message.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to