Nicolas Weber created CAMEL-16061:
-------------------------------------

             Summary: 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


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}
  

[[email protected]] 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)

Reply via email to