Claus Ibsen created CAMEL-24837:
-----------------------------------
Summary: camel validate yaml: say in plain words what a YAML
indentation error is, instead of the raw snakeyaml message
Key: CAMEL-24837
URL: https://issues.apache.org/jira/browse/CAMEL-24837
Project: Camel
Issue Type: Improvement
Components: camel-jbang, camel-yaml-dsl
Reporter: Claus Ibsen
When a YAML route file has a list item indented differently from the first item
of the same list, {{camel validate yaml}} (and the camel-jbang-mcp validation
tool) return the raw parser message:
{code}
: com.fasterxml.jackson.dataformat.yaml.snakeyaml.error.MarkedYAMLException:
while parsing a block mapping
in 'reader', line 28, column 27:
when:
^
expected <block end>, but found '-'
in 'reader', line 53, column 27:
- expression:
^
at [Source: (StringReader); line: 53, column: 27]
{code}
Nobody who does not know snakeyaml can act on "expected <block end>, but found
'-'". What happened is: the list under {{when:}} (line 28) starts at line 29
with an item indented to column 29, and line 53 has another {{- expression:}}
at column 27, so the parser thinks the mapping ended and finds a stray list
item.
Suggested: catch {{MarkedYAMLException}} in the validator and translate the
common cases, keeping the line numbers:
* "expected <block end>, but found '-'": "Line 53: this list item is indented
differently from the first item of the list that starts at line 29; every item
of a list must start in the same column."
* "found unknown escape character": "Line 3: a backslash inside double quotes
is an escape; write the value in single quotes: 'file:orders?include=.*\.json'"
(a model wrote {{include=.*\.json}} in double quotes in the same benchmark).
* "mapping values are not allowed here": the usual "a colon in an unquoted
value".
Found in the round-2 local-model benchmark on the camel-jbang-examples ladder:
the model got this message, validated the same unchanged content ten more
times, and never recovered. A person with a nested choice gets the same message.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)