You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Andrea Cosentino (Jira)" <ji...@apache.org> on 2021/01/26 06:20:00 UTC

[jira] [Resolved] (CAMEL-16061) JSLT-Component: Object-Mapper changes large Decimal-Numbers (to scientific notation)

     [ https://issues.apache.org/jira/browse/CAMEL-16061?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Andrea Cosentino resolved CAMEL-16061.
--------------------------------------
    Resolution: Fixed

> JSLT-Component: Object-Mapper changes large Decimal-Numbers (to scientific notation)
> ------------------------------------------------------------------------------------
>
>                 Key: CAMEL-16061
>                 URL: https://issues.apache.org/jira/browse/CAMEL-16061
>             Project: Camel
>          Issue Type: Improvement
>    Affects Versions: 3.7.0
>            Reporter: Nicolas Weber
>            Assignee: Andrea Cosentino
>            Priority: Major
>             Fix For: 3.8.0
>
>
> Hi there,
> When using the JSLT-Component, large Decimal-Numbers seem to be represented in scientific notation and rounded (probably double). This changes the value itself, which is a big no no in my use cases. 
>  Example:
> in=> 11321321.12 : out => 1.132132112E7 (scientific)
>  in=> 321321321.123657891234 : out => 3.213213211236579E8 (scientific and rounded)
> ObjectMapper (Jackson) is instantiated without config, which causes actually trouble with Decimal-Numbers as far as I know.
> Dealing with BigDecimal needs to be configured in Jackson. Since the ObjectMapper is instantiated in the Component itself, it's hard to get the Mapper-Instance.
>  
> {code:java}
> <org.apache.camel.component.jslt.JsltEndpoint.onExchange(Exchange exchange):138> (decompiled source)
> protected void onExchange(Exchange exchange) throws Exception {
> .....................
> ObjectMapper objectMapper = new ObjectMapper();
> JsonNode input;
> if (exchange.getIn().getBody() instanceof String) {
> input = objectMapper.readTree((String)exchange.getIn().getBody(String.class));
> }
> ......................{code}
>   
> [~cibsen@e-ma.net] suggested following change:
> _"We can surely look at making this configurable, and also maybe some simple option you can turn on|off to affect the object mapper - so you dont need to configure a custom instance. So maybe its 2 things, 1 simple option to set true|false, and 2 to setup a custom ObjectMapper."_
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)