From 2f4275c88bd27ca339ef5e027c9e9a9569747815 Mon Sep 17 00:00:00 2001 From: sureshms Date: Wed, 11 Aug 2021 13:36:29 -0700 Subject: [PATCH] Fix #98 Need fullyQualifiedName field for data assets --- .../openmetadata/catalog/util/EntityUtil.java | 10 ++++----- .../json/schema/type/entityReference.json | 2 +- .../resources/teams/TeamResourceTest.java | 22 +++++++++++-------- .../openmetadata/catalog/util/TestUtils.java | 4 ++++ 4 files changed, 23 insertions(+), 15 deletions(-) diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/util/EntityUtil.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/util/EntityUtil.java index 0f94a11c9f0..8cb6587bce6 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/util/EntityUtil.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/util/EntityUtil.java @@ -218,19 +218,19 @@ public final class EntityUtil { String id = ref.getId().toString(); if (entity.equalsIgnoreCase(Entity.TABLE)) { Table instance = EntityUtil.validate(id, tableDAO.findById(id), Table.class); - return ref.withDescription(instance.getDescription()).withName(instance.getName()); + return ref.withDescription(instance.getDescription()).withName(instance.getFullyQualifiedName()); } else if (entity.equalsIgnoreCase(Entity.DATABASE)) { Database instance = EntityUtil.validate(id, databaseDAO.findById(id), Database.class); - return ref.withDescription(instance.getDescription()).withName(instance.getName()); + return ref.withDescription(instance.getDescription()).withName(instance.getFullyQualifiedName()); } else if (entity.equalsIgnoreCase(Entity.METRICS)) { Metrics instance = EntityUtil.validate(id, metricsDAO.findById(id), Metrics.class); - return ref.withDescription(instance.getDescription()).withName(instance.getName()); + return ref.withDescription(instance.getDescription()).withName(instance.getFullyQualifiedName()); } else if (entity.equalsIgnoreCase(Entity.DATABASE_SERVICE)) { Dashboard instance = EntityUtil.validate(id, dashboardDAO.findById(id), Dashboard.class); - return ref.withDescription(instance.getDescription()).withName(instance.getName()); + return ref.withDescription(instance.getDescription()).withName(instance.getFullyQualifiedName()); } else if (entity.equalsIgnoreCase(Entity.REPORT)) { Report instance = EntityUtil.validate(id, reportDAO.findById(id), Report.class); - return ref.withDescription(instance.getDescription()).withName(instance.getName()); + return ref.withDescription(instance.getDescription()).withName(instance.getFullyQualifiedName()); } throw EntityNotFoundException.byMessage(CatalogExceptionMessage.entityTypeNotFound(entity)); } diff --git a/catalog-rest-service/src/main/resources/json/schema/type/entityReference.json b/catalog-rest-service/src/main/resources/json/schema/type/entityReference.json index 9be1444d310..fa69af60fb5 100644 --- a/catalog-rest-service/src/main/resources/json/schema/type/entityReference.json +++ b/catalog-rest-service/src/main/resources/json/schema/type/entityReference.json @@ -24,7 +24,7 @@ "type": "string" }, "name": { - "description": "Name of the entity instance.", + "description": "Name of the entity instance. For entities such as tables, database where name is not unique, fullyQualifiedName is returned in this field.", "type": "string" }, "description": { diff --git a/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/teams/TeamResourceTest.java b/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/teams/TeamResourceTest.java index f41e6bff6a8..c84a85b057f 100644 --- a/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/teams/TeamResourceTest.java +++ b/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/teams/TeamResourceTest.java @@ -63,6 +63,7 @@ import static org.openmetadata.catalog.util.TestUtils.adminAuthHeaders; import static org.openmetadata.catalog.util.TestUtils.assertEntityPagination; import static org.openmetadata.catalog.util.TestUtils.assertResponse; import static org.openmetadata.catalog.util.TestUtils.authHeaders; +import static org.openmetadata.catalog.util.TestUtils.validateEntityReference; public class TeamResourceTest extends CatalogApplicationTest { private static final Logger LOG = LoggerFactory.getLogger(TeamResourceTest.class); @@ -497,19 +498,22 @@ public class TeamResourceTest extends CatalogApplicationTest { } /** Validate returned fields GET .../teams/{id}?fields="..." or GET .../teams/name/{name}?fields="..." */ - private void validateGetWithDifferentFields(Team team, boolean byName, Map authHeaders) + private void validateGetWithDifferentFields(Team expectedTeam, boolean byName, Map authHeaders) throws HttpResponseException { // .../teams?fields=profile String fields = "profile"; - team = byName ? getTeamByName(team.getName(), fields, authHeaders) : getTeam(team.getId(), fields, authHeaders); - assertNotNull(team.getProfile()); - assertNull(team.getUsers()); + Team getTeam = byName ? getTeamByName(expectedTeam.getName(), fields, authHeaders) : getTeam(expectedTeam.getId(), fields, + authHeaders); + validateTeam(getTeam, expectedTeam.getDescription(), expectedTeam.getDisplayName(), + expectedTeam.getProfile(), null); + assertNull(getTeam.getOwns()); - // .../teams?fields=profile,users - fields = "profile,users"; - team = byName ? getTeamByName(team.getName(), fields, authHeaders) : getTeam(team.getId(), fields, authHeaders); - assertNotNull(team.getProfile()); - assertNotNull(team.getUsers()); + // .../teams?fields=users,owns + fields = "users,owns"; + getTeam = byName ? getTeamByName(expectedTeam.getName(), fields, authHeaders) : getTeam(expectedTeam.getId(), fields, authHeaders); + assertNotNull(expectedTeam.getProfile()); + validateEntityReference(expectedTeam.getUsers()); + validateEntityReference(expectedTeam.getOwns()); } private Team patchTeam(UUID teamId, String originalJson, Team updated, Map authHeaders) diff --git a/catalog-rest-service/src/test/java/org/openmetadata/catalog/util/TestUtils.java b/catalog-rest-service/src/test/java/org/openmetadata/catalog/util/TestUtils.java index d8b2fa065bf..f1f6b4c0a25 100644 --- a/catalog-rest-service/src/test/java/org/openmetadata/catalog/util/TestUtils.java +++ b/catalog-rest-service/src/test/java/org/openmetadata/catalog/util/TestUtils.java @@ -168,6 +168,10 @@ public final class TestUtils { assertNotNull(ref.getHref()); assertNotNull(ref.getName()); assertNotNull(ref.getType()); + // Ensure data entities use fully qualified name + if (List.of("table", "database", "metrics", "dashboard", "pipeline", "report").contains(ref.getName())) { + ref.getName().contains("."); // FullyQualifiedName has "." as separator + } } public static void validateEntityReference(List list) {