You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "sarutak (via GitHub)" <gi...@apache.org> on 2023/08/09 09:22:20 UTC

[GitHub] [avro] sarutak opened a new pull request, #2430: AVRO-3825: [Java] Disallow invalid namespaces

sarutak opened a new pull request, #2430:
URL: https://github.com/apache/avro/pull/2430

   ## What is the purpose of the change
   
   According to the specification, each portion of a namespace separated by dot should be `[a-z,A-Z,_][a-z,A-Z,0-9_]`.
   https://avro.apache.org/docs/1.11.1/specification/#names
   
   ```
   The name portion of the fullname of named types, record field names, and enum symbols must:
   
       start with [A-Za-z_]
       subsequently contain only [A-Za-z0-9_]
   
   A namespace is a dot-separated sequence of such names. The empty string may also be used as a namespace to indicate the null namespace. Equality of names (including field names and enum symbols) as well as fullnames is case-sensitive.
   
   The null namespace may not be used in a dot-separated sequence of names. So the grammar for a namespace is:
   
     <empty> | <name>[(<dot><name>)*]
   ```
   
   But the current Java binding accept invalid namespaces.
   This PR aims to fix this issue.
   
   ## Verifying this change
   Added new test and it passed on my laptop.
   
   ## Documentation
   No new features added.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] sarutak commented on pull request #2430: AVRO-3825: [Java] Disallow invalid namespaces

Posted by "sarutak (via GitHub)" <gi...@apache.org>.
sarutak commented on PR #2430:
URL: https://github.com/apache/avro/pull/2430#issuecomment-1671737258

   > This use of the dollar sign is apparently defined in Java language specification §13.1 (The Form of a Binary), so all Java compilers should generate the same binary name Test$M. However, for local or anonymous classes, the JLS requires "a non-empty sequence of digits", and I think different compilers could choose different digits. Application developers then should not use such classes for Avro data, as it would be difficult from them to ensure that the name stays the same.
   
   I know that `$` is automatically generated for inner classes and it's ideal that users don't use such classes. But protobuf generates such classes and the Java binding supports a feature that generates a schema from protobuf-generated classes.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] github-code-scanning[bot] commented on a diff in pull request #2430: AVRO-3825: [Java] Disallow invalid namespaces

Posted by "github-code-scanning[bot] (via GitHub)" <gi...@apache.org>.
github-code-scanning[bot] commented on code in PR #2430:
URL: https://github.com/apache/avro/pull/2430#discussion_r1288212434


##########
lang/java/avro/src/main/java/org/apache/avro/Schema.java:
##########
@@ -1645,6 +1643,17 @@
     return name;
   }
 
+  private static String validateSpace(String space) {
+    if ("".equals(space) || space == null) {

Review Comment:
   ## Inefficient empty string test
   
   Inefficient comparison to empty string, check for zero length instead.
   
   [Show more details](https://github.com/apache/avro/security/code-scanning/3102)



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] opwvhk commented on pull request #2430: AVRO-3825: [Java] Disallow invalid namespaces

Posted by "opwvhk (via GitHub)" <gi...@apache.org>.
opwvhk commented on PR #2430:
URL: https://github.com/apache/avro/pull/2430#issuecomment-1681903570

   On a side note, this change may lead to more previously accepted schemata to fail parsing.
   
   PR #2448 includes an addition to the specification that describes how to fix this.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] sarutak commented on a diff in pull request #2430: AVRO-3825: [Java] Disallow invalid namespaces

Posted by "sarutak (via GitHub)" <gi...@apache.org>.
sarutak commented on code in PR #2430:
URL: https://github.com/apache/avro/pull/2430#discussion_r1297711349


##########
lang/java/protobuf/src/test/java/org/apache/avro/protobuf/multiplefiles/Foo.java:
##########


Review Comment:
   `Foo.java`, `M.java` and `Test.java` are generated automatically from `test.proto`.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] github-code-scanning[bot] commented on a diff in pull request #2430: AVRO-3825: [Java] Disallow invalid namespaces

Posted by "github-code-scanning[bot] (via GitHub)" <gi...@apache.org>.
github-code-scanning[bot] commented on code in PR #2430:
URL: https://github.com/apache/avro/pull/2430#discussion_r1297719335


##########
lang/java/protobuf/src/test/java/org/apache/avro/protobuf/noopt/Test.java:
##########
@@ -3869,16 +3924,936 @@
       return PARSER;
     }
 
+    @java.lang.Override
     public org.apache.avro.protobuf.noopt.Test.M getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
