Failed to set a big decimal value in OData V4.
Issue
When add/update odata4 interface from dynamic VDB, if the value is big like "99999999.99", the validation error will be appeared:
10:03:39,213 WARN [org.teiid.ODATA] (http-127.0.0.1:8080-1) TEIID16050 Unable to process odata request due to: Invalid value for property 'MAX_PAY'. with cause The literal '9.9999999999E8' has illegal content.: Invalid value: 9.9999999999E8 for property: MAX_PAY
at org.apache.olingo.server.core.deserializer.json.ODataJsonDeserializer.readPrimitiveValue(ODataJsonDeserializer.java:611)
at org.apache.olingo.server.core.deserializer.json.ODataJsonDeserializer.consumePropertySingleNode(ODataJsonDeserializer.java:488)
at org.apache.olingo.server.core.deserializer.json.ODataJsonDeserializer.consumePropertyNode(ODataJsonDeserializer.java:474)
at org.apache.olingo.server.core.deserializer.json.ODataJsonDeserializer.consumeEntityProperties(ODataJsonDeserializer.java:342)
at org.apache.olingo.server.core.deserializer.json.ODataJsonDeserializer.consumeEntityNode(ODataJsonDeserializer.java:173)
at org.apache.olingo.server.core.deserializer.json.ODataJsonDeserializer.entity(ODataJsonDeserializer.java:159)
at org.apache.olingo.server.core.requests.DataRequest$EntityRequest.getEntityFromClient(DataRequest.java:367)
at org.apache.olingo.server.core.requests.DataRequest$EntityRequest.execute(DataRequest.java:359)
at org.apache.olingo.server.core.requests.DataRequest.execute(DataRequest.java:255)
at org.apache.olingo.server.core.ServiceDispatcher.internalExecute(ServiceDispatcher.java:160)
at org.apache.olingo.server.core.ServiceDispatcher.execute(ServiceDispatcher.java:98)
at org.apache.olingo.server.core.OData4HttpHandler.process(OData4HttpHandler.java:66)
at org.teiid.olingo.web.ODataServlet.service(ODataServlet.java:43) [teiid-olingo-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
...
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:926) [jbossweb-7.5.17.Final-redhat-1.jar:7.5.17.Final-redhat-1]
at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_151]
Caused by: org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException: The literal '9.9999999999E8' has illegal content.
at org.apache.olingo.commons.core.edm.primitivetype.EdmDecimal.internalValueOfString(EdmDecimal.java:90)
at org.apache.olingo.commons.core.edm.primitivetype.AbstractPrimitiveType.valueOfString(AbstractPrimitiveType.java:69)
at org.apache.olingo.server.core.deserializer.json.ODataJsonDeserializer.readPrimitiveValue(ODataJsonDeserializer.java:606)
Environment
- Red Hat JBoss Data Virtualization 6.3.x
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.