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

Claus Ibsen reassigned CAMEL-26115:
-----------------------------------

    Assignee: Claus Ibsen

> camel-datasonnet, camel-hl7, camel-openfeature, camel-ognl, camel-python, 
> camel-quickjs, camel-javascript, camel-python3 - small bugs of the languages 
> found by the body type checks
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-26115
>                 URL: https://issues.apache.org/jira/browse/CAMEL-26115
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-hl7, camel-ognl, camel-script
>    Affects Versions: 4.18.0, 4.22.0, 4.23.0
>            Reporter: Claus Ibsen
>            Assignee: Claus Ibsen
>            Priority: Minor
>             Fix For: 4.24.0
>
>
> Found while adding the catalog body types of the last 13 languages 
> (CAMEL-24961), checked with {{camel run}} on 4.24.0-SNAPSHOT (main 
> ffe0255463d5). They are small, so they are in one ticket. Line numbers are on 
> that commit.
> h4. 1. datasonnet
> * The {{source}} option is ignored when the message body is null: the 
> empty-body check looks at the body, not at the payload {{source}} gave 
> ({{DatasonnetExpression}}, line 125), so the payload is replaced by an empty 
> document. Checked: {{source: header:foo}} with a null body fails with 
> "attempted to index a string", with a body it works.
> * {{matches()}} sets the field {{outputMediaType}} of the expression to 
> application/x-java-object (line 81), so a later evaluate on the same 
> expression ignores the output media type of the header or the exchange 
> property, and two threads share it.
> * A stream body without a body media type fails: the stream cache is passed 
> to Jackson as a Java object (lines 128-129) and fails with 
> {{InaccessibleObjectException}}.
> * An expression that gives null leaves a Document with null content, and 
> {{$\{body\}}} then fails with "NullPointerException: this.content is null".
> h4. 2. hl7terser
> The body is converted to a HAPI Message with a conversion that may give null 
> ({{Hl7TerserLanguage}}, line 45), so a stream (an HTTP body with stream 
> caching), a file of the file consumer, a Map or no body fails with a bare 
> {{NullPointerException: Message may not be null}} from HAPI instead of an 
> error that says what the body must be. The HL7 data format reads streams and 
> files; the language does not.
> *Proposed change*: use a mandatory conversion, and read a stream or a file 
> like the data format does.
> h4. 3. openfeature
> * As an expression (setBody, setHeader, setProperty), a boolean flag is 
> evaluated as a string flag ({{OpenFeatureLanguage}}, lines 128-133, only a 
> Boolean result type evaluates a boolean), so it gives the default value 
> "false" as text with a TYPE_MISMATCH warning, not the flag value. The 
> language is described as a boolean feature flag language.
> * Number and object flags cannot be read with the language: there is no 
> option to choose the type of the evaluation.
> * The doc says the flag is evaluated as a boolean (line 32) and later that 
> the expression gives the string variant (line 159).
> h4. 4. ognl
> The doc lists a {{message}} variable, which does not exist: {{RootObject}} of 
> camel-ognl has {{getRequest()}} but no {{getMessage()}}, and {{message.body}} 
> fails with {{NoSuchPropertyException: RootObject.message}}. The RootObject of 
> camel-spring (SpEL) has {{getMessage()}}.
> *Proposed change*: add {{getMessage()}} to the RootObject of camel-ognl.
> h4. 5. python
> * The result is always the Python text, {{str()}}, of what the script returns 
> ({{PythonExpression}}, lines 87-90): a dict gives its Python text, a byte 
> array body returned as it is gives "array('b', [...])", and None gives the 
> text "None", so the body can never become null.
> * An error while the script runs, such as a NameError, is reported as 
> {{ExpressionIllegalSyntaxException}} (line 93).
> h4. 6. quickjs
> * A JavaScript Set comes back as an empty Map, so its values are lost; a 
> Uint8Array comes back as a Map of index to value.
> * {{camel.setBody(...)}} inside a script used in setBody or transform is 
> replaced by the result of the script, which the doc does not say.
> h4. 7. js and python3
> * A script that returns a function gives a polyglot value tied to the closed 
> context, whose {{toString()}} fails with "Context is invalid or closed".
> * js: a Uint8Array comes back as a List of Integer. python3: bytes, bytearray 
> and memoryview come back as a List of Integer, not a byte array 
> ({{Python3Language}}, lines 325-333).
> _Claude Code on behalf of davsclaus_



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to