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

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


The following commit(s) were added to refs/heads/master by this push:
     new da524a4bc AVRO-3845: avro-tools: Add log entry when an external schema 
is used (#2121)
da524a4bc is described below

commit da524a4bc48aaff03826ed30a4ec128a4d552ebc
Author: Ruslan Altynnikov <[email protected]>
AuthorDate: Wed Sep 13 13:40:26 2023 +0200

    AVRO-3845: avro-tools: Add log entry when an external schema is used (#2121)
    
    * Add log entry when an external schema is used.
    * Cover both reader and writer.
    
    ---------
    Co-authored-by: Ruslan Altynnikov
---
 .../org/apache/avro/tool/DataFileReadTool.java     | 27 +++++++++++++++-------
 .../org/apache/avro/tool/DataFileWriteTool.java    |  2 +-
 .../apache/avro/tool/TestDataFileRepairTool.java   |  2 +-
 3 files changed, 21 insertions(+), 10 deletions(-)

diff --git 
a/lang/java/tools/src/main/java/org/apache/avro/tool/DataFileReadTool.java 
b/lang/java/tools/src/main/java/org/apache/avro/tool/DataFileReadTool.java
index fb5ef7227..87ff94aa5 100644
--- a/lang/java/tools/src/main/java/org/apache/avro/tool/DataFileReadTool.java
+++ b/lang/java/tools/src/main/java/org/apache/avro/tool/DataFileReadTool.java
@@ -18,6 +18,7 @@
 package org.apache.avro.tool;
 
 import java.io.BufferedInputStream;
+import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintStream;
 import java.util.ArrayList;
@@ -35,9 +36,12 @@ import org.apache.avro.generic.GenericDatumReader;
 import org.apache.avro.generic.GenericDatumWriter;
 import org.apache.avro.io.EncoderFactory;
 import org.apache.avro.io.JsonEncoder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /** Reads a data file and dumps to JSON */
 public class DataFileReadTool implements Tool {
+  private static final Logger LOG = 
LoggerFactory.getLogger(DataFileReadTool.class);
   private static final long DEFAULT_HEAD_COUNT = 10;
 
   @Override
@@ -62,18 +66,13 @@ public class DataFileReadTool implements Tool {
         .ofType(String.class);
 
     OptionSet optionSet = optionParser.parse(args.toArray(new String[0]));
-    Boolean pretty = optionSet.has(prettyOption);
+    boolean pretty = optionSet.has(prettyOption);
     List<String> nargs = new ArrayList<>((List<String>) 
optionSet.nonOptionArguments());
 
     String readerSchemaStr = readerSchemaOption.value(optionSet);
     String readerSchemaFile = readerSchemaFileOption.value(optionSet);
 
-    Schema readerSchema = null;
-    if (readerSchemaFile != null) {
-      readerSchema = Util.parseSchemaFromFS(readerSchemaFile);
-    } else if (readerSchemaStr != null) {
-      readerSchema = new Schema.Parser().parse(readerSchemaStr);
-    }
+    Schema readerSchema = getSchema(readerSchemaStr, readerSchemaFile);
 
     long headCount = getHeadCount(optionSet, headOption, nargs);
 
@@ -92,7 +91,7 @@ public class DataFileReadTool implements Tool {
     }
     try (DataFileStream<Object> streamReader = new DataFileStream<>(inStream, 
reader)) {
       Schema schema = readerSchema != null ? readerSchema : 
streamReader.getSchema();
-      DatumWriter writer = new GenericDatumWriter<>(schema);
+      DatumWriter<Object> writer = new GenericDatumWriter<>(schema);
       JsonEncoder encoder = EncoderFactory.get().jsonEncoder(schema, out, 
pretty);
       for (long recordCount = 0; streamReader.hasNext() && recordCount < 
headCount; recordCount++) {
         Object datum = streamReader.next();
@@ -105,6 +104,18 @@ public class DataFileReadTool implements Tool {
     return 0;
   }
 
+  static Schema getSchema(String schemaStr, String schemaFile) throws 
IOException {
+    Schema readerSchema = null;
+    if (schemaFile != null) {
+      LOG.info("Reading schema from file '{}'", schemaFile);
+      readerSchema = Util.parseSchemaFromFS(schemaFile);
+    } else if (schemaStr != null) {
+      LOG.info("Reading schema from string '{}'", schemaStr);
+      readerSchema = new Schema.Parser().parse(schemaStr);
+    }
+    return readerSchema;
+  }
+
   private static long getHeadCount(OptionSet optionSet, OptionSpec<String> 
headOption, List<String> nargs) {
     long headCount = Long.MAX_VALUE;
     if (optionSet.has(headOption)) {
diff --git 
a/lang/java/tools/src/main/java/org/apache/avro/tool/DataFileWriteTool.java 
b/lang/java/tools/src/main/java/org/apache/avro/tool/DataFileWriteTool.java
index b763a00be..4bf2f79a0 100644
--- a/lang/java/tools/src/main/java/org/apache/avro/tool/DataFileWriteTool.java
+++ b/lang/java/tools/src/main/java/org/apache/avro/tool/DataFileWriteTool.java
@@ -72,7 +72,7 @@ public class DataFileWriteTool implements Tool {
       p.printHelpOn(err);
       return 1;
     }
-    Schema schema = (schemafile != null) ? Util.parseSchemaFromFS(schemafile) 
: new Schema.Parser().parse(schemastr);
+    Schema schema = DataFileReadTool.getSchema(schemastr, schemafile);
 
     DatumReader<Object> reader = new GenericDatumReader<>(schema);
 
diff --git 
a/lang/java/tools/src/test/java/org/apache/avro/tool/TestDataFileRepairTool.java
 
b/lang/java/tools/src/test/java/org/apache/avro/tool/TestDataFileRepairTool.java
index b73fc964b..0e24b8915 100644
--- 
a/lang/java/tools/src/test/java/org/apache/avro/tool/TestDataFileRepairTool.java
+++ 
b/lang/java/tools/src/test/java/org/apache/avro/tool/TestDataFileRepairTool.java
@@ -180,7 +180,7 @@ public class TestDataFileRepairTool {
   }
 
   private void checkFileContains(File repairedFile, String... lines) throws 
IOException {
-    DataFileReader r = new DataFileReader<>(repairedFile, new 
GenericDatumReader<>(SCHEMA));
+    DataFileReader<Object> r = new DataFileReader<>(repairedFile, new 
GenericDatumReader<>(SCHEMA));
     for (String line : lines) {
       assertEquals(line, r.next().toString());
     }

Reply via email to