Mike Hurd created AVRO-1949:
-------------------------------

             Summary: Not setting a non-null field in GenericRecord causes a 
NullPointer exception on Serialisation even though a default is defined in the 
schema
                 Key: AVRO-1949
                 URL: https://issues.apache.org/jira/browse/AVRO-1949
             Project: Avro
          Issue Type: Bug
          Components: java
    Affects Versions: 1.8.1
         Environment: Windows 7, JDK8
            Reporter: Mike Hurd
            Priority: Minor


As per the summary, I had a search through the existing JIRAs but couldn't find 
a match apologies if this is a duplicate:

example schema:

{noformat}
{"namespace": "example.data",
  "type": "record",
  "name": "Data",
  "fields": [
    {"name": "name", "type": "string"},
    {"name": "favorite_season", "type": "string", "default": "Autumn"}
  ]
}
{noformat}
{noformat}
GenericRecord record = new GenericData.Record(schema);
record.put("name", "my name");
{noformat}
Serialising the above throws a NullPointerException:
{noformat}
java.lang.NullPointerException: null of string in field favorite_season of 
example.data.Data
        at 
org.apache.avro.generic.GenericDatumWriter.npe(GenericDatumWriter.java:145) 
~[classes/:?]
        at 
org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:139)
 ~[classes/:?]
        at 
org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:75) 
~[classes/:?]
        at 
org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:62) 
~[classes/:?]
{noformat}

Surely, given that the schema is available the writeField method should check 
to see if there is a default field available to use if the required field does 
not have a value supplied (and is not-null).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to