Remove jdbi2 dependency

This commit is contained in:
sureshms 2021-10-21 21:13:27 -07:00
parent 869bb2599b
commit 1f8b7a99c6
36 changed files with 147 additions and 188 deletions

View File

@ -31,10 +31,6 @@
<groupId>io.dropwizard</groupId> <groupId>io.dropwizard</groupId>
<artifactId>dropwizard-core</artifactId> <artifactId>dropwizard-core</artifactId>
</dependency> </dependency>
<dependency>
<groupId>io.dropwizard</groupId>
<artifactId>dropwizard-jdbi</artifactId>
</dependency>
<dependency> <dependency>
<groupId>io.dropwizard</groupId> <groupId>io.dropwizard</groupId>
<artifactId>dropwizard-jdbi3</artifactId> <artifactId>dropwizard-jdbi3</artifactId>

View File

@ -18,31 +18,14 @@ package org.openmetadata.catalog;
import com.google.inject.Guice; import com.google.inject.Guice;
import com.google.inject.Injector; import com.google.inject.Injector;
import io.dropwizard.Application;
import io.dropwizard.assets.AssetsBundle;
import io.dropwizard.health.conf.HealthConfiguration; import io.dropwizard.health.conf.HealthConfiguration;
import io.dropwizard.health.core.HealthCheckBundle; import io.dropwizard.health.core.HealthCheckBundle;
import io.dropwizard.jdbi3.JdbiFactory; import io.dropwizard.jdbi3.JdbiFactory;
import io.dropwizard.jersey.jackson.JsonProcessingExceptionMapper;
import org.jdbi.v3.core.Jdbi;
import org.openmetadata.catalog.events.EventFilter;
import org.openmetadata.catalog.exception.CatalogGenericExceptionMapper;
import org.openmetadata.catalog.exception.ConstraintViolationExceptionMapper;
import org.openmetadata.catalog.exception.JsonMappingExceptionMapper;
import org.openmetadata.catalog.security.AuthenticationConfiguration;
import org.openmetadata.catalog.security.NoopFilter;
import org.openmetadata.catalog.security.AuthorizerConfiguration;
import org.openmetadata.catalog.security.CatalogAuthorizer;
import org.openmetadata.catalog.security.auth.CatalogSecurityContextRequestFilter;
import org.openmetadata.catalog.security.NoopAuthorizer;
import org.openmetadata.catalog.module.CatalogModule;
import org.openmetadata.catalog.resources.CollectionRegistry;
import org.openmetadata.catalog.resources.config.ConfigResource;
import org.openmetadata.catalog.resources.search.SearchResource;
import io.dropwizard.Application;
import io.dropwizard.assets.AssetsBundle;
import io.dropwizard.jdbi.DBIFactory;
import io.dropwizard.jdbi.OptionalContainerFactory;
import io.dropwizard.jersey.errors.EarlyEofExceptionMapper; import io.dropwizard.jersey.errors.EarlyEofExceptionMapper;
import io.dropwizard.jersey.errors.LoggingExceptionMapper; import io.dropwizard.jersey.errors.LoggingExceptionMapper;
import io.dropwizard.jersey.jackson.JsonProcessingExceptionMapper;
import io.dropwizard.lifecycle.Managed; import io.dropwizard.lifecycle.Managed;
import io.dropwizard.server.DefaultServerFactory; import io.dropwizard.server.DefaultServerFactory;
import io.dropwizard.setup.Bootstrap; import io.dropwizard.setup.Bootstrap;
@ -54,13 +37,28 @@ import org.apache.commons.lang3.StringUtils;
import org.eclipse.jetty.servlet.ErrorPageErrorHandler; import org.eclipse.jetty.servlet.ErrorPageErrorHandler;
import org.glassfish.jersey.media.multipart.MultiPartFeature; import org.glassfish.jersey.media.multipart.MultiPartFeature;
import org.glassfish.jersey.server.ServerProperties; import org.glassfish.jersey.server.ServerProperties;
import org.skife.jdbi.v2.DBI; import org.jdbi.v3.core.Jdbi;
import org.openmetadata.catalog.events.EventFilter;
import org.openmetadata.catalog.exception.CatalogGenericExceptionMapper;
import org.openmetadata.catalog.exception.ConstraintViolationExceptionMapper;
import org.openmetadata.catalog.exception.JsonMappingExceptionMapper;
import org.openmetadata.catalog.module.CatalogModule;
import org.openmetadata.catalog.resources.CollectionRegistry;
import org.openmetadata.catalog.resources.config.ConfigResource;
import org.openmetadata.catalog.resources.search.SearchResource;
import org.openmetadata.catalog.security.AuthenticationConfiguration;
import org.openmetadata.catalog.security.AuthorizerConfiguration;
import org.openmetadata.catalog.security.CatalogAuthorizer;
import org.openmetadata.catalog.security.NoopAuthorizer;
import org.openmetadata.catalog.security.NoopFilter;
import org.openmetadata.catalog.security.auth.CatalogSecurityContextRequestFilter;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import javax.ws.rs.container.ContainerRequestFilter; import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.container.ContainerResponseFilter; import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
/** /**
@ -75,17 +73,15 @@ public class CatalogApplication extends Application<CatalogApplicationConfig> {
@Override @Override
public void run(CatalogApplicationConfig catalogConfig, Environment environment) throws ClassNotFoundException, public void run(CatalogApplicationConfig catalogConfig, Environment environment) throws ClassNotFoundException,
IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException { IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException,
IOException {
final DBIFactory factory = new DBIFactory(); final JdbiFactory factory = new JdbiFactory();
final DBI jdbi = factory.build(environment, catalogConfig.getDataSourceFactory(), "mysql"); final Jdbi jdbi = factory.build(environment, catalogConfig.getDataSourceFactory(), "mysql3");
final JdbiFactory factory3 = new JdbiFactory();
final Jdbi jdbi3 = factory3.build(environment, catalogConfig.getDataSourceFactory(), "mysql3");
// Register Authorizer // Register Authorizer
registerAuthorizer(catalogConfig, environment, jdbi3); registerAuthorizer(catalogConfig, environment, jdbi);
// Registering config api // Registering config api
environment.jersey().register(new ConfigResource(catalogConfig)); environment.jersey().register(new ConfigResource(catalogConfig));
@ -104,9 +100,8 @@ public class CatalogApplication extends Application<CatalogApplicationConfig> {
environment.jersey().register(new JsonProcessingExceptionMapper(true)); environment.jersey().register(new JsonProcessingExceptionMapper(true));
environment.jersey().register(new EarlyEofExceptionMapper()); environment.jersey().register(new EarlyEofExceptionMapper());
environment.jersey().register(JsonMappingExceptionMapper.class); environment.jersey().register(JsonMappingExceptionMapper.class);
environment.healthChecks().register("UserDatabaseCheck", new CatalogHealthCheck(catalogConfig, jdbi3)); environment.healthChecks().register("UserDatabaseCheck", new CatalogHealthCheck(catalogConfig, jdbi));
registerResources(catalogConfig, environment, jdbi); registerResources(catalogConfig, environment, jdbi);
registerResources(catalogConfig, environment, jdbi3);
// Register Event Handler // Register Event Handler
registerEventFilter(catalogConfig, environment, jdbi); registerEventFilter(catalogConfig, environment, jdbi);
@ -160,38 +155,14 @@ public class CatalogApplication extends Application<CatalogApplicationConfig> {
injector = Guice.createInjector(new CatalogModule(authorizer)); injector = Guice.createInjector(new CatalogModule(authorizer));
} }
private void registerEventFilter(CatalogApplicationConfig catalogConfig, Environment environment, DBI jdbi) { private void registerEventFilter(CatalogApplicationConfig catalogConfig, Environment environment, Jdbi jdbi) {
if (catalogConfig.getEventHandlerConfiguration() != null) { if (catalogConfig.getEventHandlerConfiguration() != null) {
ContainerResponseFilter eventFilter = new EventFilter(catalogConfig, jdbi); ContainerResponseFilter eventFilter = new EventFilter(catalogConfig, jdbi);
environment.jersey().register(eventFilter); environment.jersey().register(eventFilter);
} }
} }
private void registerResources(CatalogApplicationConfig config, Environment environment, DBI jdbi) { private void registerResources(CatalogApplicationConfig config, Environment environment, Jdbi jdbi) throws IOException {
jdbi.registerContainerFactory(new OptionalContainerFactory());
CollectionRegistry.getInstance().registerResources(jdbi, environment, authorizer);
environment.lifecycle().manage(new Managed() {
@Override
public void start() {
}
@Override
public void stop() {
long startTime = System.currentTimeMillis();
LOG.info("Took " + (System.currentTimeMillis() - startTime) + " ms to close all the services");
}
});
environment.jersey().register(new SearchResource(config.getElasticSearchConfiguration()));
environment.jersey().register(new JsonPatchProvider());
ErrorPageErrorHandler eph = new ErrorPageErrorHandler();
eph.addErrorPage(Response.Status.NOT_FOUND.getStatusCode(), "/");
environment.getApplicationContext().setErrorHandler(eph);
}
private void registerResources(CatalogApplicationConfig config, Environment environment, Jdbi jdbi) {
CollectionRegistry.getInstance().registerResources3(jdbi, environment, authorizer); CollectionRegistry.getInstance().registerResources3(jdbi, environment, authorizer);
environment.lifecycle().manage(new Managed() { environment.lifecycle().manage(new Managed() {

View File

@ -16,12 +16,12 @@
package org.openmetadata.catalog.events; package org.openmetadata.catalog.events;
import org.jdbi.v3.core.Jdbi;
import org.openmetadata.catalog.CatalogApplicationConfig; import org.openmetadata.catalog.CatalogApplicationConfig;
import org.openmetadata.catalog.type.AuditLog; import org.openmetadata.catalog.type.AuditLog;
import org.openmetadata.catalog.jdbi3.AuditLogRepository; import org.openmetadata.catalog.jdbi3.AuditLogRepository;
import org.openmetadata.catalog.type.EntityReference; import org.openmetadata.catalog.type.EntityReference;
import org.openmetadata.catalog.util.EntityUtil; import org.openmetadata.catalog.util.EntityUtil;
import org.skife.jdbi.v2.DBI;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -33,7 +33,7 @@ public class AuditEventHandler implements EventHandler {
private static final Logger LOG = LoggerFactory.getLogger(AuditEventHandler.class); private static final Logger LOG = LoggerFactory.getLogger(AuditEventHandler.class);
private AuditLogRepository auditLogRepository; private AuditLogRepository auditLogRepository;
public void init(CatalogApplicationConfig config, DBI jdbi) { public void init(CatalogApplicationConfig config, Jdbi jdbi) {
this.auditLogRepository = jdbi.onDemand(AuditLogRepository.class); this.auditLogRepository = jdbi.onDemand(AuditLogRepository.class);
} }

View File

@ -23,6 +23,7 @@ import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.RestHighLevelClient;
import org.jdbi.v3.core.Jdbi;
import org.openmetadata.catalog.CatalogApplicationConfig; import org.openmetadata.catalog.CatalogApplicationConfig;
import org.openmetadata.catalog.ElasticSearchConfiguration; import org.openmetadata.catalog.ElasticSearchConfiguration;
import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.Entity;
@ -32,7 +33,6 @@ import org.openmetadata.catalog.entity.data.Table;
import org.openmetadata.catalog.entity.data.Topic; import org.openmetadata.catalog.entity.data.Topic;
import org.openmetadata.catalog.type.Column; import org.openmetadata.catalog.type.Column;
import org.openmetadata.catalog.type.EntityReference; import org.openmetadata.catalog.type.EntityReference;
import org.skife.jdbi.v2.DBI;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -60,7 +60,7 @@ public class ElasticSearchEventHandler implements EventHandler {
} }
}; };
public void init(CatalogApplicationConfig config, DBI jdbi) { public void init(CatalogApplicationConfig config, Jdbi jdbi) {
ElasticSearchConfiguration esConfig = config.getElasticSearchConfiguration(); ElasticSearchConfiguration esConfig = config.getElasticSearchConfiguration();
this.client = new RestHighLevelClient( this.client = new RestHighLevelClient(
RestClient.builder(new HttpHost(esConfig.getHost(), esConfig.getPort(), "http")) RestClient.builder(new HttpHost(esConfig.getHost(), esConfig.getPort(), "http"))

View File

@ -16,9 +16,9 @@
package org.openmetadata.catalog.events; package org.openmetadata.catalog.events;
import org.jdbi.v3.core.Jdbi;
import org.openmetadata.catalog.CatalogApplicationConfig; import org.openmetadata.catalog.CatalogApplicationConfig;
import org.openmetadata.catalog.util.ParallelStreamUtil; import org.openmetadata.catalog.util.ParallelStreamUtil;
import org.skife.jdbi.v2.DBI;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -41,13 +41,13 @@ public class EventFilter implements ContainerResponseFilter {
private final ForkJoinPool forkJoinPool; private final ForkJoinPool forkJoinPool;
private final List<EventHandler> eventHandlers; private final List<EventHandler> eventHandlers;
public EventFilter(CatalogApplicationConfig config, DBI jdbi) { public EventFilter(CatalogApplicationConfig config, Jdbi jdbi) {
this.forkJoinPool = new ForkJoinPool(FORK_JOIN_POOL_PARALLELISM); this.forkJoinPool = new ForkJoinPool(FORK_JOIN_POOL_PARALLELISM);
this.eventHandlers = new ArrayList<>(); this.eventHandlers = new ArrayList<>();
registerEventHandlers(config, jdbi); registerEventHandlers(config, jdbi);
} }
private void registerEventHandlers(CatalogApplicationConfig config, DBI jdbi) { private void registerEventHandlers(CatalogApplicationConfig config, Jdbi jdbi) {
try { try {
Set<String> eventHandlerClassNames = config.getEventHandlerConfiguration().getEventHandlerClassNames(); Set<String> eventHandlerClassNames = config.getEventHandlerConfiguration().getEventHandlerClassNames();
for (String eventHandlerClassName : eventHandlerClassNames) { for (String eventHandlerClassName : eventHandlerClassNames) {

View File

@ -16,14 +16,14 @@
package org.openmetadata.catalog.events; package org.openmetadata.catalog.events;
import org.jdbi.v3.core.Jdbi;
import org.openmetadata.catalog.CatalogApplicationConfig; import org.openmetadata.catalog.CatalogApplicationConfig;
import org.skife.jdbi.v2.DBI;
import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext; import javax.ws.rs.container.ContainerResponseContext;
public interface EventHandler { public interface EventHandler {
void init(CatalogApplicationConfig config, DBI jdbi); void init(CatalogApplicationConfig config, Jdbi jdbi);
Void process(ContainerRequestContext requestContext, ContainerResponseContext responseContext); Void process(ContainerRequestContext requestContext, ContainerResponseContext responseContext);
void close(); void close();
} }

View File

@ -17,9 +17,9 @@
package org.openmetadata.catalog.exception; package org.openmetadata.catalog.exception;
import io.dropwizard.jersey.errors.ErrorMessage; import io.dropwizard.jersey.errors.ErrorMessage;
import org.jdbi.v3.core.statement.UnableToExecuteStatementException;
import org.openmetadata.catalog.security.AuthenticationException; import org.openmetadata.catalog.security.AuthenticationException;
import org.openmetadata.catalog.security.AuthorizationException; import org.openmetadata.catalog.security.AuthorizationException;
import org.skife.jdbi.v2.exceptions.UnableToExecuteStatementException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -63,15 +63,6 @@ public class CatalogGenericExceptionMapper implements ExceptionMapper<Throwable>
.entity(new ErrorMessage(CONFLICT.getStatusCode(), CatalogExceptionMessage.ENTITY_ALREADY_EXISTS)) .entity(new ErrorMessage(CONFLICT.getStatusCode(), CatalogExceptionMessage.ENTITY_ALREADY_EXISTS))
.build(); .build();
}
} else if (ex instanceof org.jdbi.v3.core.statement.UnableToExecuteStatementException) {
// TODO remove this
if (ex.getCause() instanceof SQLIntegrityConstraintViolationException) {
return Response.status(CONFLICT)
.type(MediaType.APPLICATION_JSON_TYPE)
.entity(new ErrorMessage(CONFLICT.getStatusCode(), CatalogExceptionMessage.ENTITY_ALREADY_EXISTS))
.build();
} }
} else if (ex instanceof EntityNotFoundException) { } else if (ex instanceof EntityNotFoundException) {
return Response.status(NOT_FOUND) return Response.status(NOT_FOUND)

View File

@ -16,15 +16,15 @@
package org.openmetadata.catalog.jdbi3; package org.openmetadata.catalog.jdbi3;
import org.jdbi.v3.sqlobject.CreateSqlObject;
import org.jdbi.v3.sqlobject.customizer.Bind;
import org.jdbi.v3.sqlobject.statement.SqlQuery;
import org.jdbi.v3.sqlobject.statement.SqlUpdate;
import org.jdbi.v3.sqlobject.transaction.Transaction;
import org.openmetadata.catalog.type.AuditLog; import org.openmetadata.catalog.type.AuditLog;
import org.openmetadata.catalog.util.EntityUtil; import org.openmetadata.catalog.util.EntityUtil;
import org.openmetadata.catalog.util.JsonUtils; import org.openmetadata.catalog.util.JsonUtils;
import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.CreateSqlObject;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.SqlUpdate;
import org.skife.jdbi.v2.sqlobject.Transaction;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;

View File

@ -17,13 +17,12 @@
package org.openmetadata.catalog.jdbi3; package org.openmetadata.catalog.jdbi3;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import org.jdbi.v3.sqlobject.transaction.Transaction;
import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.Entity;
import org.openmetadata.catalog.entity.data.Chart; import org.openmetadata.catalog.entity.data.Chart;
import org.openmetadata.catalog.entity.data.Table;
import org.openmetadata.catalog.entity.services.DashboardService; import org.openmetadata.catalog.entity.services.DashboardService;
import org.openmetadata.catalog.exception.EntityNotFoundException; import org.openmetadata.catalog.exception.EntityNotFoundException;
import org.openmetadata.catalog.resources.charts.ChartResource; import org.openmetadata.catalog.resources.charts.ChartResource;
import org.openmetadata.catalog.resources.charts.ChartResource.ChartList;
import org.openmetadata.catalog.type.EntityReference; import org.openmetadata.catalog.type.EntityReference;
import org.openmetadata.catalog.type.TagLabel; import org.openmetadata.catalog.type.TagLabel;
import org.openmetadata.catalog.util.EntityInterface; import org.openmetadata.catalog.util.EntityInterface;
@ -33,10 +32,6 @@ import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.JsonUtils; import org.openmetadata.catalog.util.JsonUtils;
import org.openmetadata.catalog.util.RestUtil.PutResponse; import org.openmetadata.catalog.util.RestUtil.PutResponse;
import org.openmetadata.catalog.util.ResultList; import org.openmetadata.catalog.util.ResultList;
import org.openmetadata.common.utils.CipherText;
import org.skife.jdbi.v2.sqlobject.Transaction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.json.JsonPatch; import javax.json.JsonPatch;
import javax.ws.rs.core.Response.Status; import javax.ws.rs.core.Response.Status;
@ -44,7 +39,6 @@ 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.text.ParseException;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@ -53,7 +47,6 @@ import java.util.UUID;
import static org.openmetadata.catalog.exception.CatalogExceptionMessage.entityNotFound; import static org.openmetadata.catalog.exception.CatalogExceptionMessage.entityNotFound;
public class ChartRepositoryHelper implements EntityRepository<Chart>{ public class ChartRepositoryHelper implements EntityRepository<Chart>{
private static final Logger LOG = LoggerFactory.getLogger(ChartRepositoryHelper.class);
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");

View File

@ -17,6 +17,7 @@
package org.openmetadata.catalog.jdbi3; package org.openmetadata.catalog.jdbi3;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import org.jdbi.v3.sqlobject.transaction.Transaction;
import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.Entity;
import org.openmetadata.catalog.entity.data.Chart; import org.openmetadata.catalog.entity.data.Chart;
import org.openmetadata.catalog.entity.data.Dashboard; import org.openmetadata.catalog.entity.data.Dashboard;
@ -33,7 +34,6 @@ import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.JsonUtils; import org.openmetadata.catalog.util.JsonUtils;
import org.openmetadata.catalog.util.RestUtil.PutResponse; import org.openmetadata.catalog.util.RestUtil.PutResponse;
import org.openmetadata.catalog.util.ResultList; import org.openmetadata.catalog.util.ResultList;
import org.skife.jdbi.v2.sqlobject.Transaction;
import javax.json.JsonPatch; import javax.json.JsonPatch;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;

View File

@ -17,6 +17,7 @@
package org.openmetadata.catalog.jdbi3; package org.openmetadata.catalog.jdbi3;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import org.jdbi.v3.sqlobject.transaction.Transaction;
import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.Entity;
import org.openmetadata.catalog.entity.services.DashboardService; import org.openmetadata.catalog.entity.services.DashboardService;
import org.openmetadata.catalog.exception.EntityNotFoundException; import org.openmetadata.catalog.exception.EntityNotFoundException;
@ -25,7 +26,6 @@ import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.JsonUtils; import org.openmetadata.catalog.util.JsonUtils;
import org.openmetadata.catalog.util.ResultList; import org.openmetadata.catalog.util.ResultList;
import org.openmetadata.catalog.util.Utils; import org.openmetadata.catalog.util.Utils;
import org.skife.jdbi.v2.sqlobject.Transaction;
import java.io.IOException; import java.io.IOException;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;

View File

@ -17,6 +17,7 @@
package org.openmetadata.catalog.jdbi3; package org.openmetadata.catalog.jdbi3;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import org.jdbi.v3.sqlobject.transaction.Transaction;
import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.Entity;
import org.openmetadata.catalog.entity.data.Database; import org.openmetadata.catalog.entity.data.Database;
import org.openmetadata.catalog.entity.data.Table; import org.openmetadata.catalog.entity.data.Table;
@ -24,7 +25,6 @@ import org.openmetadata.catalog.entity.services.DatabaseService;
import org.openmetadata.catalog.exception.EntityNotFoundException; import org.openmetadata.catalog.exception.EntityNotFoundException;
import org.openmetadata.catalog.resources.databases.DatabaseResource; import org.openmetadata.catalog.resources.databases.DatabaseResource;
import org.openmetadata.catalog.resources.databases.DatabaseResource.DatabaseList; import org.openmetadata.catalog.resources.databases.DatabaseResource.DatabaseList;
import org.openmetadata.catalog.resources.databases.TableResource.TableList;
import org.openmetadata.catalog.type.EntityReference; import org.openmetadata.catalog.type.EntityReference;
import org.openmetadata.catalog.type.TagLabel; import org.openmetadata.catalog.type.TagLabel;
import org.openmetadata.catalog.util.EntityInterface; import org.openmetadata.catalog.util.EntityInterface;
@ -34,7 +34,6 @@ import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.JsonUtils; import org.openmetadata.catalog.util.JsonUtils;
import org.openmetadata.catalog.util.RestUtil.PutResponse; import org.openmetadata.catalog.util.RestUtil.PutResponse;
import org.openmetadata.catalog.util.ResultList; import org.openmetadata.catalog.util.ResultList;
import org.skife.jdbi.v2.sqlobject.Transaction;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;

View File

@ -17,6 +17,7 @@
package org.openmetadata.catalog.jdbi3; package org.openmetadata.catalog.jdbi3;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import org.jdbi.v3.sqlobject.transaction.Transaction;
import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.Entity;
import org.openmetadata.catalog.entity.services.DatabaseService; import org.openmetadata.catalog.entity.services.DatabaseService;
import org.openmetadata.catalog.exception.EntityNotFoundException; import org.openmetadata.catalog.exception.EntityNotFoundException;
@ -26,7 +27,6 @@ import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.JsonUtils; import org.openmetadata.catalog.util.JsonUtils;
import org.openmetadata.catalog.util.ResultList; import org.openmetadata.catalog.util.ResultList;
import org.openmetadata.catalog.util.Utils; import org.openmetadata.catalog.util.Utils;
import org.skife.jdbi.v2.sqlobject.Transaction;
import java.io.IOException; import java.io.IOException;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;

View File

@ -16,6 +16,7 @@
package org.openmetadata.catalog.jdbi3; package org.openmetadata.catalog.jdbi3;
import org.jdbi.v3.sqlobject.transaction.Transaction;
import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.Entity;
import org.openmetadata.catalog.entity.feed.Thread; import org.openmetadata.catalog.entity.feed.Thread;
import org.openmetadata.catalog.resources.feeds.FeedUtil; import org.openmetadata.catalog.resources.feeds.FeedUtil;
@ -26,7 +27,6 @@ import org.openmetadata.catalog.type.EntityReference;
import org.openmetadata.catalog.type.Post; import org.openmetadata.catalog.type.Post;
import org.openmetadata.catalog.util.EntityUtil; import org.openmetadata.catalog.util.EntityUtil;
import org.openmetadata.catalog.util.JsonUtils; import org.openmetadata.catalog.util.JsonUtils;
import org.skife.jdbi.v2.sqlobject.Transaction;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;

View File

@ -18,8 +18,6 @@ package org.openmetadata.catalog.jdbi3;
import org.jdbi.v3.core.mapper.RowMapper; import org.jdbi.v3.core.mapper.RowMapper;
import org.openmetadata.catalog.type.EntityReference; import org.openmetadata.catalog.type.EntityReference;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;

View File

@ -17,6 +17,7 @@
package org.openmetadata.catalog.jdbi3; package org.openmetadata.catalog.jdbi3;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import org.jdbi.v3.sqlobject.transaction.Transaction;
import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.Entity;
import org.openmetadata.catalog.entity.services.MessagingService; import org.openmetadata.catalog.entity.services.MessagingService;
import org.openmetadata.catalog.exception.EntityNotFoundException; import org.openmetadata.catalog.exception.EntityNotFoundException;
@ -25,7 +26,6 @@ import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.JsonUtils; import org.openmetadata.catalog.util.JsonUtils;
import org.openmetadata.catalog.util.ResultList; import org.openmetadata.catalog.util.ResultList;
import org.openmetadata.catalog.util.Utils; import org.openmetadata.catalog.util.Utils;
import org.skife.jdbi.v2.sqlobject.Transaction;
import java.io.IOException; import java.io.IOException;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;

View File

@ -17,6 +17,7 @@
package org.openmetadata.catalog.jdbi3; package org.openmetadata.catalog.jdbi3;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import org.jdbi.v3.sqlobject.transaction.Transaction;
import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.Entity;
import org.openmetadata.catalog.entity.data.Metrics; import org.openmetadata.catalog.entity.data.Metrics;
import org.openmetadata.catalog.resources.metrics.MetricsResource; import org.openmetadata.catalog.resources.metrics.MetricsResource;
@ -29,7 +30,6 @@ import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.JsonUtils; import org.openmetadata.catalog.util.JsonUtils;
import org.openmetadata.catalog.util.RestUtil.PutResponse; import org.openmetadata.catalog.util.RestUtil.PutResponse;
import org.openmetadata.catalog.util.ResultList; import org.openmetadata.catalog.util.ResultList;
import org.skife.jdbi.v2.sqlobject.Transaction;
import javax.ws.rs.core.Response.Status; import javax.ws.rs.core.Response.Status;
import java.io.IOException; import java.io.IOException;

View File

@ -17,6 +17,7 @@
package org.openmetadata.catalog.jdbi3; package org.openmetadata.catalog.jdbi3;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import org.jdbi.v3.sqlobject.transaction.Transaction;
import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.Entity;
import org.openmetadata.catalog.entity.data.Model; import org.openmetadata.catalog.entity.data.Model;
import org.openmetadata.catalog.exception.EntityNotFoundException; import org.openmetadata.catalog.exception.EntityNotFoundException;
@ -32,7 +33,6 @@ import org.openmetadata.catalog.util.JsonUtils;
import org.openmetadata.catalog.util.RestUtil.PutResponse; import org.openmetadata.catalog.util.RestUtil.PutResponse;
import org.openmetadata.catalog.util.ResultList; import org.openmetadata.catalog.util.ResultList;
import org.openmetadata.common.utils.CipherText; import org.openmetadata.common.utils.CipherText;
import org.skife.jdbi.v2.sqlobject.Transaction;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;

View File

@ -17,6 +17,7 @@
package org.openmetadata.catalog.jdbi3; package org.openmetadata.catalog.jdbi3;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import org.jdbi.v3.sqlobject.transaction.Transaction;
import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.Entity;
import org.openmetadata.catalog.entity.data.Pipeline; import org.openmetadata.catalog.entity.data.Pipeline;
import org.openmetadata.catalog.entity.data.Task; import org.openmetadata.catalog.entity.data.Task;
@ -33,7 +34,6 @@ import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.RestUtil.PutResponse; import org.openmetadata.catalog.util.RestUtil.PutResponse;
import org.openmetadata.catalog.util.ResultList; import org.openmetadata.catalog.util.ResultList;
import org.openmetadata.common.utils.CipherText; import org.openmetadata.common.utils.CipherText;
import org.skife.jdbi.v2.sqlobject.Transaction;
import javax.json.JsonPatch; import javax.json.JsonPatch;
import javax.ws.rs.core.Response.Status; import javax.ws.rs.core.Response.Status;

View File

@ -17,6 +17,7 @@
package org.openmetadata.catalog.jdbi3; package org.openmetadata.catalog.jdbi3;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import org.jdbi.v3.sqlobject.transaction.Transaction;
import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.Entity;
import org.openmetadata.catalog.entity.services.PipelineService; import org.openmetadata.catalog.entity.services.PipelineService;
import org.openmetadata.catalog.exception.EntityNotFoundException; import org.openmetadata.catalog.exception.EntityNotFoundException;
@ -25,7 +26,6 @@ import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.JsonUtils; import org.openmetadata.catalog.util.JsonUtils;
import org.openmetadata.catalog.util.ResultList; import org.openmetadata.catalog.util.ResultList;
import org.openmetadata.catalog.util.Utils; import org.openmetadata.catalog.util.Utils;
import org.skife.jdbi.v2.sqlobject.Transaction;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;

View File

@ -16,6 +16,7 @@
package org.openmetadata.catalog.jdbi3; package org.openmetadata.catalog.jdbi3;
import org.jdbi.v3.sqlobject.transaction.Transaction;
import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.Entity;
import org.openmetadata.catalog.entity.data.Report; import org.openmetadata.catalog.entity.data.Report;
import org.openmetadata.catalog.resources.reports.ReportResource; import org.openmetadata.catalog.resources.reports.ReportResource;
@ -25,7 +26,6 @@ import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.JsonUtils; import org.openmetadata.catalog.util.JsonUtils;
import org.openmetadata.catalog.util.RestUtil.PutResponse; import org.openmetadata.catalog.util.RestUtil.PutResponse;
import org.openmetadata.catalog.util.ResultList; import org.openmetadata.catalog.util.ResultList;
import org.skife.jdbi.v2.sqlobject.Transaction;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status; import javax.ws.rs.core.Response.Status;

View File

@ -1,11 +1,11 @@
package org.openmetadata.catalog.jdbi3; package org.openmetadata.catalog.jdbi3;
import org.openmetadata.catalog.jdbi3.TagRepository.TagLabelMapper; import org.jdbi.v3.sqlobject.config.RegisterRowMapper;
import org.jdbi.v3.sqlobject.customizer.Bind;
import org.jdbi.v3.sqlobject.statement.SqlQuery;
import org.jdbi.v3.sqlobject.statement.SqlUpdate;
import org.openmetadata.catalog.jdbi3.TagRepositoryHelper.TagLabelMapper;
import org.openmetadata.catalog.type.TagLabel; import org.openmetadata.catalog.type.TagLabel;
import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.SqlUpdate;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
import java.util.List; import java.util.List;
@ -16,7 +16,7 @@ import java.util.List;
* Tags are stored as JSON in {@code tag} table. All the attributes of tags are stored as JSON document except * Tags are stored as JSON in {@code tag} table. All the attributes of tags are stored as JSON document except
* href, usageCount and children tags which are constructed on the fly as needed. * href, usageCount and children tags which are constructed on the fly as needed.
*/ */
@RegisterMapper(TagLabelMapper.class) @RegisterRowMapper(TagLabelMapper.class)
public interface TagDAO { public interface TagDAO {
@SqlUpdate("INSERT INTO tag_category (json) VALUES (:json)") @SqlUpdate("INSERT INTO tag_category (json) VALUES (:json)")
void insertCategory(@Bind("json") String json); void insertCategory(@Bind("json") String json);

View File

@ -0,0 +1,24 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.openmetadata.catalog.jdbi3;
import org.jdbi.v3.sqlobject.CreateSqlObject;
public interface TagRepository3 {
@CreateSqlObject
TagDAO tagDAO();
}

View File

@ -17,6 +17,8 @@
package org.openmetadata.catalog.jdbi3; package org.openmetadata.catalog.jdbi3;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import org.jdbi.v3.core.mapper.RowMapper;
import org.jdbi.v3.sqlobject.transaction.Transaction;
import org.openmetadata.catalog.resources.tags.TagResource; import org.openmetadata.catalog.resources.tags.TagResource;
import org.openmetadata.catalog.type.Tag; import org.openmetadata.catalog.type.Tag;
import org.openmetadata.catalog.type.TagCategory; import org.openmetadata.catalog.type.TagCategory;
@ -24,10 +26,6 @@ import org.openmetadata.catalog.type.TagLabel;
import org.openmetadata.catalog.util.EntityUtil; import org.openmetadata.catalog.util.EntityUtil;
import org.openmetadata.catalog.util.EntityUtil.Fields; import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.JsonUtils; import org.openmetadata.catalog.util.JsonUtils;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.sqlobject.CreateSqlObject;
import org.skife.jdbi.v2.sqlobject.Transaction;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -39,18 +37,19 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
public abstract class TagRepository { public class TagRepositoryHelper {
public static final Logger LOG = LoggerFactory.getLogger(TagRepository.class); public static final Logger LOG = LoggerFactory.getLogger(TagRepositoryHelper.class);
@CreateSqlObject public TagRepositoryHelper(TagRepository3 repo3) { this.repo3 = repo3; }
abstract TagDAO tagDAO();
private final TagRepository3 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
*/ */
@Transaction @Transaction
public void initCategory(TagCategory category) throws JsonProcessingException { public void initCategory(TagCategory category) throws JsonProcessingException {
String json = tagDAO().findCategory(category.getName()); String json = repo3.tagDAO().findCategory(category.getName());
if (json == null) { if (json == null) {
TagResource.LOG.info("Tag category {} is not initialized", category.getName()); TagResource.LOG.info("Tag category {} is not initialized", category.getName());
createCategoryInternal(category); createCategoryInternal(category);
@ -72,24 +71,24 @@ public abstract class TagRepository {
@Transaction @Transaction
public Tag createPrimaryTag(String category, Tag tag) throws IOException { public Tag createPrimaryTag(String category, Tag tag) throws IOException {
// Validate category // Validate category
EntityUtil.validate(category, tagDAO().findCategory(category), TagCategory.class); EntityUtil.validate(category, repo3.tagDAO().findCategory(category), TagCategory.class);
return createTagInternal(category, tag); return createTagInternal(category, tag);
} }
@Transaction @Transaction
public Tag createSecondaryTag(String category, String primaryTag, Tag tag) throws IOException { public Tag createSecondaryTag(String category, String primaryTag, Tag tag) throws IOException {
// Validate category // Validate category
EntityUtil.validate(category, tagDAO().findCategory(category), TagCategory.class); EntityUtil.validate(category, repo3.tagDAO().findCategory(category), TagCategory.class);
String primaryTagFQN = category + "." + primaryTag; String primaryTagFQN = category + "." + primaryTag;
EntityUtil.validate(primaryTag, tagDAO().findTag(primaryTagFQN), Tag.class); EntityUtil.validate(primaryTag, repo3.tagDAO().findTag(primaryTagFQN), Tag.class);
return createTagInternal(primaryTagFQN, tag); return createTagInternal(primaryTagFQN, tag);
} }
@Transaction @Transaction
public List<TagCategory> listCategories(Fields fields) throws IOException { public List<TagCategory> listCategories(Fields fields) throws IOException {
List<String> jsons = tagDAO().listCategories(); List<String> jsons = repo3.tagDAO().listCategories();
List<TagCategory> list = new ArrayList<>(); List<TagCategory> list = new ArrayList<>();
for (String json : jsons) { for (String json : jsons) {
TagCategory category = JsonUtils.readValue(json, TagCategory.class); TagCategory category = JsonUtils.readValue(json, TagCategory.class);
@ -100,7 +99,7 @@ public abstract class TagRepository {
@Transaction @Transaction
public TagCategory getCategory(String categoryName, Fields fields) throws IOException { public TagCategory getCategory(String categoryName, Fields fields) throws IOException {
TagCategory category = EntityUtil.validate(categoryName, tagDAO().findCategory(categoryName), TagCategory.class); TagCategory category = EntityUtil.validate(categoryName, repo3.tagDAO().findCategory(categoryName), TagCategory.class);
category = setFields(category, fields); category = setFields(category, fields);
return populateCategoryTags(category, fields); return populateCategoryTags(category, fields);
} }
@ -108,17 +107,17 @@ public abstract class TagRepository {
@Transaction @Transaction
public Tag getTag(String category, String fqn, Fields fields) throws IOException { public Tag getTag(String category, String fqn, Fields fields) throws IOException {
// Validate category // Validate category
EntityUtil.validate(category, tagDAO().findCategory(category), TagCategory.class); EntityUtil.validate(category, repo3.tagDAO().findCategory(category), TagCategory.class);
// Get tags that match <category>.<tagName> // Get tags that match <category>.<tagName>
Tag tag = setFields(EntityUtil.validate(fqn, tagDAO().findTag(fqn), Tag.class), fields); Tag tag = setFields(EntityUtil.validate(fqn, repo3.tagDAO().findTag(fqn), Tag.class), fields);
return populateChildrenTags(tag, fields); return populateChildrenTags(tag, fields);
} }
@Transaction @Transaction
public TagCategory updateCategory(String category, TagCategory updated) throws IOException { public TagCategory updateCategory(String category, TagCategory updated) throws IOException {
// Validate category // Validate category
TagCategory original = EntityUtil.validate(category, tagDAO().findCategory(category), TagCategory.class); TagCategory original = EntityUtil.validate(category, repo3.tagDAO().findCategory(category), TagCategory.class);
if (!original.getName().equals(updated.getName())) { if (!original.getName().equals(updated.getName())) {
// Category name changed - update tag names starting from category and all the children tags // Category name changed - update tag names starting from category and all the children tags
LOG.info("Tag category name changed from {} to {}", original.getName(), updated.getName()); LOG.info("Tag category name changed from {} to {}", original.getName(), updated.getName());
@ -127,7 +126,7 @@ public abstract class TagRepository {
} }
original.setDescription(updated.getDescription()); original.setDescription(updated.getDescription());
original.setCategoryType(updated.getCategoryType()); original.setCategoryType(updated.getCategoryType());
tagDAO().updateCategory(category, JsonUtils.pojoToJson(original)); repo3.tagDAO().updateCategory(category, JsonUtils.pojoToJson(original));
// Populate response fields // Populate response fields
return populateCategoryTags(original, null); return populateCategoryTags(original, null);
@ -136,7 +135,7 @@ public abstract class TagRepository {
@Transaction @Transaction
public Tag updatePrimaryTag(String categoryName, String primaryTag, Tag updated) throws IOException { public Tag updatePrimaryTag(String categoryName, String primaryTag, Tag updated) throws IOException {
// Validate categoryName // Validate categoryName
EntityUtil.validate(categoryName, tagDAO().findCategory(categoryName), TagCategory.class); EntityUtil.validate(categoryName, repo3.tagDAO().findCategory(categoryName), TagCategory.class);
return updateTag(categoryName, primaryTag, updated); return updateTag(categoryName, primaryTag, updated);
} }
@ -144,7 +143,7 @@ public abstract class TagRepository {
public Tag updateSecondaryTag(String categoryName, String primaryTag, String secondaryTag, Tag updated) public Tag updateSecondaryTag(String categoryName, String primaryTag, String secondaryTag, Tag updated)
throws IOException { throws IOException {
// Validate categoryName // Validate categoryName
EntityUtil.validate(categoryName, tagDAO().findCategory(categoryName), TagCategory.class); EntityUtil.validate(categoryName, repo3.tagDAO().findCategory(categoryName), TagCategory.class);
String fqnPrefix = categoryName + "." + primaryTag; String fqnPrefix = categoryName + "." + primaryTag;
return updateTag(fqnPrefix, secondaryTag, updated); return updateTag(fqnPrefix, secondaryTag, updated);
} }
@ -152,7 +151,7 @@ public abstract class TagRepository {
private Tag updateTag(String fqnPrefix, String tagName, Tag updated) throws IOException { private Tag updateTag(String fqnPrefix, String tagName, Tag updated) throws IOException {
// Validate tag that needs to be updated exists // Validate tag that needs to be updated exists
String originalFQN = fqnPrefix + "." + tagName; String originalFQN = fqnPrefix + "." + tagName;
Tag original = EntityUtil.validate(originalFQN, tagDAO().findTag(originalFQN), Tag.class); Tag original = EntityUtil.validate(originalFQN, repo3.tagDAO().findTag(originalFQN), Tag.class);
if (!original.getName().equals(updated.getName())) { if (!original.getName().equals(updated.getName())) {
// Tag name changed // Tag name changed
@ -162,7 +161,7 @@ public abstract class TagRepository {
original.withName(updated.getName()).withFullyQualifiedName(updatedFQN); original.withName(updated.getName()).withFullyQualifiedName(updatedFQN);
} }
original.withDescription(updated.getDescription()).withAssociatedTags(updated.getAssociatedTags()); original.withDescription(updated.getDescription()).withAssociatedTags(updated.getAssociatedTags());
tagDAO().updateTag(originalFQN, JsonUtils.pojoToJson(original)); repo3.tagDAO().updateTag(originalFQN, JsonUtils.pojoToJson(original));
// Populate children // Populate children
return populateChildrenTags(original, null); return populateChildrenTags(original, null);
@ -179,7 +178,7 @@ public abstract class TagRepository {
*/ */
private void updateChildrenTagNames(String prefix, String newPrefix) throws IOException { private void updateChildrenTagNames(String prefix, String newPrefix) throws IOException {
// Update the fully qualified names of all the primary and secondary tags // Update the fully qualified names of all the primary and secondary tags
List<String> groupJsons = tagDAO().listChildrenTags(prefix); List<String> groupJsons = repo3.tagDAO().listChildrenTags(prefix);
for (String json : groupJsons) { for (String json : groupJsons) {
Tag tag = JsonUtils.readValue(json, Tag.class); Tag tag = JsonUtils.readValue(json, Tag.class);
@ -187,7 +186,7 @@ public abstract class TagRepository {
String newFQN = oldFQN.replace(prefix, newPrefix); String newFQN = oldFQN.replace(prefix, newPrefix);
LOG.info("Replacing tag fqn from {} to {}", oldFQN, newFQN); LOG.info("Replacing tag fqn from {} to {}", oldFQN, newFQN);
tag.setFullyQualifiedName(oldFQN.replace(prefix, newPrefix)); tag.setFullyQualifiedName(oldFQN.replace(prefix, newPrefix));
tagDAO().updateTag(oldFQN, JsonUtils.pojoToJson(tag)); repo3.tagDAO().updateTag(oldFQN, JsonUtils.pojoToJson(tag));
updateChildrenTagNames(oldFQN, newFQN); updateChildrenTagNames(oldFQN, newFQN);
} }
} }
@ -195,7 +194,7 @@ public abstract class TagRepository {
private TagCategory createCategoryInternal(TagCategory category) throws JsonProcessingException { private TagCategory createCategoryInternal(TagCategory category) throws JsonProcessingException {
List<Tag> primaryTags = category.getChildren(); List<Tag> primaryTags = category.getChildren();
category.setChildren(null); // Children are not stored as json and are constructed on the fly category.setChildren(null); // Children are not stored as json and are constructed on the fly
tagDAO().insertCategory(JsonUtils.pojoToJson(category)); repo3.tagDAO().insertCategory(JsonUtils.pojoToJson(category));
LOG.info("Create a new tag category {}", category.getName()); LOG.info("Create a new tag category {}", category.getName());
return category.withChildren(primaryTags); return category.withChildren(primaryTags);
} }
@ -205,7 +204,7 @@ public abstract class TagRepository {
List<Tag> tags = tag.getChildren(); List<Tag> tags = tag.getChildren();
tag.setChildren(null); // Children of tag group are not stored as json but constructed on the fly tag.setChildren(null); // Children of tag group are not stored as json but constructed on the fly
tag.setFullyQualifiedName(parentFQN + "." + tag.getName()); tag.setFullyQualifiedName(parentFQN + "." + tag.getName());
tagDAO().insertTag(JsonUtils.pojoToJson(tag)); repo3.tagDAO().insertTag(JsonUtils.pojoToJson(tag));
tag.setChildren(tags); tag.setChildren(tags);
TagResource.LOG.info("Added tag {}", tag.getFullyQualifiedName()); TagResource.LOG.info("Added tag {}", tag.getFullyQualifiedName());
@ -214,7 +213,7 @@ public abstract class TagRepository {
children.setChildren(null); // No children allowed for the leaf tag children.setChildren(null); // No children allowed for the leaf tag
children.setFullyQualifiedName(children.getFullyQualifiedName() + "." + children.getName()); children.setFullyQualifiedName(children.getFullyQualifiedName() + "." + children.getName());
TagResource.LOG.info("Added tag {}", children.getFullyQualifiedName()); TagResource.LOG.info("Added tag {}", children.getFullyQualifiedName());
tagDAO().insertTag(JsonUtils.pojoToJson(children)); repo3.tagDAO().insertTag(JsonUtils.pojoToJson(children));
} }
return tag; return tag;
} }
@ -222,7 +221,7 @@ public abstract class TagRepository {
// Populate TagCategory with children details // Populate TagCategory with children details
private TagCategory populateCategoryTags(TagCategory category, Fields fields) throws IOException { private TagCategory populateCategoryTags(TagCategory category, Fields fields) throws IOException {
// Get tags under that match category prefix // Get tags under that match category prefix
List<String> groupJsons = tagDAO().listChildrenTags(category.getName()); List<String> groupJsons = repo3.tagDAO().listChildrenTags(category.getName());
List<Tag> tagList = new ArrayList<>(); List<Tag> tagList = new ArrayList<>();
for (String json : groupJsons) { for (String json : groupJsons) {
@ -234,7 +233,7 @@ public abstract class TagRepository {
// Populate the children tags for a given tag // Populate the children tags for a given tag
private Tag populateChildrenTags(Tag tag, Fields fields) throws IOException { private Tag populateChildrenTags(Tag tag, Fields fields) throws IOException {
List<String> tagJsons = tagDAO().listChildrenTags(tag.getFullyQualifiedName()); List<String> tagJsons = repo3.tagDAO().listChildrenTags(tag.getFullyQualifiedName());
// Get tags under the given tag // Get tags under the given tag
List<Tag> tagList = new ArrayList<>(); List<Tag> tagList = new ArrayList<>();
@ -260,16 +259,16 @@ public abstract class TagRepository {
} }
private Integer getUsageCount(TagCategory category) { private Integer getUsageCount(TagCategory category) {
return tagDAO().getTagCount(category.getName()); return repo3.tagDAO().getTagCount(category.getName());
} }
private Integer getUsageCount(Tag tag) { private Integer getUsageCount(Tag tag) {
return tagDAO().getTagCount(tag.getFullyQualifiedName()); return repo3.tagDAO().getTagCount(tag.getFullyQualifiedName());
} }
public static class TagLabelMapper implements ResultSetMapper<TagLabel> { public static class TagLabelMapper implements RowMapper<TagLabel> {
@Override @Override
public TagLabel map(int i, ResultSet r, StatementContext statementContext) throws SQLException { public TagLabel map(ResultSet r, org.jdbi.v3.core.statement.StatementContext ctx) throws SQLException {
return new TagLabel().withLabelType(TagLabel.LabelType.values()[r.getInt("labelType")]) return new TagLabel().withLabelType(TagLabel.LabelType.values()[r.getInt("labelType")])
.withState(TagLabel.State.values()[r.getInt("state")]) .withState(TagLabel.State.values()[r.getInt("state")])
.withTagFQN(r.getString("tagFQN")); .withTagFQN(r.getString("tagFQN"));

View File

@ -1,12 +1,6 @@
package org.openmetadata.catalog.jdbi3; package org.openmetadata.catalog.jdbi3;
import org.openmetadata.catalog.entity.data.Table;
import org.openmetadata.catalog.entity.data.Task; import org.openmetadata.catalog.entity.data.Task;
import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.SqlUpdate;
import java.util.List;
public interface TaskDAO3 extends EntityDAO<Task>{ public interface TaskDAO3 extends EntityDAO<Task>{
@Override @Override

View File

@ -17,6 +17,7 @@
package org.openmetadata.catalog.jdbi3; package org.openmetadata.catalog.jdbi3;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import org.jdbi.v3.sqlobject.transaction.Transaction;
import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.Entity;
import org.openmetadata.catalog.entity.data.Task; import org.openmetadata.catalog.entity.data.Task;
import org.openmetadata.catalog.entity.services.PipelineService; import org.openmetadata.catalog.entity.services.PipelineService;
@ -33,9 +34,6 @@ import org.openmetadata.catalog.util.JsonUtils;
import org.openmetadata.catalog.util.RestUtil.PutResponse; import org.openmetadata.catalog.util.RestUtil.PutResponse;
import org.openmetadata.catalog.util.ResultList; import org.openmetadata.catalog.util.ResultList;
import org.openmetadata.common.utils.CipherText; import org.openmetadata.common.utils.CipherText;
import org.skife.jdbi.v2.sqlobject.Transaction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.json.JsonPatch; import javax.json.JsonPatch;
import javax.ws.rs.core.Response.Status; import javax.ws.rs.core.Response.Status;

View File

@ -17,6 +17,7 @@
package org.openmetadata.catalog.jdbi3; package org.openmetadata.catalog.jdbi3;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import org.jdbi.v3.sqlobject.transaction.Transaction;
import org.openmetadata.catalog.entity.teams.Team; import org.openmetadata.catalog.entity.teams.Team;
import org.openmetadata.catalog.entity.teams.User; import org.openmetadata.catalog.entity.teams.User;
import org.openmetadata.catalog.exception.CatalogExceptionMessage; import org.openmetadata.catalog.exception.CatalogExceptionMessage;
@ -32,9 +33,6 @@ import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.JsonUtils; import org.openmetadata.catalog.util.JsonUtils;
import org.openmetadata.catalog.util.ResultList; import org.openmetadata.catalog.util.ResultList;
import org.openmetadata.common.utils.CipherText; import org.openmetadata.common.utils.CipherText;
import org.skife.jdbi.v2.sqlobject.Transaction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.json.JsonPatch; import javax.json.JsonPatch;
import java.io.IOException; import java.io.IOException;
@ -50,7 +48,6 @@ import java.util.UUID;
import static org.openmetadata.catalog.jdbi3.Relationship.OWNS; import static org.openmetadata.catalog.jdbi3.Relationship.OWNS;
public class TeamRepositoryHelper implements EntityRepository<Team> { public class TeamRepositoryHelper implements EntityRepository<Team> {
private static final Logger LOG = LoggerFactory.getLogger(TeamResource.class);
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) { this.repo3 = repo3; } public TeamRepositoryHelper(TeamRepository3 repo3) { this.repo3 = repo3; }

View File

@ -18,7 +18,6 @@ package org.openmetadata.catalog.jdbi3;
import org.jdbi.v3.core.mapper.RowMapper; import org.jdbi.v3.core.mapper.RowMapper;
import org.openmetadata.catalog.type.EntityReference; import org.openmetadata.catalog.type.EntityReference;
import org.skife.jdbi.v2.StatementContext;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;

View File

@ -17,6 +17,7 @@
package org.openmetadata.catalog.jdbi3; package org.openmetadata.catalog.jdbi3;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import org.jdbi.v3.sqlobject.transaction.Transaction;
import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.Entity;
import org.openmetadata.catalog.entity.data.Topic; import org.openmetadata.catalog.entity.data.Topic;
import org.openmetadata.catalog.entity.services.MessagingService; import org.openmetadata.catalog.entity.services.MessagingService;
@ -32,7 +33,6 @@ import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.JsonUtils; import org.openmetadata.catalog.util.JsonUtils;
import org.openmetadata.catalog.util.RestUtil.PutResponse; import org.openmetadata.catalog.util.RestUtil.PutResponse;
import org.openmetadata.catalog.util.ResultList; import org.openmetadata.catalog.util.ResultList;
import org.skife.jdbi.v2.sqlobject.Transaction;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;

View File

@ -16,6 +16,9 @@
package org.openmetadata.catalog.jdbi3; package org.openmetadata.catalog.jdbi3;
import org.jdbi.v3.core.mapper.RowMapper;
import org.jdbi.v3.core.statement.StatementContext;
import org.jdbi.v3.sqlobject.transaction.Transaction;
import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.Entity;
import org.openmetadata.catalog.type.DailyCount; import org.openmetadata.catalog.type.DailyCount;
import org.openmetadata.catalog.type.EntityReference; import org.openmetadata.catalog.type.EntityReference;
@ -23,9 +26,6 @@ import org.openmetadata.catalog.type.EntityUsage;
import org.openmetadata.catalog.type.UsageDetails; import org.openmetadata.catalog.type.UsageDetails;
import org.openmetadata.catalog.type.UsageStats; import org.openmetadata.catalog.type.UsageStats;
import org.openmetadata.catalog.util.EntityUtil; import org.openmetadata.catalog.util.EntityUtil;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.sqlobject.Transaction;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -96,9 +96,9 @@ public class UsageRepositoryHelper {
} }
} }
public static class UsageDetailsMapper implements ResultSetMapper<UsageDetails> { public static class UsageDetailsMapper implements RowMapper<UsageDetails> {
@Override @Override
public UsageDetails map(int i, ResultSet r, StatementContext statementContext) throws SQLException { public UsageDetails map(ResultSet r, StatementContext ctx) throws SQLException {
UsageStats dailyStats = new UsageStats().withCount(r.getInt("count1")).withPercentileRank(r.getDouble( UsageStats dailyStats = new UsageStats().withCount(r.getInt("count1")).withPercentileRank(r.getDouble(
"percentile1")); "percentile1"));
UsageStats weeklyStats = new UsageStats().withCount(r.getInt("count7")).withPercentileRank(r.getDouble( UsageStats weeklyStats = new UsageStats().withCount(r.getInt("count7")).withPercentileRank(r.getDouble(

View File

@ -34,13 +34,13 @@ public interface UserDAO3 extends EntityDAO<User> {
"ORDER BY name DESC " + // Pagination ordering by user name "ORDER BY name DESC " + // Pagination ordering by user name
"LIMIT :limit" + "LIMIT :limit" +
") last_rows_subquery ORDER BY name") ") last_rows_subquery ORDER BY name")
List<String> listBefore(@org.skife.jdbi.v2.sqlobject.Bind("limit") int limit, @org.skife.jdbi.v2.sqlobject.Bind("before") String before); List<String> listBefore(@Bind("limit") int limit, @Bind("before") String before);
@SqlQuery("SELECT json FROM user_entity WHERE " + @SqlQuery("SELECT json FROM user_entity WHERE " +
"name > :after " + // Pagination by user name "name > :after " + // Pagination by user name
"ORDER BY name " + // Pagination ordering by user name "ORDER BY name " + // Pagination ordering by user name
"LIMIT :limit") "LIMIT :limit")
List<String> listAfter(@org.skife.jdbi.v2.sqlobject.Bind("limit") int limit, @org.skife.jdbi.v2.sqlobject.Bind("after") String after); List<String> listAfter(@Bind("limit") int limit, @Bind("after") String after);
@SqlQuery("SELECT count(*) FROM user_entity") @SqlQuery("SELECT count(*) FROM user_entity")
int listCount(); int listCount();

View File

@ -17,6 +17,7 @@
package org.openmetadata.catalog.jdbi3; package org.openmetadata.catalog.jdbi3;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import org.jdbi.v3.sqlobject.transaction.Transaction;
import org.openmetadata.catalog.entity.teams.Team; import org.openmetadata.catalog.entity.teams.Team;
import org.openmetadata.catalog.entity.teams.User; import org.openmetadata.catalog.entity.teams.User;
import org.openmetadata.catalog.exception.CatalogExceptionMessage; import org.openmetadata.catalog.exception.CatalogExceptionMessage;
@ -32,7 +33,6 @@ import org.openmetadata.catalog.util.JsonUtils;
import org.openmetadata.catalog.util.RestUtil; import org.openmetadata.catalog.util.RestUtil;
import org.openmetadata.catalog.util.RestUtil.PutResponse; import org.openmetadata.catalog.util.RestUtil.PutResponse;
import org.openmetadata.catalog.util.ResultList; import org.openmetadata.catalog.util.ResultList;
import org.skife.jdbi.v2.sqlobject.Transaction;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;

View File

@ -49,6 +49,8 @@ import org.openmetadata.catalog.jdbi3.ReportRepository3;
import org.openmetadata.catalog.jdbi3.ReportRepositoryHelper; import org.openmetadata.catalog.jdbi3.ReportRepositoryHelper;
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.jdbi3.TagRepository3;
import org.openmetadata.catalog.jdbi3.TagRepositoryHelper;
import org.openmetadata.catalog.jdbi3.TaskRepository3; import org.openmetadata.catalog.jdbi3.TaskRepository3;
import org.openmetadata.catalog.jdbi3.TaskRepositoryHelper; import org.openmetadata.catalog.jdbi3.TaskRepositoryHelper;
import org.openmetadata.catalog.jdbi3.TeamRepository3; import org.openmetadata.catalog.jdbi3.TeamRepository3;
@ -74,6 +76,7 @@ import org.openmetadata.catalog.resources.services.dashboard.DashboardServiceRes
import org.openmetadata.catalog.resources.services.database.DatabaseServiceResource; import org.openmetadata.catalog.resources.services.database.DatabaseServiceResource;
import org.openmetadata.catalog.resources.services.messaging.MessagingServiceResource; import org.openmetadata.catalog.resources.services.messaging.MessagingServiceResource;
import org.openmetadata.catalog.resources.services.pipeline.PipelineServiceResource; 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.tasks.TaskResource;
import org.openmetadata.catalog.resources.teams.TeamResource; import org.openmetadata.catalog.resources.teams.TeamResource;
import org.openmetadata.catalog.resources.teams.UserResource; import org.openmetadata.catalog.resources.teams.UserResource;
@ -84,13 +87,13 @@ 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.openmetadata.catalog.security.CatalogAuthorizer;
import org.reflections.Reflections; import org.reflections.Reflections;
import org.skife.jdbi.v2.DBI;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; 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;
@ -203,7 +206,7 @@ public final class CollectionRegistry {
/** /**
* Register resources from CollectionRegistry * Register resources from CollectionRegistry
*/ */
public void registerResources(DBI jdbi, Environment environment, CatalogAuthorizer authorizer) { public void registerResources(Jdbi jdbi, Environment environment, CatalogAuthorizer authorizer) {
// Build list of ResourceDescriptors // Build list of ResourceDescriptors
for (Map.Entry<String, CollectionDetails> e : collectionMap.entrySet()) { for (Map.Entry<String, CollectionDetails> e : collectionMap.entrySet()) {
CollectionDetails details = e.getValue(); CollectionDetails details = e.getValue();
@ -222,7 +225,7 @@ public final class CollectionRegistry {
/** /**
* Register resources from CollectionRegistry * Register resources from CollectionRegistry
*/ */
public void registerResources3(Jdbi jdbi, Environment environment, CatalogAuthorizer authorizer) { public void registerResources3(Jdbi jdbi, Environment environment, CatalogAuthorizer authorizer) throws IOException {
LOG.info("Initializing jdbi3"); LOG.info("Initializing jdbi3");
final TableRepository3 daoObject = jdbi.onDemand(TableRepository3.class); final TableRepository3 daoObject = jdbi.onDemand(TableRepository3.class);
@ -359,6 +362,14 @@ public final class CollectionRegistry {
environment.jersey().register(usageResource); environment.jersey().register(usageResource);
LOG.info("Registering {}", 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"); LOG.info("Initialized jdbi3");
} }
@ -403,7 +414,7 @@ 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(DBI jdbi, String resourceClass, String repositoryClass, private static Object createResource(Jdbi jdbi, String resourceClass, String repositoryClass,
CatalogAuthorizer authorizer) throws CatalogAuthorizer authorizer) throws
ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException,
InstantiationException { InstantiationException {

View File

@ -25,7 +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.TagRepository; 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;
import org.openmetadata.catalog.security.SecurityUtil; import org.openmetadata.catalog.security.SecurityUtil;
@ -67,11 +67,11 @@ 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.TagRepository") //@Collection(name = "tags", repositoryClass = "org.openmetadata.catalog.jdbi3.TagRepositoryHelper")
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/";
private final TagRepository dao; private final TagRepositoryHelper dao;
private final CatalogAuthorizer authorizer; private final CatalogAuthorizer authorizer;
static class CategoryList extends ResultList<TagCategory> { static class CategoryList extends ResultList<TagCategory> {
@ -85,8 +85,8 @@ public class TagResource {
} }
@Inject @Inject
public TagResource(TagRepository dao, CatalogAuthorizer authorizer) { public TagResource(TagRepositoryHelper dao, CatalogAuthorizer authorizer) {
Objects.requireNonNull(dao, "TagRepository must not be null"); Objects.requireNonNull(dao, "TagRepositoryHelper must not be null");
this.dao = dao; this.dao = dao;
this.authorizer = authorizer; this.authorizer = authorizer;
} }

View File

@ -117,9 +117,5 @@
<groupId>com.fasterxml.jackson.datatype</groupId> <groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr353</artifactId> <artifactId>jackson-datatype-jsr353</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.jdbi</groupId>
<artifactId>jdbi</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -42,7 +42,6 @@
<slf4j.version>1.7.31</slf4j.version> <slf4j.version>1.7.31</slf4j.version>
<jackson.version>2.12.3</jackson.version> <jackson.version>2.12.3</jackson.version>
<dropwizard.version>2.0.23</dropwizard.version> <dropwizard.version>2.0.23</dropwizard.version>
<dropwizard-jdbi.version>2.0.0-rc9</dropwizard-jdbi.version>
<dropwizard-jdbi3.version>2.0.25</dropwizard-jdbi3.version> <dropwizard-jdbi3.version>2.0.25</dropwizard-jdbi3.version>
<jersey-media-multipart.version>2.33</jersey-media-multipart.version> <jersey-media-multipart.version>2.33</jersey-media-multipart.version>
<jersey-client.version>2.33</jersey-client.version> <jersey-client.version>2.33</jersey-client.version>
@ -61,7 +60,6 @@
<jaxb.version>2.3.2</jaxb.version> <jaxb.version>2.3.2</jaxb.version>
<wiremock-standalone.version>2.15.0</wiremock-standalone.version> <wiremock-standalone.version>2.15.0</wiremock-standalone.version>
<jacoco-plugin.version>0.8.6</jacoco-plugin.version> <jacoco-plugin.version>0.8.6</jacoco-plugin.version>
<jdbi.version>2.78</jdbi.version>
<jdbi3.version>3.23.0</jdbi3.version> <jdbi3.version>3.23.0</jdbi3.version>
<commons-cli.version>1.4</commons-cli.version> <commons-cli.version>1.4</commons-cli.version>
<commons-io.version>2.10.0</commons-io.version> <commons-io.version>2.10.0</commons-io.version>
@ -144,11 +142,6 @@
<artifactId>dropwizard-jdbi3</artifactId> <artifactId>dropwizard-jdbi3</artifactId>
<version>${dropwizard-jdbi3.version}</version> <version>${dropwizard-jdbi3.version}</version>
</dependency> </dependency>
<dependency>
<groupId>org.jdbi</groupId>
<artifactId>jdbi</artifactId>
<version>${jdbi.version}</version>
</dependency>
<dependency> <dependency>
<groupId>org.jdbi</groupId> <groupId>org.jdbi</groupId>
<artifactId>jdbi3-core</artifactId> <artifactId>jdbi3-core</artifactId>