[
https://issues.apache.org/jira/browse/CAMEL-25892?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen reassigned CAMEL-25892:
-----------------------------------
Assignee: Claus Ibsen
> camel-jbang - show the body types each step has been reached with in the
> Routes, Diagram and Source views
> ---------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-25892
> URL: https://issues.apache.org/jira/browse/CAMEL-25892
> Project: Camel
> Issue Type: Improvement
> Components: camel-jbang
> Reporter: Claus Ibsen
> Assignee: Claus Ibsen
> Priority: Major
> Fix For: 4.24.0
>
>
> Camel now keeps the body types each step of a route has been reached with,
> across the messages, with their kinds: null, payload, data and collection
> (CAMEL-25750, PR [#28178|https://github.com/apache/camel/pull/28178]). The
> route-structure console, {{camel cmd route-structure}} (with {{--varied}})
> and the MCP tools show them. A step reached with bodies of more than one kind
> needs attention: a step that writes the body fails for the data, and one that
> reads fields fails for the payload.
> This brings them to the views of {{camel tui}}. The sketches use one route:
> {{unmarshal: json}}, then a choice where only one branch marshals, then {{to:
> file:outbox}}. Three views, built in this order:
> *1. Routes (6): a column, and the varied steps of the selected route.* The
> counts are already in the status file (the route console's
> {{variedBodyTypes}} and {{mixedBodyKinds}}). The list below the table is the
> route-structure console's, as {{camel cmd route-structure --varied}} shows it.
> {noformat}
> 6 Routes
> ID FROM STATUS TOTAL FAIL BODY TYPES
> > orders platform-http:/orders Started 15 3 ⚠ 1 mixed · 2 varied
> stock timer:stock Started 40 0
> invoices file:inbox Started 8 0 1 varied
> -- orders: steps reached with more than one body type ----------------------
> 18 to file:outbox byte[] | LinkedHashMap payload and data
> ⚠
> 7 unmarshal String | ByteArrayInputStreamCache payload
> {noformat}
> *2. Diagram (5): the body types on the arrows*, switched on with a key such
> as {{b}}. Each arrow into a step is labelled with the types the step was
> reached with, so the arrows show how the body changes along the route. A step
> reached with more than one kind gets a ⚠ and the kinds. Shift+F8 asks the AI
> with these facts. The route-structure console's steps map to the diagram's
> nodes by id.
> {noformat}
> ┌─────────────────────────┐
> │ from platform-http │
> │ /orders │
> └────────────┬────────────┘
> │ ByteArrayInputStreamCache
> ┌────────────▼────────────┐
> │ unmarshal json │
> └────────────┬────────────┘
> │ LinkedHashMap
> ┌────────────▼────────────┐
> │ choice │
> └─────┬─────────────┬─────┘
> high │ │ otherwise
> LinkedHashMap │ │ LinkedHashMap
> ┌───────────▼───┐ ┌───▼───────────┐
> │ marshal json │ │ log │
> └───────────┬───┘ └───┬───────────┘
> └──────┬──────┘
> │ byte[] | LinkedHashMap (payload and data)
> ┌────────────▼────────────┐
> │ ⚠ to file:outbox │
> └─────────────────────────┘
> ⚠ to file:outbox: some messages bring data, others a payload Shift+F8 ask
> AI
> {noformat}
> *3. Source (2): dimmed hints at the end of each step*, with a ⚠ in the gutter
> for a step reached with more than one kind.
> {noformat}
> 2 Source orders.camel.yaml ● running this version [b]
> 5 uri: platform-http:/orders
> 6 steps:
> 7 - unmarshal: ByteArrayInputStreamCache
> 8 json: {}
> 9 - choice: LinkedHashMap
> 10 when:
> 11 - simple: ${body[priority]} == 'high'
> 12 steps:
> 13 - marshal: LinkedHashMap
> 14 json: {}
> 15 otherwise:
> 16 steps:
> 17 - log: ${body[id]} LinkedHashMap
> ⚠ 18 - to: file:outbox byte[] | LinkedHashMap
> (payload and data)
> {noformat}
> Facts per line only hold while the editor has the version of the file that
> runs. Once it is edited, the routes that did not change keep their hints.
> Knowing which routes did not change needs the route checksum of CAMEL-25771,
> so this view comes after it.
> *Also:* the Errors view (9) gets the hint of CAMEL-25750 with no change:
> "other messages reached this step with data (LinkedHashMap), so the body here
> depends on the path a message takes" (PR
> [#28180|https://github.com/apache/camel/pull/28180]). Its diagram of a failed
> message could mark the ⚠ step.
> *Depends on:* PR #28178 for the body types in the consoles, and CAMEL-25771
> for view 3.
> _Filed by Claude Code on behalf of davsclaus_
--
This message was sent by Atlassian Jira
(v8.20.10#820010)