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)