[
https://issues.apache.org/jira/browse/CAMEL-26566?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen resolved CAMEL-26566.
---------------------------------
Resolution: Fixed
> camel-groovy - a script that returns a GString gives a String
> -------------------------------------------------------------
>
> Key: CAMEL-26566
> URL: https://issues.apache.org/jira/browse/CAMEL-26566
> Project: Camel
> Issue Type: Bug
> Components: camel-groovy
> Reporter: Claus Ibsen
> Priority: Minor
> Fix For: 4.24.0
>
>
> A Groovy expression such as "not enough ${sku}" returns a GString
> (org.codehaus.groovy.runtime.GStringImpl), not a String. GroovyExpression
> converts the result to the type that is asked for, and setBody, setHeader,
> setVariable and transform ask for Object, so the GString stays as it is.
> A GString is not equal to a String, and components that check for a String do
> not take it as text. camel-jms, for example, sends it as an ObjectMessage,
> which is off by default since Camel 4.14, so the exchange fails with "JMS
> ObjectMessage is disabled by default ...". With objectMessageEnabled=true it
> then fails with "JMS ObjectMessage deserialization blocked for class:
> org.codehaus.groovy.runtime.GStringImpl".
> The Python and JavaScript languages already return a String for their text. A
> Groovy expression or script that returns a GString should give a String too.
> Found by the local-model benchmark (example
> connect-service-jms-request-reply): all 6 runs that wrote a Groovy script in
> the stock service step hit it.
> What users can notice: a body, header or variable that a Groovy expression
> sets is now a String where it was a GString, and a predicate that returns the
> GString "false" or "" no longer matches.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)