You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@orc.apache.org by GitBox <gi...@apache.org> on 2021/08/19 15:59:54 UTC

[GitHub] [orc] dongjoon-hyun commented on a change in pull request #874: ORC-871: Provide better error information when parsing json files with exceptions

dongjoon-hyun commented on a change in pull request #874:
URL: https://github.com/apache/orc/pull/874#discussion_r692265967



##########
File path: java/tools/src/java/org/apache/orc/tools/json/JsonSchemaFinder.java
##########
@@ -247,15 +249,41 @@ public void addFile(String filename) throws IOException {
     } else {
       reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
     }
-    addFile(reader);
+    addFile(reader, filename);
   }
 
-  public void addFile(java.io.Reader reader) throws IOException {
+  public void addFile(java.io.Reader reader, String filename) {
     JsonStreamParser parser = new JsonStreamParser(reader);
-    while (parser.hasNext()) {
-      records += 1;
-      mergedType = mergeType(mergedType, pickType(parser.next()));
+    try {
+      while (parser.hasNext()) {
+        mergedType = mergeType(mergedType, pickType(parser.next()));
+        records += 1;
+      }
+    } catch (JsonParseException e) {
+      printParseExceptionMsg(e, filename);
+    }
+  }
+
+  private void printParseExceptionMsg(JsonParseException e, String filename) {
+    System.err.printf(
+        "A JsonParseException was thrown while processing the %dth record of file %s.%n",
+        records + 1, filename);
+
+    String pattern = "at line (\\d+) column (\\d+)";
+    Pattern r = Pattern.compile(pattern);
+    Matcher m = r.matcher(e.getMessage());
+    int line;
+    int column;
+    if (m.find( )) {
+      line = Integer.parseInt(m.group(1));
+      column = Integer.parseInt(m.group(2));
+      if (line == 1 && column == 1) {
+        System.err.printf("File %s is empty.", filename);

Review comment:
       Please add a new line at the end.
   ```
   -        System.err.printf("File %s is empty.", filename);
   +        System.err.printf("File %s is empty.\n", filename);
   ```
   
   Otherwise, it looks like the following.
   ```
   $ java -jar tools/target/orc-tools-1.8.0-SNAPSHOT-uber.jar json-schema ~/empty.json
   Reading file /Users/dongjoon/empty.json
   A JsonParseException was thrown while processing the 1th record of file /Users/dongjoon/empty.json.
   File /Users/dongjoon/empty.json is empty.%
   ```




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscribe@orc.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org