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 {