[
https://issues.apache.org/jira/browse/CAMEL-26119?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen resolved CAMEL-26119.
---------------------------------
Resolution: Fixed
Fixed by https://github.com/apache/camel/pull/28896 (merged to main as
b05201d8505779cfef047c9bac535aafd2d7e3c9).
_Claude Code on behalf of Claus Ibsen (davsclaus)_
> camel-camunda - a JSON body as bytes or a stream is rejected as data missing,
> and a failed operation does not fail the exchange
> -------------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-26119
> URL: https://issues.apache.org/jira/browse/CAMEL-26119
> Project: Camel
> Issue Type: Bug
> Reporter: Claus Ibsen
> Assignee: Claus Ibsen
> Priority: Minor
> Fix For: 4.24.0
>
>
> Found while adding the catalog body types of flowable, camunda and bonita
> (CAMEL-24961, PR #28418).
> h4. 1. A JSON body as bytes or a stream is rejected
> The producer processors accept JSON only when the body is a {{String}}:
> {{ProcessProcessor}} (main 2a465aa4814c, lines 43 and 52), {{JobProcessor}}
> (lines 44 and 58) and {{MessageProcessor}} (lines 39 and 47) check
> {{instanceof String}} and else throw "Process data missing" ("Job data
> missing", "Message data missing"). A JSON body as {{byte[]}} or an
> {{InputStream}}, as an HTTP consumer gives, is rejected although it converts
> to a String. Checked on 4.24.0-SNAPSHOT with a mocked {{CamundaService}}.
> Proposed: convert any other body to a String (when it can be) before parsing
> it as JSON.
> h4. 2. The consumer's JSON uses other property names than the producer's
> With {{formatJSON=true}} the consumer writes the {{JobWorkerMessage}} as JSON
> in camelCase with a {{variablesAsMap}} field ({{JobWorkerMessage}}, main
> 2a465aa4814c, line 42; {{CamundaConsumer}} line 106), while the producer
> reads and writes snake_case JSON ({{ProcessRequest}} line 32,
> {{process_id}}). So the JSON of a consumer cannot be sent to a producer as
> is. Checked on 4.24.0-SNAPSHOT with a mocked {{CamundaService}}.
> Proposed: use the same naming (snake_case, as documented) for the consumer's
> JSON.
> h4. 3. A failed operation does not fail the exchange
> {{CamundaService}} catches every exception of the Camunda client (main
> 2a465aa4814c, e.g. lines 85-89 for startProcess) and returns a response with
> {{success=false}} and the error message, so the exchange completes normally
> and the route goes on as if the operation had worked. Checked on
> 4.24.0-SNAPSHOT with a mocked {{CamundaService}}.
> Proposed: set the exception on the exchange when the operation fails (keeping
> the response in the body), or at least document that the
> {{CamelCamundaIsSuccess}} header must be checked.
> _Claude Code on behalf of davsclaus_
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)