You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@gobblin.apache.org by hu...@apache.org on 2017/10/20 22:04:33 UTC

incubator-gobblin git commit: [GOBBLIN-295] Make missing nullable fields default to null

Repository: incubator-gobblin
Updated Branches:
  refs/heads/master 0ee3cfdca -> 68456c620


[GOBBLIN-295] Make missing nullable fields default to null

Closes #2146 from jack-moseley/jsontoavro_nullable


Project: http://git-wip-us.apache.org/repos/asf/incubator-gobblin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-gobblin/commit/68456c62
Tree: http://git-wip-us.apache.org/repos/asf/incubator-gobblin/tree/68456c62
Diff: http://git-wip-us.apache.org/repos/asf/incubator-gobblin/diff/68456c62

Branch: refs/heads/master
Commit: 68456c620c3a759d47bab4dff43d7b5ad6e46fdd
Parents: 0ee3cfd
Author: Jack Moseley <jm...@linkedin.com>
Authored: Fri Oct 20 15:04:25 2017 -0700
Committer: Hung Tran <hu...@linkedin.com>
Committed: Fri Oct 20 15:04:25 2017 -0700

----------------------------------------------------------------------
 .../avro/JsonRecordAvroSchemaToAvroConverter.java     | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-gobblin/blob/68456c62/gobblin-core/src/main/java/org/apache/gobblin/converter/avro/JsonRecordAvroSchemaToAvroConverter.java
----------------------------------------------------------------------
diff --git a/gobblin-core/src/main/java/org/apache/gobblin/converter/avro/JsonRecordAvroSchemaToAvroConverter.java b/gobblin-core/src/main/java/org/apache/gobblin/converter/avro/JsonRecordAvroSchemaToAvroConverter.java
index 97f0121..11f85f4 100644
--- a/gobblin-core/src/main/java/org/apache/gobblin/converter/avro/JsonRecordAvroSchemaToAvroConverter.java
+++ b/gobblin-core/src/main/java/org/apache/gobblin/converter/avro/JsonRecordAvroSchemaToAvroConverter.java
@@ -31,7 +31,7 @@ import org.apache.gobblin.converter.ToAvroConverterBase;
 
 import com.google.common.base.Preconditions;
 import com.google.gson.JsonObject;
-import com.google.common.base.Preconditions;
+import com.google.gson.JsonNull;
 import com.google.common.base.Splitter;
 
 
@@ -84,10 +84,6 @@ public class JsonRecordAvroSchemaToAvroConverter<SI> extends ToAvroConverterBase
         continue;
       }
 
-      if (inputRecord.get(field.name()) == null) {
-        throw new DataConversionException("Field missing from record: " + field.name());
-      }
-
       Schema.Type type = field.schema().getType();
       boolean nullable = false;
       Schema schema = field.schema();
@@ -107,6 +103,14 @@ public class JsonRecordAvroSchemaToAvroConverter<SI> extends ToAvroConverterBase
         } else {
           throw new DataConversionException("Unions must be size 2, and contain one null");
         }
+
+        if (inputRecord.get(field.name()) == null) {
+          inputRecord.add(field.name(), JsonNull.INSTANCE);
+        }
+      }
+
+      if (inputRecord.get(field.name()) == null) {
+        throw new DataConversionException("Field missing from record: " + field.name());
       }
 
       if (type.equals(Schema.Type.RECORD)) {