+  public interface BarOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:org.apache.avro.protobuf.noopt.Bar)
+      com.google.protobuf.MessageOrBuilder {
+  }
+
+  /**
+   * <pre>
+   * a nested message
+   * </pre>
+   *
+   * Protobuf type {@code org.apache.avro.protobuf.noopt.Bar}
+   */
+  public static final class Bar extends com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:org.apache.avro.protobuf.noopt.Bar)
+      BarOrBuilder {
+    private static final long serialVersionUID = 0L;
+
+    // Use Bar.newBuilder() to construct.
+    private Bar(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+
+    private Bar() {
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+      return this.unknownFields;
+    }
+
+    private Bar(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+          case 0:
+            done = true;
+            break;
+          default: {
+            if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+              done = true;
+            }
+            break;
+          }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+
+    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+      return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+      return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(org.apache.avro.protobuf.noopt.Test.Bar.class,
+              org.apache.avro.protobuf.noopt.Test.Bar.Builder.class);
+    }
+
+    public interface BarInnerOrBuilder extends
+        // @@protoc_insertion_point(interface_extends:org.apache.avro.protobuf.noopt.Bar.BarInner)
+        com.google.protobuf.MessageOrBuilder {
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      boolean hasA();
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      int getA();
+    }
+
+    /**
+     * Protobuf type {@code org.apache.avro.protobuf.noopt.Bar.BarInner}
+     */
+    public static final class BarInner extends com.google.protobuf.GeneratedMessageV3 implements
+        // @@protoc_insertion_point(message_implements:org.apache.avro.protobuf.noopt.Bar.BarInner)
+        BarInnerOrBuilder {
+      private static final long serialVersionUID = 0L;
+
+      // Use BarInner.newBuilder() to construct.
+      private BarInner(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+        super(builder);
+      }
+
+      private BarInner() {
+        a_ = 0;
+      }
+
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+        return this.unknownFields;
+      }
+
+      private BarInner(com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        this();
+        if (extensionRegistry == null) {
+          throw new java.lang.NullPointerException();
+        }
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 8: {
+              bitField0_ |= 0x00000001;
+              a_ = input.readInt32();
+              break;
+            }
+            default: {
+              if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+
+      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+        return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+        return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(org.apache.avro.protobuf.noopt.Test.Bar.BarInner.class,
+                org.apache.avro.protobuf.noopt.Test.Bar.BarInner.Builder.class);
+      }
+
+      private int bitField0_;
+      public static final int A_FIELD_NUMBER = 1;
+      private int a_;
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      public boolean hasA() {

Review Comment:
   ## Missing Override annotation
   
   This method overrides [BarInnerOrBuilder.hasA](1); it is advisable to add an Override annotation.
   
   [Show more details](https://github.com/apache/avro/security/code-scanning/3121)



##########
lang/java/protobuf/src/test/java/org/apache/avro/protobuf/noopt/Test.java:
##########
@@ -3869,16 +3924,936 @@
       return PARSER;
     }
 
+    @java.lang.Override
     public org.apache.avro.protobuf.noopt.Test.M getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
+  public interface BarOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:org.apache.avro.protobuf.noopt.Bar)
+      com.google.protobuf.MessageOrBuilder {
+  }
+
+  /**
+   * <pre>
+   * a nested message
+   * </pre>
+   *
+   * Protobuf type {@code org.apache.avro.protobuf.noopt.Bar}
+   */
+  public static final class Bar extends com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:org.apache.avro.protobuf.noopt.Bar)
+      BarOrBuilder {
+    private static final long serialVersionUID = 0L;
+
+    // Use Bar.newBuilder() to construct.
+    private Bar(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+
+    private Bar() {
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+      return this.unknownFields;
+    }
+
+    private Bar(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+          case 0:
+            done = true;
+            break;
+          default: {
+            if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+              done = true;
+            }
+            break;
+          }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+
+    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+      return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+      return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(org.apache.avro.protobuf.noopt.Test.Bar.class,
+              org.apache.avro.protobuf.noopt.Test.Bar.Builder.class);
+    }
+
+    public interface BarInnerOrBuilder extends
+        // @@protoc_insertion_point(interface_extends:org.apache.avro.protobuf.noopt.Bar.BarInner)
+        com.google.protobuf.MessageOrBuilder {
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      boolean hasA();
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      int getA();
+    }
+
+    /**
+     * Protobuf type {@code org.apache.avro.protobuf.noopt.Bar.BarInner}
+     */
+    public static final class BarInner extends com.google.protobuf.GeneratedMessageV3 implements
+        // @@protoc_insertion_point(message_implements:org.apache.avro.protobuf.noopt.Bar.BarInner)
+        BarInnerOrBuilder {
+      private static final long serialVersionUID = 0L;
+
+      // Use BarInner.newBuilder() to construct.
+      private BarInner(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+        super(builder);
+      }
+
+      private BarInner() {
+        a_ = 0;
+      }
+
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+        return this.unknownFields;
+      }
+
+      private BarInner(com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        this();
+        if (extensionRegistry == null) {
+          throw new java.lang.NullPointerException();
+        }
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 8: {
+              bitField0_ |= 0x00000001;
+              a_ = input.readInt32();
+              break;
+            }
+            default: {
+              if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+
+      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+        return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+        return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(org.apache.avro.protobuf.noopt.Test.Bar.BarInner.class,
+                org.apache.avro.protobuf.noopt.Test.Bar.BarInner.Builder.class);
+      }
+
+      private int bitField0_;
+      public static final int A_FIELD_NUMBER = 1;
+      private int a_;
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      public boolean hasA() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      public int getA() {

Review Comment:
   ## Missing Override annotation
   
   This method overrides [BarInnerOrBuilder.getA](1); it is advisable to add an Override annotation.
   
   [Show more details](https://github.com/apache/avro/security/code-scanning/3120)



##########
lang/java/avro/src/main/java/org/apache/avro/Schema.java:
##########
@@ -717,12 +717,14 @@
         space = name.substring(0, lastDot); // get space from name
         this.name = validateName(name.substring(lastDot + 1));
       }
-      if ("".equals(space))
-        space = null;
-      this.space = space;
+      this.space = "".equals(space) || space == null ? null : validateSpace(space);

Review Comment:
   ## Inefficient empty string test
   
   Inefficient comparison to empty string, check for zero length instead.
   
   [Show more details](https://github.com/apache/avro/security/code-scanning/3129)



##########
lang/java/protobuf/src/test/java/org/apache/avro/protobuf/noopt/Test.java:
##########
@@ -3869,16 +3924,936 @@
       return PARSER;
     }
 
+    @java.lang.Override
     public org.apache.avro.protobuf.noopt.Test.M getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
+  public interface BarOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:org.apache.avro.protobuf.noopt.Bar)
+      com.google.protobuf.MessageOrBuilder {
+  }
+
+  /**
+   * <pre>
+   * a nested message
+   * </pre>
+   *
+   * Protobuf type {@code org.apache.avro.protobuf.noopt.Bar}
+   */
+  public static final class Bar extends com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:org.apache.avro.protobuf.noopt.Bar)
+      BarOrBuilder {
+    private static final long serialVersionUID = 0L;
+
+    // Use Bar.newBuilder() to construct.
+    private Bar(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+
+    private Bar() {
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+      return this.unknownFields;
+    }
+
+    private Bar(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+          case 0:
+            done = true;
+            break;
+          default: {
+            if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+              done = true;
+            }
+            break;
+          }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+
+    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+      return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+      return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(org.apache.avro.protobuf.noopt.Test.Bar.class,
+              org.apache.avro.protobuf.noopt.Test.Bar.Builder.class);
+    }
+
+    public interface BarInnerOrBuilder extends
+        // @@protoc_insertion_point(interface_extends:org.apache.avro.protobuf.noopt.Bar.BarInner)
+        com.google.protobuf.MessageOrBuilder {
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      boolean hasA();
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      int getA();
+    }
+
+    /**
+     * Protobuf type {@code org.apache.avro.protobuf.noopt.Bar.BarInner}
+     */
+    public static final class BarInner extends com.google.protobuf.GeneratedMessageV3 implements
+        // @@protoc_insertion_point(message_implements:org.apache.avro.protobuf.noopt.Bar.BarInner)
+        BarInnerOrBuilder {
+      private static final long serialVersionUID = 0L;
+
+      // Use BarInner.newBuilder() to construct.
+      private BarInner(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+        super(builder);
+      }
+
+      private BarInner() {
+        a_ = 0;
+      }
+
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+        return this.unknownFields;
+      }
+
+      private BarInner(com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        this();
+        if (extensionRegistry == null) {
+          throw new java.lang.NullPointerException();
+        }
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 8: {
+              bitField0_ |= 0x00000001;
+              a_ = input.readInt32();
+              break;
+            }
+            default: {
+              if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+
+      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+        return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+        return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(org.apache.avro.protobuf.noopt.Test.Bar.BarInner.class,
+                org.apache.avro.protobuf.noopt.Test.Bar.BarInner.Builder.class);
+      }
+
+      private int bitField0_;
+      public static final int A_FIELD_NUMBER = 1;
+      private int a_;
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      public boolean hasA() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      public int getA() {
+        return a_;
+      }
+
+      private byte memoizedIsInitialized = -1;
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized == 1)
+          return true;
+        if (isInitialized == 0)
+          return false;
+
+        if (!hasA()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      @java.lang.Override
+      public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeInt32(1, a_);
+        }
+        unknownFields.writeTo(output);
+      }
+
+      @java.lang.Override
+      public int getSerializedSize() {
+        int size = memoizedSize;
+        if (size != -1)
+          return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream.computeInt32Size(1, a_);
+        }
+        size += unknownFields.getSerializedSize();
+        memoizedSize = size;
+        return size;
+      }
+
+      @java.lang.Override
+      public boolean equals(final java.lang.Object obj) {
+        if (obj == this) {
+          return true;
+        }
+        if (!(obj instanceof org.apache.avro.protobuf.noopt.Test.Bar.BarInner)) {
+          return super.equals(obj);
+        }
+        org.apache.avro.protobuf.noopt.Test.Bar.BarInner other = (org.apache.avro.protobuf.noopt.Test.Bar.BarInner) obj;
+
+        boolean result = true;
+        result = result && (hasA() == other.hasA());
+        if (hasA()) {
+          result = result && (getA() == other.getA());
+        }
+        result = result && unknownFields.equals(other.unknownFields);
+        return result;
+      }
+
+      @java.lang.Override
+      public int hashCode() {
+        if (memoizedHashCode != 0) {
+          return memoizedHashCode;
+        }
+        int hash = 41;
+        hash = (19 * hash) + getDescriptor().hashCode();
+        if (hasA()) {
+          hash = (37 * hash) + A_FIELD_NUMBER;
+          hash = (53 * hash) + getA();
+        }
+        hash = (29 * hash) + unknownFields.hashCode();
+        memoizedHashCode = hash;
+        return hash;
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(java.nio.ByteBuffer data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(java.nio.ByteBuffer data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseDelimitedFrom(java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(
+          com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(
+          com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+      }
+
+      @java.lang.Override
+      public Builder newBuilderForType() {
+        return newBuilder();
+      }
+
+      public static Builder newBuilder() {
+        return DEFAULT_INSTANCE.toBuilder();
+      }
+
+      public static Builder newBuilder(org.apache.avro.protobuf.noopt.Test.Bar.BarInner prototype) {
+        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+      }
+
+      @java.lang.Override
+      public Builder toBuilder() {
+        return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+      }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+
+      /**
+       * Protobuf type {@code org.apache.avro.protobuf.noopt.Bar.BarInner}
+       */
+      public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+          // @@protoc_insertion_point(builder_implements:org.apache.avro.protobuf.noopt.Bar.BarInner)
+          org.apache.avro.protobuf.noopt.Test.Bar.BarInnerOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+          return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+          return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(org.apache.avro.protobuf.noopt.Test.Bar.BarInner.class,
+                  org.apache.avro.protobuf.noopt.Test.Bar.BarInner.Builder.class);
+        }
+
+        // Construct using org.apache.avro.protobuf.noopt.Test.Bar.BarInner.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+          }
+        }
+
+        @java.lang.Override
+        public Builder clear() {
+          super.clear();
+          a_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+          return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_descriptor;
+        }
+
+        @java.lang.Override
+        public org.apache.avro.protobuf.noopt.Test.Bar.BarInner getDefaultInstanceForType() {
+          return org.apache.avro.protobuf.noopt.Test.Bar.BarInner.getDefaultInstance();
+        }
+
+        @java.lang.Override
+        public org.apache.avro.protobuf.noopt.Test.Bar.BarInner build() {
+          org.apache.avro.protobuf.noopt.Test.Bar.BarInner result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        @java.lang.Override
+        public org.apache.avro.protobuf.noopt.Test.Bar.BarInner buildPartial() {
+          org.apache.avro.protobuf.noopt.Test.Bar.BarInner result = new org.apache.avro.protobuf.noopt.Test.Bar.BarInner(
+              this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.a_ = a_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        @java.lang.Override
+        public Builder clone() {
+          return (Builder) super.clone();
+        }
+
+        @java.lang.Override
+        public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+          return (Builder) super.setField(field, value);
+        }
+
+        @java.lang.Override
+        public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+          return (Builder) super.clearField(field);
+        }
+
+        @java.lang.Override
+        public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+          return (Builder) super.clearOneof(oneof);
+        }
+
+        @java.lang.Override
+        public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index,
+            java.lang.Object value) {
+          return (Builder) super.setRepeatedField(field, index, value);
+        }
+
+        @java.lang.Override
+        public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+          return (Builder) super.addRepeatedField(field, value);
+        }
+
+        @java.lang.Override
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.avro.protobuf.noopt.Test.Bar.BarInner) {
+            return mergeFrom((org.apache.avro.protobuf.noopt.Test.Bar.BarInner) other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.avro.protobuf.noopt.Test.Bar.BarInner other) {
+          if (other == org.apache.avro.protobuf.noopt.Test.Bar.BarInner.getDefaultInstance())
+            return this;
+          if (other.hasA()) {
+            setA(other.getA());
+          }
+          this.mergeUnknownFields(other.unknownFields);
+          onChanged();
+          return this;
+        }
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+          if (!hasA()) {
+            return false;
+          }
+          return true;
+        }
+
+        @java.lang.Override
+        public Builder mergeFrom(com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+          org.apache.avro.protobuf.noopt.Test.Bar.BarInner parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.avro.protobuf.noopt.Test.Bar.BarInner) e.getUnfinishedMessage();
+            throw e.unwrapIOException();
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+
+        private int bitField0_;
+
+        private int a_;
+
+        /**
+         * <code>required int32 a = 1;</code>
+         */
+        public boolean hasA() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+
+        /**
+         * <code>required int32 a = 1;</code>
+         */
+        public int getA() {
+          return a_;
+        }
+
+        /**
+         * <code>required int32 a = 1;</code>
+         */
+        public Builder setA(int value) {
+          bitField0_ |= 0x00000001;
+          a_ = value;
+          onChanged();
+          return this;
+        }
+
+        /**
+         * <code>required int32 a = 1;</code>
+         */
+        public Builder clearA() {
+          bitField0_ = (bitField0_ & ~0x00000001);
+          a_ = 0;
+          onChanged();
+          return this;
+        }
+
+        @java.lang.Override
+        public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+          return super.setUnknownFields(unknownFields);
+        }
+
+        @java.lang.Override
+        public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+          return super.mergeUnknownFields(unknownFields);
+        }
+
+        // @@protoc_insertion_point(builder_scope:org.apache.avro.protobuf.noopt.Bar.BarInner)
+      }
+
+      // @@protoc_insertion_point(class_scope:org.apache.avro.protobuf.noopt.Bar.BarInner)
+      private static final org.apache.avro.protobuf.noopt.Test.Bar.BarInner DEFAULT_INSTANCE;
+      static {
+        DEFAULT_INSTANCE = new org.apache.avro.protobuf.noopt.Test.Bar.BarInner();
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner getDefaultInstance() {
+        return DEFAULT_INSTANCE;
+      }
+
+      @java.lang.Deprecated
+      public static final com.google.protobuf.Parser<BarInner> PARSER = new com.google.protobuf.AbstractParser<BarInner>() {
+        @java.lang.Override
+        public BarInner parsePartialFrom(com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new BarInner(input, extensionRegistry);
+        }
+      };
+
+      public static com.google.protobuf.Parser<BarInner> parser() {
+        return PARSER;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<BarInner> getParserForType() {
+        return PARSER;
+      }
+
+      @java.lang.Override
+      public org.apache.avro.protobuf.noopt.Test.Bar.BarInner getDefaultInstanceForType() {
+        return DEFAULT_INSTANCE;
+      }
+
+    }
+
+    private byte memoizedIsInitialized = -1;
+
+    @java.lang.Override
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1)
+        return true;
+      if (isInitialized == 0)
+        return false;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    @java.lang.Override
+    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+      unknownFields.writeTo(output);
+    }
+
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1)
+        return size;
+
+      size = 0;
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+        return true;
+      }
+      if (!(obj instanceof org.apache.avro.protobuf.noopt.Test.Bar)) {
+        return super.equals(obj);
+      }
+      org.apache.avro.protobuf.noopt.Test.Bar other = (org.apache.avro.protobuf.noopt.Test.Bar) obj;
+
+      boolean result = true;
+      result = result && unknownFields.equals(other.unknownFields);
+      return result;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static org.apache.avro.protobuf.noopt.Test.Bar parseFrom(java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+
+    public static org.apache.avro.protobuf.noopt.Test.Bar parseFrom(java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+
+    public static org.apache.avro.protobuf.noopt.Test.Bar parseFrom(com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+
+    public static org.apache.avro.protobuf.noopt.Test.Bar parseFrom(com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+
+    public static org.apache.avro.protobuf.noopt.Test.Bar parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+
+    public static org.apache.avro.protobuf.noopt.Test.Bar parseFrom(byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+
+    public static org.apache.avro.protobuf.noopt.Test.Bar parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+    }
+
+    public static org.apache.avro.protobuf.noopt.Test.Bar parseFrom(java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public static org.apache.avro.protobuf.noopt.Test.Bar parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+    }
+
+    public static org.apache.avro.protobuf.noopt.Test.Bar parseDelimitedFrom(java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public static org.apache.avro.protobuf.noopt.Test.Bar parseFrom(com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+    }
+
+    public static org.apache.avro.protobuf.noopt.Test.Bar parseFrom(com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    @java.lang.Override
+    public Builder newBuilderForType() {
+      return newBuilder();
+    }
+
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
+
+    public static Builder newBuilder(org.apache.avro.protobuf.noopt.Test.Bar prototype) {
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+
+    @java.lang.Override
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+    }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+
+    /**
+     * <pre>
+     * a nested message
+     * </pre>
+     *
+     * Protobuf type {@code org.apache.avro.protobuf.noopt.Bar}
+     */
+    public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:org.apache.avro.protobuf.noopt.Bar)
+        org.apache.avro.protobuf.noopt.Test.BarOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+        return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+        return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(org.apache.avro.protobuf.noopt.Test.Bar.class,
+                org.apache.avro.protobuf.noopt.Test.Bar.Builder.class);
+      }
+
+      // Construct using org.apache.avro.protobuf.noopt.Test.Bar.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+        }
+      }
+
+      @java.lang.Override
+      public Builder clear() {
+        super.clear();
+        return this;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+        return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_descriptor;
+      }
+
+      @java.lang.Override
+      public org.apache.avro.protobuf.noopt.Test.Bar getDefaultInstanceForType() {
+        return org.apache.avro.protobuf.noopt.Test.Bar.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public org.apache.avro.protobuf.noopt.Test.Bar build() {
+        org.apache.avro.protobuf.noopt.Test.Bar result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public org.apache.avro.protobuf.noopt.Test.Bar buildPartial() {
+        org.apache.avro.protobuf.noopt.Test.Bar result = new org.apache.avro.protobuf.noopt.Test.Bar(this);
+        onBuilt();
+        return result;
+      }
+
+      @java.lang.Override
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+
+      @java.lang.Override
+      public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+        return (Builder) super.setField(field, value);
+      }
+
+      @java.lang.Override
+      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+
+      @java.lang.Override
+      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+
+      @java.lang.Override
+      public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index,
+          java.lang.Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+
+      @java.lang.Override
+      public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {

Review Comment:
   ## Confusing overloading of methods
   
   Method Builder.mergeFrom(..) could be confused with overloaded method [Builder.mergeFrom](1), since dispatch depends on static types.
   Method Builder.mergeFrom(..) could be confused with overloaded method [mergeFrom](2), since dispatch depends on static types.
   
   [Show more details](https://github.com/apache/avro/security/code-scanning/3127)



##########
lang/java/protobuf/src/test/java/org/apache/avro/protobuf/noopt/Test.java:
##########
@@ -3869,16 +3924,936 @@
       return PARSER;
     }
 
+    @java.lang.Override
     public org.apache.avro.protobuf.noopt.Test.M getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
+  public interface BarOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:org.apache.avro.protobuf.noopt.Bar)
+      com.google.protobuf.MessageOrBuilder {
+  }
+
+  /**
+   * <pre>
+   * a nested message
+   * </pre>
+   *
+   * Protobuf type {@code org.apache.avro.protobuf.noopt.Bar}
+   */
+  public static final class Bar extends com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:org.apache.avro.protobuf.noopt.Bar)
+      BarOrBuilder {
+    private static final long serialVersionUID = 0L;
+
+    // Use Bar.newBuilder() to construct.
+    private Bar(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+
+    private Bar() {
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+      return this.unknownFields;
+    }
+
+    private Bar(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+          case 0:
+            done = true;
+            break;
+          default: {
+            if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+              done = true;
+            }
+            break;
+          }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+
+    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+      return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+      return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(org.apache.avro.protobuf.noopt.Test.Bar.class,
+              org.apache.avro.protobuf.noopt.Test.Bar.Builder.class);
+    }
+
+    public interface BarInnerOrBuilder extends
+        // @@protoc_insertion_point(interface_extends:org.apache.avro.protobuf.noopt.Bar.BarInner)
+        com.google.protobuf.MessageOrBuilder {
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      boolean hasA();
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      int getA();
+    }
+
+    /**
+     * Protobuf type {@code org.apache.avro.protobuf.noopt.Bar.BarInner}
+     */
+    public static final class BarInner extends com.google.protobuf.GeneratedMessageV3 implements
+        // @@protoc_insertion_point(message_implements:org.apache.avro.protobuf.noopt.Bar.BarInner)
+        BarInnerOrBuilder {
+      private static final long serialVersionUID = 0L;
+
+      // Use BarInner.newBuilder() to construct.
+      private BarInner(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+        super(builder);
+      }
+
+      private BarInner() {
+        a_ = 0;
+      }
+
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+        return this.unknownFields;
+      }
+
+      private BarInner(com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        this();
+        if (extensionRegistry == null) {
+          throw new java.lang.NullPointerException();
+        }
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 8: {
+              bitField0_ |= 0x00000001;
+              a_ = input.readInt32();
+              break;
+            }
+            default: {
+              if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+
+      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+        return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+        return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(org.apache.avro.protobuf.noopt.Test.Bar.BarInner.class,
+                org.apache.avro.protobuf.noopt.Test.Bar.BarInner.Builder.class);
+      }
+
+      private int bitField0_;
+      public static final int A_FIELD_NUMBER = 1;
+      private int a_;
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      public boolean hasA() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      public int getA() {
+        return a_;
+      }
+
+      private byte memoizedIsInitialized = -1;
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized == 1)
+          return true;
+        if (isInitialized == 0)
+          return false;
+
+        if (!hasA()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      @java.lang.Override
+      public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeInt32(1, a_);
+        }
+        unknownFields.writeTo(output);
+      }
+
+      @java.lang.Override
+      public int getSerializedSize() {
+        int size = memoizedSize;
+        if (size != -1)
+          return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream.computeInt32Size(1, a_);
+        }
+        size += unknownFields.getSerializedSize();
+        memoizedSize = size;
+        return size;
+      }
+
+      @java.lang.Override
+      public boolean equals(final java.lang.Object obj) {
+        if (obj == this) {
+          return true;
+        }
+        if (!(obj instanceof org.apache.avro.protobuf.noopt.Test.Bar.BarInner)) {
+          return super.equals(obj);
+        }
+        org.apache.avro.protobuf.noopt.Test.Bar.BarInner other = (org.apache.avro.protobuf.noopt.Test.Bar.BarInner) obj;
+
+        boolean result = true;
+        result = result && (hasA() == other.hasA());
+        if (hasA()) {
+          result = result && (getA() == other.getA());
+        }
+        result = result && unknownFields.equals(other.unknownFields);
+        return result;
+      }
+
+      @java.lang.Override
+      public int hashCode() {
+        if (memoizedHashCode != 0) {
+          return memoizedHashCode;
+        }
+        int hash = 41;
+        hash = (19 * hash) + getDescriptor().hashCode();
+        if (hasA()) {
+          hash = (37 * hash) + A_FIELD_NUMBER;
+          hash = (53 * hash) + getA();
+        }
+        hash = (29 * hash) + unknownFields.hashCode();
+        memoizedHashCode = hash;
+        return hash;
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(java.nio.ByteBuffer data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(java.nio.ByteBuffer data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseDelimitedFrom(java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(
+          com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(
+          com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+      }
+
+      @java.lang.Override
+      public Builder newBuilderForType() {
+        return newBuilder();
+      }
+
+      public static Builder newBuilder() {
+        return DEFAULT_INSTANCE.toBuilder();
+      }
+
+      public static Builder newBuilder(org.apache.avro.protobuf.noopt.Test.Bar.BarInner prototype) {
+        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+      }
+
+      @java.lang.Override
+      public Builder toBuilder() {
+        return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+      }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+
+      /**
+       * Protobuf type {@code org.apache.avro.protobuf.noopt.Bar.BarInner}
+       */
+      public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+          // @@protoc_insertion_point(builder_implements:org.apache.avro.protobuf.noopt.Bar.BarInner)
+          org.apache.avro.protobuf.noopt.Test.Bar.BarInnerOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+          return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+          return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(org.apache.avro.protobuf.noopt.Test.Bar.BarInner.class,
+                  org.apache.avro.protobuf.noopt.Test.Bar.BarInner.Builder.class);
+        }
+
+        // Construct using org.apache.avro.protobuf.noopt.Test.Bar.BarInner.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+          }
+        }
+
+        @java.lang.Override
+        public Builder clear() {
+          super.clear();
+          a_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+          return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_descriptor;
+        }
+
+        @java.lang.Override
+        public org.apache.avro.protobuf.noopt.Test.Bar.BarInner getDefaultInstanceForType() {
+          return org.apache.avro.protobuf.noopt.Test.Bar.BarInner.getDefaultInstance();
+        }
+
+        @java.lang.Override
+        public org.apache.avro.protobuf.noopt.Test.Bar.BarInner build() {
+          org.apache.avro.protobuf.noopt.Test.Bar.BarInner result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        @java.lang.Override
+        public org.apache.avro.protobuf.noopt.Test.Bar.BarInner buildPartial() {
+          org.apache.avro.protobuf.noopt.Test.Bar.BarInner result = new org.apache.avro.protobuf.noopt.Test.Bar.BarInner(
+              this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.a_ = a_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        @java.lang.Override
+        public Builder clone() {
+          return (Builder) super.clone();
+        }
+
+        @java.lang.Override
+        public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+          return (Builder) super.setField(field, value);
+        }
+
+        @java.lang.Override
+        public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+          return (Builder) super.clearField(field);
+        }
+
+        @java.lang.Override
+        public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+          return (Builder) super.clearOneof(oneof);
+        }
+
+        @java.lang.Override
+        public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index,
+            java.lang.Object value) {
+          return (Builder) super.setRepeatedField(field, index, value);
+        }
+
+        @java.lang.Override
+        public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+          return (Builder) super.addRepeatedField(field, value);
+        }
+
+        @java.lang.Override
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.avro.protobuf.noopt.Test.Bar.BarInner) {
+            return mergeFrom((org.apache.avro.protobuf.noopt.Test.Bar.BarInner) other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.avro.protobuf.noopt.Test.Bar.BarInner other) {
+          if (other == org.apache.avro.protobuf.noopt.Test.Bar.BarInner.getDefaultInstance())
+            return this;
+          if (other.hasA()) {
+            setA(other.getA());
+          }
+          this.mergeUnknownFields(other.unknownFields);
+          onChanged();
+          return this;
+        }
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+          if (!hasA()) {
+            return false;
+          }
+          return true;
+        }
+
+        @java.lang.Override
+        public Builder mergeFrom(com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+          org.apache.avro.protobuf.noopt.Test.Bar.BarInner parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.avro.protobuf.noopt.Test.Bar.BarInner) e.getUnfinishedMessage();
+            throw e.unwrapIOException();
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+
+        private int bitField0_;
+
+        private int a_;
+
+        /**
+         * <code>required int32 a = 1;</code>
+         */
+        public boolean hasA() {
+          return ((bitField0_ & 0x00000001) == 0x00000001);
+        }
+
+        /**
+         * <code>required int32 a = 1;</code>
+         */
+        public int getA() {

Review Comment:
   ## Missing Override annotation
   
   This method overrides [BarInnerOrBuilder.getA](1); it is advisable to add an Override annotation.
   
   [Show more details](https://github.com/apache/avro/security/code-scanning/3122)



##########
lang/java/protobuf/src/test/java/org/apache/avro/protobuf/noopt/Test.java:
##########
@@ -3869,16 +3924,936 @@
       return PARSER;
     }
 
+    @java.lang.Override
     public org.apache.avro.protobuf.noopt.Test.M getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
+  public interface BarOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:org.apache.avro.protobuf.noopt.Bar)
+      com.google.protobuf.MessageOrBuilder {
+  }
+
+  /**
+   * <pre>
+   * a nested message
+   * </pre>
+   *
+   * Protobuf type {@code org.apache.avro.protobuf.noopt.Bar}
+   */
+  public static final class Bar extends com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:org.apache.avro.protobuf.noopt.Bar)
+      BarOrBuilder {
+    private static final long serialVersionUID = 0L;
+
+    // Use Bar.newBuilder() to construct.
+    private Bar(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+
+    private Bar() {
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+      return this.unknownFields;
+    }
+
+    private Bar(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+          case 0:
+            done = true;
+            break;
+          default: {
+            if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+              done = true;
+            }
+            break;
+          }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+
+    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+      return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+      return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(org.apache.avro.protobuf.noopt.Test.Bar.class,
+              org.apache.avro.protobuf.noopt.Test.Bar.Builder.class);
+    }
+
+    public interface BarInnerOrBuilder extends
+        // @@protoc_insertion_point(interface_extends:org.apache.avro.protobuf.noopt.Bar.BarInner)
+        com.google.protobuf.MessageOrBuilder {
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      boolean hasA();
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      int getA();
+    }
+
+    /**
+     * Protobuf type {@code org.apache.avro.protobuf.noopt.Bar.BarInner}
+     */
+    public static final class BarInner extends com.google.protobuf.GeneratedMessageV3 implements
+        // @@protoc_insertion_point(message_implements:org.apache.avro.protobuf.noopt.Bar.BarInner)
+        BarInnerOrBuilder {
+      private static final long serialVersionUID = 0L;
+
+      // Use BarInner.newBuilder() to construct.
+      private BarInner(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+        super(builder);
+      }
+
+      private BarInner() {
+        a_ = 0;
+      }
+
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+        return this.unknownFields;
+      }
+
+      private BarInner(com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        this();
+        if (extensionRegistry == null) {
+          throw new java.lang.NullPointerException();
+        }
+        int mutable_bitField0_ = 0;

Review Comment:
   ## Unread local variable
   
   Variable 'int mutable_bitField0_' is never read.
   
   [Show more details](https://github.com/apache/avro/security/code-scanning/3128)



##########
lang/java/protobuf/src/test/java/org/apache/avro/protobuf/noopt/Test.java:
##########
@@ -3869,16 +3924,936 @@
       return PARSER;
     }
 
+    @java.lang.Override
     public org.apache.avro.protobuf.noopt.Test.M getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
+  public interface BarOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:org.apache.avro.protobuf.noopt.Bar)
+      com.google.protobuf.MessageOrBuilder {
+  }
+
+  /**
+   * <pre>
+   * a nested message
+   * </pre>
+   *
+   * Protobuf type {@code org.apache.avro.protobuf.noopt.Bar}
+   */
+  public static final class Bar extends com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:org.apache.avro.protobuf.noopt.Bar)
+      BarOrBuilder {
+    private static final long serialVersionUID = 0L;
+
+    // Use Bar.newBuilder() to construct.
+    private Bar(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+
+    private Bar() {
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+      return this.unknownFields;
+    }
+
+    private Bar(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+          case 0:
+            done = true;
+            break;
+          default: {
+            if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+              done = true;
+            }
+            break;
+          }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+
+    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+      return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+      return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(org.apache.avro.protobuf.noopt.Test.Bar.class,
+              org.apache.avro.protobuf.noopt.Test.Bar.Builder.class);
+    }
+
+    public interface BarInnerOrBuilder extends
+        // @@protoc_insertion_point(interface_extends:org.apache.avro.protobuf.noopt.Bar.BarInner)
+        com.google.protobuf.MessageOrBuilder {
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      boolean hasA();
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      int getA();
+    }
+
+    /**
+     * Protobuf type {@code org.apache.avro.protobuf.noopt.Bar.BarInner}
+     */
+    public static final class BarInner extends com.google.protobuf.GeneratedMessageV3 implements
+        // @@protoc_insertion_point(message_implements:org.apache.avro.protobuf.noopt.Bar.BarInner)
+        BarInnerOrBuilder {
+      private static final long serialVersionUID = 0L;
+
+      // Use BarInner.newBuilder() to construct.
+      private BarInner(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+        super(builder);
+      }
+
+      private BarInner() {
+        a_ = 0;
+      }
+
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+        return this.unknownFields;
+      }
+
+      private BarInner(com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        this();
+        if (extensionRegistry == null) {
+          throw new java.lang.NullPointerException();
+        }
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 8: {
+              bitField0_ |= 0x00000001;
+              a_ = input.readInt32();
+              break;
+            }
+            default: {
+              if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+
+      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+        return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+        return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(org.apache.avro.protobuf.noopt.Test.Bar.BarInner.class,
+                org.apache.avro.protobuf.noopt.Test.Bar.BarInner.Builder.class);
+      }
+
+      private int bitField0_;
+      public static final int A_FIELD_NUMBER = 1;
+      private int a_;
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      public boolean hasA() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      public int getA() {
+        return a_;
+      }
+
+      private byte memoizedIsInitialized = -1;
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized == 1)
+          return true;
+        if (isInitialized == 0)
+          return false;
+
+        if (!hasA()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      @java.lang.Override
+      public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeInt32(1, a_);
+        }
+        unknownFields.writeTo(output);
+      }
+
+      @java.lang.Override
+      public int getSerializedSize() {
+        int size = memoizedSize;
+        if (size != -1)
+          return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream.computeInt32Size(1, a_);
+        }
+        size += unknownFields.getSerializedSize();
+        memoizedSize = size;
+        return size;
+      }
+
+      @java.lang.Override
+      public boolean equals(final java.lang.Object obj) {
+        if (obj == this) {
+          return true;
+        }
+        if (!(obj instanceof org.apache.avro.protobuf.noopt.Test.Bar.BarInner)) {
+          return super.equals(obj);
+        }
+        org.apache.avro.protobuf.noopt.Test.Bar.BarInner other = (org.apache.avro.protobuf.noopt.Test.Bar.BarInner) obj;
+
+        boolean result = true;
+        result = result && (hasA() == other.hasA());
+        if (hasA()) {
+          result = result && (getA() == other.getA());
+        }
+        result = result && unknownFields.equals(other.unknownFields);
+        return result;
+      }
+
+      @java.lang.Override
+      public int hashCode() {
+        if (memoizedHashCode != 0) {
+          return memoizedHashCode;
+        }
+        int hash = 41;
+        hash = (19 * hash) + getDescriptor().hashCode();
+        if (hasA()) {
+          hash = (37 * hash) + A_FIELD_NUMBER;
+          hash = (53 * hash) + getA();
+        }
+        hash = (29 * hash) + unknownFields.hashCode();
+        memoizedHashCode = hash;
+        return hash;
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(java.nio.ByteBuffer data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(java.nio.ByteBuffer data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseDelimitedFrom(java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(
+          com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(
+          com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+      }
+
+      @java.lang.Override
+      public Builder newBuilderForType() {
+        return newBuilder();
+      }
+
+      public static Builder newBuilder() {
+        return DEFAULT_INSTANCE.toBuilder();
+      }
+
+      public static Builder newBuilder(org.apache.avro.protobuf.noopt.Test.Bar.BarInner prototype) {
+        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+      }
+
+      @java.lang.Override
+      public Builder toBuilder() {
+        return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+      }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+
+      /**
+       * Protobuf type {@code org.apache.avro.protobuf.noopt.Bar.BarInner}
+       */
+      public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+          // @@protoc_insertion_point(builder_implements:org.apache.avro.protobuf.noopt.Bar.BarInner)
+          org.apache.avro.protobuf.noopt.Test.Bar.BarInnerOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+          return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+          return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(org.apache.avro.protobuf.noopt.Test.Bar.BarInner.class,
+                  org.apache.avro.protobuf.noopt.Test.Bar.BarInner.Builder.class);
+        }
+
+        // Construct using org.apache.avro.protobuf.noopt.Test.Bar.BarInner.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+          }
+        }
+
+        @java.lang.Override
+        public Builder clear() {
+          super.clear();
+          a_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+          return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_descriptor;
+        }
+
+        @java.lang.Override
+        public org.apache.avro.protobuf.noopt.Test.Bar.BarInner getDefaultInstanceForType() {
+          return org.apache.avro.protobuf.noopt.Test.Bar.BarInner.getDefaultInstance();
+        }
+
+        @java.lang.Override
+        public org.apache.avro.protobuf.noopt.Test.Bar.BarInner build() {
+          org.apache.avro.protobuf.noopt.Test.Bar.BarInner result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        @java.lang.Override
+        public org.apache.avro.protobuf.noopt.Test.Bar.BarInner buildPartial() {
+          org.apache.avro.protobuf.noopt.Test.Bar.BarInner result = new org.apache.avro.protobuf.noopt.Test.Bar.BarInner(
+              this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.a_ = a_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        @java.lang.Override
+        public Builder clone() {
+          return (Builder) super.clone();
+        }
+
+        @java.lang.Override
+        public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+          return (Builder) super.setField(field, value);
+        }
+
+        @java.lang.Override
+        public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+          return (Builder) super.clearField(field);
+        }
+
+        @java.lang.Override
+        public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+          return (Builder) super.clearOneof(oneof);
+        }
+
+        @java.lang.Override
+        public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index,
+            java.lang.Object value) {
+          return (Builder) super.setRepeatedField(field, index, value);
+        }
+
+        @java.lang.Override
+        public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+          return (Builder) super.addRepeatedField(field, value);
+        }
+
+        @java.lang.Override
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.avro.protobuf.noopt.Test.Bar.BarInner) {
+            return mergeFrom((org.apache.avro.protobuf.noopt.Test.Bar.BarInner) other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(org.apache.avro.protobuf.noopt.Test.Bar.BarInner other) {
+          if (other == org.apache.avro.protobuf.noopt.Test.Bar.BarInner.getDefaultInstance())
+            return this;
+          if (other.hasA()) {
+            setA(other.getA());
+          }
+          this.mergeUnknownFields(other.unknownFields);
+          onChanged();
+          return this;
+        }
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+          if (!hasA()) {
+            return false;
+          }
+          return true;
+        }
+
+        @java.lang.Override
+        public Builder mergeFrom(com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+          org.apache.avro.protobuf.noopt.Test.Bar.BarInner parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.avro.protobuf.noopt.Test.Bar.BarInner) e.getUnfinishedMessage();
+            throw e.unwrapIOException();
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+
+        private int bitField0_;
+
+        private int a_;
+
+        /**
+         * <code>required int32 a = 1;</code>
+         */
+        public boolean hasA() {

Review Comment:
   ## Missing Override annotation
   
   This method overrides [BarInnerOrBuilder.hasA](1); it is advisable to add an Override annotation.
   
   [Show more details](https://github.com/apache/avro/security/code-scanning/3123)



##########
lang/java/protobuf/src/test/java/org/apache/avro/protobuf/noopt/Test.java:
##########
@@ -3869,16 +3924,936 @@
       return PARSER;
     }
 
+    @java.lang.Override
     public org.apache.avro.protobuf.noopt.Test.M getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
+  public interface BarOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:org.apache.avro.protobuf.noopt.Bar)
+      com.google.protobuf.MessageOrBuilder {
+  }
+
+  /**
+   * <pre>
+   * a nested message
+   * </pre>
+   *
+   * Protobuf type {@code org.apache.avro.protobuf.noopt.Bar}
+   */
+  public static final class Bar extends com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:org.apache.avro.protobuf.noopt.Bar)
+      BarOrBuilder {
+    private static final long serialVersionUID = 0L;
+
+    // Use Bar.newBuilder() to construct.
+    private Bar(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+
+    private Bar() {
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+      return this.unknownFields;
+    }
+
+    private Bar(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+          case 0:
+            done = true;
+            break;
+          default: {
+            if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+              done = true;
+            }
+            break;
+          }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+
+    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+      return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+      return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(org.apache.avro.protobuf.noopt.Test.Bar.class,
+              org.apache.avro.protobuf.noopt.Test.Bar.Builder.class);
+    }
+
+    public interface BarInnerOrBuilder extends
+        // @@protoc_insertion_point(interface_extends:org.apache.avro.protobuf.noopt.Bar.BarInner)
+        com.google.protobuf.MessageOrBuilder {
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      boolean hasA();
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      int getA();
+    }
+
+    /**
+     * Protobuf type {@code org.apache.avro.protobuf.noopt.Bar.BarInner}
+     */
+    public static final class BarInner extends com.google.protobuf.GeneratedMessageV3 implements
+        // @@protoc_insertion_point(message_implements:org.apache.avro.protobuf.noopt.Bar.BarInner)
+        BarInnerOrBuilder {
+      private static final long serialVersionUID = 0L;
+
+      // Use BarInner.newBuilder() to construct.
+      private BarInner(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+        super(builder);
+      }
+
+      private BarInner() {
+        a_ = 0;
+      }
+
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+        return this.unknownFields;
+      }
+
+      private BarInner(com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        this();
+        if (extensionRegistry == null) {
+          throw new java.lang.NullPointerException();
+        }
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 8: {
+              bitField0_ |= 0x00000001;
+              a_ = input.readInt32();
+              break;
+            }
+            default: {
+              if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+
+      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+        return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+        return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(org.apache.avro.protobuf.noopt.Test.Bar.BarInner.class,
+                org.apache.avro.protobuf.noopt.Test.Bar.BarInner.Builder.class);
+      }
+
+      private int bitField0_;
+      public static final int A_FIELD_NUMBER = 1;
+      private int a_;
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      public boolean hasA() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+
+      /**
+       * <code>required int32 a = 1;</code>
+       */
+      public int getA() {
+        return a_;
+      }
+
+      private byte memoizedIsInitialized = -1;
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized == 1)
+          return true;
+        if (isInitialized == 0)
+          return false;
+
+        if (!hasA()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      @java.lang.Override
+      public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          output.writeInt32(1, a_);
+        }
+        unknownFields.writeTo(output);
+      }
+
+      @java.lang.Override
+      public int getSerializedSize() {
+        int size = memoizedSize;
+        if (size != -1)
+          return size;
+
+        size = 0;
+        if (((bitField0_ & 0x00000001) == 0x00000001)) {
+          size += com.google.protobuf.CodedOutputStream.computeInt32Size(1, a_);
+        }
+        size += unknownFields.getSerializedSize();
+        memoizedSize = size;
+        return size;
+      }
+
+      @java.lang.Override
+      public boolean equals(final java.lang.Object obj) {
+        if (obj == this) {
+          return true;
+        }
+        if (!(obj instanceof org.apache.avro.protobuf.noopt.Test.Bar.BarInner)) {
+          return super.equals(obj);
+        }
+        org.apache.avro.protobuf.noopt.Test.Bar.BarInner other = (org.apache.avro.protobuf.noopt.Test.Bar.BarInner) obj;
+
+        boolean result = true;
+        result = result && (hasA() == other.hasA());
+        if (hasA()) {
+          result = result && (getA() == other.getA());
+        }
+        result = result && unknownFields.equals(other.unknownFields);
+        return result;
+      }
+
+      @java.lang.Override
+      public int hashCode() {
+        if (memoizedHashCode != 0) {
+          return memoizedHashCode;
+        }
+        int hash = 41;
+        hash = (19 * hash) + getDescriptor().hashCode();
+        if (hasA()) {
+          hash = (37 * hash) + A_FIELD_NUMBER;
+          hash = (53 * hash) + getA();
+        }
+        hash = (29 * hash) + unknownFields.hashCode();
+        memoizedHashCode = hash;
+        return hash;
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(java.nio.ByteBuffer data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(java.nio.ByteBuffer data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseDelimitedFrom(java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(
+          com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+      }
+
+      public static org.apache.avro.protobuf.noopt.Test.Bar.BarInner parseFrom(
+          com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+      }
+
+      @java.lang.Override
+      public Builder newBuilderForType() {
+        return newBuilder();
+      }
+
+      public static Builder newBuilder() {
+        return DEFAULT_INSTANCE.toBuilder();
+      }
+
+      public static Builder newBuilder(org.apache.avro.protobuf.noopt.Test.Bar.BarInner prototype) {
+        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+      }
+
+      @java.lang.Override
+      public Builder toBuilder() {
+        return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+      }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+
+      /**
+       * Protobuf type {@code org.apache.avro.protobuf.noopt.Bar.BarInner}
+       */
+      public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+          // @@protoc_insertion_point(builder_implements:org.apache.avro.protobuf.noopt.Bar.BarInner)
+          org.apache.avro.protobuf.noopt.Test.Bar.BarInnerOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+          return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+          return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(org.apache.avro.protobuf.noopt.Test.Bar.BarInner.class,
+                  org.apache.avro.protobuf.noopt.Test.Bar.BarInner.Builder.class);
+        }
+
+        // Construct using org.apache.avro.protobuf.noopt.Test.Bar.BarInner.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
+          }
+        }
+
+        @java.lang.Override
+        public Builder clear() {
+          super.clear();
+          a_ = 0;
+          bitField0_ = (bitField0_ & ~0x00000001);
+          return this;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+          return org.apache.avro.protobuf.noopt.Test.internal_static_org_apache_avro_protobuf_noopt_Bar_BarInner_descriptor;
+        }
+
+        @java.lang.Override
+        public org.apache.avro.protobuf.noopt.Test.Bar.BarInner getDefaultInstanceForType() {
+          return org.apache.avro.protobuf.noopt.Test.Bar.BarInner.getDefaultInstance();
+        }
+
+        @java.lang.Override
+        public org.apache.avro.protobuf.noopt.Test.Bar.BarInner build() {
+          org.apache.avro.protobuf.noopt.Test.Bar.BarInner result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        @java.lang.Override
+        public org.apache.avro.protobuf.noopt.Test.Bar.BarInner buildPartial() {
+          org.apache.avro.protobuf.noopt.Test.Bar.BarInner result = new org.apache.avro.protobuf.noopt.Test.Bar.BarInner(
+              this);
+          int from_bitField0_ = bitField0_;
+          int to_bitField0_ = 0;
+          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+            to_bitField0_ |= 0x00000001;
+          }
+          result.a_ = a_;
+          result.bitField0_ = to_bitField0_;
+          onBuilt();
+          return result;
+        }
+
+        @java.lang.Override
+        public Builder clone() {
+          return (Builder) super.clone();
+        }
+
+        @java.lang.Override
+        public Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+          return (Builder) super.setField(field, value);
+        }
+
+        @java.lang.Override
+        public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+          return (Builder) super.clearField(field);
+        }
+
+        @java.lang.Override
+        public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+          return (Builder) super.clearOneof(oneof);
+        }
+
+        @java.lang.Override
+        public Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index,
+            java.lang.Object value) {
+          return (Builder) super.setRepeatedField(field, index, value);
+        }
+
+        @java.lang.Override
+        public Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+          return (Builder) super.addRepeatedField(field, value);
+        }
+
+        @java.lang.Override
+        public Builder mergeFrom(com.google.protobuf.Message other) {

Review Comment:
   ## Confusing overloading of methods
   
   Method Builder.mergeFrom(..) could be confused with overloaded method [Builder.mergeFrom](1), since dispatch depends on static types.
   Method Builder.mergeFrom(..) could be confused with overloaded method [mergeFrom](2), since dispatch depends on static types.
   
   [Show more details](https://github.com/apache/avro/security/code-scanning/3126)



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] sarutak commented on pull request #2430: AVRO-3825: [Java] Disallow invalid namespaces

Posted by "sarutak (via GitHub)" <gi...@apache.org>.
sarutak commented on PR #2430:
URL: https://github.com/apache/avro/pull/2430#issuecomment-1671571090

   Hmm, the Java binding seems to generate namespaces which contain `$` for inner classes/enums.
   ```
   [INFO] Running org.apache.avro.protobuf.TestProtobuf
   Error:  Tests run: 7, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.372 s <<< FAILURE! - in org.apache.avro.protobuf.TestProtobuf
   Error:  org.apache.avro.protobuf.TestProtobuf.nestedEnum  Time elapsed: 0.018 s  <<< ERROR!
   java.lang.RuntimeException: org.apache.avro.SchemaParseException: Illegal character in: Test$M
   	at org.apache.avro.protobuf.ProtobufData.getSchema(ProtobufData.java:187)
   	at org.apache.avro.protobuf.TestProtobuf.nestedEnum(TestProtobuf.java:115)
   	at java.lang.reflect.Method.invoke(Method.java:498)
   	at java.util.ArrayList.forEach(ArrayList.java:1259)
   	at java.util.ArrayList.forEach(ArrayList.java:1259)
   Caused by: org.apache.avro.SchemaParseException: Illegal character in: Test$M
   	at org.apache.avro.Schema.validateName(Schema.java:1641)
   	at org.apache.avro.Schema.validateSpace(Schema.java:1652)
   	at org.apache.avro.Schema.access$700(Schema.java:96)
   	at org.apache.avro.Schema$Name.<init>(Schema.java:720)
   	at org.apache.avro.Schema.createEnum(Schema.java:233)
   	at org.apache.avro.protobuf.ProtobufData.getSchema(ProtobufData.java:322)
   	at org.apache.avro.protobuf.ProtobufData.getSchema(ProtobufData.java:183)
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] KalleOlaviNiemitalo commented on a diff in pull request #2430: AVRO-3825: [Java] Disallow invalid namespaces

Posted by "KalleOlaviNiemitalo (via GitHub)" <gi...@apache.org>.
KalleOlaviNiemitalo commented on code in PR #2430:
URL: https://github.com/apache/avro/pull/2430#discussion_r1288347960


##########
lang/java/avro/src/main/java/org/apache/avro/Schema.java:
##########
@@ -1645,6 +1643,17 @@
     return name;
   }
 
+  private static String validateSpace(String space) {
+    if ("".equals(space) || space == null) {

Review Comment:
   I expect the `space.split("\\.")` call immediately after will be even more inefficient.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] sarutak commented on pull request #2430: AVRO-3825: [Java] Disallow invalid namespaces

Posted by "sarutak (via GitHub)" <gi...@apache.org>.
sarutak commented on PR #2430:
URL: https://github.com/apache/avro/pull/2430#issuecomment-1671655499

   Pending discussion.
   https://lists.apache.org/thread/pxlcrvd24sdhfz5fy3xn307jnd7c29zp


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] KalleOlaviNiemitalo commented on pull request #2430: AVRO-3825: [Java] Disallow invalid namespaces

Posted by "KalleOlaviNiemitalo (via GitHub)" <gi...@apache.org>.
KalleOlaviNiemitalo commented on PR #2430:
URL: https://github.com/apache/avro/pull/2430#issuecomment-1671725282

   This use of the dollar sign is apparently defined in Java language specification §13.1 (The Form of a Binary), so all Java compilers should generate the same _binary name_ `Test$M`.  However, for local or anonymous classes, the JLS requires "a non-empty sequence of digits", and I think different compilers could choose different digits.  Application developers then should not use such classes for Avro data, as it would be difficult from them to ensure that the name stays the same.
   
   I'd prefer keeping dollar signs disallowed in the Avro specification.  Schemas that use dollar signs won't be fully portable to other languages, even if the Java implementation of Avro allows them.  It might be useful to have a strict mode that flags them in the Java implementation too, but I don't know how that should be configured.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] AVRO-3825: [Java] Disallow invalid namespaces [avro]

Posted by "locomotif (via GitHub)" <gi...@apache.org>.
locomotif commented on PR #2430:
URL: https://github.com/apache/avro/pull/2430#issuecomment-1751782430

   Hi Folks - Glad we have a PR to address this issue,  it surfaced recently, and was wondering if there are plans to land this fix sometime in the near future.  Thanks! 🙂 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] AVRO-3825: [Java] Disallow invalid namespaces [avro]

Posted by "sarutak (via GitHub)" <gi...@apache.org>.
sarutak commented on PR #2430:
URL: https://github.com/apache/avro/pull/2430#issuecomment-1752208465

   I'll update this PR after [this PR](https://github.com/apache/avro/pull/2542) is merged because this PR modifies a `.proto` file and need to regenerate `.class` files for test.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [avro] sarutak commented on pull request #2430: AVRO-3825: [Java] Disallow invalid namespaces

Posted by "sarutak (via GitHub)" <gi...@apache.org>.
sarutak commented on PR #2430:
URL: https://github.com/apache/avro/pull/2430#issuecomment-1684890499

   cc: @RyanSkraba 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org