Initialize REST collections based on @Collection annotation

This commit is contained in:
sureshms 2021-10-22 08:42:06 -07:00
parent ad8210e286
commit 642ca13411
49 changed files with 235 additions and 349 deletions

View File

@ -89,7 +89,7 @@ public class CatalogApplication extends Application<CatalogApplicationConfig> {
SqlLogger sqlLogger = new SqlLogger() { SqlLogger sqlLogger = new SqlLogger() {
@Override @Override
public void logAfterExecution(StatementContext context) { public void logAfterExecution(StatementContext context) {
LOG.info("sql {}, parameters {}, timeTaken {} ms", context.getRenderedSql(), LOG.debug("sql {}, parameters {}, timeTaken {} ms", context.getRenderedSql(),
context.getBinding().toString(), context.getElapsedTime(ChronoUnit.MILLIS)); context.getBinding().toString(), context.getElapsedTime(ChronoUnit.MILLIS));
} }
}; };
@ -175,7 +175,7 @@ public class CatalogApplication extends Application<CatalogApplicationConfig> {
} }
private void registerResources(CatalogApplicationConfig config, Environment environment, Jdbi jdbi) throws IOException { private void registerResources(CatalogApplicationConfig config, Environment environment, Jdbi jdbi) throws IOException {
CollectionRegistry.getInstance().registerResources3(jdbi, environment, authorizer); CollectionRegistry.getInstance().registerResources(jdbi, environment, authorizer);
environment.lifecycle().manage(new Managed() { environment.lifecycle().manage(new Managed() {
@Override @Override

View File

@ -18,6 +18,7 @@ package org.openmetadata.catalog;
import com.codahale.metrics.health.HealthCheck; import com.codahale.metrics.health.HealthCheck;
import org.jdbi.v3.core.Jdbi; import org.jdbi.v3.core.Jdbi;
import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.jdbi3.UserRepository3; import org.openmetadata.catalog.jdbi3.UserRepository3;
import org.openmetadata.catalog.jdbi3.UserRepositoryHelper; import org.openmetadata.catalog.jdbi3.UserRepositoryHelper;
import org.openmetadata.catalog.util.EntityUtil; import org.openmetadata.catalog.util.EntityUtil;
@ -32,7 +33,7 @@ public class CatalogHealthCheck extends HealthCheck {
public CatalogHealthCheck(CatalogApplicationConfig config, Jdbi jdbi) { public CatalogHealthCheck(CatalogApplicationConfig config, Jdbi jdbi) {
super(); super();
UserRepository3 repo = jdbi.onDemand(UserRepository3.class); CollectionDAO repo = jdbi.onDemand(CollectionDAO.class);
this.userRepositoryHelper = new UserRepositoryHelper(repo); this.userRepositoryHelper = new UserRepositoryHelper(repo);
} }

View File

@ -26,9 +26,9 @@ import java.util.List;
public class BotsRepositoryHelper { public class BotsRepositoryHelper {
public BotsRepositoryHelper(BotsRepository3 repo3) { this.repo3 = repo3; } public BotsRepositoryHelper(CollectionDAO repo3) { this.repo3 = repo3; }
private final BotsRepository3 repo3; private final CollectionDAO repo3;
public Bots insert(Bots bots) throws JsonProcessingException { public Bots insert(Bots bots) throws JsonProcessingException {
bots.setHref(null); bots.setHref(null);

View File

@ -50,12 +50,12 @@ public class ChartRepositoryHelper extends EntityRepository<Chart>{
private static final Fields CHART_UPDATE_FIELDS = new Fields(ChartResource.FIELD_LIST, "owner"); private static final Fields CHART_UPDATE_FIELDS = new Fields(ChartResource.FIELD_LIST, "owner");
private static final Fields CHART_PATCH_FIELDS = new Fields(ChartResource.FIELD_LIST, "owner,service,tags"); private static final Fields CHART_PATCH_FIELDS = new Fields(ChartResource.FIELD_LIST, "owner,service,tags");
public ChartRepositoryHelper(ChartRepository3 repo3) { public ChartRepositoryHelper(CollectionDAO repo3) {
super(Chart.class, repo3.chartDAO()); super(Chart.class, repo3.chartDAO());
this.repo3 = repo3; this.repo3 = repo3;
} }
private final ChartRepository3 repo3; private final CollectionDAO repo3;
public static String getFQN(Chart chart) { public static String getFQN(Chart chart) {
return (chart.getService().getName() + "." + chart.getName()); return (chart.getService().getName() + "." + chart.getName());

View File

@ -0,0 +1,80 @@
package org.openmetadata.catalog.jdbi3;
import org.jdbi.v3.sqlobject.CreateSqlObject;
import org.openmetadata.catalog.entity.data.Chart;
import org.openmetadata.catalog.entity.data.Metrics;
import org.openmetadata.catalog.entity.data.Pipeline;
import org.openmetadata.catalog.entity.data.Task;
import org.openmetadata.catalog.entity.services.MessagingService;
import org.openmetadata.catalog.jdbi3.AuditLogRepository.AuditLogDAO;
public interface CollectionDAO {
@CreateSqlObject
DatabaseDAO3 databaseDAO();
@CreateSqlObject
EntityRelationshipDAO3 relationshipDAO();
@CreateSqlObject
FieldRelationshipDAO3 fieldRelationshipDAO();
@CreateSqlObject
EntityExtensionDAO3 entityExtensionDAO();
@CreateSqlObject
UserDAO3 userDAO();
@CreateSqlObject
TeamDAO3 teamDAO();
@CreateSqlObject
TagDAO3 tagDAO();
@CreateSqlObject
TableDAO3 tableDAO();
@CreateSqlObject
UsageDAO3 usageDAO();
@CreateSqlObject
MetricsDAO3 metricsDAO();
@CreateSqlObject
TaskDAO3 taskDAO();
@CreateSqlObject
ChartDAO3 chartDAO();
@CreateSqlObject
PipelineDAO3 pipelineDAO();
@CreateSqlObject
DashboardDAO3 dashboardDAO();
@CreateSqlObject
ReportDAO3 reportDAO();
@CreateSqlObject
TopicDAO3 topicDAO();
@CreateSqlObject
ModelDAO3 modelDAO();
@CreateSqlObject
BotsDAO3 botsDAO();
@CreateSqlObject
DatabaseServiceDAO3 dbServiceDAO();
@CreateSqlObject
PipelineServiceDAO3 pipelineServiceDAO();
@CreateSqlObject
DashboardServiceDAO3 dashboardServiceDAO();
@CreateSqlObject
MessagingServiceDAO3 messagingServiceDAO();
@CreateSqlObject
FeedDAO3 feedDAO();
}

View File

@ -55,12 +55,12 @@ public class DashboardRepositoryHelper extends EntityRepository<Dashboard> {
private static final Fields DASHBOARD_PATCH_FIELDS = new Fields(DashboardResource.FIELD_LIST, private static final Fields DASHBOARD_PATCH_FIELDS = new Fields(DashboardResource.FIELD_LIST,
"owner,service,tags,charts"); "owner,service,tags,charts");
public DashboardRepositoryHelper(DashboardRepository3 repo3) { public DashboardRepositoryHelper(CollectionDAO repo3) {
super(Dashboard.class, repo3.dashboardDAO()); super(Dashboard.class, repo3.dashboardDAO());
this.repo3 = repo3; this.repo3 = repo3;
} }
private final DashboardRepository3 repo3; private final CollectionDAO repo3;
public static String getFQN(Dashboard dashboard) { public static String getFQN(Dashboard dashboard) {
return (dashboard.getService().getName() + "." + dashboard.getName()); return (dashboard.getService().getName() + "." + dashboard.getName());

View File

@ -39,9 +39,9 @@ import static org.openmetadata.catalog.exception.CatalogExceptionMessage.entityN
public class DashboardServiceRepositoryHelper extends EntityRepository<DashboardService> { public class DashboardServiceRepositoryHelper extends EntityRepository<DashboardService> {
private final DashboardServiceRepository3 repo3; private final CollectionDAO repo3;
public DashboardServiceRepositoryHelper(DashboardServiceRepository3 repo3) { public DashboardServiceRepositoryHelper(CollectionDAO repo3) {
super(DashboardService.class, repo3.dashboardServiceDAO()); super(DashboardService.class, repo3.dashboardServiceDAO());
this.repo3 = repo3; this.repo3 = repo3;
} }

View File

@ -57,12 +57,12 @@ public class DatabaseRepositoryHelper extends EntityRepository<Database> {
private static final Fields DATABASE_PATCH_FIELDS = new Fields(DatabaseResource.FIELD_LIST, private static final Fields DATABASE_PATCH_FIELDS = new Fields(DatabaseResource.FIELD_LIST,
"owner,service, usageSummary"); "owner,service, usageSummary");
public DatabaseRepositoryHelper(DatabaseRepository3 repo3) { public DatabaseRepositoryHelper(CollectionDAO repo3) {
super(Database.class, repo3.databaseDAO()); super(Database.class, repo3.databaseDAO());
this.repo3 = repo3; this.repo3 = repo3;
} }
private final DatabaseRepository3 repo3; private final CollectionDAO repo3;
public static String getFQN(Database database) { public static String getFQN(Database database) {
return (database.getService().getName() + "." + database.getName()); return (database.getService().getName() + "." + database.getName());

View File

@ -39,9 +39,9 @@ import static org.openmetadata.catalog.exception.CatalogExceptionMessage.entityN
public class DatabaseServiceRepositoryHelper extends EntityRepository<DatabaseService> { public class DatabaseServiceRepositoryHelper extends EntityRepository<DatabaseService> {
private final DatabaseServiceRepository3 repo3; private final CollectionDAO repo3;
public DatabaseServiceRepositoryHelper(DatabaseServiceRepository3 repo3) { public DatabaseServiceRepositoryHelper(CollectionDAO repo3) {
super(DatabaseService.class, repo3.dbServiceDAO()); super(DatabaseService.class, repo3.dbServiceDAO());
this.repo3 = repo3; this.repo3 = repo3;
} }

View File

@ -36,9 +36,9 @@ import java.util.Set;
import java.util.UUID; import java.util.UUID;
public class FeedRepositoryHelper { public class FeedRepositoryHelper {
public FeedRepositoryHelper(FeedRepository3 repo3) { this.repo3 = repo3; } public FeedRepositoryHelper(CollectionDAO repo3) { this.repo3 = repo3; }
private final FeedRepository3 repo3; private final CollectionDAO repo3;
@Transaction @Transaction
public Thread create(Thread thread) throws IOException { public Thread create(Thread thread) throws IOException {

View File

@ -36,9 +36,9 @@ import static org.openmetadata.catalog.util.EntityUtil.getEntityReference;
public class LineageRepositoryHelper { public class LineageRepositoryHelper {
private static final Logger LOG = LoggerFactory.getLogger(LineageRepositoryHelper.class); private static final Logger LOG = LoggerFactory.getLogger(LineageRepositoryHelper.class);
public LineageRepositoryHelper(LineageRepository3 repo3) { this.repo3 = repo3; } public LineageRepositoryHelper(CollectionDAO repo3) { this.repo3 = repo3; }
private final LineageRepository3 repo3; private final CollectionDAO repo3;
@Transaction @Transaction
public EntityLineage get(String entityType, String id, int upstreamDepth, int downstreamDepth) throws IOException { public EntityLineage get(String entityType, String id, int upstreamDepth, int downstreamDepth) throws IOException {

View File

@ -38,9 +38,9 @@ import java.util.List;
import static org.openmetadata.catalog.exception.CatalogExceptionMessage.entityNotFound; import static org.openmetadata.catalog.exception.CatalogExceptionMessage.entityNotFound;
public class MessagingServiceRepositoryHelper extends EntityRepository<MessagingService> { public class MessagingServiceRepositoryHelper extends EntityRepository<MessagingService> {
private final MessagingServiceRepository3 repo3; private final CollectionDAO repo3;
public MessagingServiceRepositoryHelper(MessagingServiceRepository3 repo3) { public MessagingServiceRepositoryHelper(CollectionDAO repo3) {
super(MessagingService.class, repo3.messagingServiceDAO()); super(MessagingService.class, repo3.messagingServiceDAO());
this.repo3 = repo3; this.repo3 = repo3;
} }

View File

@ -43,12 +43,12 @@ import java.util.UUID;
public class MetricsRepositoryHelper extends EntityRepository<Metrics> { public class MetricsRepositoryHelper extends EntityRepository<Metrics> {
private static final Fields METRICS_UPDATE_FIELDS = new Fields(MetricsResource.FIELD_LIST, "owner,service"); private static final Fields METRICS_UPDATE_FIELDS = new Fields(MetricsResource.FIELD_LIST, "owner,service");
public MetricsRepositoryHelper(MetricsRepository3 repo3) { public MetricsRepositoryHelper(CollectionDAO repo3) {
super(Metrics.class, repo3.metricsDAO()); super(Metrics.class, repo3.metricsDAO());
this.repo3 = repo3; this.repo3 = repo3;
} }
private final MetricsRepository3 repo3; private final CollectionDAO repo3;
public static String getFQN(Metrics metrics) { public static String getFQN(Metrics metrics) {
return (metrics.getService().getName() + "." + metrics.getName()); return (metrics.getService().getName() + "." + metrics.getName());

View File

@ -55,12 +55,12 @@ public class ModelRepositoryHelper extends EntityRepository<Model> {
private static final Fields MODEL_PATCH_FIELDS = new Fields(ModelResource.FIELD_LIST, private static final Fields MODEL_PATCH_FIELDS = new Fields(ModelResource.FIELD_LIST,
"owner,dashboard,tags"); "owner,dashboard,tags");
public ModelRepositoryHelper(ModelRepository3 repo3) { public ModelRepositoryHelper(CollectionDAO repo3) {
super(Model.class, repo3.modelDAO()); super(Model.class, repo3.modelDAO());
this.repo3 = repo3; this.repo3 = repo3;
} }
private final ModelRepository3 repo3; private final CollectionDAO repo3;
public static String getFQN(Model model) { public static String getFQN(Model model) {
return (model.getName()); return (model.getName());

View File

@ -54,12 +54,12 @@ public class PipelineRepositoryHelper extends EntityRepository<Pipeline> {
private static final Fields PIPELINE_PATCH_FIELDS = new Fields(PipelineResource.FIELD_LIST, private static final Fields PIPELINE_PATCH_FIELDS = new Fields(PipelineResource.FIELD_LIST,
"owner,service,tags,tasks"); "owner,service,tags,tasks");
public PipelineRepositoryHelper(PipelineRepository3 repo3) { public PipelineRepositoryHelper(CollectionDAO repo3) {
super(Pipeline.class, repo3.pipelineDAO()); super(Pipeline.class, repo3.pipelineDAO());
this.repo3 = repo3; this.repo3 = repo3;
} }
private final PipelineRepository3 repo3; private final CollectionDAO repo3;
public static String getFQN(Pipeline pipeline) { public static String getFQN(Pipeline pipeline) {
return (pipeline.getService().getName() + "." + pipeline.getName()); return (pipeline.getService().getName() + "." + pipeline.getName());

View File

@ -39,12 +39,12 @@ import static org.openmetadata.catalog.exception.CatalogExceptionMessage.entityN
public class PipelineServiceRepositoryHelper extends EntityRepository<PipelineService> { public class PipelineServiceRepositoryHelper extends EntityRepository<PipelineService> {
public PipelineServiceRepositoryHelper(PipelineServiceRepository3 repo3) { public PipelineServiceRepositoryHelper(CollectionDAO repo3) {
super(PipelineService.class, repo3.pipelineServiceDAO()); super(PipelineService.class, repo3.pipelineServiceDAO());
this.repo3 = repo3; this.repo3 = repo3;
} }
private final PipelineServiceRepository3 repo3; private final CollectionDAO repo3;
@Transaction @Transaction
public PipelineService create(PipelineService pipelineService) throws JsonProcessingException { public PipelineService create(PipelineService pipelineService) throws JsonProcessingException {

View File

@ -39,12 +39,12 @@ import java.util.List;
public class ReportRepositoryHelper extends EntityRepository<Report>{ public class ReportRepositoryHelper extends EntityRepository<Report>{
private static final Fields REPORT_UPDATE_FIELDS = new Fields(ReportResource.FIELD_LIST, "owner,service"); private static final Fields REPORT_UPDATE_FIELDS = new Fields(ReportResource.FIELD_LIST, "owner,service");
public ReportRepositoryHelper(ReportRepository3 repo3) { public ReportRepositoryHelper(CollectionDAO repo3) {
super(Report.class, repo3.reportDAO()); super(Report.class, repo3.reportDAO());
this.repo3 = repo3; this.repo3 = repo3;
} }
private final ReportRepository3 repo3; private final CollectionDAO repo3;
@Transaction @Transaction
public Report create(Report report, EntityReference service, EntityReference owner) throws IOException { public Report create(Report report, EntityReference service, EntityReference owner) throws IOException {

View File

@ -80,12 +80,12 @@ public class TableRepositoryHelper extends EntityRepository<Table> {
static final Fields TABLE_UPDATE_FIELDS = new Fields(TableResource.FIELD_LIST, static final Fields TABLE_UPDATE_FIELDS = new Fields(TableResource.FIELD_LIST,
"owner,columns,database,tags,tableConstraints"); "owner,columns,database,tags,tableConstraints");
public TableRepositoryHelper(TableRepository3 repo3) { public TableRepositoryHelper(CollectionDAO repo3) {
super(Table.class, repo3.tableDAO()); super(Table.class, repo3.tableDAO());
this.repo3 = repo3; this.repo3 = repo3;
} }
private final TableRepository3 repo3; private final CollectionDAO repo3;
@Override @Override
public String getFullyQualifiedName(Table entity) { public String getFullyQualifiedName(Table entity) {

View File

@ -40,9 +40,9 @@ import java.util.Optional;
public class TagRepositoryHelper { public class TagRepositoryHelper {
public static final Logger LOG = LoggerFactory.getLogger(TagRepositoryHelper.class); public static final Logger LOG = LoggerFactory.getLogger(TagRepositoryHelper.class);
public TagRepositoryHelper(TagRepository3 repo3) { this.repo3 = repo3; } public TagRepositoryHelper(CollectionDAO repo3) { this.repo3 = repo3; }
private final TagRepository3 repo3; private final CollectionDAO repo3;
/** /**
* Initialize a category one time when the service comes up for the first time * Initialize a category one time when the service comes up for the first time

View File

@ -57,12 +57,12 @@ public class TaskRepositoryHelper extends EntityRepository<Task>{
return (task.getService().getName() + "." + task.getName()); return (task.getService().getName() + "." + task.getName());
} }
public TaskRepositoryHelper(TaskRepository3 repo3) { public TaskRepositoryHelper(CollectionDAO repo3) {
super(Task.class,repo3.taskDAO()); super(Task.class,repo3.taskDAO());
this.repo3 = repo3; this.repo3 = repo3;
} }
private final TaskRepository3 repo3; private final CollectionDAO repo3;
@Transaction @Transaction
public Task create(Task task) throws IOException { public Task create(Task task) throws IOException {

View File

@ -50,12 +50,12 @@ import static org.openmetadata.catalog.jdbi3.Relationship.OWNS;
public class TeamRepositoryHelper extends EntityRepository<Team> { public class TeamRepositoryHelper extends EntityRepository<Team> {
static final Fields TEAM_PATCH_FIELDS = new Fields(TeamResource.FIELD_LIST, "profile,users"); static final Fields TEAM_PATCH_FIELDS = new Fields(TeamResource.FIELD_LIST, "profile,users");
public TeamRepositoryHelper(TeamRepository3 repo3) { public TeamRepositoryHelper(CollectionDAO repo3) {
super(Team.class,repo3.teamDAO()); super(Team.class,repo3.teamDAO());
this.repo3 = repo3; this.repo3 = repo3;
} }
private final TeamRepository3 repo3; private final CollectionDAO repo3;
public static List<EntityReference> toEntityReference(List<User> users) { public static List<EntityReference> toEntityReference(List<User> users) {

View File

@ -58,12 +58,12 @@ public class TopicRepositoryHelper extends EntityRepository<Topic> {
return (topic.getService().getName() + "." + topic.getName()); return (topic.getService().getName() + "." + topic.getName());
} }
public TopicRepositoryHelper(TopicRepository3 repo3) { public TopicRepositoryHelper(CollectionDAO repo3) {
super(Topic.class, repo3.topicDAO()); super(Topic.class, repo3.topicDAO());
this.repo3 = repo3; this.repo3 = repo3;
} }
private final TopicRepository3 repo3; private final CollectionDAO repo3;
@Transaction @Transaction
public Topic create(Topic topic) throws IOException { public Topic create(Topic topic) throws IOException {
@ -214,7 +214,7 @@ public class TopicRepositoryHelper extends EntityRepository<Topic> {
private EntityReference getService(EntityReference service) throws IOException { private EntityReference getService(EntityReference service) throws IOException {
String id = service.getId().toString(); String id = service.getId().toString();
if (service.getType().equalsIgnoreCase(Entity.MESSAGING_SERVICE)) { if (service.getType().equalsIgnoreCase(Entity.MESSAGING_SERVICE)) {
MessagingService serviceInstance = repo3.messageServiceDAO().findEntityById(id); MessagingService serviceInstance = repo3.messagingServiceDAO().findEntityById(id);
service.setDescription(serviceInstance.getDescription()); service.setDescription(serviceInstance.getDescription());
service.setName(serviceInstance.getName()); service.setName(serviceInstance.getName());
} else { } else {

View File

@ -40,9 +40,9 @@ import static org.openmetadata.catalog.util.EntityUtil.getEntityReference;
public class UsageRepositoryHelper { public class UsageRepositoryHelper {
private static final Logger LOG = LoggerFactory.getLogger(UsageRepositoryHelper.class); private static final Logger LOG = LoggerFactory.getLogger(UsageRepositoryHelper.class);
public UsageRepositoryHelper(UsageRepository3 repo3) { this.repo3 = repo3; } public UsageRepositoryHelper(CollectionDAO repo3) { this.repo3 = repo3; }
private final UsageRepository3 repo3; private final CollectionDAO repo3;
@Transaction @Transaction
public EntityUsage get(String entityType, String id, String date, int days) throws IOException { public EntityUsage get(String entityType, String id, String date, int days) throws IOException {

View File

@ -42,7 +42,6 @@ import javax.ws.rs.core.Response.Status;
import java.io.IOException; import java.io.IOException;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.security.GeneralSecurityException; import java.security.GeneralSecurityException;
import java.text.ParseException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
@ -59,10 +58,10 @@ public class UserRepositoryHelper extends EntityRepository<User> {
static final Fields USER_PATCH_FIELDS = new Fields(UserResource.FIELD_LIST, "profile,teams"); static final Fields USER_PATCH_FIELDS = new Fields(UserResource.FIELD_LIST, "profile,teams");
static final Fields USER_UPDATE_FIELDS = new Fields(UserResource.FIELD_LIST, "profile,teams"); static final Fields USER_UPDATE_FIELDS = new Fields(UserResource.FIELD_LIST, "profile,teams");
private final UserRepository3 repo3; private final CollectionDAO repo3;
public UserRepositoryHelper(UserRepository3 repo3) { public UserRepositoryHelper(CollectionDAO repo3) {
super(User.class,repo3.userDAO()); super(User.class,repo3.userDAO());
this.repo3 = repo3; this.repo3 = repo3;
} }

View File

@ -25,6 +25,4 @@ import java.lang.annotation.Target;
@Target(value = ElementType.TYPE) @Target(value = ElementType.TYPE)
public @interface Collection { public @interface Collection {
String name(); String name();
String repositoryClass() default "";
} }

View File

@ -19,73 +19,11 @@ package org.openmetadata.catalog.resources;
import io.dropwizard.setup.Environment; import io.dropwizard.setup.Environment;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import org.jdbi.v3.core.Jdbi; import org.jdbi.v3.core.Jdbi;
import org.openmetadata.catalog.jdbi3.BotsRepository3; import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.jdbi3.BotsRepositoryHelper; import org.openmetadata.catalog.security.CatalogAuthorizer;
import org.openmetadata.catalog.jdbi3.ChartRepository3;
import org.openmetadata.catalog.jdbi3.ChartRepositoryHelper;
import org.openmetadata.catalog.jdbi3.DashboardRepository3;
import org.openmetadata.catalog.jdbi3.DashboardRepositoryHelper;
import org.openmetadata.catalog.jdbi3.DashboardServiceRepository3;
import org.openmetadata.catalog.jdbi3.DashboardServiceRepositoryHelper;
import org.openmetadata.catalog.jdbi3.DatabaseRepository3;
import org.openmetadata.catalog.jdbi3.DatabaseRepositoryHelper;
import org.openmetadata.catalog.jdbi3.DatabaseServiceRepository3;
import org.openmetadata.catalog.jdbi3.DatabaseServiceRepositoryHelper;
import org.openmetadata.catalog.jdbi3.FeedRepository3;
import org.openmetadata.catalog.jdbi3.FeedRepositoryHelper;
import org.openmetadata.catalog.jdbi3.LineageRepository3;
import org.openmetadata.catalog.jdbi3.LineageRepositoryHelper;
import org.openmetadata.catalog.jdbi3.MessagingServiceRepository3;
import org.openmetadata.catalog.jdbi3.MessagingServiceRepositoryHelper;
import org.openmetadata.catalog.jdbi3.MetricsRepository3;
import org.openmetadata.catalog.jdbi3.MetricsRepositoryHelper;
import org.openmetadata.catalog.jdbi3.ModelRepository3;
import org.openmetadata.catalog.jdbi3.ModelRepositoryHelper;
import org.openmetadata.catalog.jdbi3.PipelineRepository3;
import org.openmetadata.catalog.jdbi3.PipelineRepositoryHelper;
import org.openmetadata.catalog.jdbi3.PipelineServiceRepository3;
import org.openmetadata.catalog.jdbi3.PipelineServiceRepositoryHelper;
import org.openmetadata.catalog.jdbi3.ReportRepository3;
import org.openmetadata.catalog.jdbi3.ReportRepositoryHelper;
import org.openmetadata.catalog.jdbi3.TableRepository3;
import org.openmetadata.catalog.jdbi3.TableRepositoryHelper;
import org.openmetadata.catalog.jdbi3.TagRepository3;
import org.openmetadata.catalog.jdbi3.TagRepositoryHelper;
import org.openmetadata.catalog.jdbi3.TaskRepository3;
import org.openmetadata.catalog.jdbi3.TaskRepositoryHelper;
import org.openmetadata.catalog.jdbi3.TeamRepository3;
import org.openmetadata.catalog.jdbi3.TeamRepositoryHelper;
import org.openmetadata.catalog.jdbi3.TopicRepository3;
import org.openmetadata.catalog.jdbi3.TopicRepositoryHelper;
import org.openmetadata.catalog.jdbi3.UsageRepository3;
import org.openmetadata.catalog.jdbi3.UsageRepositoryHelper;
import org.openmetadata.catalog.jdbi3.UserRepository3;
import org.openmetadata.catalog.jdbi3.UserRepositoryHelper;
import org.openmetadata.catalog.resources.bots.BotsResource;
import org.openmetadata.catalog.resources.charts.ChartResource;
import org.openmetadata.catalog.resources.dashboards.DashboardResource;
import org.openmetadata.catalog.resources.databases.DatabaseResource;
import org.openmetadata.catalog.resources.databases.TableResource;
import org.openmetadata.catalog.resources.feeds.FeedResource;
import org.openmetadata.catalog.resources.lineage.LineageResource;
import org.openmetadata.catalog.resources.metrics.MetricsResource;
import org.openmetadata.catalog.resources.models.ModelResource;
import org.openmetadata.catalog.resources.pipelines.PipelineResource;
import org.openmetadata.catalog.resources.reports.ReportResource;
import org.openmetadata.catalog.resources.services.dashboard.DashboardServiceResource;
import org.openmetadata.catalog.resources.services.database.DatabaseServiceResource;
import org.openmetadata.catalog.resources.services.messaging.MessagingServiceResource;
import org.openmetadata.catalog.resources.services.pipeline.PipelineServiceResource;
import org.openmetadata.catalog.resources.tags.TagResource;
import org.openmetadata.catalog.resources.tasks.TaskResource;
import org.openmetadata.catalog.resources.teams.TeamResource;
import org.openmetadata.catalog.resources.teams.UserResource;
import org.openmetadata.catalog.resources.topics.TopicResource;
import org.openmetadata.catalog.resources.usage.UsageResource;
import org.openmetadata.catalog.type.CollectionDescriptor; import org.openmetadata.catalog.type.CollectionDescriptor;
import org.openmetadata.catalog.type.CollectionInfo; import org.openmetadata.catalog.type.CollectionInfo;
import org.openmetadata.catalog.util.RestUtil; import org.openmetadata.catalog.util.RestUtil;
import org.openmetadata.catalog.security.CatalogAuthorizer;
import org.reflections.Reflections; import org.reflections.Reflections;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -93,7 +31,6 @@ import org.slf4j.LoggerFactory;
import javax.ws.rs.Path; import javax.ws.rs.Path;
import javax.ws.rs.core.UriInfo; import javax.ws.rs.core.UriInfo;
import java.io.File; import java.io.File;
import java.io.IOException;
import java.lang.annotation.Annotation; import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
@ -117,14 +54,12 @@ public final class CollectionRegistry {
public static class CollectionDetails { public static class CollectionDetails {
private final String resourceClass; private final String resourceClass;
private final String repoClass;
private final CollectionDescriptor cd; private final CollectionDescriptor cd;
private final List<CollectionDescriptor> childCollections = new ArrayList<>(); private final List<CollectionDescriptor> childCollections = new ArrayList<>();
CollectionDetails(CollectionDescriptor cd, String resourceClass, String repoClass) { CollectionDetails(CollectionDescriptor cd, String resourceClass) {
this.cd = cd; this.cd = cd;
this.resourceClass = resourceClass; this.resourceClass = resourceClass;
this.repoClass = repoClass;
} }
public void addChildCollection(CollectionDetails child) { public void addChildCollection(CollectionDetails child) {
@ -211,9 +146,8 @@ public final class CollectionRegistry {
for (Map.Entry<String, CollectionDetails> e : collectionMap.entrySet()) { for (Map.Entry<String, CollectionDetails> e : collectionMap.entrySet()) {
CollectionDetails details = e.getValue(); CollectionDetails details = e.getValue();
String resourceClass = details.resourceClass; String resourceClass = details.resourceClass;
String repositoryClass = details.repoClass;
try { try {
Object resource = createResource(jdbi, resourceClass, repositoryClass, authorizer); Object resource = createResource(jdbi, resourceClass, authorizer);
environment.jersey().register(resource); environment.jersey().register(resource);
LOG.info("Registering {}", resourceClass); LOG.info("Registering {}", resourceClass);
} catch (Exception ex) { } catch (Exception ex) {
@ -222,164 +156,12 @@ public final class CollectionRegistry {
} }
} }
/**
* Register resources from CollectionRegistry
*/
public void registerResources3(Jdbi jdbi, Environment environment, CatalogAuthorizer authorizer) throws IOException {
LOG.info("Initializing jdbi3");
final TableRepository3 daoObject = jdbi.onDemand(TableRepository3.class);
TableRepositoryHelper helper = new TableRepositoryHelper(daoObject);
TableResource resource = new TableResource(helper, authorizer);
environment.jersey().register(resource);
LOG.info("Registering {}", resource);
final DatabaseRepository3 daoObject1 = jdbi.onDemand(DatabaseRepository3.class);
DatabaseRepositoryHelper helper1 = new DatabaseRepositoryHelper(daoObject1);
DatabaseResource resource1 = new DatabaseResource(helper1, authorizer);
environment.jersey().register(resource1);
LOG.info("Registering {}", resource1);
final TopicRepository3 topicRepository3 = jdbi.onDemand(TopicRepository3.class);
TopicRepositoryHelper topicRepositoryHelper = new TopicRepositoryHelper(topicRepository3);
TopicResource topicResource = new TopicResource(topicRepositoryHelper, authorizer);
environment.jersey().register(topicResource);
LOG.info("Registering {}", topicResource);
final ChartRepository3 chartRepository3 = jdbi.onDemand(ChartRepository3.class);
ChartRepositoryHelper chartRepositoryHelper = new ChartRepositoryHelper(chartRepository3);
ChartResource chartResource = new ChartResource(chartRepositoryHelper, authorizer);
environment.jersey().register(chartResource);
LOG.info("Registering {}", chartResource);
final BotsRepository3 botsRepository3 = jdbi.onDemand(BotsRepository3.class);
BotsRepositoryHelper botsRepositoryHelper = new BotsRepositoryHelper(botsRepository3);
BotsResource botsResource = new BotsResource(botsRepositoryHelper, authorizer);
environment.jersey().register(botsResource);
LOG.info("Registering {}", botsResource);
final DashboardRepository3 dashboardRepository3 = jdbi.onDemand(DashboardRepository3.class);
DashboardRepositoryHelper dashboardRepositoryHelper = new DashboardRepositoryHelper(dashboardRepository3);
DashboardResource dashboardResource = new DashboardResource(dashboardRepositoryHelper, authorizer);
environment.jersey().register(dashboardResource);
LOG.info("Registering {}", dashboardResource);
final DashboardServiceRepository3 dashboardServiceRepository3 = jdbi.onDemand(DashboardServiceRepository3.class);
DashboardServiceRepositoryHelper dashboardServiceRepositoryHelper = new DashboardServiceRepositoryHelper(dashboardServiceRepository3);
DashboardServiceResource dashboardServiceResource = new DashboardServiceResource(dashboardServiceRepositoryHelper,
authorizer);
environment.jersey().register(dashboardServiceResource);
LOG.info("Registering {}", dashboardServiceResource);
final DatabaseServiceRepository3 databaseServiceRepository3 = jdbi.onDemand(DatabaseServiceRepository3.class);
DatabaseServiceRepositoryHelper databaseServiceRepositoryHelper = new DatabaseServiceRepositoryHelper(databaseServiceRepository3);
DatabaseServiceResource databaseServiceResource = new DatabaseServiceResource(databaseServiceRepositoryHelper,
authorizer);
environment.jersey().register(databaseServiceResource);
LOG.info("Registering {}", databaseServiceResource);
final MessagingServiceRepository3 messagingServiceRepository3 = jdbi.onDemand(MessagingServiceRepository3.class);
MessagingServiceRepositoryHelper messagingServiceRepositoryHelper = new MessagingServiceRepositoryHelper(messagingServiceRepository3);
MessagingServiceResource messagingServiceResource = new MessagingServiceResource(messagingServiceRepositoryHelper,
authorizer);
environment.jersey().register(messagingServiceResource);
LOG.info("Registering {}", messagingServiceResource);
final MetricsRepository3 metricsRepository3 = jdbi.onDemand(MetricsRepository3.class);
MetricsRepositoryHelper metricsRepositoryHelper = new MetricsRepositoryHelper(metricsRepository3);
MetricsResource metricsResource = new MetricsResource(metricsRepositoryHelper,
authorizer);
environment.jersey().register(metricsResource);
LOG.info("Registering {}", metricsResource);
final ModelRepository3 modelRepository3 = jdbi.onDemand(ModelRepository3.class);
ModelRepositoryHelper modelRepositoryHelper = new ModelRepositoryHelper(modelRepository3);
ModelResource modelResource = new ModelResource(modelRepositoryHelper,
authorizer);
environment.jersey().register(modelResource);
LOG.info("Registering {}", modelResource);
final PipelineRepository3 pipelineRepository3 = jdbi.onDemand(PipelineRepository3.class);
PipelineRepositoryHelper pipelineRepositoryHelper = new PipelineRepositoryHelper(pipelineRepository3);
PipelineResource pipelineResource = new PipelineResource(pipelineRepositoryHelper,
authorizer);
environment.jersey().register(pipelineResource);
LOG.info("Registering {}", pipelineResource);
final PipelineServiceRepository3 pipelineServiceRepository3 = jdbi.onDemand(PipelineServiceRepository3.class);
PipelineServiceRepositoryHelper pipelineServiceRepositoryHelper = new PipelineServiceRepositoryHelper(pipelineServiceRepository3);
PipelineServiceResource pipelineServiceResource = new PipelineServiceResource(pipelineServiceRepositoryHelper,
authorizer);
environment.jersey().register(pipelineServiceResource);
LOG.info("Registering {}", pipelineServiceResource);
final ReportRepository3 reportRepository3 = jdbi.onDemand(ReportRepository3.class);
ReportRepositoryHelper reportRepositoryHelper = new ReportRepositoryHelper(reportRepository3);
ReportResource reportResource = new ReportResource(reportRepositoryHelper,
authorizer);
environment.jersey().register(reportResource);
LOG.info("Registering {}", reportResource);
final TaskRepository3 taskRepository3 = jdbi.onDemand(TaskRepository3.class);
TaskRepositoryHelper taskRepositoryHelper = new TaskRepositoryHelper(taskRepository3);
TaskResource taskResource = new TaskResource(taskRepositoryHelper,
authorizer);
environment.jersey().register(taskResource);
LOG.info("Registering {}", taskResource);
final TeamRepository3 teamRepository3 = jdbi.onDemand(TeamRepository3.class);
TeamRepositoryHelper teamRepositoryHelper = new TeamRepositoryHelper(teamRepository3);
TeamResource teamResource = new TeamResource(teamRepositoryHelper,
authorizer);
environment.jersey().register(teamResource);
LOG.info("Registering {}", teamResource);
final UserRepository3 userRepository3 = jdbi.onDemand(UserRepository3.class);
UserRepositoryHelper userRepositoryHelper = new UserRepositoryHelper(userRepository3);
UserResource userResource = new UserResource(userRepositoryHelper,
authorizer);
environment.jersey().register(userResource);
LOG.info("Registering {}", userResource);
final LineageRepository3 lineageRepository3 = jdbi.onDemand(LineageRepository3.class);
LineageRepositoryHelper lineageRepositoryHelper = new LineageRepositoryHelper(lineageRepository3);
LineageResource lineageResource = new LineageResource(lineageRepositoryHelper,
authorizer);
environment.jersey().register(lineageResource);
LOG.info("Registering {}", lineageResource);
final FeedRepository3 feedRepository3 = jdbi.onDemand(FeedRepository3.class);
FeedRepositoryHelper feedRepositoryHelper = new FeedRepositoryHelper(feedRepository3);
FeedResource feedResource = new FeedResource(feedRepositoryHelper,
authorizer);
environment.jersey().register(feedResource);
LOG.info("Registering {}", feedResource);
final UsageRepository3 usageRepository3 = jdbi.onDemand(UsageRepository3.class);
UsageRepositoryHelper usageRepositoryHelper = new UsageRepositoryHelper(usageRepository3);
UsageResource usageResource = new UsageResource(usageRepositoryHelper,
authorizer);
environment.jersey().register(usageResource);
LOG.info("Registering {}", usageResource);
final TagRepository3 tagRepository3 = jdbi.onDemand(TagRepository3.class);
TagRepositoryHelper tagRepositoryHelper = new TagRepositoryHelper(tagRepository3);
TagResource tagResource = new TagResource(tagRepositoryHelper,
authorizer);
tagResource.initialize();
environment.jersey().register(tagResource);
LOG.info("Registering {}", tagResource);
LOG.info("Initialized jdbi3");
}
/** Get collection details based on annotations in Resource classes */ /** Get collection details based on annotations in Resource classes */
private static CollectionDetails getCollection(Class<?> cl) { private static CollectionDetails getCollection(Class<?> cl) {
String href, doc, name, repoClass; String href, doc, name;
href = null; href = null;
doc = null; doc = null;
name = null; name = null;
repoClass = null;
for (Annotation a : cl.getAnnotations()) { for (Annotation a : cl.getAnnotations()) {
if (a instanceof Path) { if (a instanceof Path) {
// Use @Path annotation to compile href // Use @Path annotation to compile href
@ -390,13 +172,11 @@ public final class CollectionRegistry {
} else if (a instanceof Collection) { } else if (a instanceof Collection) {
// Use @Collection annotation to get initialization information for the class // Use @Collection annotation to get initialization information for the class
name = ((Collection) a).name(); name = ((Collection) a).name();
repoClass = ((Collection) a).repositoryClass();
repoClass = repoClass.isEmpty() ? null : repoClass;
} }
} }
CollectionDescriptor cd = new CollectionDescriptor(); CollectionDescriptor cd = new CollectionDescriptor();
cd.setCollection(new CollectionInfo().withName(name).withDocumentation(doc).withHref(URI.create(href))); cd.setCollection(new CollectionInfo().withName(name).withDocumentation(doc).withHref(URI.create(href)));
return new CollectionDetails(cd, cl.getCanonicalName(), repoClass); return new CollectionDetails(cd, cl.getCanonicalName());
} }
/** Compile a list of REST collection based on Resource classes marked with {@code Collection} annotation */ /** Compile a list of REST collection based on Resource classes marked with {@code Collection} annotation */
@ -414,21 +194,20 @@ public final class CollectionRegistry {
} }
/** Create a resource class based on dependencies declared in @Collection annotation */ /** Create a resource class based on dependencies declared in @Collection annotation */
private static Object createResource(Jdbi jdbi, String resourceClass, String repositoryClass, private static Object createResource(Jdbi jdbi, String resourceClass, CatalogAuthorizer authorizer) throws
CatalogAuthorizer authorizer) throws
ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException,
InstantiationException { InstantiationException {
Object resource; Object resource;
Class<?> clz = Class.forName(resourceClass); Class<?> clz = Class.forName(resourceClass);
// Create the resource identified by resourceClass // Create the resource identified by resourceClass
if (repositoryClass != null) { final CollectionDAO daoObject = jdbi.onDemand(CollectionDAO.class);
Class<?> repositoryClz = Class.forName(repositoryClass); try {
final Object daoObject = jdbi.onDemand(repositoryClz); LOG.info("Creating resource {}", resourceClass);
LOG.info("Creating resource {} with repository {}", resourceClass, repositoryClass); resource = clz.getDeclaredConstructor(CollectionDAO.class, CatalogAuthorizer.class).newInstance(daoObject,
resource = clz.getDeclaredConstructor(repositoryClz, CatalogAuthorizer.class).newInstance(daoObject, authorizer); authorizer);
} else { } catch(NoSuchMethodException ex) {
LOG.info("Creating resource {} without repository", resourceClass); LOG.info("Creating resource {} with default constructor", resourceClass);
resource = Class.forName(resourceClass).getConstructor().newInstance(); resource = Class.forName(resourceClass).getConstructor().newInstance();
} }

View File

@ -25,6 +25,8 @@ import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.openmetadata.catalog.entity.Bots; import org.openmetadata.catalog.entity.Bots;
import org.openmetadata.catalog.jdbi3.BotsRepositoryHelper; import org.openmetadata.catalog.jdbi3.BotsRepositoryHelper;
import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.resources.Collection;
import org.openmetadata.catalog.security.CatalogAuthorizer; import org.openmetadata.catalog.security.CatalogAuthorizer;
import org.openmetadata.catalog.security.SecurityUtil; import org.openmetadata.catalog.security.SecurityUtil;
import org.openmetadata.catalog.util.RestUtil; import org.openmetadata.catalog.util.RestUtil;
@ -54,7 +56,7 @@ import java.util.UUID;
@Api(value = "Bots collection", tags = "Bots collection") @Api(value = "Bots collection", tags = "Bots collection")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
//@Collection(name = "bots", repositoryClass = "org.openmetadata.catalog.jdbi3.BotsRepository3") @Collection(name = "bots")
public class BotsResource { public class BotsResource {
public static final String COLLECTION_PATH = "/v1/bots/"; public static final String COLLECTION_PATH = "/v1/bots/";
private final BotsRepositoryHelper dao; private final BotsRepositoryHelper dao;
@ -71,9 +73,9 @@ public class BotsResource {
} }
@Inject @Inject
public BotsResource(BotsRepositoryHelper dao, CatalogAuthorizer authorizer) { public BotsResource(CollectionDAO dao, CatalogAuthorizer authorizer) {
Objects.requireNonNull(dao, "BotsRepository3 must not be null"); Objects.requireNonNull(dao, "CollectionDAO must not be null");
this.dao = dao; this.dao = new BotsRepositoryHelper(dao);
this.authorizer = authorizer; this.authorizer = authorizer;
} }

View File

@ -29,6 +29,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.openmetadata.catalog.api.data.CreateChart; import org.openmetadata.catalog.api.data.CreateChart;
import org.openmetadata.catalog.entity.data.Chart; import org.openmetadata.catalog.entity.data.Chart;
import org.openmetadata.catalog.jdbi3.ChartRepositoryHelper; import org.openmetadata.catalog.jdbi3.ChartRepositoryHelper;
import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.resources.Collection; import org.openmetadata.catalog.resources.Collection;
import org.openmetadata.catalog.security.CatalogAuthorizer; import org.openmetadata.catalog.security.CatalogAuthorizer;
import org.openmetadata.catalog.security.SecurityUtil; import org.openmetadata.catalog.security.SecurityUtil;
@ -77,7 +78,7 @@ import java.util.UUID;
@Api(value = "Chart data asset collection", tags = "Chart data asset collection") @Api(value = "Chart data asset collection", tags = "Chart data asset collection")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
//@Collection(name = "charts", repositoryClass = "org.openmetadata.catalog.jdbi3.ChartRepository3") @Collection(name = "charts")
public class ChartResource { public class ChartResource {
private static final Logger LOG = LoggerFactory.getLogger(ChartResource.class); private static final Logger LOG = LoggerFactory.getLogger(ChartResource.class);
private static final String CHART_COLLECTION_PATH = "v1/charts/"; private static final String CHART_COLLECTION_PATH = "v1/charts/";
@ -103,9 +104,9 @@ public class ChartResource {
} }
@Inject @Inject
public ChartResource(ChartRepositoryHelper dao, CatalogAuthorizer authorizer) { public ChartResource(CollectionDAO dao, CatalogAuthorizer authorizer) {
Objects.requireNonNull(dao, "ChartRepository3 must not be null"); Objects.requireNonNull(dao, "ChartRepository3 must not be null");
this.dao = dao; this.dao = new ChartRepositoryHelper(dao);
this.authorizer = authorizer; this.authorizer = authorizer;
} }

View File

@ -44,7 +44,6 @@ public class ConfigResource {
this.catalogApplicationConfig = catalogApplicationConfig; this.catalogApplicationConfig = catalogApplicationConfig;
} }
@GET @GET
@Path(("/auth")) @Path(("/auth"))
@Operation(summary = "Get auth configuration", tags = "general", @Operation(summary = "Get auth configuration", tags = "general",

View File

@ -28,6 +28,7 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody;
import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.openmetadata.catalog.api.data.CreateDashboard; import org.openmetadata.catalog.api.data.CreateDashboard;
import org.openmetadata.catalog.entity.data.Dashboard; import org.openmetadata.catalog.entity.data.Dashboard;
import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.jdbi3.DashboardRepositoryHelper; import org.openmetadata.catalog.jdbi3.DashboardRepositoryHelper;
import org.openmetadata.catalog.resources.Collection; import org.openmetadata.catalog.resources.Collection;
import org.openmetadata.catalog.security.CatalogAuthorizer; import org.openmetadata.catalog.security.CatalogAuthorizer;
@ -75,7 +76,7 @@ import java.util.UUID;
@Api(value = "Dashboards collection", tags = "Dashboards collection") @Api(value = "Dashboards collection", tags = "Dashboards collection")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
//@Collection(name = "dashboards", repositoryClass = "org.openmetadata.catalog.jdbi3.DashboardRepositoryHelper") @Collection(name = "dashboards")
public class DashboardResource { public class DashboardResource {
public static final String DASHBOARD_COLLECTION_PATH = "v1/dashboards/"; public static final String DASHBOARD_COLLECTION_PATH = "v1/dashboards/";
private final DashboardRepositoryHelper dao; private final DashboardRepositoryHelper dao;
@ -102,9 +103,9 @@ public class DashboardResource {
} }
@Inject @Inject
public DashboardResource(DashboardRepositoryHelper dao, CatalogAuthorizer authorizer) { public DashboardResource(CollectionDAO dao, CatalogAuthorizer authorizer) {
Objects.requireNonNull(dao, "DashboardRepositoryHelper must not be null"); Objects.requireNonNull(dao, "DashboardRepositoryHelper must not be null");
this.dao = dao; this.dao = new DashboardRepositoryHelper(dao);
this.authorizer = authorizer; this.authorizer = authorizer;
} }

View File

@ -28,7 +28,9 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody;
import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.openmetadata.catalog.api.data.CreateDatabase; import org.openmetadata.catalog.api.data.CreateDatabase;
import org.openmetadata.catalog.entity.data.Database; import org.openmetadata.catalog.entity.data.Database;
import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.jdbi3.DatabaseRepositoryHelper; import org.openmetadata.catalog.jdbi3.DatabaseRepositoryHelper;
import org.openmetadata.catalog.resources.Collection;
import org.openmetadata.catalog.security.CatalogAuthorizer; import org.openmetadata.catalog.security.CatalogAuthorizer;
import org.openmetadata.catalog.security.SecurityUtil; import org.openmetadata.catalog.security.SecurityUtil;
import org.openmetadata.catalog.type.EntityReference; import org.openmetadata.catalog.type.EntityReference;
@ -76,7 +78,7 @@ import java.util.UUID;
@Api(value = "Databases collection", tags = "Databases collection") @Api(value = "Databases collection", tags = "Databases collection")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
//@Collection(name = "databases", repositoryClass = "org.openmetadata.catalog.jdbi3.DatabaseRepository3") @Collection(name = "databases")
public class DatabaseResource { public class DatabaseResource {
private static final Logger LOG = LoggerFactory.getLogger(DatabaseResource.class); private static final Logger LOG = LoggerFactory.getLogger(DatabaseResource.class);
private static final String DATABASE_COLLECTION_PATH = "v1/databases/"; private static final String DATABASE_COLLECTION_PATH = "v1/databases/";
@ -105,9 +107,9 @@ public class DatabaseResource {
} }
@Inject @Inject
public DatabaseResource(DatabaseRepositoryHelper dao, CatalogAuthorizer authorizer) { public DatabaseResource(CollectionDAO dao, CatalogAuthorizer authorizer) {
Objects.requireNonNull(dao, "DatabaseRepository3 must not be null"); Objects.requireNonNull(dao, "DatabaseRepository3 must not be null");
this.dao = dao; this.dao = new DatabaseRepositoryHelper(dao);
this.authorizer = authorizer; this.authorizer = authorizer;
} }

View File

@ -28,6 +28,7 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody;
import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.openmetadata.catalog.api.data.CreateTable; import org.openmetadata.catalog.api.data.CreateTable;
import org.openmetadata.catalog.entity.data.Table; import org.openmetadata.catalog.entity.data.Table;
import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.jdbi3.TableRepository3; import org.openmetadata.catalog.jdbi3.TableRepository3;
import org.openmetadata.catalog.jdbi3.TableRepositoryHelper; import org.openmetadata.catalog.jdbi3.TableRepositoryHelper;
import org.openmetadata.catalog.resources.Collection; import org.openmetadata.catalog.resources.Collection;
@ -80,7 +81,7 @@ import java.util.UUID;
@Api(value = "Tables collection", tags = "Tables collection") @Api(value = "Tables collection", tags = "Tables collection")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
//@Collection(name = "tables", repositoryClass = "org.openmetadata.catalog.jdbi3.TableRepository3") @Collection(name = "tables")
public class TableResource { public class TableResource {
private static final Logger LOG = LoggerFactory.getLogger(TableResource.class); private static final Logger LOG = LoggerFactory.getLogger(TableResource.class);
private static final String TABLE_COLLECTION_PATH = "v1/tables/"; private static final String TABLE_COLLECTION_PATH = "v1/tables/";
@ -102,9 +103,9 @@ public class TableResource {
} }
@Inject @Inject
public TableResource(TableRepositoryHelper dao, CatalogAuthorizer authorizer) { public TableResource(CollectionDAO dao, CatalogAuthorizer authorizer) {
Objects.requireNonNull(dao, "TableRepository3 must not be null"); Objects.requireNonNull(dao, "TableRepository3 must not be null");
this.dao = dao; this.dao = new TableRepositoryHelper(dao);
this.authorizer = authorizer; this.authorizer = authorizer;
} }

View File

@ -25,6 +25,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.openmetadata.catalog.api.feed.CreateThread; import org.openmetadata.catalog.api.feed.CreateThread;
import org.openmetadata.catalog.entity.feed.Thread; import org.openmetadata.catalog.entity.feed.Thread;
import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.jdbi3.FeedRepositoryHelper; import org.openmetadata.catalog.jdbi3.FeedRepositoryHelper;
import org.openmetadata.catalog.resources.Collection; import org.openmetadata.catalog.resources.Collection;
import org.openmetadata.catalog.security.CatalogAuthorizer; import org.openmetadata.catalog.security.CatalogAuthorizer;
@ -54,7 +55,7 @@ import java.util.UUID;
@Api(value = "Feeds collection", tags = "Feeds collection") @Api(value = "Feeds collection", tags = "Feeds collection")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
//@Collection(name = "feeds", repositoryClass = "org.openmetadata.catalog.jdbi3.FeedRepositoryHelper") @Collection(name = "feeds")
public class FeedResource { public class FeedResource {
// TODO add /v1/feed?user=userid // TODO add /v1/feed?user=userid
public static final String COLLECTION_PATH = "/v1/feed/"; public static final String COLLECTION_PATH = "/v1/feed/";
@ -71,9 +72,9 @@ public class FeedResource {
} }
@Inject @Inject
public FeedResource(FeedRepositoryHelper dao, CatalogAuthorizer authorizer) { public FeedResource(CollectionDAO dao, CatalogAuthorizer authorizer) {
Objects.requireNonNull(dao, "FeedRepositoryHelper must not be null"); Objects.requireNonNull(dao, "FeedRepositoryHelper must not be null");
this.dao = dao; this.dao = new FeedRepositoryHelper(dao);
} }
static class ThreadList extends ResultList<Thread> { static class ThreadList extends ResultList<Thread> {

View File

@ -24,6 +24,7 @@ import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.openmetadata.catalog.api.lineage.AddLineage; import org.openmetadata.catalog.api.lineage.AddLineage;
import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.jdbi3.LineageRepositoryHelper; import org.openmetadata.catalog.jdbi3.LineageRepositoryHelper;
import org.openmetadata.catalog.resources.Collection; import org.openmetadata.catalog.resources.Collection;
import org.openmetadata.catalog.resources.teams.UserResource; import org.openmetadata.catalog.resources.teams.UserResource;
@ -56,15 +57,15 @@ import java.util.Objects;
@Api(value = "Lineage resource", tags = "Lineage resource") @Api(value = "Lineage resource", tags = "Lineage resource")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
//@Collection(name = "lineage", repositoryClass = "org.openmetadata.catalog.jdbi3.LineageRepositoryHelper") @Collection(name = "lineage")
public class LineageResource { public class LineageResource {
private static final Logger LOG = LoggerFactory.getLogger(UserResource.class); private static final Logger LOG = LoggerFactory.getLogger(UserResource.class);
private final LineageRepositoryHelper dao; private final LineageRepositoryHelper dao;
@Inject @Inject
public LineageResource(LineageRepositoryHelper dao, CatalogAuthorizer authorizer) { public LineageResource(CollectionDAO dao, CatalogAuthorizer authorizer) {
Objects.requireNonNull(dao, "LineageRepositoryHelper must not be null"); Objects.requireNonNull(dao, "LineageRepositoryHelper must not be null");
this.dao = dao; this.dao = new LineageRepositoryHelper(dao);
} }
@GET @GET

View File

@ -24,7 +24,9 @@ import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.openmetadata.catalog.entity.data.Metrics; import org.openmetadata.catalog.entity.data.Metrics;
import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.jdbi3.MetricsRepositoryHelper; import org.openmetadata.catalog.jdbi3.MetricsRepositoryHelper;
import org.openmetadata.catalog.resources.Collection;
import org.openmetadata.catalog.security.CatalogAuthorizer; import org.openmetadata.catalog.security.CatalogAuthorizer;
import org.openmetadata.catalog.util.EntityUtil.Fields; import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.RestUtil; import org.openmetadata.catalog.util.RestUtil;
@ -58,7 +60,7 @@ import java.util.UUID;
@Api(value = "Metrics collection", tags = "Metrics collection") @Api(value = "Metrics collection", tags = "Metrics collection")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
//@Collection(name = "metrics", repositoryClass = "org.openmetadata.catalog.jdbi3.MetricsRepositoryHelper") @Collection(name = "metrics")
public class MetricsResource { public class MetricsResource {
public static final String COLLECTION_PATH = "/v1/metrics/"; public static final String COLLECTION_PATH = "/v1/metrics/";
private final MetricsRepositoryHelper dao; private final MetricsRepositoryHelper dao;
@ -69,9 +71,9 @@ public class MetricsResource {
} }
@Inject @Inject
public MetricsResource(MetricsRepositoryHelper dao, CatalogAuthorizer authorizer) { public MetricsResource(CollectionDAO dao, CatalogAuthorizer authorizer) {
Objects.requireNonNull(dao, "MetricsRepositoryHelper must not be null"); Objects.requireNonNull(dao, "MetricsRepositoryHelper must not be null");
this.dao = dao; this.dao = new MetricsRepositoryHelper(dao);
} }
public static class MetricsList extends ResultList<Metrics> { public static class MetricsList extends ResultList<Metrics> {

View File

@ -28,6 +28,7 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody;
import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.openmetadata.catalog.api.data.CreateModel; import org.openmetadata.catalog.api.data.CreateModel;
import org.openmetadata.catalog.entity.data.Model; import org.openmetadata.catalog.entity.data.Model;
import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.jdbi3.ModelRepositoryHelper; import org.openmetadata.catalog.jdbi3.ModelRepositoryHelper;
import org.openmetadata.catalog.security.CatalogAuthorizer; import org.openmetadata.catalog.security.CatalogAuthorizer;
import org.openmetadata.catalog.security.SecurityUtil; import org.openmetadata.catalog.security.SecurityUtil;
@ -98,9 +99,9 @@ public class ModelResource {
} }
@Inject @Inject
public ModelResource(ModelRepositoryHelper dao, CatalogAuthorizer authorizer) { public ModelResource(CollectionDAO dao, CatalogAuthorizer authorizer) {
Objects.requireNonNull(dao, "ModelRepositoryHelper must not be null"); Objects.requireNonNull(dao, "ModelRepositoryHelper must not be null");
this.dao = dao; this.dao = new ModelRepositoryHelper(dao);
this.authorizer = authorizer; this.authorizer = authorizer;
} }

View File

@ -28,6 +28,7 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody;
import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.openmetadata.catalog.api.data.CreatePipeline; import org.openmetadata.catalog.api.data.CreatePipeline;
import org.openmetadata.catalog.entity.data.Pipeline; import org.openmetadata.catalog.entity.data.Pipeline;
import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.jdbi3.PipelineRepositoryHelper; import org.openmetadata.catalog.jdbi3.PipelineRepositoryHelper;
import org.openmetadata.catalog.resources.Collection; import org.openmetadata.catalog.resources.Collection;
import org.openmetadata.catalog.security.CatalogAuthorizer; import org.openmetadata.catalog.security.CatalogAuthorizer;
@ -75,7 +76,7 @@ import java.util.UUID;
@Api(value = "Pipelines collection", tags = "Pipelines collection") @Api(value = "Pipelines collection", tags = "Pipelines collection")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
//@Collection(name = "pipelines", repositoryClass = "org.openmetadata.catalog.jdbi3.PipelineRepositoryHelper") @Collection(name = "pipelines")
public class PipelineResource { public class PipelineResource {
public static final String PIPELINE_COLLECTION_PATH = "v1/pipelines/"; public static final String PIPELINE_COLLECTION_PATH = "v1/pipelines/";
private final PipelineRepositoryHelper dao; private final PipelineRepositoryHelper dao;
@ -102,9 +103,9 @@ public class PipelineResource {
} }
@Inject @Inject
public PipelineResource(PipelineRepositoryHelper dao, CatalogAuthorizer authorizer) { public PipelineResource(CollectionDAO dao, CatalogAuthorizer authorizer) {
Objects.requireNonNull(dao, "PipelineRepositoryHelper must not be null"); Objects.requireNonNull(dao, "PipelineRepositoryHelper must not be null");
this.dao = dao; this.dao = new PipelineRepositoryHelper(dao);
this.authorizer = authorizer; this.authorizer = authorizer;
} }

View File

@ -24,6 +24,7 @@ import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.openmetadata.catalog.entity.data.Report; import org.openmetadata.catalog.entity.data.Report;
import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.jdbi3.ReportRepositoryHelper; import org.openmetadata.catalog.jdbi3.ReportRepositoryHelper;
import org.openmetadata.catalog.resources.Collection; import org.openmetadata.catalog.resources.Collection;
import org.openmetadata.catalog.security.CatalogAuthorizer; import org.openmetadata.catalog.security.CatalogAuthorizer;
@ -58,7 +59,7 @@ import java.util.UUID;
@Api(value = "Reports collection", tags = "Reports collection") @Api(value = "Reports collection", tags = "Reports collection")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
//@Collection(name = "reports", repositoryClass = "org.openmetadata.catalog.jdbi3.ReportRepositoryHelper") @Collection(name = "reports")
public class ReportResource { public class ReportResource {
public static final String COLLECTION_PATH = "/v1/bots/"; public static final String COLLECTION_PATH = "/v1/bots/";
private final ReportRepositoryHelper dao; private final ReportRepositoryHelper dao;
@ -74,9 +75,9 @@ public class ReportResource {
} }
@Inject @Inject
public ReportResource(ReportRepositoryHelper dao, CatalogAuthorizer authorizer) { public ReportResource(CollectionDAO dao, CatalogAuthorizer authorizer) {
Objects.requireNonNull(dao, "ReportRepositoryHelper must not be null"); Objects.requireNonNull(dao, "ReportRepositoryHelper must not be null");
this.dao = dao; this.dao = new ReportRepositoryHelper(dao);
} }
public static class ReportList extends ResultList<Report> { public static class ReportList extends ResultList<Report> {

View File

@ -27,7 +27,9 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.openmetadata.catalog.api.services.CreateDashboardService; import org.openmetadata.catalog.api.services.CreateDashboardService;
import org.openmetadata.catalog.api.services.UpdateDashboardService; import org.openmetadata.catalog.api.services.UpdateDashboardService;
import org.openmetadata.catalog.entity.services.DashboardService; import org.openmetadata.catalog.entity.services.DashboardService;
import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.jdbi3.DashboardServiceRepositoryHelper; import org.openmetadata.catalog.jdbi3.DashboardServiceRepositoryHelper;
import org.openmetadata.catalog.resources.Collection;
import org.openmetadata.catalog.security.CatalogAuthorizer; import org.openmetadata.catalog.security.CatalogAuthorizer;
import org.openmetadata.catalog.security.SecurityUtil; import org.openmetadata.catalog.security.SecurityUtil;
import org.openmetadata.catalog.type.EntityReference; import org.openmetadata.catalog.type.EntityReference;
@ -61,7 +63,7 @@ import java.util.UUID;
@Api(value = "Dashboard service collection", tags = "Services -> Dashboard service collection") @Api(value = "Dashboard service collection", tags = "Services -> Dashboard service collection")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
//@Collection(name = "dashboardServices", repositoryClass = "org.openmetadata.catalog.jdbi3.DashboardServiceRepositoryHelper") @Collection(name = "dashboardServices")
public class DashboardServiceResource { public class DashboardServiceResource {
private final DashboardServiceRepositoryHelper dao; private final DashboardServiceRepositoryHelper dao;
private final CatalogAuthorizer authorizer; private final CatalogAuthorizer authorizer;
@ -82,9 +84,9 @@ public class DashboardServiceResource {
} }
@Inject @Inject
public DashboardServiceResource(DashboardServiceRepositoryHelper dao, CatalogAuthorizer authorizer) { public DashboardServiceResource(CollectionDAO dao, CatalogAuthorizer authorizer) {
Objects.requireNonNull(dao, "DashboardServiceRepositoryHelper must not be null"); Objects.requireNonNull(dao, "DashboardServiceRepositoryHelper must not be null");
this.dao = dao; this.dao = new DashboardServiceRepositoryHelper(dao);
this.authorizer = authorizer; this.authorizer = authorizer;
} }

View File

@ -27,6 +27,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.openmetadata.catalog.api.services.CreateDatabaseService; import org.openmetadata.catalog.api.services.CreateDatabaseService;
import org.openmetadata.catalog.api.services.UpdateDatabaseService; import org.openmetadata.catalog.api.services.UpdateDatabaseService;
import org.openmetadata.catalog.entity.services.DatabaseService; import org.openmetadata.catalog.entity.services.DatabaseService;
import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.jdbi3.DatabaseServiceRepositoryHelper; import org.openmetadata.catalog.jdbi3.DatabaseServiceRepositoryHelper;
import org.openmetadata.catalog.resources.Collection; import org.openmetadata.catalog.resources.Collection;
import org.openmetadata.catalog.security.CatalogAuthorizer; import org.openmetadata.catalog.security.CatalogAuthorizer;
@ -62,7 +63,7 @@ import java.util.UUID;
@Api(value = "Database service collection", tags = "Services -> Database service collection") @Api(value = "Database service collection", tags = "Services -> Database service collection")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
//@Collection(name = "databaseServices", repositoryClass = "org.openmetadata.catalog.jdbi3.DatabaseServiceRepositoryHelper") @Collection(name = "databaseServices")
public class DatabaseServiceResource { public class DatabaseServiceResource {
private final DatabaseServiceRepositoryHelper dao; private final DatabaseServiceRepositoryHelper dao;
private final CatalogAuthorizer authorizer; private final CatalogAuthorizer authorizer;
@ -82,9 +83,9 @@ public class DatabaseServiceResource {
} }
@Inject @Inject
public DatabaseServiceResource(DatabaseServiceRepositoryHelper dao, CatalogAuthorizer authorizer) { public DatabaseServiceResource(CollectionDAO dao, CatalogAuthorizer authorizer) {
Objects.requireNonNull(dao, "DatabaseServiceRepositoryHelper must not be null"); Objects.requireNonNull(dao, "DatabaseServiceRepositoryHelper must not be null");
this.dao = dao; this.dao = new DatabaseServiceRepositoryHelper(dao);
this.authorizer = authorizer; this.authorizer = authorizer;
} }

View File

@ -27,7 +27,9 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.openmetadata.catalog.api.services.CreateMessagingService; import org.openmetadata.catalog.api.services.CreateMessagingService;
import org.openmetadata.catalog.api.services.UpdateMessagingService; import org.openmetadata.catalog.api.services.UpdateMessagingService;
import org.openmetadata.catalog.entity.services.MessagingService; import org.openmetadata.catalog.entity.services.MessagingService;
import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.jdbi3.MessagingServiceRepositoryHelper; import org.openmetadata.catalog.jdbi3.MessagingServiceRepositoryHelper;
import org.openmetadata.catalog.resources.Collection;
import org.openmetadata.catalog.security.CatalogAuthorizer; import org.openmetadata.catalog.security.CatalogAuthorizer;
import org.openmetadata.catalog.security.SecurityUtil; import org.openmetadata.catalog.security.SecurityUtil;
import org.openmetadata.catalog.type.EntityReference; import org.openmetadata.catalog.type.EntityReference;
@ -61,7 +63,7 @@ import java.util.UUID;
@Api(value = "Messaging service collection", tags = "Services -> Messaging service collection") @Api(value = "Messaging service collection", tags = "Services -> Messaging service collection")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
//@Collection(name = "messagingServices", repositoryClass = "org.openmetadata.catalog.jdbi3.MessagingServiceRepositoryHelper") @Collection(name = "messagingServices")
public class MessagingServiceResource { public class MessagingServiceResource {
private final MessagingServiceRepositoryHelper dao; private final MessagingServiceRepositoryHelper dao;
private final CatalogAuthorizer authorizer; private final CatalogAuthorizer authorizer;
@ -81,9 +83,9 @@ public class MessagingServiceResource {
} }
@Inject @Inject
public MessagingServiceResource(MessagingServiceRepositoryHelper dao, CatalogAuthorizer authorizer) { public MessagingServiceResource(CollectionDAO dao, CatalogAuthorizer authorizer) {
Objects.requireNonNull(dao, "MessagingServiceRepositoryHelper must not be null"); Objects.requireNonNull(dao, "MessagingServiceRepositoryHelper must not be null");
this.dao = dao; this.dao = new MessagingServiceRepositoryHelper(dao);
this.authorizer = authorizer; this.authorizer = authorizer;
} }

View File

@ -27,7 +27,9 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.openmetadata.catalog.api.services.CreatePipelineService; import org.openmetadata.catalog.api.services.CreatePipelineService;
import org.openmetadata.catalog.api.services.UpdatePipelineService; import org.openmetadata.catalog.api.services.UpdatePipelineService;
import org.openmetadata.catalog.entity.services.PipelineService; import org.openmetadata.catalog.entity.services.PipelineService;
import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.jdbi3.PipelineServiceRepositoryHelper; import org.openmetadata.catalog.jdbi3.PipelineServiceRepositoryHelper;
import org.openmetadata.catalog.resources.Collection;
import org.openmetadata.catalog.security.CatalogAuthorizer; import org.openmetadata.catalog.security.CatalogAuthorizer;
import org.openmetadata.catalog.security.SecurityUtil; import org.openmetadata.catalog.security.SecurityUtil;
import org.openmetadata.catalog.type.EntityReference; import org.openmetadata.catalog.type.EntityReference;
@ -61,7 +63,7 @@ import java.util.UUID;
@Api(value = "Pipeline service collection", tags = "Services -> Pipeline service collection") @Api(value = "Pipeline service collection", tags = "Services -> Pipeline service collection")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
//@Collection(name = "pipelineServices", repositoryClass = "org.openmetadata.catalog.jdbi3.PipelineServiceRepositoryHelper") @Collection(name = "pipelineServices")
public class PipelineServiceResource { public class PipelineServiceResource {
private final PipelineServiceRepositoryHelper dao; private final PipelineServiceRepositoryHelper dao;
private final CatalogAuthorizer authorizer; private final CatalogAuthorizer authorizer;
@ -82,9 +84,9 @@ public class PipelineServiceResource {
} }
@Inject @Inject
public PipelineServiceResource(PipelineServiceRepositoryHelper dao, CatalogAuthorizer authorizer) { public PipelineServiceResource(CollectionDAO dao, CatalogAuthorizer authorizer) {
Objects.requireNonNull(dao, "PipelineServiceRepositoryHelper must not be null"); Objects.requireNonNull(dao, "PipelineServiceRepositoryHelper must not be null");
this.dao = dao; this.dao = new PipelineServiceRepositoryHelper(dao);
this.authorizer = authorizer; this.authorizer = authorizer;
} }

View File

@ -25,6 +25,7 @@ import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.apache.maven.shared.utils.io.IOUtil; import org.apache.maven.shared.utils.io.IOUtil;
import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.jdbi3.TagRepositoryHelper; import org.openmetadata.catalog.jdbi3.TagRepositoryHelper;
import org.openmetadata.catalog.resources.Collection; import org.openmetadata.catalog.resources.Collection;
import org.openmetadata.catalog.security.CatalogAuthorizer; import org.openmetadata.catalog.security.CatalogAuthorizer;
@ -67,7 +68,7 @@ import java.util.regex.Pattern;
@Path("/v1/tags") @Path("/v1/tags")
@Api(value = "Tags resources collection", tags = "Tags resources collection") @Api(value = "Tags resources collection", tags = "Tags resources collection")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
//@Collection(name = "tags", repositoryClass = "org.openmetadata.catalog.jdbi3.TagRepositoryHelper") @Collection(name = "tags")
public class TagResource { public class TagResource {
public static final Logger LOG = LoggerFactory.getLogger(TagResource.class); public static final Logger LOG = LoggerFactory.getLogger(TagResource.class);
public static final String TAG_COLLECTION_PATH = "/v1/tags/"; public static final String TAG_COLLECTION_PATH = "/v1/tags/";
@ -85,9 +86,9 @@ public class TagResource {
} }
@Inject @Inject
public TagResource(TagRepositoryHelper dao, CatalogAuthorizer authorizer) { public TagResource(CollectionDAO dao, CatalogAuthorizer authorizer) {
Objects.requireNonNull(dao, "TagRepositoryHelper must not be null"); Objects.requireNonNull(dao, "TagRepositoryHelper must not be null");
this.dao = dao; this.dao = new TagRepositoryHelper(dao);
this.authorizer = authorizer; this.authorizer = authorizer;
} }

View File

@ -28,7 +28,9 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody;
import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.openmetadata.catalog.api.data.CreateTask; import org.openmetadata.catalog.api.data.CreateTask;
import org.openmetadata.catalog.entity.data.Task; import org.openmetadata.catalog.entity.data.Task;
import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.jdbi3.TaskRepositoryHelper; import org.openmetadata.catalog.jdbi3.TaskRepositoryHelper;
import org.openmetadata.catalog.resources.Collection;
import org.openmetadata.catalog.security.CatalogAuthorizer; import org.openmetadata.catalog.security.CatalogAuthorizer;
import org.openmetadata.catalog.security.SecurityUtil; import org.openmetadata.catalog.security.SecurityUtil;
import org.openmetadata.catalog.type.EntityReference; import org.openmetadata.catalog.type.EntityReference;
@ -76,7 +78,7 @@ import java.util.UUID;
@Api(value = "tasks data asset collection", tags = "Task data asset collection") @Api(value = "tasks data asset collection", tags = "Task data asset collection")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
//@Collection(name = "tasks", repositoryClass = "org.openmetadata.catalog.jdbi3.TaskRepositoryHelper") @Collection(name = "tasks")
public class TaskResource { public class TaskResource {
private static final Logger LOG = LoggerFactory.getLogger(TaskResource.class); private static final Logger LOG = LoggerFactory.getLogger(TaskResource.class);
private static final String TASK_COLLECTION_PATH = "v1/tasks/"; private static final String TASK_COLLECTION_PATH = "v1/tasks/";
@ -101,9 +103,9 @@ public class TaskResource {
} }
@Inject @Inject
public TaskResource(TaskRepositoryHelper dao, CatalogAuthorizer authorizer) { public TaskResource(CollectionDAO dao, CatalogAuthorizer authorizer) {
Objects.requireNonNull(dao, "TaskRepositoryHelper must not be null"); Objects.requireNonNull(dao, "TaskRepositoryHelper must not be null");
this.dao = dao; this.dao = new TaskRepositoryHelper(dao);
this.authorizer = authorizer; this.authorizer = authorizer;
} }

View File

@ -29,6 +29,7 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody;
import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.openmetadata.catalog.api.teams.CreateTeam; import org.openmetadata.catalog.api.teams.CreateTeam;
import org.openmetadata.catalog.entity.teams.Team; import org.openmetadata.catalog.entity.teams.Team;
import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.jdbi3.TeamRepositoryHelper; import org.openmetadata.catalog.jdbi3.TeamRepositoryHelper;
import org.openmetadata.catalog.resources.Collection; import org.openmetadata.catalog.resources.Collection;
import org.openmetadata.catalog.security.CatalogAuthorizer; import org.openmetadata.catalog.security.CatalogAuthorizer;
@ -72,7 +73,7 @@ import java.util.UUID;
@Api(value = "Teams collection", tags = "Teams collection") @Api(value = "Teams collection", tags = "Teams collection")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
//@Collection(name = "teams", repositoryClass = "org.openmetadata.catalog.jdbi3.TeamRepositoryHelper") @Collection(name = "teams")
public class TeamResource { public class TeamResource {
private static final Logger LOG = LoggerFactory.getLogger(TeamResource.class); private static final Logger LOG = LoggerFactory.getLogger(TeamResource.class);
public static final String TEAM_COLLECTION_PATH = "/v1/teams/"; public static final String TEAM_COLLECTION_PATH = "/v1/teams/";
@ -92,9 +93,9 @@ public class TeamResource {
} }
@Inject @Inject
public TeamResource(TeamRepositoryHelper dao, CatalogAuthorizer authorizer) { public TeamResource(CollectionDAO dao, CatalogAuthorizer authorizer) {
Objects.requireNonNull(dao, "TeamRepositoryHelper must not be null"); Objects.requireNonNull(dao, "TeamRepositoryHelper must not be null");
this.dao = dao; this.dao = new TeamRepositoryHelper(dao);
this.authorizer = authorizer; this.authorizer = authorizer;
} }

View File

@ -29,6 +29,7 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody;
import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.openmetadata.catalog.api.teams.CreateUser; import org.openmetadata.catalog.api.teams.CreateUser;
import org.openmetadata.catalog.entity.teams.User; import org.openmetadata.catalog.entity.teams.User;
import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.jdbi3.UserRepositoryHelper; import org.openmetadata.catalog.jdbi3.UserRepositoryHelper;
import org.openmetadata.catalog.resources.Collection; import org.openmetadata.catalog.resources.Collection;
import org.openmetadata.catalog.security.CatalogAuthorizer; import org.openmetadata.catalog.security.CatalogAuthorizer;
@ -76,7 +77,7 @@ import java.util.UUID;
@Api(value = "User collection", tags = "User collection") @Api(value = "User collection", tags = "User collection")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
//@Collection(name = "users", repositoryClass = "org.openmetadata.catalog.jdbi3.UserRepositoryHelper") @Collection(name = "users")
public class UserResource { public class UserResource {
public static final Logger LOG = LoggerFactory.getLogger(UserResource.class); public static final Logger LOG = LoggerFactory.getLogger(UserResource.class);
public static final String USER_COLLECTION_PATH = "v1/users/"; public static final String USER_COLLECTION_PATH = "v1/users/";
@ -96,9 +97,9 @@ public class UserResource {
} }
@Inject @Inject
public UserResource(UserRepositoryHelper dao, CatalogAuthorizer authorizer) { public UserResource(CollectionDAO dao, CatalogAuthorizer authorizer) {
Objects.requireNonNull(dao, "UserRepositoryHelper must not be null"); Objects.requireNonNull(dao, "UserRepositoryHelper must not be null");
this.dao = dao; this.dao = new UserRepositoryHelper(dao);
this.authorizer = authorizer; this.authorizer = authorizer;
} }

View File

@ -28,7 +28,9 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody;
import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.openmetadata.catalog.api.data.CreateTopic; import org.openmetadata.catalog.api.data.CreateTopic;
import org.openmetadata.catalog.entity.data.Topic; import org.openmetadata.catalog.entity.data.Topic;
import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.jdbi3.TopicRepositoryHelper; import org.openmetadata.catalog.jdbi3.TopicRepositoryHelper;
import org.openmetadata.catalog.resources.Collection;
import org.openmetadata.catalog.security.CatalogAuthorizer; import org.openmetadata.catalog.security.CatalogAuthorizer;
import org.openmetadata.catalog.security.SecurityUtil; import org.openmetadata.catalog.security.SecurityUtil;
import org.openmetadata.catalog.type.EntityReference; import org.openmetadata.catalog.type.EntityReference;
@ -76,7 +78,7 @@ import java.util.UUID;
@Api(value = "Topic data asset collection", tags = "Topic data asset collection") @Api(value = "Topic data asset collection", tags = "Topic data asset collection")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
//@Collection(name = "topics", repositoryClass = "org.openmetadata.catalog.jdbi3.TopicRepository3") @Collection(name = "topics")
public class TopicResource { public class TopicResource {
private static final String TOPIC_COLLECTION_PATH = "v1/topics/"; private static final String TOPIC_COLLECTION_PATH = "v1/topics/";
private final TopicRepositoryHelper dao; private final TopicRepositoryHelper dao;
@ -100,9 +102,9 @@ public class TopicResource {
} }
@Inject @Inject
public TopicResource(TopicRepositoryHelper dao, CatalogAuthorizer authorizer) { public TopicResource(CollectionDAO dao, CatalogAuthorizer authorizer) {
Objects.requireNonNull(dao, "TopicRepository3 must not be null"); Objects.requireNonNull(dao, "TopicRepository3 must not be null");
this.dao = dao; this.dao = new TopicRepositoryHelper(dao);
this.authorizer = authorizer; this.authorizer = authorizer;
} }

View File

@ -17,6 +17,7 @@
package org.openmetadata.catalog.resources.usage; package org.openmetadata.catalog.resources.usage;
import com.google.inject.Inject; import com.google.inject.Inject;
import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.jdbi3.UsageRepositoryHelper; import org.openmetadata.catalog.jdbi3.UsageRepositoryHelper;
import org.openmetadata.catalog.resources.teams.UserResource; import org.openmetadata.catalog.resources.teams.UserResource;
import org.openmetadata.catalog.resources.Collection; import org.openmetadata.catalog.resources.Collection;
@ -54,15 +55,15 @@ import java.util.Objects;
@Api(value = "Usage resource", tags = "Usage resource") @Api(value = "Usage resource", tags = "Usage resource")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
//@Collection(name = "usage", repositoryClass = "org.openmetadata.catalog.jdbi3.UsageRepositoryHelper") @Collection(name = "usage")
public class UsageResource { public class UsageResource {
private static final Logger LOG = LoggerFactory.getLogger(UserResource.class); private static final Logger LOG = LoggerFactory.getLogger(UserResource.class);
private final UsageRepositoryHelper dao; private final UsageRepositoryHelper dao;
@Inject @Inject
public UsageResource(UsageRepositoryHelper dao, CatalogAuthorizer authorizer) { public UsageResource(CollectionDAO dao, CatalogAuthorizer authorizer) {
Objects.requireNonNull(dao, "UsageRepositoryHelper must not be null"); Objects.requireNonNull(dao, "UsageRepositoryHelper must not be null");
this.dao = dao; this.dao = new UsageRepositoryHelper(dao);
} }
@GET @GET

View File

@ -22,6 +22,7 @@ import org.openmetadata.catalog.Entity;
import org.openmetadata.catalog.entity.teams.User; import org.openmetadata.catalog.entity.teams.User;
import org.openmetadata.catalog.exception.DuplicateEntityException; import org.openmetadata.catalog.exception.DuplicateEntityException;
import org.openmetadata.catalog.exception.EntityNotFoundException; import org.openmetadata.catalog.exception.EntityNotFoundException;
import org.openmetadata.catalog.jdbi3.CollectionDAO;
import org.openmetadata.catalog.jdbi3.UserRepository3; import org.openmetadata.catalog.jdbi3.UserRepository3;
import org.openmetadata.catalog.jdbi3.UserRepositoryHelper; import org.openmetadata.catalog.jdbi3.UserRepositoryHelper;
import org.openmetadata.catalog.type.EntityReference; import org.openmetadata.catalog.type.EntityReference;
@ -56,7 +57,7 @@ public class DefaultCatalogAuthorizer implements CatalogAuthorizer {
this.botUsers = new HashSet<>(config.getBotPrincipals()); this.botUsers = new HashSet<>(config.getBotPrincipals());
this.principalDomain = config.getPrincipalDomain(); this.principalDomain = config.getPrincipalDomain();
LOG.debug("Admin users: {}", adminUsers); LOG.debug("Admin users: {}", adminUsers);
UserRepository3 repo = dbi.onDemand(UserRepository3.class); CollectionDAO repo = dbi.onDemand(CollectionDAO.class);
this.userRepositoryHelper = new UserRepositoryHelper(repo); this.userRepositoryHelper = new UserRepositoryHelper(repo);
mayBeAddAdminUsers(); mayBeAddAdminUsers();
mayBeAddBotUsers(); mayBeAddBotUsers();