diff --git a/wherehows-dao/src/main/java/wherehows/dao/table/DatasetOwnerDao.java b/wherehows-dao/src/main/java/wherehows/dao/table/DatasetOwnerDao.java index df6bc0a878..88981c71f6 100644 --- a/wherehows-dao/src/main/java/wherehows/dao/table/DatasetOwnerDao.java +++ b/wherehows-dao/src/main/java/wherehows/dao/table/DatasetOwnerDao.java @@ -70,7 +70,7 @@ public class DatasetOwnerDao extends BaseDao { } // find dataset owners of same source if exist - List dsOwners = findByIdAndSource(datasetId, owners.get(0).ownershipProvider.name()); + List dsOwners = findByIdAndSource(datasetId, enumNameOrDefault(owners.get(0).ownershipProvider, "")); List> updatedList = diffOwnerList(dsOwners, owners, datasetId, datasetUrn, (int) (auditStamp.time / 1000)); @@ -94,7 +94,7 @@ public class DatasetOwnerDao extends BaseDao { dsOwner.setOwnerId(owner.owner.toString()); dsOwner.setOwnerIdType(owner.ownerType.name()); dsOwner.setOwnerType(owner.ownerCategory.name()); - dsOwner.setOwnerSource(owner.ownershipProvider == null ? "" : owner.ownershipProvider.name()); + dsOwner.setOwnerSource(enumNameOrDefault(owner.ownershipProvider, "")); if (owner.ownerType == OwnerType.USER) { dsOwner.setAppId(300); diff --git a/wherehows-dao/src/main/java/wherehows/util/UrnUtil.java b/wherehows-dao/src/main/java/wherehows/util/UrnUtil.java index e45ff464c1..ab5dd0c217 100644 --- a/wherehows-dao/src/main/java/wherehows/util/UrnUtil.java +++ b/wherehows-dao/src/main/java/wherehows/util/UrnUtil.java @@ -149,4 +149,14 @@ public class UrnUtil { return s.substring(0, Math.min(s.length(), maxLength)); } + + /** + * Get the enum name or return default value if enum is null + * @param e Enum + * @param defaultValue String + * @return String + */ + public static String enumNameOrDefault(@Nullable Enum e, @Nullable String defaultValue) { + return e == null ? defaultValue : e.name(); + } } diff --git a/wherehows-dao/src/test/java/wherehows/util/UrnUtilTest.java b/wherehows-dao/src/test/java/wherehows/util/UrnUtilTest.java index 88079873d1..e229f6ae13 100644 --- a/wherehows-dao/src/test/java/wherehows/util/UrnUtilTest.java +++ b/wherehows-dao/src/test/java/wherehows/util/UrnUtilTest.java @@ -15,6 +15,7 @@ package wherehows.util; import com.linkedin.events.metadata.DataOrigin; import com.linkedin.events.metadata.DatasetIdentifier; +import com.linkedin.events.metadata.OwnershipProvider; import org.testng.annotations.Test; import static org.testng.Assert.*; @@ -172,4 +173,13 @@ public class UrnUtilTest { assertEquals(trimToLength(s, 3), "foo"); assertEquals(trimToLength(s, 6), "foobar"); } + + @Test + public void testEnumNameOrDefault() { + assertEquals(enumNameOrDefault(null, "default"), "default"); + + OwnershipProvider o = OwnershipProvider.DB; + + assertEquals(enumNameOrDefault(o, "default"), "DB"); + } }