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

Claus Ibsen resolved CAMEL-24882.
---------------------------------
    Resolution: Fixed

> camel-jbang - say that a script returning 'resource:file:x' returns the text, 
> not the file (validator hint and error diagnose)
> ------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-24882
>                 URL: https://issues.apache.org/jira/browse/CAMEL-24882
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-jbang
>            Reporter: Claus Ibsen
>            Priority: Minor
>             Fix For: 4.23.0
>
>
> The {{resource:}} prefix is resolved on the text of an expression: 
> {{constant: "resource:file:order.json"}} makes the file's content the body, 
> {{simple: "resource:file:${...}"}} picks the file per message, {{groovy: 
> "resource:file:script.groovy"}} loads the script. A value *returned* by a 
> script is never resolved. In the camel-jbang-mcp stepwise benchmark 
> (transform/groovy, "pick the file by the timer counter") the local model wrote
> {code}
> - setBody:
>     expression:
>       groovy: |
>         def counter = exchange.getProperty('CamelTimerCounter', Integer) ?: 0
>         counter == 0 ? 'resource:file:order.json' : 
> 'resource:file:order-bad-email.json'
> - unmarshal:
>     json:
>       library: Jackson
> {code}
> so the body became the text {{resource:file:order.json}} and the unmarshal 
> failed with {{Unrecognized token 'resource'}}; two of five runs recovered by 
> reading the log, one did not. Nothing at write time or run time says what 
> happened.
> Two deterministic hints, no change to how {{resource:}} works:
> * validator (camel validate, camel_write_file): a script expression (groovy, 
> jq, ...) whose text holds a quoted {{'resource:file:}} / 
> {{"resource:classpath:}} literal gets: "a script that returns 
> 'resource:file:x' returns that text; to load a file as the body write 
> constant: \"resource:file:x\", or simple: \"resource:file:${...}\" for a name 
> chosen per message"
> * camel_error_diagnose: a JSON/XML parse failure whose body is a string 
> starting with {{resource:}} gets the same explanation.



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

Reply via email to