[ 
https://issues.apache.org/jira/browse/AVRO-4148?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

JohnMTu updated AVRO-4148:
--------------------------
    Affects Version/s: 1.10.1
                       1.12.1

> 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
>    Affects Versions: 1.10.1, 1.12.1
>            Reporter: JohnMTu
>            Priority: Major
>         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