[
https://issues.apache.org/jira/browse/CAMEL-25079?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen reassigned CAMEL-25079:
-----------------------------------
Assignee: Claus Ibsen
> camel-yaml-io, camel-java-io - Route dumpers produce invalid YAML and Java:
> fix bugs found in a deep review
> -----------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-25079
> URL: https://issues.apache.org/jira/browse/CAMEL-25079
> Project: Camel
> Issue Type: Bug
> Components: camel-core
> Reporter: Claus Ibsen
> Assignee: Claus Ibsen
> Priority: Major
>
> A deep review of the route dumpers to YAML and Java (camel-yaml-io,
> camel-java-io), which are used by the dev console route-dump, JMX,
> dumpRoutes, camel-jbang and the TUI, found the bugs below. Each one was
> reproduced against 4.23.0-SNAPSHOT and has a test that fails without the fix
> (LwModelToJavaDumperTest, YamlPrinterRoundTripTest, YamlWriterEdgeCasesTest).
> # *The Java dump of a route template, rest, route configuration or rest
> configuration is not valid Java* (such as .routeTemplate().id("tpl")...). The
> dumper used the generated generic writer instead of the Java DSL writers that
> JavaDslCompileTest compiles.
> # *The Java dump of a multi-line expression is not valid Java*, as a line
> break was not escaped in the string literal.
> # *The YAML dump is not valid YAML, or reads back as another value, for
> common strings*: a trailing colon (log("Processing:")), a leading , ] or }, a
> carriage return, a multi-line value whose first line starts with a space,
> more than one trailing line break, and text that YAML reads as a number (007,
> +5, 1., .inf).
> # *The YAML dump turns text attributes into numbers*: setHeader("007") was
> dumped as 7, 1d as 1.0, 1e3 as 1000.0, and a template default 0800 as 800. A
> value is now only a number when it is written as that number.
> # *dumpDataFormatsAsYaml writes the dataFormats twice and as one map*, so it
> could not be loaded, and two data formats of the same kind overwrote each
> other. It is now a list of data formats, as the YAML DSL loads them.
> *Not changed (for a later look, these are in the generated writers)*
> * The YAML dump of a rest loses the verb (get/post) and uses keys the YAML
> DSL does not accept (verbs, params, responseMsgs).
> * The YAML dump of route templates and templated routes uses
> templateParameter/templateBean and parameter/bean instead of parameters/beans.
> * The Java dump of circuitBreaker writes onFallback before the steps, so the
> steps go into the fallback.
> * resolvePlaceholders for routes created from templates uses the parameters
> of the last route (YAML) or none (Java).
> * dumpBeansAsYaml is built without escaping.
> _Claude Code on behalf of Claus Ibsen_
--
This message was sent by Atlassian Jira
(v8.20.10#820010)