Claus Ibsen created CAMEL-24851:
-----------------------------------

             Summary: camel-jbang - when a YAML route fails to load, camel run 
prints the schema validator's report (what to write), not only the loader's 
message
                 Key: CAMEL-24851
                 URL: https://issues.apache.org/jira/browse/CAMEL-24851
             Project: Camel
          Issue Type: Improvement
          Components: camel-jbang
            Reporter: Claus Ibsen


When a YAML route fails to load, {{camel run}} prints the loader's message, for 
example

{noformat}
Error starting Camel: Error constructing YAML node id: pollEnrich: unsupported 
field: uri
{noformat}

which knows the field is wrong but not what to write. The schema validator 
(camel-yaml-dsl-validator, already a dependency of camel-jbang-core) has the 
message that says what to write, with the hints that keep being added to it 
(CAMEL-24698, CAMEL-24836, CAMEL-24850...), but {{camel run}} never calls it: 
only {{camel validate yaml}} and the MCP validate tool do. The round-2 
benchmark shows the effect: of 67 attempts that failed at startup, 54 had a 
validator message that said what to write, and it was never shown because the 
file was run without validating first. People prototyping with the CLI do the 
same: write, run, read the error.

Proposal, in the CLI, not the runtime:
* on a failed start whose cause is a YAML load error 
({{YamlDeserializationException}} / "Error constructing YAML node" / "Error 
pre-parsing resource"), {{camel run}} runs the schema validator on the file the 
loader named and prints its report; the report first (it may list several 
problems in the file, which is the better outcome), the exception after
* the same on a failed reload in {{--dev}} mode, so the edit-save loop gets the 
better message on each save
* the MCP run tool and the camel-jbang views ({{camel-jbang-mcp}} server) carry 
the report in their result, so an agent sees it in the tool output, not only in 
the log

The runtime stays as is: the validator depends on the catalog and is a 
camel-jbang thing. Spring Boot and Quarkus users keep the loader's message, 
which gets its own hints where they matter (the unmarshal/jackson one exists).

Every hint added to the validator then reaches everyone who runs, whether they 
validated first or not.



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

Reply via email to