Skip to content

Commit

Permalink
Merge pull request #104 from open-metadata/issue98
Browse files Browse the repository at this point in the history
Fix #98 Need fullyQualifiedName field for data assets
  • Loading branch information
sureshms committed Aug 11, 2021
2 parents 4e0f2e5 + 2f4275c commit 645cc86
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -218,19 +218,19 @@ public static EntityReference getEntityReference(EntityReference ref, TableDAO t
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));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
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);
Expand Down Expand Up @@ -497,19 +498,22 @@ private static void validateTeam(Team team, String expectedDescription, String e
}

/** Validate returned fields GET .../teams/{id}?fields="..." or GET .../teams/name/{name}?fields="..." */
private void validateGetWithDifferentFields(Team team, boolean byName, Map<String, String> authHeaders)
private void validateGetWithDifferentFields(Team expectedTeam, boolean byName, Map<String, String> 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());

// .../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());
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=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<String, String> authHeaders)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,10 @@ public static void validateEntityReference(EntityReference ref) {
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<EntityReference> list) {
Expand Down

0 comments on commit 645cc86

Please sign in to comment.