Repository: orc
Updated Branches:
  refs/heads/master 84fa2ff28 -> 6daa5ed44


ORC-300. Provide additional constructor to JsonReader.

This allows embedding code to use it's own JsonParser
implementation. Intended to plug in a parser that transforms JSON
while reading (flattening nested structs, renaming and filtering
capabilities).

Fixes #217

Signed-off-by: Owen O'Malley <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/orc/repo
Commit: http://git-wip-us.apache.org/repos/asf/orc/commit/6daa5ed4
Tree: http://git-wip-us.apache.org/repos/asf/orc/tree/6daa5ed4
Diff: http://git-wip-us.apache.org/repos/asf/orc/diff/6daa5ed4

Branch: refs/heads/master
Commit: 6daa5ed44ea412e3657d32bdedc27a6515e5dc5b
Parents: 84fa2ff
Author: Thomas Krüger <tkcode123>
Authored: Sun Feb 11 23:33:49 2018 +0100
Committer: Owen O'Malley <[email protected]>
Committed: Tue Feb 27 10:04:09 2018 -0800

----------------------------------------------------------------------
 .../java/org/apache/orc/tools/convert/JsonReader.java   | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/orc/blob/6daa5ed4/java/tools/src/java/org/apache/orc/tools/convert/JsonReader.java
----------------------------------------------------------------------
diff --git a/java/tools/src/java/org/apache/orc/tools/convert/JsonReader.java 
b/java/tools/src/java/org/apache/orc/tools/convert/JsonReader.java
index 5daec01..16b5d64 100644
--- a/java/tools/src/java/org/apache/orc/tools/convert/JsonReader.java
+++ b/java/tools/src/java/org/apache/orc/tools/convert/JsonReader.java
@@ -50,6 +50,7 @@ import java.io.InputStreamReader;
 import java.io.Reader;
 import java.nio.charset.StandardCharsets;
 import java.sql.Timestamp;
+import java.util.Iterator;
 import java.util.List;
 import java.util.zip.GZIPInputStream;
 
@@ -58,7 +59,7 @@ public class JsonReader implements RecordReader {
     "yyyy[[-][/]]MM[[-][/]]dd[['T'][ ]]HH:mm:ss[ ][XXX][X]");
 
   private final TypeDescription schema;
-  private final JsonStreamParser parser;
+  private final Iterator<JsonElement> parser;
   private final JsonConverter[] converters;
   private final long totalSize;
   private final FSDataInputStream input;
@@ -256,13 +257,20 @@ public class JsonReader implements RecordReader {
                     FSDataInputStream underlying,
                     long size,
                     TypeDescription schema) throws IOException {
+    this(new JsonStreamParser(reader), underlying, size, schema);
+  }
+
+  public JsonReader(Iterator<JsonElement> parser,
+                    FSDataInputStream underlying,
+                    long size,
+                    TypeDescription schema) throws IOException {
     this.schema = schema;
     if (schema.getCategory() != TypeDescription.Category.STRUCT) {
       throw new IllegalArgumentException("Root must be struct - " + schema);
     }
     this.input = underlying;
     this.totalSize = size;
-    parser = new JsonStreamParser(reader);
+    this.parser = parser;
     List<TypeDescription> fieldTypes = schema.getChildren();
     converters = new JsonConverter[fieldTypes.size()];
     for(int c = 0; c < converters.length; ++c) {

Reply via email to