This is an automated email from the ASF dual-hosted git repository.

RyanSkraba pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/avro.git


The following commit(s) were added to refs/heads/main by this push:
     new 42e4c3d4b0 AVRO-4322: Use reader/writers constently with model (#3924)
42e4c3d4b0 is described below

commit 42e4c3d4b03ced580c0d8186b3df133652ab445b
Author: Ryan Skraba <[email protected]>
AuthorDate: Thu Aug 6 17:23:55 2026 +0200

    AVRO-4322: Use reader/writers constently with model (#3924)
---
 .../org/apache/avro/io/FastReaderBuilderJavaClassTest.java   | 12 +++++++-----
 .../org/apache/avro/specific/TestSpecificDatumReader.java    |  6 ++++++
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git 
a/lang/java/avro/src/test/java/org/apache/avro/io/FastReaderBuilderJavaClassTest.java
 
b/lang/java/avro/src/test/java/org/apache/avro/io/FastReaderBuilderJavaClassTest.java
index 0cb745d931..f82b70a7a2 100644
--- 
a/lang/java/avro/src/test/java/org/apache/avro/io/FastReaderBuilderJavaClassTest.java
+++ 
b/lang/java/avro/src/test/java/org/apache/avro/io/FastReaderBuilderJavaClassTest.java
@@ -29,8 +29,6 @@ import java.util.Map;
 import org.apache.avro.Schema;
 import org.apache.avro.SchemaBuilder;
 import org.apache.avro.generic.GenericData;
-import org.apache.avro.generic.GenericDatumReader;
-import org.apache.avro.generic.GenericDatumWriter;
 import org.apache.avro.generic.GenericRecord;
 import org.apache.avro.generic.GenericRecordBuilder;
 import org.apache.avro.specific.SpecificData;
@@ -70,20 +68,24 @@ public class FastReaderBuilderJavaClassTest {
           .set("prices", Map.of("-0.0002", "cheap", "12345.678", 
"expensive")).build();
 
   /**
-   * Reusable round-trip logic for a record, using the given model.
+   * Reusable round-trip logic for a record, using the given model. The reader 
is
+   * built via {@link GenericData#createDatumReader(Schema, Schema)} so that
+   * SpecificData produces a real {@code SpecificDatumReader}, rather than a
+   * {@code GenericDatumReader} wrapping a SpecificData instance.
    */
+  @SuppressWarnings("unchecked")
   public static GenericRecord roundTrip(GenericRecord record, GenericData 
model) throws IOException {
     byte[] serialized;
 
     try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
-      GenericDatumWriter<GenericRecord> writer = new 
GenericDatumWriter<>(record.getSchema());
+      DatumWriter<GenericRecord> writer = 
model.createDatumWriter(record.getSchema());
       BinaryEncoder encoder = EncoderFactory.get().binaryEncoder(baos, null);
       writer.write(record, encoder);
       encoder.flush();
       serialized = baos.toByteArray();
     }
 
-    GenericDatumReader<GenericRecord> reader = new 
GenericDatumReader<>(record.getSchema(), record.getSchema(), model);
+    DatumReader<GenericRecord> reader = 
model.createDatumReader(record.getSchema(), record.getSchema());
     BinaryDecoder decoder = DecoderFactory.get().binaryDecoder(serialized, 
null);
     return reader.read(null, decoder);
   }
diff --git 
a/lang/java/avro/src/test/java/org/apache/avro/specific/TestSpecificDatumReader.java
 
b/lang/java/avro/src/test/java/org/apache/avro/specific/TestSpecificDatumReader.java
index 3c10b74cde..cd4589e4f3 100644
--- 
a/lang/java/avro/src/test/java/org/apache/avro/specific/TestSpecificDatumReader.java
+++ 
b/lang/java/avro/src/test/java/org/apache/avro/specific/TestSpecificDatumReader.java
@@ -68,6 +68,12 @@ public class TestSpecificDatumReader {
 
   public static class MyReader extends SpecificDatumReader<MyData> {
 
+    MyReader() {
+      // Use a new data model instead of the singleton in order to avoid 
modifying the
+      // setFastReaderEnabled state for other tests.
+      super(null, null, new SpecificData());
+    }
+
     @Override
     protected Class findStringClass(Schema schema) {
       return MyData.class;

Reply via email to