[
https://issues.apache.org/jira/browse/AVRO-1146?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alexandre Normand updated AVRO-1146:
------------------------------------
Labels: newbie (was: )
Status: Patch Available (was: Open)
One problem is that all subclasses of java.lang.Number are considered
primitives in ReflectData.createSchema. Since BigDecimal and BigInteger are not
actual primitives, I made the check more precise to actually check for all 9
primitive classes.
I've added a map of wrapper classes to primitive types to make the code cleaner
but I'm not sure this fits the coding style. It could very well just be a long
series of
{code}
if (c == Void.class || c == Integer.class || ...
{code}
I've made it so that BigDecimal and BigInteger are handled as Stringable types,
which they are.
I've also added a test for this in TestReflect.
> Can't use ReflectData to get schema when the type has a BigDecimal field
> ------------------------------------------------------------------------
>
> Key: AVRO-1146
> URL: https://issues.apache.org/jira/browse/AVRO-1146
> Project: Avro
> Issue Type: Bug
> Components: java
> Affects Versions: 1.7.0
> Reporter: Alexandre Normand
> Labels: newbie
> Attachments: TestReflectDataWithBigDecimal.java
>
>
> I'm using avro Reflection API for a specific use case and I have a bug where
> if the object I'm trying to get the Schema for has a field of type
> BigDecimal. Because BigDecimal extends java.lang.Number, we try to create a
> primitive schema for it but fail doing so with the following error:
> *{{org.apache.avro.AvroRuntimeException: Not a Specific class: class
> java.math.BigDecimal}}*
> I'm attaching a unit test that shows the problem with a basic type that has a
> single BigDecimal field.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira