You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@gobblin.apache.org by su...@apache.org on 2020/11/20 19:16:02 UTC

[incubator-gobblin] branch master updated: [GOBBLIN-1316] Copy field and schema level properties when switching namespace in a schema

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

suvasude pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-gobblin.git


The following commit(s) were added to refs/heads/master by this push:
     new 16f40fe  [GOBBLIN-1316] Copy field and schema level properties when switching namespace in a schema
16f40fe is described below

commit 16f40fe8a9591c1200a7eddcccb79a37458dff90
Author: suvasude <su...@linkedin.biz>
AuthorDate: Fri Nov 20 11:15:53 2020 -0800

    [GOBBLIN-1316] Copy field and schema level properties when switching namespace in a schema
    
    Closes #3153 from sv2000/switchNamespace
---
 .../main/java/org/apache/gobblin/util/AvroUtils.java   |  2 ++
 .../java/org/apache/gobblin/util/AvroUtilsTest.java    | 18 ++++++++++++++++--
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/gobblin-utility/src/main/java/org/apache/gobblin/util/AvroUtils.java b/gobblin-utility/src/main/java/org/apache/gobblin/util/AvroUtils.java
index cd72883..cab5627 100644
--- a/gobblin-utility/src/main/java/org/apache/gobblin/util/AvroUtils.java
+++ b/gobblin-utility/src/main/java/org/apache/gobblin/util/AvroUtils.java
@@ -781,6 +781,8 @@ public class AvroUtils {
           for (Schema.Field oldField : schema.getFields()) {
             Field newField = new Field(oldField.name(), switchNamespace(oldField.schema(), namespaceOverride), oldField.doc(),
                 oldField.defaultValue(), oldField.order());
+            // Copy field level properties
+            copyFieldProperties(oldField, newField);
             newFields.add(newField);
           }
         }
diff --git a/gobblin-utility/src/test/java/org/apache/gobblin/util/AvroUtilsTest.java b/gobblin-utility/src/test/java/org/apache/gobblin/util/AvroUtilsTest.java
index 991be36..17cfbcc 100644
--- a/gobblin-utility/src/test/java/org/apache/gobblin/util/AvroUtilsTest.java
+++ b/gobblin-utility/src/test/java/org/apache/gobblin/util/AvroUtilsTest.java
@@ -55,6 +55,7 @@ import org.testng.Assert;
 import org.testng.annotations.Test;
 
 import com.google.common.base.Optional;
+import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 
 import lombok.extern.slf4j.Slf4j;
@@ -235,8 +236,19 @@ public class AvroUtilsTest {
     String originalNamespace = "originalNamespace";
     String originalName = "originalName";
     String newNamespace = "newNamespace";
-    Schema schema = SchemaBuilder.builder(originalNamespace).record(originalName).fields().
-        requiredDouble("double").optionalFloat("float").endRecord();
+
+    Schema schema = Schema.createRecord(originalName, "", originalNamespace, false);
+    schema.addProp("prop1", "val1");
+    schema.addProp("prop2", "val2");
+    List<Schema.Field> fieldList = Lists.newArrayList();
+    Schema.Field field1 =
+        new Schema.Field("key", Schema.create(Schema.Type.LONG), "", 0L);
+    field1.addProp("primaryKey", "true");
+    fieldList.add(field1);
+    Schema.Field field2 = new Schema.Field("double", Schema.create(Schema.Type.DOUBLE), "", 0.0);
+    fieldList.add(field2);
+
+    schema.setFields(Lists.newArrayList(fieldList));
 
     Map<String, String> map = Maps.newHashMap();
     map.put(originalNamespace, newNamespace);
@@ -247,6 +259,8 @@ public class AvroUtilsTest {
     for(Schema.Field field : newSchema.getFields()) {
       Assert.assertEquals(field, schema.getField(field.name()));
     }
+
+    Assert.assertTrue(schema.getObjectProps().equals(newSchema.getObjectProps()));
   }
 
   @Test public void testSerializeAsPath() throws Exception {