[ 
https://issues.apache.org/jira/browse/AVRO-1939?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16707701#comment-16707701
 ] 

ASF GitHub Bot commented on AVRO-1939:
--------------------------------------

dkulp closed pull request #144: AVRO-1939: Add commandline tool that outputs 
canonical form of schema
URL: https://github.com/apache/avro/pull/144
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git 
a/lang/java/avro/src/main/java/org/apache/avro/SchemaNormalization.java 
b/lang/java/avro/src/main/java/org/apache/avro/SchemaNormalization.java
index 16d264258..cf8323992 100644
--- a/lang/java/avro/src/main/java/org/apache/avro/SchemaNormalization.java
+++ b/lang/java/avro/src/main/java/org/apache/avro/SchemaNormalization.java
@@ -24,8 +24,8 @@
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 
-/** Collection of static methods for generating the cannonical form of
- * schemas (see {@link #toParsingForm}) -- and fingerprints of cannonical
+/** Collection of static methods for generating the canonical form of
+ * schemas (see {@link #toParsingForm}) -- and fingerprints of canonical
  * forms ({@link #fingerprint}).
  */
 public class SchemaNormalization {
diff --git a/lang/java/tools/src/main/java/org/apache/avro/tool/Main.java 
b/lang/java/tools/src/main/java/org/apache/avro/tool/Main.java
index 93c827ccd..7a82f41d2 100644
--- a/lang/java/tools/src/main/java/org/apache/avro/tool/Main.java
+++ b/lang/java/tools/src/main/java/org/apache/avro/tool/Main.java
@@ -61,7 +61,8 @@
         new TetherTool(),
         new TrevniCreateRandomTool(),
         new TrevniMetadataTool(),
-        new TrevniToJsonTool()
+        new TrevniToJsonTool(),
+        new SchemaNormalizationTool()
         }) {
       Tool prev = tools.put(tool.getName(), tool);
       if (prev != null) {
diff --git 
a/lang/java/tools/src/main/java/org/apache/avro/tool/SchemaNormalizationTool.java
 
b/lang/java/tools/src/main/java/org/apache/avro/tool/SchemaNormalizationTool.java
new file mode 100644
index 000000000..1cd63c710
--- /dev/null
+++ 
b/lang/java/tools/src/main/java/org/apache/avro/tool/SchemaNormalizationTool.java
@@ -0,0 +1,47 @@
+package org.apache.avro.tool;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.InputStream;
+import java.io.PrintStream;
+import java.util.List;
+
+import joptsimple.OptionParser;
+
+import joptsimple.OptionSet;
+import org.apache.avro.Schema;
+import org.apache.avro.SchemaNormalization;
+
+public class SchemaNormalizationTool implements Tool {
+  @Override
+  public String getName() { return "schemacanonical"; }
+
+  @Override
+  public String getShortDescription() { return "Converts an Avro Schema to its 
canonical form"; }
+
+  @Override
+  public int run(InputStream stdin, PrintStream out, PrintStream err, 
List<String> args) throws Exception {
+    OptionParser p = new OptionParser();
+    OptionSet opts = p.parse(args.toArray(new String[0]));
+
+    if (opts.nonOptionArguments().size() != 2) {
+      err.println("Expected 2 args: infile outfile (filenames or '-' for 
stdin/stdout)");
+      p.printHelpOn(err);
+      return 1;
+    }
+
+    BufferedInputStream inStream = Util.fileOrStdin(args.get(0), stdin);
+    BufferedOutputStream outStream = Util.fileOrStdout(args.get(1), out);
+
+    Schema schema = new Schema.Parser().parse(inStream);
+
+    String canonicalForm = SchemaNormalization.toParsingForm(schema);
+
+    outStream.write(canonicalForm.getBytes());
+
+    Util.close(inStream);
+    Util.close(outStream);
+
+    return 0;
+  }
+}


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


> Add command line tool for generating canonical form of schema
> -------------------------------------------------------------
>
>                 Key: AVRO-1939
>                 URL: https://issues.apache.org/jira/browse/AVRO-1939
>             Project: Apache Avro
>          Issue Type: Improvement
>            Reporter: Erik Forsberg
>            Priority: Major
>             Fix For: 1.9.0
>
>
> Being able to generate canonical form of schemas from avro-tools would be 
> useful, especially when writing canonical schema support in other languages 
> (i.e AVRO-1938).



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to