diff --git a/catalog-rest-service/pom.xml b/catalog-rest-service/pom.xml index 06730187e57..fa84afe0d95 100644 --- a/catalog-rest-service/pom.xml +++ b/catalog-rest-service/pom.xml @@ -31,10 +31,6 @@ io.dropwizard dropwizard-core - - io.dropwizard - dropwizard-jdbi - io.dropwizard dropwizard-jdbi3 diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/CatalogApplication.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/CatalogApplication.java index 57c752cd6bf..af51da73f32 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/CatalogApplication.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/CatalogApplication.java @@ -18,31 +18,14 @@ package org.openmetadata.catalog; import com.google.inject.Guice; import com.google.inject.Injector; +import io.dropwizard.Application; +import io.dropwizard.assets.AssetsBundle; import io.dropwizard.health.conf.HealthConfiguration; import io.dropwizard.health.core.HealthCheckBundle; 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.LoggingExceptionMapper; +import io.dropwizard.jersey.jackson.JsonProcessingExceptionMapper; import io.dropwizard.lifecycle.Managed; import io.dropwizard.server.DefaultServerFactory; import io.dropwizard.setup.Bootstrap; @@ -54,13 +37,28 @@ import org.apache.commons.lang3.StringUtils; import org.eclipse.jetty.servlet.ErrorPageErrorHandler; import org.glassfish.jersey.media.multipart.MultiPartFeature; 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.LoggerFactory; import javax.ws.rs.container.ContainerRequestFilter; import javax.ws.rs.container.ContainerResponseFilter; import javax.ws.rs.core.Response; +import java.io.IOException; import java.lang.reflect.InvocationTargetException; /** @@ -75,17 +73,15 @@ public class CatalogApplication extends Application { @Override public void run(CatalogApplicationConfig catalogConfig, Environment environment) throws ClassNotFoundException, - IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException { + IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException, + IOException { - final DBIFactory factory = new DBIFactory(); - final DBI jdbi = factory.build(environment, catalogConfig.getDataSourceFactory(), "mysql"); - - final JdbiFactory factory3 = new JdbiFactory(); - final Jdbi jdbi3 = factory3.build(environment, catalogConfig.getDataSourceFactory(), "mysql3"); + final JdbiFactory factory = new JdbiFactory(); + final Jdbi jdbi = factory.build(environment, catalogConfig.getDataSourceFactory(), "mysql3"); // Register Authorizer - registerAuthorizer(catalogConfig, environment, jdbi3); + registerAuthorizer(catalogConfig, environment, jdbi); // Registering config api environment.jersey().register(new ConfigResource(catalogConfig)); @@ -104,9 +100,8 @@ public class CatalogApplication extends Application { environment.jersey().register(new JsonProcessingExceptionMapper(true)); environment.jersey().register(new EarlyEofExceptionMapper()); 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, jdbi3); // Register Event Handler registerEventFilter(catalogConfig, environment, jdbi); @@ -160,38 +155,14 @@ public class CatalogApplication extends Application { 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) { ContainerResponseFilter eventFilter = new EventFilter(catalogConfig, jdbi); environment.jersey().register(eventFilter); } } - private void registerResources(CatalogApplicationConfig config, Environment environment, DBI jdbi) { - - 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) { + private void registerResources(CatalogApplicationConfig config, Environment environment, Jdbi jdbi) throws IOException { CollectionRegistry.getInstance().registerResources3(jdbi, environment, authorizer); environment.lifecycle().manage(new Managed() { diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/events/AuditEventHandler.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/events/AuditEventHandler.java index 3615c3eb9dc..ac9c7583c42 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/events/AuditEventHandler.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/events/AuditEventHandler.java @@ -16,12 +16,12 @@ package org.openmetadata.catalog.events; +import org.jdbi.v3.core.Jdbi; import org.openmetadata.catalog.CatalogApplicationConfig; import org.openmetadata.catalog.type.AuditLog; import org.openmetadata.catalog.jdbi3.AuditLogRepository; import org.openmetadata.catalog.type.EntityReference; import org.openmetadata.catalog.util.EntityUtil; -import org.skife.jdbi.v2.DBI; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,7 +33,7 @@ public class AuditEventHandler implements EventHandler { private static final Logger LOG = LoggerFactory.getLogger(AuditEventHandler.class); private AuditLogRepository auditLogRepository; - public void init(CatalogApplicationConfig config, DBI jdbi) { + public void init(CatalogApplicationConfig config, Jdbi jdbi) { this.auditLogRepository = jdbi.onDemand(AuditLogRepository.class); } diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/events/ElasticSearchEventHandler.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/events/ElasticSearchEventHandler.java index cbf6b323fbf..d352834fa05 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/events/ElasticSearchEventHandler.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/events/ElasticSearchEventHandler.java @@ -23,6 +23,7 @@ import org.elasticsearch.action.update.UpdateResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; +import org.jdbi.v3.core.Jdbi; import org.openmetadata.catalog.CatalogApplicationConfig; import org.openmetadata.catalog.ElasticSearchConfiguration; 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.type.Column; import org.openmetadata.catalog.type.EntityReference; -import org.skife.jdbi.v2.DBI; import org.slf4j.Logger; 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(); this.client = new RestHighLevelClient( RestClient.builder(new HttpHost(esConfig.getHost(), esConfig.getPort(), "http")) diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/events/EventFilter.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/events/EventFilter.java index b62ceb0b0d9..12d1139f39c 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/events/EventFilter.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/events/EventFilter.java @@ -16,9 +16,9 @@ package org.openmetadata.catalog.events; +import org.jdbi.v3.core.Jdbi; import org.openmetadata.catalog.CatalogApplicationConfig; import org.openmetadata.catalog.util.ParallelStreamUtil; -import org.skife.jdbi.v2.DBI; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -41,13 +41,13 @@ public class EventFilter implements ContainerResponseFilter { private final ForkJoinPool forkJoinPool; private final List eventHandlers; - public EventFilter(CatalogApplicationConfig config, DBI jdbi) { + public EventFilter(CatalogApplicationConfig config, Jdbi jdbi) { this.forkJoinPool = new ForkJoinPool(FORK_JOIN_POOL_PARALLELISM); this.eventHandlers = new ArrayList<>(); registerEventHandlers(config, jdbi); } - private void registerEventHandlers(CatalogApplicationConfig config, DBI jdbi) { + private void registerEventHandlers(CatalogApplicationConfig config, Jdbi jdbi) { try { Set eventHandlerClassNames = config.getEventHandlerConfiguration().getEventHandlerClassNames(); for (String eventHandlerClassName : eventHandlerClassNames) { diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/events/EventHandler.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/events/EventHandler.java index a60f827af44..49351067260 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/events/EventHandler.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/events/EventHandler.java @@ -16,14 +16,14 @@ package org.openmetadata.catalog.events; +import org.jdbi.v3.core.Jdbi; import org.openmetadata.catalog.CatalogApplicationConfig; -import org.skife.jdbi.v2.DBI; import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.container.ContainerResponseContext; public interface EventHandler { - void init(CatalogApplicationConfig config, DBI jdbi); + void init(CatalogApplicationConfig config, Jdbi jdbi); Void process(ContainerRequestContext requestContext, ContainerResponseContext responseContext); void close(); } diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/exception/CatalogGenericExceptionMapper.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/exception/CatalogGenericExceptionMapper.java index 4b09d19fb6d..020062474de 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/exception/CatalogGenericExceptionMapper.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/exception/CatalogGenericExceptionMapper.java @@ -17,9 +17,9 @@ package org.openmetadata.catalog.exception; import io.dropwizard.jersey.errors.ErrorMessage; +import org.jdbi.v3.core.statement.UnableToExecuteStatementException; import org.openmetadata.catalog.security.AuthenticationException; import org.openmetadata.catalog.security.AuthorizationException; -import org.skife.jdbi.v2.exceptions.UnableToExecuteStatementException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -63,15 +63,6 @@ public class CatalogGenericExceptionMapper implements ExceptionMapper .entity(new ErrorMessage(CONFLICT.getStatusCode(), CatalogExceptionMessage.ENTITY_ALREADY_EXISTS)) .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) { return Response.status(NOT_FOUND) diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/AuditLogRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/AuditLogRepository.java index 7029ad30876..f1692fe5af1 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/AuditLogRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/AuditLogRepository.java @@ -16,15 +16,15 @@ 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.util.EntityUtil; 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.LoggerFactory; diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ChartRepositoryHelper.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ChartRepositoryHelper.java index 0aedc0d2ec4..2d97daf4696 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ChartRepositoryHelper.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ChartRepositoryHelper.java @@ -17,13 +17,12 @@ package org.openmetadata.catalog.jdbi3; import com.fasterxml.jackson.core.JsonProcessingException; +import org.jdbi.v3.sqlobject.transaction.Transaction; import org.openmetadata.catalog.Entity; 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.exception.EntityNotFoundException; 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.TagLabel; 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.RestUtil.PutResponse; 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.ws.rs.core.Response.Status; @@ -44,7 +39,6 @@ import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.GeneralSecurityException; import java.text.ParseException; -import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Objects; @@ -53,7 +47,6 @@ import java.util.UUID; import static org.openmetadata.catalog.exception.CatalogExceptionMessage.entityNotFound; public class ChartRepositoryHelper implements EntityRepository{ - 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_PATCH_FIELDS = new Fields(ChartResource.FIELD_LIST, "owner,service,tags"); diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DashboardRepositoryHelper.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DashboardRepositoryHelper.java index 7667825b847..4de3685fac5 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DashboardRepositoryHelper.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DashboardRepositoryHelper.java @@ -17,6 +17,7 @@ package org.openmetadata.catalog.jdbi3; import com.fasterxml.jackson.core.JsonProcessingException; +import org.jdbi.v3.sqlobject.transaction.Transaction; import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.entity.data.Chart; 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.RestUtil.PutResponse; import org.openmetadata.catalog.util.ResultList; -import org.skife.jdbi.v2.sqlobject.Transaction; import javax.json.JsonPatch; import javax.ws.rs.core.Response; diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DashboardServiceRepositoryHelper.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DashboardServiceRepositoryHelper.java index 352d829ad94..bdc357f4298 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DashboardServiceRepositoryHelper.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DashboardServiceRepositoryHelper.java @@ -17,6 +17,7 @@ package org.openmetadata.catalog.jdbi3; import com.fasterxml.jackson.core.JsonProcessingException; +import org.jdbi.v3.sqlobject.transaction.Transaction; import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.entity.services.DashboardService; 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.ResultList; import org.openmetadata.catalog.util.Utils; -import org.skife.jdbi.v2.sqlobject.Transaction; import java.io.IOException; import java.io.UnsupportedEncodingException; diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseRepositoryHelper.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseRepositoryHelper.java index c61ffa34382..5777a33cf1c 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseRepositoryHelper.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseRepositoryHelper.java @@ -17,6 +17,7 @@ package org.openmetadata.catalog.jdbi3; import com.fasterxml.jackson.core.JsonProcessingException; +import org.jdbi.v3.sqlobject.transaction.Transaction; import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.entity.data.Database; 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.resources.databases.DatabaseResource; 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.TagLabel; 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.RestUtil.PutResponse; import org.openmetadata.catalog.util.ResultList; -import org.skife.jdbi.v2.sqlobject.Transaction; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseServiceRepositoryHelper.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseServiceRepositoryHelper.java index e1268ce2932..e6f41f13c5e 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseServiceRepositoryHelper.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseServiceRepositoryHelper.java @@ -17,6 +17,7 @@ package org.openmetadata.catalog.jdbi3; import com.fasterxml.jackson.core.JsonProcessingException; +import org.jdbi.v3.sqlobject.transaction.Transaction; import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.entity.services.DatabaseService; 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.ResultList; import org.openmetadata.catalog.util.Utils; -import org.skife.jdbi.v2.sqlobject.Transaction; import java.io.IOException; import java.io.UnsupportedEncodingException; diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/FeedRepositoryHelper.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/FeedRepositoryHelper.java index e2cf0f6ef80..1936b1997ee 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/FeedRepositoryHelper.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/FeedRepositoryHelper.java @@ -16,6 +16,7 @@ package org.openmetadata.catalog.jdbi3; +import org.jdbi.v3.sqlobject.transaction.Transaction; import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.entity.feed.Thread; 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.util.EntityUtil; import org.openmetadata.catalog.util.JsonUtils; -import org.skife.jdbi.v2.sqlobject.Transaction; import java.io.IOException; import java.util.ArrayList; diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/FromEntityReferenceMapper3.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/FromEntityReferenceMapper3.java index 70fb2b10850..2a41c49070e 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/FromEntityReferenceMapper3.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/FromEntityReferenceMapper3.java @@ -18,8 +18,6 @@ package org.openmetadata.catalog.jdbi3; import org.jdbi.v3.core.mapper.RowMapper; 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.SQLException; diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/MessagingServiceRepositoryHelper.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/MessagingServiceRepositoryHelper.java index 5899dadb888..e6ac202420c 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/MessagingServiceRepositoryHelper.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/MessagingServiceRepositoryHelper.java @@ -17,6 +17,7 @@ package org.openmetadata.catalog.jdbi3; import com.fasterxml.jackson.core.JsonProcessingException; +import org.jdbi.v3.sqlobject.transaction.Transaction; import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.entity.services.MessagingService; 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.ResultList; import org.openmetadata.catalog.util.Utils; -import org.skife.jdbi.v2.sqlobject.Transaction; import java.io.IOException; import java.io.UnsupportedEncodingException; diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/MetricsRepositoryHelper.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/MetricsRepositoryHelper.java index ecfd70d6e20..5e151cfa4a6 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/MetricsRepositoryHelper.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/MetricsRepositoryHelper.java @@ -17,6 +17,7 @@ package org.openmetadata.catalog.jdbi3; import com.fasterxml.jackson.core.JsonProcessingException; +import org.jdbi.v3.sqlobject.transaction.Transaction; import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.entity.data.Metrics; 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.RestUtil.PutResponse; import org.openmetadata.catalog.util.ResultList; -import org.skife.jdbi.v2.sqlobject.Transaction; import javax.ws.rs.core.Response.Status; import java.io.IOException; diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ModelRepositoryHelper.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ModelRepositoryHelper.java index 323d6724e39..c6d177b146a 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ModelRepositoryHelper.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ModelRepositoryHelper.java @@ -17,6 +17,7 @@ package org.openmetadata.catalog.jdbi3; import com.fasterxml.jackson.core.JsonProcessingException; +import org.jdbi.v3.sqlobject.transaction.Transaction; import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.entity.data.Model; 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.ResultList; import org.openmetadata.common.utils.CipherText; -import org.skife.jdbi.v2.sqlobject.Transaction; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineRepositoryHelper.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineRepositoryHelper.java index bd193f54ff0..4ee442d4470 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineRepositoryHelper.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineRepositoryHelper.java @@ -17,6 +17,7 @@ package org.openmetadata.catalog.jdbi3; import com.fasterxml.jackson.core.JsonProcessingException; +import org.jdbi.v3.sqlobject.transaction.Transaction; import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.entity.data.Pipeline; 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.ResultList; import org.openmetadata.common.utils.CipherText; -import org.skife.jdbi.v2.sqlobject.Transaction; import javax.json.JsonPatch; import javax.ws.rs.core.Response.Status; diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineServiceRepositoryHelper.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineServiceRepositoryHelper.java index 9d6d7221158..051b3b0d9f8 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineServiceRepositoryHelper.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/PipelineServiceRepositoryHelper.java @@ -17,6 +17,7 @@ package org.openmetadata.catalog.jdbi3; import com.fasterxml.jackson.core.JsonProcessingException; +import org.jdbi.v3.sqlobject.transaction.Transaction; import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.entity.services.PipelineService; 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.ResultList; import org.openmetadata.catalog.util.Utils; -import org.skife.jdbi.v2.sqlobject.Transaction; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ReportRepositoryHelper.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ReportRepositoryHelper.java index 33c2d0b2a6d..367f63609fe 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ReportRepositoryHelper.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ReportRepositoryHelper.java @@ -16,6 +16,7 @@ package org.openmetadata.catalog.jdbi3; +import org.jdbi.v3.sqlobject.transaction.Transaction; import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.entity.data.Report; 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.RestUtil.PutResponse; 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.Status; diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TagDAO.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TagDAO.java index 92f653349b0..b5eafb87dd4 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TagDAO.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TagDAO.java @@ -1,11 +1,11 @@ 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.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; @@ -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 * href, usageCount and children tags which are constructed on the fly as needed. */ -@RegisterMapper(TagLabelMapper.class) +@RegisterRowMapper(TagLabelMapper.class) public interface TagDAO { @SqlUpdate("INSERT INTO tag_category (json) VALUES (:json)") void insertCategory(@Bind("json") String json); diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TagRepository3.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TagRepository3.java new file mode 100644 index 00000000000..aba18b7ae68 --- /dev/null +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TagRepository3.java @@ -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(); +} diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TagRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TagRepositoryHelper.java similarity index 80% rename from catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TagRepository.java rename to catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TagRepositoryHelper.java index d200a5beb8b..c6ba922de23 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TagRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TagRepositoryHelper.java @@ -17,6 +17,8 @@ package org.openmetadata.catalog.jdbi3; 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.type.Tag; 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.Fields; 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.LoggerFactory; @@ -39,18 +37,19 @@ import java.util.Collections; import java.util.List; import java.util.Optional; -public abstract class TagRepository { - public static final Logger LOG = LoggerFactory.getLogger(TagRepository.class); +public class TagRepositoryHelper { + public static final Logger LOG = LoggerFactory.getLogger(TagRepositoryHelper.class); - @CreateSqlObject - abstract TagDAO tagDAO(); + public TagRepositoryHelper(TagRepository3 repo3) { this.repo3 = repo3; } + + private final TagRepository3 repo3; /** * Initialize a category one time when the service comes up for the first time */ @Transaction public void initCategory(TagCategory category) throws JsonProcessingException { - String json = tagDAO().findCategory(category.getName()); + String json = repo3.tagDAO().findCategory(category.getName()); if (json == null) { TagResource.LOG.info("Tag category {} is not initialized", category.getName()); createCategoryInternal(category); @@ -72,24 +71,24 @@ public abstract class TagRepository { @Transaction public Tag createPrimaryTag(String category, Tag tag) throws IOException { // Validate category - EntityUtil.validate(category, tagDAO().findCategory(category), TagCategory.class); + EntityUtil.validate(category, repo3.tagDAO().findCategory(category), TagCategory.class); return createTagInternal(category, tag); } @Transaction public Tag createSecondaryTag(String category, String primaryTag, Tag tag) throws IOException { // Validate category - EntityUtil.validate(category, tagDAO().findCategory(category), TagCategory.class); + EntityUtil.validate(category, repo3.tagDAO().findCategory(category), TagCategory.class); 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); } @Transaction public List listCategories(Fields fields) throws IOException { - List jsons = tagDAO().listCategories(); + List jsons = repo3.tagDAO().listCategories(); List list = new ArrayList<>(); for (String json : jsons) { TagCategory category = JsonUtils.readValue(json, TagCategory.class); @@ -100,7 +99,7 @@ public abstract class TagRepository { @Transaction 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); return populateCategoryTags(category, fields); } @@ -108,17 +107,17 @@ public abstract class TagRepository { @Transaction public Tag getTag(String category, String fqn, Fields fields) throws IOException { // Validate category - EntityUtil.validate(category, tagDAO().findCategory(category), TagCategory.class); + EntityUtil.validate(category, repo3.tagDAO().findCategory(category), TagCategory.class); // Get tags that match . - 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); } @Transaction public TagCategory updateCategory(String category, TagCategory updated) throws IOException { // 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())) { // 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()); @@ -127,7 +126,7 @@ public abstract class TagRepository { } original.setDescription(updated.getDescription()); original.setCategoryType(updated.getCategoryType()); - tagDAO().updateCategory(category, JsonUtils.pojoToJson(original)); + repo3.tagDAO().updateCategory(category, JsonUtils.pojoToJson(original)); // Populate response fields return populateCategoryTags(original, null); @@ -136,7 +135,7 @@ public abstract class TagRepository { @Transaction public Tag updatePrimaryTag(String categoryName, String primaryTag, Tag updated) throws IOException { // Validate categoryName - EntityUtil.validate(categoryName, tagDAO().findCategory(categoryName), TagCategory.class); + EntityUtil.validate(categoryName, repo3.tagDAO().findCategory(categoryName), TagCategory.class); return updateTag(categoryName, primaryTag, updated); } @@ -144,7 +143,7 @@ public abstract class TagRepository { public Tag updateSecondaryTag(String categoryName, String primaryTag, String secondaryTag, Tag updated) throws IOException { // Validate categoryName - EntityUtil.validate(categoryName, tagDAO().findCategory(categoryName), TagCategory.class); + EntityUtil.validate(categoryName, repo3.tagDAO().findCategory(categoryName), TagCategory.class); String fqnPrefix = categoryName + "." + primaryTag; return updateTag(fqnPrefix, secondaryTag, updated); } @@ -152,7 +151,7 @@ public abstract class TagRepository { private Tag updateTag(String fqnPrefix, String tagName, Tag updated) throws IOException { // Validate tag that needs to be updated exists 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())) { // Tag name changed @@ -162,7 +161,7 @@ public abstract class TagRepository { original.withName(updated.getName()).withFullyQualifiedName(updatedFQN); } original.withDescription(updated.getDescription()).withAssociatedTags(updated.getAssociatedTags()); - tagDAO().updateTag(originalFQN, JsonUtils.pojoToJson(original)); + repo3.tagDAO().updateTag(originalFQN, JsonUtils.pojoToJson(original)); // Populate children return populateChildrenTags(original, null); @@ -179,7 +178,7 @@ public abstract class TagRepository { */ private void updateChildrenTagNames(String prefix, String newPrefix) throws IOException { // Update the fully qualified names of all the primary and secondary tags - List groupJsons = tagDAO().listChildrenTags(prefix); + List groupJsons = repo3.tagDAO().listChildrenTags(prefix); for (String json : groupJsons) { Tag tag = JsonUtils.readValue(json, Tag.class); @@ -187,7 +186,7 @@ public abstract class TagRepository { String newFQN = oldFQN.replace(prefix, newPrefix); LOG.info("Replacing tag fqn from {} to {}", oldFQN, newFQN); tag.setFullyQualifiedName(oldFQN.replace(prefix, newPrefix)); - tagDAO().updateTag(oldFQN, JsonUtils.pojoToJson(tag)); + repo3.tagDAO().updateTag(oldFQN, JsonUtils.pojoToJson(tag)); updateChildrenTagNames(oldFQN, newFQN); } } @@ -195,7 +194,7 @@ public abstract class TagRepository { private TagCategory createCategoryInternal(TagCategory category) throws JsonProcessingException { List primaryTags = category.getChildren(); 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()); return category.withChildren(primaryTags); } @@ -205,7 +204,7 @@ public abstract class TagRepository { List tags = tag.getChildren(); tag.setChildren(null); // Children of tag group are not stored as json but constructed on the fly tag.setFullyQualifiedName(parentFQN + "." + tag.getName()); - tagDAO().insertTag(JsonUtils.pojoToJson(tag)); + repo3.tagDAO().insertTag(JsonUtils.pojoToJson(tag)); tag.setChildren(tags); 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.setFullyQualifiedName(children.getFullyQualifiedName() + "." + children.getName()); TagResource.LOG.info("Added tag {}", children.getFullyQualifiedName()); - tagDAO().insertTag(JsonUtils.pojoToJson(children)); + repo3.tagDAO().insertTag(JsonUtils.pojoToJson(children)); } return tag; } @@ -222,7 +221,7 @@ public abstract class TagRepository { // Populate TagCategory with children details private TagCategory populateCategoryTags(TagCategory category, Fields fields) throws IOException { // Get tags under that match category prefix - List groupJsons = tagDAO().listChildrenTags(category.getName()); + List groupJsons = repo3.tagDAO().listChildrenTags(category.getName()); List tagList = new ArrayList<>(); for (String json : groupJsons) { @@ -234,7 +233,7 @@ public abstract class TagRepository { // Populate the children tags for a given tag private Tag populateChildrenTags(Tag tag, Fields fields) throws IOException { - List tagJsons = tagDAO().listChildrenTags(tag.getFullyQualifiedName()); + List tagJsons = repo3.tagDAO().listChildrenTags(tag.getFullyQualifiedName()); // Get tags under the given tag List tagList = new ArrayList<>(); @@ -260,16 +259,16 @@ public abstract class TagRepository { } private Integer getUsageCount(TagCategory category) { - return tagDAO().getTagCount(category.getName()); + return repo3.tagDAO().getTagCount(category.getName()); } private Integer getUsageCount(Tag tag) { - return tagDAO().getTagCount(tag.getFullyQualifiedName()); + return repo3.tagDAO().getTagCount(tag.getFullyQualifiedName()); } - public static class TagLabelMapper implements ResultSetMapper { + public static class TagLabelMapper implements RowMapper { @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")]) .withState(TagLabel.State.values()[r.getInt("state")]) .withTagFQN(r.getString("tagFQN")); diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TaskDAO3.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TaskDAO3.java index 6dad63afed6..d7bf216e64f 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TaskDAO3.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TaskDAO3.java @@ -1,12 +1,6 @@ package org.openmetadata.catalog.jdbi3; -import org.openmetadata.catalog.entity.data.Table; 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{ @Override diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TaskRepositoryHelper.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TaskRepositoryHelper.java index 33f12bc20b3..eb8c700aae4 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TaskRepositoryHelper.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TaskRepositoryHelper.java @@ -17,6 +17,7 @@ package org.openmetadata.catalog.jdbi3; import com.fasterxml.jackson.core.JsonProcessingException; +import org.jdbi.v3.sqlobject.transaction.Transaction; import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.entity.data.Task; 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.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.ws.rs.core.Response.Status; diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TeamRepositoryHelper.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TeamRepositoryHelper.java index fedfbcf5591..bd63b78d152 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TeamRepositoryHelper.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TeamRepositoryHelper.java @@ -17,6 +17,7 @@ package org.openmetadata.catalog.jdbi3; 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.User; 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.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 java.io.IOException; @@ -50,7 +48,6 @@ import java.util.UUID; import static org.openmetadata.catalog.jdbi3.Relationship.OWNS; public class TeamRepositoryHelper implements EntityRepository { - private static final Logger LOG = LoggerFactory.getLogger(TeamResource.class); static final Fields TEAM_PATCH_FIELDS = new Fields(TeamResource.FIELD_LIST, "profile,users"); public TeamRepositoryHelper(TeamRepository3 repo3) { this.repo3 = repo3; } diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ToEntityReferenceMapper3.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ToEntityReferenceMapper3.java index 62b025aa215..9177b1e52b2 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ToEntityReferenceMapper3.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/ToEntityReferenceMapper3.java @@ -18,7 +18,6 @@ package org.openmetadata.catalog.jdbi3; import org.jdbi.v3.core.mapper.RowMapper; import org.openmetadata.catalog.type.EntityReference; -import org.skife.jdbi.v2.StatementContext; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TopicRepositoryHelper.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TopicRepositoryHelper.java index 70f78792871..e453f6c9ccd 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TopicRepositoryHelper.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/TopicRepositoryHelper.java @@ -17,6 +17,7 @@ package org.openmetadata.catalog.jdbi3; import com.fasterxml.jackson.core.JsonProcessingException; +import org.jdbi.v3.sqlobject.transaction.Transaction; import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.entity.data.Topic; 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.RestUtil.PutResponse; import org.openmetadata.catalog.util.ResultList; -import org.skife.jdbi.v2.sqlobject.Transaction; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/UsageRepositoryHelper.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/UsageRepositoryHelper.java index 9eac6e6db1b..1a3e5c9a726 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/UsageRepositoryHelper.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/UsageRepositoryHelper.java @@ -16,6 +16,9 @@ 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.type.DailyCount; 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.UsageStats; 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.LoggerFactory; @@ -96,9 +96,9 @@ public class UsageRepositoryHelper { } } - public static class UsageDetailsMapper implements ResultSetMapper { + public static class UsageDetailsMapper implements RowMapper { @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( "percentile1")); UsageStats weeklyStats = new UsageStats().withCount(r.getInt("count7")).withPercentileRank(r.getDouble( diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/UserDAO3.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/UserDAO3.java index 1b0f2a596e6..1fc8a8e2c3f 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/UserDAO3.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/UserDAO3.java @@ -34,13 +34,13 @@ public interface UserDAO3 extends EntityDAO { "ORDER BY name DESC " + // Pagination ordering by user name "LIMIT :limit" + ") last_rows_subquery ORDER BY name") - List listBefore(@org.skife.jdbi.v2.sqlobject.Bind("limit") int limit, @org.skife.jdbi.v2.sqlobject.Bind("before") String before); + List listBefore(@Bind("limit") int limit, @Bind("before") String before); @SqlQuery("SELECT json FROM user_entity WHERE " + "name > :after " + // Pagination by user name "ORDER BY name " + // Pagination ordering by user name "LIMIT :limit") - List listAfter(@org.skife.jdbi.v2.sqlobject.Bind("limit") int limit, @org.skife.jdbi.v2.sqlobject.Bind("after") String after); + List listAfter(@Bind("limit") int limit, @Bind("after") String after); @SqlQuery("SELECT count(*) FROM user_entity") int listCount(); diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/UserRepositoryHelper.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/UserRepositoryHelper.java index 8332f9fa248..9f1a736aa63 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/UserRepositoryHelper.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/UserRepositoryHelper.java @@ -17,6 +17,7 @@ package org.openmetadata.catalog.jdbi3; 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.User; 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.PutResponse; import org.openmetadata.catalog.util.ResultList; -import org.skife.jdbi.v2.sqlobject.Transaction; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/resources/CollectionRegistry.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/resources/CollectionRegistry.java index 5e982b12fac..665518626e4 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/resources/CollectionRegistry.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/resources/CollectionRegistry.java @@ -49,6 +49,8 @@ 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; @@ -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.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; @@ -84,13 +87,13 @@ import org.openmetadata.catalog.type.CollectionInfo; import org.openmetadata.catalog.util.RestUtil; import org.openmetadata.catalog.security.CatalogAuthorizer; import org.reflections.Reflections; -import org.skife.jdbi.v2.DBI; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.ws.rs.Path; import javax.ws.rs.core.UriInfo; import java.io.File; +import java.io.IOException; import java.lang.annotation.Annotation; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -203,7 +206,7 @@ public final class 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 for (Map.Entry e : collectionMap.entrySet()) { CollectionDetails details = e.getValue(); @@ -222,7 +225,7 @@ public final class 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"); final TableRepository3 daoObject = jdbi.onDemand(TableRepository3.class); @@ -359,6 +362,14 @@ public final class CollectionRegistry { 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"); } @@ -403,7 +414,7 @@ public final class CollectionRegistry { } /** 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 ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException { diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/resources/tags/TagResource.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/resources/tags/TagResource.java index 76edc7e7808..49d4756791e 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/resources/tags/TagResource.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/resources/tags/TagResource.java @@ -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.responses.ApiResponse; 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.security.CatalogAuthorizer; import org.openmetadata.catalog.security.SecurityUtil; @@ -67,11 +67,11 @@ import java.util.regex.Pattern; @Path("/v1/tags") @Api(value = "Tags resources collection", tags = "Tags resources collection") @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 static final Logger LOG = LoggerFactory.getLogger(TagResource.class); public static final String TAG_COLLECTION_PATH = "/v1/tags/"; - private final TagRepository dao; + private final TagRepositoryHelper dao; private final CatalogAuthorizer authorizer; static class CategoryList extends ResultList { @@ -85,8 +85,8 @@ public class TagResource { } @Inject - public TagResource(TagRepository dao, CatalogAuthorizer authorizer) { - Objects.requireNonNull(dao, "TagRepository must not be null"); + public TagResource(TagRepositoryHelper dao, CatalogAuthorizer authorizer) { + Objects.requireNonNull(dao, "TagRepositoryHelper must not be null"); this.dao = dao; this.authorizer = authorizer; } diff --git a/common/pom.xml b/common/pom.xml index c6715797791..a6d27885141 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -117,9 +117,5 @@ com.fasterxml.jackson.datatype jackson-datatype-jsr353 - - org.jdbi - jdbi - diff --git a/pom.xml b/pom.xml index e674fcd4d1d..f5aacd9d27d 100644 --- a/pom.xml +++ b/pom.xml @@ -42,7 +42,6 @@ 1.7.31 2.12.3 2.0.23 - 2.0.0-rc9 2.0.25 2.33 2.33 @@ -61,7 +60,6 @@ 2.3.2 2.15.0 0.8.6 - 2.78 3.23.0 1.4 2.10.0 @@ -144,11 +142,6 @@ dropwizard-jdbi3 ${dropwizard-jdbi3.version} - - org.jdbi - jdbi - ${jdbi.version} - org.jdbi jdbi3-core