JohnMTu created AVRO-4148:
-----------------------------

             Summary: serializing enums containing java keywords fails in NPE
                 Key: AVRO-4148
                 URL: https://issues.apache.org/jira/browse/AVRO-4148
             Project: Apache Avro
          Issue Type: Bug
            Reporter: JohnMTu
         Attachments: AvroIssueTest.java

when having schema containing enum with enum-values like "new", "boolean", 
"null" which are java reserved keyword, then enum-value is generated with $ 
suffix using avro-maven-plugin.

When i later try to serialize it to json, it fails on NPE.

Normally i have similar enum deep in structure, and avro-maven-plugin is used. 
For simplicity of testcase, i copied generated class into test itself and 
instead of using massive structure i reproduce the problem when serializing 
enum itself.

See attached test case. This is log output:
{code:java}
java.lang.NullPointerException: null value for (non-nullable) 
RecurringChargePeriod    at 
org.apache.avro.path.TracingNullPointException.summarize(TracingNullPointException.java:88)
    at 
org.apache.avro.path.TracingNullPointException.summarize(TracingNullPointException.java:30)
    at 
org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:84)
    at AvroIssueTest.serializeWrappedEnumToJson(AvroIssueTest.java:56)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: java.lang.NullPointerException: Cannot invoke 
"java.lang.Integer.intValue()" because the return value of 
"java.util.Map.get(Object)" is null
    at org.apache.avro.Schema$EnumSchema.getEnumOrdinal(Schema.java:1098)
    at 
org.apache.avro.generic.GenericDatumWriter.writeEnum(GenericDatumWriter.java:272)
    at 
org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:148)
    at 
org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:95)
    at 
org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:82)
    ... 4 more {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to