You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Ismaël Mejía (Jira)" <ji...@apache.org> on 2021/04/22 06:54:00 UTC

[jira] [Updated] (AVRO-3116) Avro compiler(s) should reject uses of Java reserved identifiers like 'record' in names

     [ 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 reject uses of Java reserved identifiers like 'record' in names  (was: Avro compiler(s) should reject uses of 'record' in names)

> Avro compiler(s) should reject uses of Java 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
>            Priority: Major
>
> 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'.
> 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)