[ 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)