Claus Ibsen created CAMEL-24875:
-----------------------------------

             Summary: camel-jbang - camel validate yaml skips a multi-line 
simple expression (expression: | block scalar)
                 Key: CAMEL-24875
                 URL: https://issues.apache.org/jira/browse/CAMEL-24875
             Project: Camel
          Issue Type: Bug
          Components: camel-jbang
            Reporter: Claus Ibsen


{{SimpleChecks.validateYamlSimple}} (the simple checks of {{camel validate 
yaml}}, also used by the TUI AI answer check and the MCP validator) is line 
based: for {{simple:}} followed by {{expression: |}} or {{expression: >}} the 
value on the line is empty, so the whole expression is skipped without a 
report. Every multi-line simple expression is unchecked, and an init block 
({{$init{ ... }init$}}) is always multi-line since each statement must end with 
{{;\n}}.

Verified on 4.23.0-SNAPSHOT: a route with
{code}
- setBody:
    expression:
      simple:
        expression: |
          $init{
            $cleanName := ${trim()} -> ${normalizeWhitespace()} |> 
${uppercase()}
          }init$
          Customer: ${cleanName(${header.customerName})}
{code}
validates with success, and fails at runtime with {{expected symbol whiteSpace 
but was character: operators and values must be separated by a space at 
location 43}}. A missing {{}init$}} is not reported either. The catalog can 
judge these once it is handed the whole text, as 
{{AbstractCamelCatalog.doValidateSimple}} delegates to 
{{SimpleLanguage.createExpression}}.

Proposed: join the indented lines of a block scalar (and a multi-line 
plain/quoted scalar) into the expression text before validating, and report the 
error at the line of {{expression:}}. Found while analysing CAMEL-24874.



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

Reply via email to