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

Work on CAMEL-25323 started by Guillaume Nodet.
-----------------------------------------------
> camel-dataweave - unconverted DataWeave fails silently or points at the 
> generated DataSonnet; add an executed test corpus
> -------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-25323
>                 URL: https://issues.apache.org/jira/browse/CAMEL-25323
>             Project: Camel
>          Issue Type: Bug
>            Reporter: Claus Ibsen
>            Assignee: Guillaume Nodet
>            Priority: Major
>
> DataWeave scripts ({{.dwl}} or inline {{%dw}}) are translated to DataSonnet 
> when the route starts (CAMEL-23530). When the translator cannot handle 
> something, the user does not find out properly:
> * The parser skips tokens it does not understand and skips missing brackets 
> without an error ({{DataWeaveParser.expect()}} and the {{parsePrimary}} 
> fallback). Only {{match}} and "unexpected token" are counted as "could not 
> convert".
> * When something is not converted, the route still starts. 
> {{DatasonnetLanguage.convertDataWeave}} only logs a WARN and that part 
> becomes {{null}}. Example: {{payload.name match \{ case "bob" -> 1 else -> 0 
> \}}} silently returns {{\{"k":null\}}}.
> * When the translated script does fail, the error refers to a line and column 
> in the generated DataSonnet, which the user never wrote, e.g. {{Problem 
> parsing: Expected ")":6:21, found "$) null, b"}} for {{payload.items filter 
> ($.qty > 1)}}.
> * The 55 tests in {{DataWeaveConverterTest}} only check that the output 
> contains certain text ({{assertTrue(result.contains(...))}}). None of them 
> run the generated DataSonnet, which is how the bugs in the follow-up issue 
> got through.
> Proposal:
> # By default, fail at route start when any part could not be converted. The 
> message should name the DataWeave line, the construct, and a hint (e.g. 
> "match is not supported, rewrite as if/else"). Keep the lenient behaviour 
> only as an explicit option.
> # Make the parser strict: a missing token or an unknown token is an error 
> with the DataWeave line and column, not something to skip.
> # Where possible, also report DataSonnet runtime errors with the original 
> DataWeave location.
> # Add a test set that runs end to end: one case per file with the {{.dwl}} 
> script, an input message and the expected output, run through 
> camel-datasonnet. Use it to cover the follow-up fixes.
> _Claude Code on behalf of davsclaus_



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

Reply via email to