[
https://issues.apache.org/jira/browse/AVRO-1588?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14138105#comment-14138105
]
Sean Busbey commented on AVRO-1588:
-----------------------------------
The second schema better matches the stated goals of ReflectData.AllowNull
{quote}
ReflectData implementation that permits null field values. The schema generated
for each field is a union of its declared type and null.
{quote}
Do we need to check for when our annotated class doesn't use the nullable
version of a primitive and throw an error at getSchema time? Or special case
those fields to not be nullable?
> ReflectData.AllowNull incorrectly handles primitive types.
> ----------------------------------------------------------
>
> Key: AVRO-1588
> URL: https://issues.apache.org/jira/browse/AVRO-1588
> Project: Avro
> Issue Type: Bug
> Components: java
> Affects Versions: 1.7.7
> Reporter: Joey Echeverria
>
> When doing the following:
> {code:java}
> private static class PoJo {
> private long id;
> private String name;
> }
> ReflectData.AllowNull.get().getSchema(PoJo.class);
> {code}
> I'd expect a schema like this:
> {code:javascript}
> {
> "type" : "record",
> "name" : "PoJo",
> "namespace" : "MyObject$",
> "fields" : [ {
> "name" : "id",
> "type" : "long",
> }, {
> "name" : "name",
> "type" : [ "null", "string" ],
> "default" : null
> } ]
> }
> {code}
> But instead I get:
> {code:javascript}
> {
> "type" : "record",
> "name" : "PoJo",
> "namespace" : "MyObject$",
> "fields" : [ {
> "name" : "id",
> "type" : [ "null", "long" ],
> "default" : null
> }, {
> "name" : "name",
> "type" : [ "null", "string" ],
> "default" : null
> } ]
> }
> {code}
> This will later result in an NullPointerException when you try to deserialize
> bytes where id was null when it tries to convert the Long to a long.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)