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

Ismaël Mejía updated AVRO-3116:
-------------------------------
    Summary: Avro compiler(s) should produce valid code when using reserved 
identifiers like 'record' in names  (was: Avro compiler(s) should reject uses 
of Java reserved identifiers like 'record' in names)

> Avro compiler(s) should produce valid code when using reserved identifiers 
> like 'record' in names
> -------------------------------------------------------------------------------------------------
>
>                 Key: AVRO-3116
>                 URL: https://issues.apache.org/jira/browse/AVRO-3116
>             Project: Apache Avro
>          Issue Type: Improvement
>          Components: java
>    Affects Versions: 1.10.2
>            Reporter: Ismaël Mejía
>            Assignee: Ryan Skraba
>            Priority: Major
>              Labels: backwards-incompatible
>             Fix For: 1.11.0
>
>
> Java 14 introduced 'record' as a restricted type name and cannot be used for 
> type declarations. So Avro should not generate code that uses this in its 
> name for example classes based on a schema with name 'record'. It is probably 
> a good idea that we reject uses of [Java keywords including reserved 
> identifiers|https://en.wikipedia.org/wiki/List_of_Java_keywords].
> This can be reproduced easily in Avro's current codebase running the 
> `TestSpecificCompiler` test with JDK 16.
> [https://github.com/apache/avro/blob/bfe1d03d683d67cdb9a984c02c6b1eb75ffe7689/lang/java/compiler/src/test/java/org/apache/avro/compiler/specific/TestSpecificCompiler.java#L201]
> {quote}public class record extends 
> org.apache.avro.specific.SpecificRecordBase implements 
> org.apache.avro.specific.SpecificRecord {
>  ^
>  as of release 14, 'record' is a restricted type name and cannot be used for 
> type declarations
>  [main] ERROR org.apache.avro.compiler.specific.TestSpecificCompiler - 
> /tmp/junit6626196665903310578/testInvalidParameterCounts1/sample/record.java:23:
>  error: 'record' is not allowed here
>  private static final BinaryMessageEncoder<record> ENCODER =
>  ^
>  [main] ERROR org.apache.avro.compiler.specific.TestSpecificCompiler - 
> /tmp/junit6626196665903310578/testInvalidParameterCounts1/sample/record.java:24:
>  error: 'record' is not allowed here
>  new BinaryMessageEncoder<record>(MODEL$, SCHEMA$);
>  ^
>  [main] ERROR org.apache.avro.compiler.specific.TestSpecificCompiler - 
> /tmp/junit6626196665903310578/testInvalidParameterCounts1/sample/record.java:26:
>  error: 'record' is not allowed here
>  private static final BinaryMessageDecoder<record> DECODER =
>  ^
>  [main] ERROR org.apache.avro.compiler.specific.TestSpecificCompiler - 
> /tmp/junit6626196665903310578/testInvalidParameterCounts1/sample/record.java:27:
>  error: 'record' is not allowed here
>  new BinaryMessageDecoder<record>(MODEL$, SCHEMA$);
>  ^
>  [main] ERROR org.apache.avro.compiler.specific.TestSpecificCompiler - 
> /tmp/junit6626196665903310578/testInvalidParameterCounts1/sample/record.java:33:
>  error: 'record' is not allowed here
>  public static BinaryMessageEncoder<record> getEncoder() {
>  ^
>  [main] ERROR org.apache.avro.compiler.specific.TestSpecificCompiler - 
> /tmp/junit6626196665903310578/testInvalidParameterCounts1/sample/record.java:41:
>  error: 'record' is not allowed here
>  public static BinaryMessageDecoder<record> getDecoder() {
>  ^
>  [main] ERROR org.apache.avro.compiler.specific.TestSpecificCompiler - 
> /tmp/junit6626196665903310578/testInvalidParameterCounts1/sample/record.java:50:
>  error: 'record' is not allowed here
>  public static BinaryMessageDecoder<record> createDecoder(SchemaStore 
> resolver) {
>  ^
>  [main] ERROR org.apache.avro.compiler.specific.TestSpecificCompiler - 
> /tmp/junit6626196665903310578/testInvalidParameterCounts1/sample/record.java:51:
>  error: 'record' is not allowed here
>  return new BinaryMessageDecoder<record>(MODEL$, SCHEMA$, resolver);
> {quote}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to