You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (Jira)" <ji...@apache.org> on 2026/10/21 05:44:00 UTC
[jira] [Created] (CAMEL-25900) camel-jbang - AI tools: lead to the jsonpath filter with resultType java.util.Map for the one element of a list
Claus Ibsen created CAMEL-25900:
-----------------------------------
Summary: camel-jbang - AI tools: lead to the jsonpath filter with resultType java.util.Map for the one element of a list
Key: CAMEL-25900
URL: https://issues.apache.org/jira/browse/CAMEL-25900
Project: Camel
Issue Type: Improvement
Components: camel-jbang
Reporter: Claus Ibsen
Fix For: 4.24.0
A REST example of the benchmark asks for one order out of a JSON list by its id (GET /orders/{id}, 404 when unknown). It failed 12 of 12 times, on two nights. The camel-jbang AI tools saw the earlier hints, but the model still wrote paths that give the wrong answer:
* {{$[?(@.orderId == '${header.id}')][0]}}: Jayway applies an index after a filter to each element the filter matched, so this gives an empty list (200 with []).
* {{$[?(@.orderId == '${header.id}')] && size() > 0}}: && outside the filter is no JsonPath (500).
* {{${body[0].orderId}}}: the List hint offered [0] first, so the model took the first element.
The recipe (a filter with resultType java.util.Map: the element when one matches, null when none does) was in the docs, but the tools did not lead to it.
Proposal:
* The source check (camel_validate_source and the write tools) reports an index after a filter: "an index after a filter gives an empty list in JsonPath ... leave the index out and set resultType: java.util.Map". It also reports && or || outside a filter: "&& and || work inside a filter only ...; to test whether a filter matched, set resultType: java.util.Map, and check ${body} == null in a choice".
* camel_eval_expression of a jsonpath filter adds a note that a filter gives a list also for one match, and that in a route resultType: java.util.Map gives the one element.
* camel_catalog_doc jsonpath answers the recipe in usage.
* camel-bean: the hint for ${body.orderId} on a List leads with the jsonpath recipe, and [0] comes after it.
* camel_catalog_find for a wrong header name (CamelHttpStatusCode and similar) names the right one, CamelHttpResponseCode (Exchange.HTTP_RESPONSE_CODE).
_Claude Code on behalf of davsclaus_
--
This message was sent by Atlassian Jira
(v8.20.10#820010)