Mikael Andersson Wigander created CAMEL-17956:
-------------------------------------------------
Summary: JSONPath option to use global registered ObjectMapper
Key: CAMEL-17956
URL: https://issues.apache.org/jira/browse/CAMEL-17956
Project: Camel
Issue Type: Improvement
Components: camel-jsonpath
Affects Versions: 3.16.0, 3.14.1
Reporter: Mikael Andersson Wigander
I have discovered that when using JSONPath in a route, the implementation does
not use any ObjectMapper registered, it uses it's own.
{code:java|title=JacksonMappingProvider.class}
public class JacksonMappingProvider implements MappingProvider {
private final ObjectMapper objectMapper;
public JacksonMappingProvider() {
this(new ObjectMapper());
}
public JacksonMappingProvider(ObjectMapper objectMapper) {
this.objectMapper = objectMapper;
}
{code}
However, when using *.jsonpathWriteAsString()*, this uses global registered
ObjectMapper.
{code:java|title=JacksonJsonAdapter.class}
@Override
public String writeAsString(Object value, Exchange exchange) {
ObjectMapper mapper =
resolveObjectMapper(exchange.getContext().getRegistry());
try {
return mapper.writeValueAsString(value);
} catch (Throwable e) {
// ignore because we are attempting to convert
}
return null;
}
{code}
It does not go through the *JsonPathEngine* so it seems it's a completly
differrent implementation however still defined within JSONPath language as in
this documentation:
https://camel.apache.org/components/3.14.x/languages/jsonpath-language.html#_split_json_data_into_sub_rows_as_json
--
This message was sent by Atlassian Jira
(v8.20.1#820001)