Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Not A Bug
-
Jena 3.6.0, Jena 3.7.0
-
None
-
None
Description
When saving a BigInteger as a literal it is converted into an XSDBaseNumericType.
When that type is read back it is converted into the smallest numeric data type that can hold the value; a narrowing if you will.
While this works fine for primitive and primitive wrapping types (e.g. int and Integer) there is no automatic boxing available for BigInteger so attempting to retrieve the value of a BigInteger that is smaller than the Long.MAX_VALUE will result in a class cast exception when the primitive type is cast to the BigInteger.
I suspect the similar issues arise when BigDecimal is also used but I have not tested.
Should we address this issue by creating a BigInteger and BigDecimal type that perhaps extends XSDBaseNumericType? Should we address this issue at all and just post a warning?
Test code is included to show the issue.