[ https://issues.apache.org/jira/browse/CAMEL-20100?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Claus Ibsen updated CAMEL-20100: -------------------------------- Fix Version/s: 4.0.3 > Camel-jsonpath can't fetch missing field in some cases when body is returned > from a http/https call > --------------------------------------------------------------------------------------------------- > > Key: CAMEL-20100 > URL: https://issues.apache.org/jira/browse/CAMEL-20100 > Project: Camel > Issue Type: Bug > Components: camel-jsonpath > Affects Versions: 4.1.0 > Reporter: Damir Palinic > Assignee: Claus Ibsen > Priority: Minor > Fix For: 4.0.3, 4.3.0 > > > When json response is received from the external REST endpoint using > camel-http component, it fails to read missing json value, although > DEFAULT_PATH_LEAF_TO_NULL option is set. > This can be reproduced using mockable.io service, but we noticed this > behavior when calling many other REST endpoints (from real implementations). > How to reproduce: > # Create mocked POST REST endpoint using mockable.io > # For example, our looks like following: > `POST [http://demo0405481.mockable.io/camel]` > Response: \{"errorcode":0,"errormessage":""} > # Create integration where REST endpoint from step 2. is called using > camel-http > # Read missing summary field using Set Property and Jsonpath with > DEFAULT_PATH_LEAF_TO_NULL enabled > # Observe the error "Cannot read message body as supported JSON value. " > Actual result: > {code:java} > org.apache.camel.ExpressionEvaluationException: > org.apache.camel.CamelExchangeException: Cannot read message body as > supported JSON value. {code} > Expected result: > {code:java} > ${exchangeProperty.summary} to be null > {code} > YAML DSL to reproduce: > {code:java} > - route: > nodePrefixId: route-7e2 > id: route-dafc > from: > uri: scheduler > id: from-64dc > parameters: > name: scheduler > repeatCount: 2 > steps: > - setHeader: > name: Content-Type > expression: > simple: > expression: application/json > id: simple-dc79 > id: setHeader-2f26 > - setBody: > expression: > simple: > expression: |- > { > "some": "value" > } > id: simple-bfca > id: setBody-243c > - to: > uri: http > id: to-2cfa > parameters: > httpUri: demo0405481.mockable.io/camel > httpMethod: POST > - setProperty: > name: summary > expression: > jsonpath: > expression: $.summary > option: DEFAULT_PATH_LEAF_TO_NULL > id: jsonpath-54df > id: setProperty-0d81 > - log: > message: 'Value: ${exchangeProperty.summary}' > id: log-6839 > {code} > Additional notes: > * Please create your own mock using mockable.io and create some POST REST > endpoint and return any json you want > * In case summary field exists, it reads it normally > * In case body is set using Set Body component, instead of reading it from > from REST endpoint, everything works fine > > > -- This message was sent by Atlassian Jira (v8.20.10#820010)