You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Andy Le (Jira)" <ji...@apache.org> on 2020/04/19 10:38:00 UTC
[jira] [Created] (AVRO-2808) Java: ReflectData incorrectly handles
hidden fields
Andy Le created AVRO-2808:
-----------------------------
Summary: Java: ReflectData incorrectly handles hidden fields
Key: AVRO-2808
URL: https://issues.apache.org/jira/browse/AVRO-2808
Project: Apache Avro
Issue Type: Bug
Components: java
Reporter: Andy Le
Hi guys,
I've got the following test:
{code:java}
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);
}
}
{code}
When I ran the test, an exception is raised:
{noformat}
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)
{noformat}
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|https://issues.apache.org/jira/browse/AVRO-2805]
--
This message was sent by Atlassian Jira
(v8.3.4#803005)