This is an automated email from the ASF dual-hosted git repository. mgrigorov pushed a commit to branch avro-4078-test-case in repository https://gitbox.apache.org/repos/asf/avro.git
commit 6d00e35f437f8c840a8d87bce53212b833f3fc94 Author: Martin Tzvetanov Grigorov <[email protected]> AuthorDate: Thu Oct 17 11:21:54 2024 +0300 AVRO-4078: [Java] Add the test classes from the reproducer Signed-off-by: Martin Tzvetanov Grigorov <[email protected]> --- .../src/test/java/org/apache/avro/FullName.java | 64 ++++++++++++++++++++++ .../test/java/org/apache/avro/TestAvro4078.java | 21 +++++++ 2 files changed, 85 insertions(+) diff --git a/lang/java/avro/src/test/java/org/apache/avro/FullName.java b/lang/java/avro/src/test/java/org/apache/avro/FullName.java new file mode 100644 index 000000000..a52215f56 --- /dev/null +++ b/lang/java/avro/src/test/java/org/apache/avro/FullName.java @@ -0,0 +1,64 @@ +package org.apache.avro; + +import org.apache.avro.AvroRuntimeException; +import org.apache.avro.Schema; +import org.apache.avro.io.DatumReader; +import org.apache.avro.io.DatumWriter; +import org.apache.avro.specific.AvroGenerated; +import org.apache.avro.specific.SpecificDatumReader; +import org.apache.avro.specific.SpecificDatumWriter; +import org.apache.avro.specific.SpecificRecord; +import org.apache.avro.specific.SpecificRecordBase; + +@AvroGenerated +public class FullName extends SpecificRecordBase implements SpecificRecord { + private static final long serialVersionUID = 4560514203639509981L; + public static final Schema SCHEMA$ = (new Schema.Parser()).parse( + "{\"type\":\"record\",\"name\":\"FullName\",\"namespace\":\"com.example\",\"fields\":[{\"name\":\"first\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"}},{\"name\":\"last\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"}}]}"); + private String first; + private String last; + private static final DatumWriter WRITER$; + private static final DatumReader READER$; + + public FullName() { + } + + public FullName(String first, String last) { + this.first = first; + this.last = last; + } + + public Schema getSchema() { + return SCHEMA$; + } + + public Object get(int field$) { + switch (field$) { + case 0: + return this.first; + case 1: + return this.last; + default: + throw new AvroRuntimeException("Bad index"); + } + } + + public void put(int field$, Object value$) { + switch (field$) { + case 0: + this.first = (String) value$; + break; + case 1: + this.last = (String) value$; + break; + default: + throw new AvroRuntimeException("Bad index"); + } + + } + + static { + WRITER$ = new SpecificDatumWriter(SCHEMA$); + READER$ = new SpecificDatumReader(SCHEMA$); + } +} diff --git a/lang/java/avro/src/test/java/org/apache/avro/TestAvro4078.java b/lang/java/avro/src/test/java/org/apache/avro/TestAvro4078.java new file mode 100644 index 000000000..59b2d0d49 --- /dev/null +++ b/lang/java/avro/src/test/java/org/apache/avro/TestAvro4078.java @@ -0,0 +1,21 @@ +package org.apache.avro; + +import org.apache.avro.specific.SpecificData; +import org.junit.Test; + +/** + * Unit test for demonstrating specific data potential issue. + */ +public class TestAvro4078 { + + public static final Schema FULLNAME_SCHEMA = (new Schema.Parser()).parse("{\n" + " \"type\": \"record\",\n" + + " \"namespace\": \"org.apache.avro\",\n" + " \"name\": \"FullName\",\n" + " \"fields\": [\n" + + " { \"name\": \"first\", \"type\": \"string\" },\n" + + " { \"name\": \"last\", \"type\": \"string\" }\n" + " ]\n" + "}"); + + @Test + public void testClassLoad() { + System.err.println(FULLNAME_SCHEMA); + System.err.println(SpecificData.get().getClass(FULLNAME_SCHEMA)); + } +}
