Fix issue with ownership null value when writing to DB

This commit is contained in:
Yi Wang 2017-10-17 15:24:01 -07:00
parent ddc9171eba
commit ecbcdd920f
3 changed files with 22 additions and 2 deletions

View File

@ -70,7 +70,7 @@ public class DatasetOwnerDao extends BaseDao {
}
// find dataset owners of same source if exist
List<DsOwner> dsOwners = findByIdAndSource(datasetId, owners.get(0).ownershipProvider.name());
List<DsOwner> dsOwners = findByIdAndSource(datasetId, enumNameOrDefault(owners.get(0).ownershipProvider, ""));
List<List<DsOwner>> 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);

View File

@ -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();
}
}

View File

@ -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");
}
}