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