[
https://issues.apache.org/jira/browse/OLINGO-1087?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15890436#comment-15890436
]
Christian Amend commented on OLINGO-1087:
-----------------------------------------
The V2 specification pdf is not available on the website anymore and the html
version does not have this paragraph:
2.2.1.7.1.1 Precision
This is a positive integer that specifies the maximum number of decimal digits
that an instance of the decimal type can have, both to the left and to the
right of the decimal point. Possible values for Precision are 1, 2, or 3.
V3 specifies it as follows:
2.2.1.7.1.1 Precision
The Precision facet is a positive integer that specifies the maximum number of
decimal digits that an instance of the decimal type can have, both to the left
and to the right of the decimal point.
And V4 is online available:
http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part3-csdl/odata-v4.0-errata03-os-part3-csdl-complete.html#_Toc453752531
For a decimal property the value of this attribute specifies the maximum number
of significant decimal digits of the property’s value; it MUST be a positive
integer. If no value is specified, the decimal property has unspecified
precision.
We only evaluate this because it is part of the specification. You can disable
the Facet validation by setting the flag at the EntityProviderReadProperties
with the isValidatingFacets(boolean) method.
I will check with the OData specification people to see what they meant with
significant. I assumed the arithmetic definition:
https://simple.wikipedia.org/wiki/Arithmetic_precision as opposed to this
definition: https://en.wikipedia.org/wiki/Significant_figures
I would not like to introduce something which goes against the specification.
> Precision in EdmDecimal not calculated correctly
> ------------------------------------------------
>
> Key: OLINGO-1087
> URL: https://issues.apache.org/jira/browse/OLINGO-1087
> Project: Olingo
> Issue Type: Bug
> Components: odata2-core
> Affects Versions: V2 2.0.8
> Reporter: Svante von Erichsen
> Attachments: 0001-OLINGO-1087-Fix-calculation-of-precision.patch
>
>
> The "precision" found in a read number is currently at least the number of
> decimals (omitting trailing zeroes). That seems to be wrong, or at least not
> consistent with at least some server side view of the matter, for numbers
> smaller than 0.1 (the number shown has 35 decimals, but precision 34):
> org.apache.olingo.odata2.api.edm.EdmSimpleTypeException: The metadata
> constraints '[Precision=34]' do not match the literal
> '0.08102359900000000170194880411145277'.
> at
> org.apache.olingo.odata2.core.edm.EdmDecimal.internalValueOfString(EdmDecimal.java:107)
> at
> org.apache.olingo.odata2.core.edm.AbstractSimpleType.valueOfString(AbstractSimpleType.java:91)
> at
> org.apache.olingo.odata2.core.ep.consumer.JsonPropertyConsumer.readSimpleProperty(JsonPropertyConsumer.java:236)
> at
> org.apache.olingo.odata2.core.ep.consumer.JsonPropertyConsumer.readPropertyValue(JsonPropertyConsumer.java:169)
> ... 69 common frames omitted
> Wrapped by: org.apache.olingo.odata2.api.ep.EntityProviderException: An
> exception of type 'EdmSimpleTypeException' occurred.
> at
> org.apache.olingo.odata2.core.ep.consumer.JsonPropertyConsumer.readPropertyValue(JsonPropertyConsumer.java:171)
> at
> org.apache.olingo.odata2.core.ep.consumer.JsonEntryConsumer.handleName(JsonEntryConsumer.java:172)
> at
> org.apache.olingo.odata2.core.ep.consumer.JsonEntryConsumer.readEntryContent(JsonEntryConsumer.java:130)
> at
> org.apache.olingo.odata2.core.ep.consumer.JsonEntryConsumer.readFeedEntry(JsonEntryConsumer.java:117)
> at
> org.apache.olingo.odata2.core.ep.consumer.JsonFeedConsumer.readArrayContent(JsonFeedConsumer.java:153)
> at
> org.apache.olingo.odata2.core.ep.consumer.JsonFeedConsumer.handleName(JsonFeedConsumer.java:122)
> at
> org.apache.olingo.odata2.core.ep.consumer.JsonFeedConsumer.readFeedContent(JsonFeedConsumer.java:111)
> at
> org.apache.olingo.odata2.core.ep.consumer.JsonFeedConsumer.readFeed(JsonFeedConsumer.java:96)
> at
> org.apache.olingo.odata2.core.ep.consumer.JsonFeedConsumer.readFeedStandalone(JsonFeedConsumer.java:63)
> at
> org.apache.olingo.odata2.core.ep.consumer.JsonEntityConsumer.readDeltaFeed(JsonEntityConsumer.java:95)
> at
> org.apache.olingo.odata2.core.ep.consumer.JsonEntityConsumer.readFeed(JsonEntityConsumer.java:81)
> at
> org.apache.olingo.odata2.core.ep.JsonEntityProvider.readFeed(JsonEntityProvider.java:309)
> at
> org.apache.olingo.odata2.core.ep.ProviderFacadeImpl.readFeed(ProviderFacadeImpl.java:165)
> at
> org.apache.olingo.odata2.api.ep.EntityProvider.readFeed(EntityProvider.java:676)
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)