[
https://issues.apache.org/jira/browse/AVRO-1592?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14203104#comment-14203104
]
Hudson commented on AVRO-1592:
------------------------------
FAILURE: Integrated in AvroJava #496 (See
[https://builds.apache.org/job/AvroJava/496/])
AVRO-1592. Java: Fix handling of Java reserved words as enum constants in
generated code. Contributed by Lukas Steiblys. (cutting: rev 1637493)
* /avro/trunk/CHANGES.txt
*
/avro/trunk/lang/java/avro/src/main/java/org/apache/avro/specific/SpecificData.java
*
/avro/trunk/lang/java/compiler/src/main/java/org/apache/avro/compiler/specific/SpecificCompiler.java
*
/avro/trunk/lang/java/ipc/src/test/java/org/apache/avro/specific/TestSpecificData.java
* /avro/trunk/share/test/schemas/reserved.avsc
> Java keyword as an enum constant in Avro schema file causes deserialization
> to fail.
> ------------------------------------------------------------------------------------
>
> Key: AVRO-1592
> URL: https://issues.apache.org/jira/browse/AVRO-1592
> Project: Avro
> Issue Type: Bug
> Components: java
> Affects Versions: 1.7.7
> Environment: CentOS, Java 1.7
> Reporter: Lukas Steiblys
> Assignee: Lukas Steiblys
> Fix For: 1.8.0
>
> Attachments: AVRO-1592.patch, avrobug.tar.gz,
> fix_java_keyword_enums.patch
>
>
> The schema {"type": "enum", "name": "ButtonTypeID", "symbols": ["default",
> "keyboard"]} generates the following class:
>
> public final class ButtonTypeID extends java.lang.Enum<ButtonTypeID> {
> public static final ButtonTypeID default$;
> public static final ButtonTypeID keyboard;
> public static final org.apache.avro.Schema SCHEMA$;
> public static ButtonTypeID[] values();
> public static ButtonTypeID valueOf(java.lang.String);
> public static org.apache.avro.Schema getClassSchema();
> static {};
> }
>
> (this is what “javap ButtonTypeID.class” produces)
>
> When I try to read my data that has the “default” value for ButtonTypeID, I
> get the exception:
> java.lang.IllegalArgumentException: No enum constant ButtonTypeID.default
> at java.lang.Enum.valueOf(Enum.java:236)
> at
> org.apache.avro.specific.SpecificData.createEnum(SpecificData.java:106)
> at
> org.apache.avro.generic.GenericDatumReader.createEnum(GenericDatumReader.java:205)...
> Since "default" is a keyword in java, the $ is appended to the constant, but
> that is not taken into account when reading the data back, causing the
> ButtonTypeID.valueOf("default") method to fail.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)