Uploaded image for project: 'Apache Avro'
  1. Apache Avro
  2. AVRO-2808

Java: ReflectData incorrectly handles hidden fields

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.9.2
    • Fix Version/s: 1.10.0
    • Component/s: java
    • Labels:
      None

      Description

      Hi guys,

      I've got the following test:

      public ReflectTest{
        public class Definition {
          public Map<String, Type> tokens;
        }
      
        public enum Type {
          A,
          B,
          C
        }
      
        @Test
        public void testAvro2805() {
          Schema schema = ReflectData.get().getSchema(Definition.class);
      
          final String schemaString = schema.toString(true);
      
          System.out.println(schemaString);
        }
      
      }
      

      When I ran the test, an exception is raised:

      org.apache.avro.SchemaParseException: Illegal character in: this$0
      
      	at org.apache.avro.Schema.validateName(Schema.java:1530)
      	at org.apache.avro.Schema.access$400(Schema.java:87)
      	at org.apache.avro.Schema$Field.<init>(Schema.java:518)
      	at org.apache.avro.Schema$Field.<init>(Schema.java:557)
      	at org.apache.avro.reflect.ReflectData.createSchema(ReflectData.java:683)
      	at org.apache.avro.specific.SpecificData$3.computeValue(SpecificData.java:335)
      	at org.apache.avro.specific.SpecificData$3.computeValue(SpecificData.java:332)
      

      From the log, you may see that: we should not handle Java hidden field `this$0` which is used to hold reference to outer class instances.

      This issue is somehow related to this one

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                anhldbk Andy Le
                Reporter:
                anhldbk Andy Le
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: