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>
<artifactId>dropwizard-core</artifactId>
</dependency>
<dependency>
<groupId>io.dropwizard</groupId>
<artifactId>dropwizard-jdbi</artifactId>
</dependency>
<dependency>
<groupId>io.dropwizard</groupId>
<artifactId>dropwizard-jdbi3</artifactId>

View File

@ -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<CatalogApplicationConfig> {
@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<CatalogApplicationConfig> {
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<CatalogApplicationConfig> {
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() {

View File

@ -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);
}

View File

@ -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"))

View File

@ -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<EventHandler> 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<String> eventHandlerClassNames = config.getEventHandlerConfiguration().getEventHandlerClassNames();
for (String eventHandlerClassName : eventHandlerClassNames) {

View File

@ -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();
}

View File

@ -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<Throwable>
.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)

View File

@ -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;

View File

@ -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<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_PATCH_FIELDS = new Fields(ChartResource.FIELD_LIST, "owner,service,tags");

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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);

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;
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<TagCategory> listCategories(Fields fields) throws IOException {
List<String> jsons = tagDAO().listCategories();
List<String> jsons = repo3.tagDAO().listCategories();
List<TagCategory> 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 <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);
}
@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<String> groupJsons = tagDAO().listChildrenTags(prefix);
List<String> 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<Tag> 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<Tag> 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<String> groupJsons = tagDAO().listChildrenTags(category.getName());
List<String> groupJsons = repo3.tagDAO().listChildrenTags(category.getName());
List<Tag> 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<String> tagJsons = tagDAO().listChildrenTags(tag.getFullyQualifiedName());
List<String> tagJsons = repo3.tagDAO().listChildrenTags(tag.getFullyQualifiedName());
// Get tags under the given tag
List<Tag> 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<TagLabel> {
public static class TagLabelMapper implements RowMapper<TagLabel> {
@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"));

View File

@ -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<Task>{
@Override

View File

@ -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;

View File

@ -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<Team> {
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; }

View File

@ -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;

View File

@ -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;

View File

@ -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<UsageDetails> {
public static class UsageDetailsMapper implements RowMapper<UsageDetails> {
@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(

View File

@ -34,13 +34,13 @@ public interface UserDAO3 extends EntityDAO<User> {
"ORDER BY name DESC " + // Pagination ordering by user name
"LIMIT :limit" +
") 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 " +
"name > :after " + // Pagination by user name
"ORDER BY name " + // Pagination ordering by user name
"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")
int listCount();

View File

@ -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;

View File

@ -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<String, CollectionDetails> 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 {

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.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<TagCategory> {
@ -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;
}

View File

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

View File

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