Raymond created CAMEL-23377:
-------------------------------

             Summary: Multiline init blocks are initialized properly
                 Key: CAMEL-23377
                 URL: https://issues.apache.org/jira/browse/CAMEL-23377
             Project: Camel
          Issue Type: Bug
          Components: camel-core
    Affects Versions: 4.20.0
            Reporter: Raymond


I was following the latest (Next) documentation of Simple expressions:

[https://camel.apache.org/components/next/languages/simple-language.html#_init_blocks]



I used the following example:

 
{code:java}
$init{
  $greeting := ${upper('Hello $body}'}
  $level := ${header.code > 999 ? 'Gold' : 'Silver'}
}init$
{
  "message": "$greeting",
  "status": "$level"
}
{code}

The example still seems from 4.18.x, and has several issues:

1. upper --> uppercase
2. uppercase function is not properly closed with a )
3. No ; after the variable declaration 

After the correction it looks like this:

 
{code:java}
$init{
  $greeting := ${uppercase('Hello $body')};
  $level := ${header.code > 999 ? 'Gold' : 'Silver'};
}init$
{
  "message": "$greeting",
  "status": "$level"
} {code}

However, even when running this code I don't get the expected result.

*Expected:*
{code:java}
{
  "message": "HELLO JOE",
  "status": "Silver"
}{code}

*Actual:*


{code:java}
{
  "message": "HELLO JOE;
  $level := Silver;
",
  "status": "$level"
} {code}

So it seems that multiline variable declaration aren't evaluated separately.

BTW as now ; is used to indicate the end of a line, I would expect that this 
also works (all declaration on one line):


{code:java}
$init{$greeting := ${uppercase('Hello $body')}; $level := ${header.code > 999 ? 
'Gold' : 'Silver'};}init$
{
  "message": "$greeting",
  "status": "$level"
}{code}

Maybe good to check this case also.







 



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

Reply via email to