You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Mikael Andersson Wigander (Jira)" <ji...@apache.org> on 2022/04/13 04:59:00 UTC

[jira] [Created] (CAMEL-17956) JSONPath option to use global registered ObjectMapper

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)