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

Work on CAMEL-25470 started by Claus Ibsen.
-------------------------------------------
> camel-dataweave - $ shorthand with .@attr, .*field or ? is mis-converted 
> without a TODO
> ---------------------------------------------------------------------------------------
>
>                 Key: CAMEL-25470
>                 URL: https://issues.apache.org/jira/browse/CAMEL-25470
>             Project: Camel
>          Issue Type: Bug
>            Reporter: Claus Ibsen
>            Assignee: Claus Ibsen
>            Priority: Major
>             Fix For: 4.23.0
>
>
> The DataWeave to DataSonnet converter mis-parses the $ lambda shorthand when 
> it is followed by an XML attribute selector (.@attr), a multi-value selector 
> (.*field) or an existence check (?). parseDollarShorthand() consumes the dot 
> but only collects identifiers, so the rest of the expression is parsed 
> wrongly and no TODO is counted, which means DatasonnetLanguage's fail-fast 
> check (CAMEL-25323) does not catch it.
> Examples on main:
> ||DataWeave||Emitted today||
> |payload.items map $.@id|std.map(function(x) x., body.items) - invalid 
> Jsonnet|
> |payload.items map $.*Item|std.map(function(x) x., body.items) * Item|
> |payload.items reduce ($$ + $.*price)|acc + item * price - silently wrong|
> |payload.items reduce ($$ + $.@qty)|parse error: expected RPAREN but found AT|
> |payload.items filter $.price?|? binds to the whole filter expression|
> In addition, a reduce shorthand body ($$ / $) that uses if/else or default 
> (e.g. payload.items reduce ($$ + $.price default 0)) is not supported and is 
> emitted as a TODO.
> The explicit lambda form (item, acc = 0) -> acc + item.@qty is converted 
> correctly.
> Follow-up to CAMEL-25324 and CAMEL-25323.



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

Reply via email to