mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-08-11 02:26:49 +00:00
parent
54ca20c189
commit
96001ca703
@ -266,7 +266,7 @@ public abstract class DashboardRepository {
|
||||
service.setDescription(serviceInstance.getDescription());
|
||||
service.setName(serviceInstance.getName());
|
||||
} else {
|
||||
throw new IllegalArgumentException(String.format("Invalid service type %s for the chart", service.getType()));
|
||||
throw new IllegalArgumentException(String.format("Invalid service type %s for the dashboard", service.getType()));
|
||||
}
|
||||
return service;
|
||||
}
|
||||
|
@ -129,44 +129,32 @@ public final class EntityUtil {
|
||||
if (ref == null) {
|
||||
return;
|
||||
}
|
||||
switch (ref.getType()) {
|
||||
case Entity.TEAM:
|
||||
TeamResource.addHref(uriInfo, ref);
|
||||
break;
|
||||
case Entity.USER:
|
||||
UserResource.addHref(uriInfo, ref);
|
||||
break;
|
||||
case Entity.TABLE:
|
||||
TableResource.addHref(uriInfo, ref);
|
||||
break;
|
||||
case Entity.DATABASE:
|
||||
DatabaseResource.addHref(uriInfo, ref);
|
||||
break;
|
||||
case Entity.TOPIC:
|
||||
TopicResource.addHref(uriInfo, ref);
|
||||
break;
|
||||
case Entity.CHART:
|
||||
ChartResource.addHref(uriInfo, ref);
|
||||
break;
|
||||
case Entity.DASHBOARD:
|
||||
DashboardResource.addHref(uriInfo, ref);
|
||||
break;
|
||||
case Entity.TASK:
|
||||
TaskResource.addHref(uriInfo, ref);
|
||||
break;
|
||||
case Entity.DATABASE_SERVICE:
|
||||
DatabaseServiceResource.addHref(uriInfo, ref);
|
||||
break;
|
||||
case Entity.MESSAGING_SERVICE:
|
||||
MessagingServiceResource.addHref(uriInfo, ref);
|
||||
break;
|
||||
case Entity.DASHBOARD_SERVICE:
|
||||
DashboardServiceResource.addHref(uriInfo, ref);
|
||||
break;
|
||||
case Entity.PIPELINE_SERVICE:
|
||||
PipelineServiceResource.addHref(uriInfo, ref);
|
||||
break;
|
||||
default:
|
||||
String entity = ref.getType();
|
||||
if (entity.equalsIgnoreCase(Entity.TEAM)) {
|
||||
TeamResource.addHref(uriInfo, ref);
|
||||
} else if (entity.equalsIgnoreCase(Entity.USER)) {
|
||||
UserResource.addHref(uriInfo, ref);
|
||||
} else if (entity.equalsIgnoreCase(Entity.TABLE)) {
|
||||
TableResource.addHref(uriInfo, ref);
|
||||
} else if (entity.equalsIgnoreCase(Entity.DATABASE)) {
|
||||
DatabaseResource.addHref(uriInfo, ref);
|
||||
} else if (entity.equalsIgnoreCase(Entity.TOPIC)) {
|
||||
TopicResource.addHref(uriInfo, ref);
|
||||
} else if (entity.equalsIgnoreCase(Entity.CHART)) {
|
||||
ChartResource.addHref(uriInfo, ref);
|
||||
} else if (entity.equalsIgnoreCase(Entity.DASHBOARD)) {
|
||||
DashboardResource.addHref(uriInfo, ref);
|
||||
} else if (entity.equalsIgnoreCase(Entity.TASK)) {
|
||||
TaskResource.addHref(uriInfo, ref);
|
||||
} else if (entity.equalsIgnoreCase(Entity.DATABASE_SERVICE)) {
|
||||
DatabaseServiceResource.addHref(uriInfo, ref);
|
||||
} else if (entity.equalsIgnoreCase(Entity.MESSAGING_SERVICE)) {
|
||||
MessagingServiceResource.addHref(uriInfo, ref);
|
||||
} else if (entity.equalsIgnoreCase(Entity.DASHBOARD_SERVICE)) {
|
||||
DashboardServiceResource.addHref(uriInfo, ref);
|
||||
} else if (entity.equalsIgnoreCase(Entity.PIPELINE_SERVICE)) {
|
||||
PipelineServiceResource.addHref(uriInfo, ref);
|
||||
} else {
|
||||
throw EntityNotFoundException.byMessage(CatalogExceptionMessage.entityTypeNotFound(ref.getType()));
|
||||
}
|
||||
}
|
||||
@ -421,31 +409,29 @@ public final class EntityUtil {
|
||||
throws IOException {
|
||||
String entityType = entityLink.getEntityType();
|
||||
String fqn = entityLink.getEntityId();
|
||||
switch (entityType) {
|
||||
case Entity.USER:
|
||||
return getEntityReference(EntityUtil.validate(fqn, userDAO.findByName(fqn), User.class));
|
||||
case Entity.TEAM:
|
||||
return getEntityReference(EntityUtil.validate(fqn, teamDAO.findByName(fqn), Team.class));
|
||||
case Entity.TABLE:
|
||||
return getEntityReference(EntityUtil.validate(fqn, tableDAO.findByFQN(fqn), Table.class));
|
||||
case Entity.DATABASE:
|
||||
return getEntityReference(EntityUtil.validate(fqn, databaseDAO.findByFQN(fqn), Database.class));
|
||||
case Entity.METRICS:
|
||||
return getEntityReference(EntityUtil.validate(fqn, metricsDAO.findByFQN(fqn), Metrics.class));
|
||||
case Entity.DASHBOARD:
|
||||
return getEntityReference(EntityUtil.validate(fqn, dashboardDAO.findByFQN(fqn), Dashboard.class));
|
||||
case Entity.REPORT:
|
||||
return getEntityReference(EntityUtil.validate(fqn, reportDAO.findByFQN(fqn), Report.class));
|
||||
case Entity.TOPIC:
|
||||
return getEntityReference(EntityUtil.validate(fqn, topicDAO.findByFQN(fqn), Topic.class));
|
||||
case Entity.TASK:
|
||||
return getEntityReference(EntityUtil.validate(fqn, topicDAO.findByFQN(fqn), Task.class));
|
||||
default:
|
||||
throw EntityNotFoundException.byMessage(CatalogExceptionMessage.entityNotFound(entityType, fqn));
|
||||
if(entityType.equalsIgnoreCase(Entity.USER)) {
|
||||
return getEntityReference(EntityUtil.validate(fqn, userDAO.findByName(fqn), User.class));
|
||||
} else if (entityType.equalsIgnoreCase(Entity.TEAM)) {
|
||||
return getEntityReference(EntityUtil.validate(fqn, teamDAO.findByName(fqn), Team.class));
|
||||
} else if (entityType.equalsIgnoreCase(Entity.TABLE)) {
|
||||
return getEntityReference(EntityUtil.validate(fqn, tableDAO.findByFQN(fqn), Table.class));
|
||||
} else if (entityType.equalsIgnoreCase(Entity.DATABASE)) {
|
||||
return getEntityReference(EntityUtil.validate(fqn, databaseDAO.findByFQN(fqn), Database.class));
|
||||
} else if (entityType.equalsIgnoreCase(Entity.METRICS)) {
|
||||
return getEntityReference(EntityUtil.validate(fqn, metricsDAO.findByFQN(fqn), Metrics.class));
|
||||
} else if (entityType.equalsIgnoreCase(Entity.DASHBOARD)) {
|
||||
return getEntityReference(EntityUtil.validate(fqn, dashboardDAO.findByFQN(fqn), Dashboard.class));
|
||||
} else if (entityType.equalsIgnoreCase(Entity.REPORT)) {
|
||||
return getEntityReference(EntityUtil.validate(fqn, reportDAO.findByFQN(fqn), Report.class));
|
||||
} else if (entityType.equalsIgnoreCase(Entity.TOPIC)) {
|
||||
return getEntityReference(EntityUtil.validate(fqn, topicDAO.findByFQN(fqn), Topic.class));
|
||||
} else if (entityType.equalsIgnoreCase(Entity.TASK)) {
|
||||
return getEntityReference(EntityUtil.validate(fqn, topicDAO.findByFQN(fqn), Task.class));
|
||||
} else {
|
||||
throw EntityNotFoundException.byMessage(CatalogExceptionMessage.entityNotFound(entityType, fqn));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static UsageDetails getLatestUsage(UsageDAO usageDAO, UUID entityId) {
|
||||
LOG.debug("Getting latest usage for {}", entityId);
|
||||
UsageDetails details = usageDAO.getLatestUsage(entityId.toString());
|
||||
@ -523,6 +509,7 @@ public final class EntityUtil {
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Apply tags {@code tagLabels} to the entity or field identified by {@code targetFQN}
|
||||
*/
|
||||
|
@ -36,7 +36,6 @@ import org.openmetadata.catalog.exception.CatalogExceptionMessage;
|
||||
import org.openmetadata.catalog.resources.charts.ChartResourceTest;
|
||||
import org.openmetadata.catalog.resources.dashboards.DashboardResource.DashboardList;
|
||||
import org.openmetadata.catalog.resources.services.DashboardServiceResourceTest;
|
||||
import org.openmetadata.catalog.resources.tags.TagResourceTest;
|
||||
import org.openmetadata.catalog.resources.teams.TeamResourceTest;
|
||||
import org.openmetadata.catalog.resources.teams.UserResourceTest;
|
||||
import org.openmetadata.catalog.type.EntityReference;
|
||||
@ -55,7 +54,6 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static java.util.Collections.singletonList;
|
||||
import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
|
||||
@ -84,6 +82,7 @@ public class DashboardResourceTest extends CatalogApplicationTest {
|
||||
public static EntityReference TEAM_OWNER1;
|
||||
public static EntityReference SUPERSET_REFERENCE;
|
||||
public static EntityReference LOOKER_REFERENCE;
|
||||
public static EntityReference SUPERSET_INVALID_SERVICE_REFERENCE;
|
||||
public static List<EntityReference> CHART_REFERENCES;
|
||||
public static final TagLabel TIER_1 = new TagLabel().withTagFQN("Tier.Tier1");
|
||||
public static final TagLabel USER_ADDRESS_TAG_LABEL = new TagLabel().withTagFQN("User.Address");
|
||||
@ -102,6 +101,9 @@ public class DashboardResourceTest extends CatalogApplicationTest {
|
||||
|
||||
DashboardService service = DashboardServiceResourceTest.createService(createService, adminAuthHeaders());
|
||||
SUPERSET_REFERENCE = EntityUtil.getEntityReference(service);
|
||||
SUPERSET_INVALID_SERVICE_REFERENCE = new EntityReference().withName("invalid_superset_service")
|
||||
.withId(SUPERSET_REFERENCE.getId())
|
||||
.withType("DashboardService1");
|
||||
|
||||
createService.withName("looker").withServiceType(DashboardServiceType.Looker);
|
||||
service = DashboardServiceResourceTest.createService(createService, adminAuthHeaders());
|
||||
@ -183,6 +185,16 @@ public class DashboardResourceTest extends CatalogApplicationTest {
|
||||
TestUtils.assertResponseContains(exception, BAD_REQUEST, "service must not be null");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void post_DashboardWithInvalidService_4xx(TestInfo test) {
|
||||
CreateDashboard create = create(test).withService(SUPERSET_INVALID_SERVICE_REFERENCE);
|
||||
HttpResponseException exception = assertThrows(HttpResponseException.class, () ->
|
||||
createDashboard(create, adminAuthHeaders()));
|
||||
TestUtils.assertResponseContains(exception, BAD_REQUEST, String.format("Invalid service type %s",
|
||||
SUPERSET_INVALID_SERVICE_REFERENCE.getType().toString()));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void post_DashboardWithInvalidOwnerType_4xx(TestInfo test) {
|
||||
EntityReference owner = new EntityReference().withId(TEAM1.getId()); /* No owner type is set */
|
||||
|
Loading…
x
Reference in New Issue
Block a user