io.progix.dropwizard.jooq.JooqBundle Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dropwizard-jooq Show documentation
Show all versions of dropwizard-jooq Show documentation
A Dropwizard bundle for jOOQ integration.
The newest version!
package io.progix.dropwizard.jooq;
import io.dropwizard.ConfiguredBundle;
import io.dropwizard.db.DataSourceFactory;
import io.dropwizard.db.DatabaseConfiguration;
import io.dropwizard.db.ManagedDataSource;
import io.dropwizard.setup.Bootstrap;
import io.dropwizard.setup.Environment;
import io.progix.dropwizard.jooq.tenancy.TenantConnectionProvider;
import org.jooq.Configuration;
import org.jooq.impl.DSL;
import org.jooq.impl.DataSourceConnectionProvider;
import org.jooq.impl.DefaultConfiguration;
import org.jooq.impl.DefaultConnectionProvider;
public abstract class JooqBundle implements ConfiguredBundle,
DatabaseConfiguration {
private Configuration configuration;
private TenantConnectionProvider multiTenantConnectionProvider;
@Override
public void initialize(Bootstrap> bootstrap) {
}
@Override
public void run(T dwConfiguration, Environment environment) throws Exception {
final DataSourceFactory dbConfig = getDataSourceFactory(dwConfiguration);
ManagedDataSource dataSource = dbConfig.build(environment.metrics(), "jooq");
this.configuration = new DefaultConfiguration();
this.configuration.set(new DataSourceConnectionProvider(dataSource));
configure(this.configuration);
environment.jersey().register(JooqTransactionalApplicationListener.class);
environment.jersey().register(
new ConfigurationFactoryProvider.Binder(this.configuration, dataSource, multiTenantConnectionProvider));
environment.lifecycle().manage(dataSource);
if (multiTenantConnectionProvider != null) {
environment.lifecycle().manage(multiTenantConnectionProvider);
}
environment.healthChecks().register("jooq", new JooqHealthCheck(
DSL.using(this.configuration.derive(new DefaultConnectionProvider(dataSource.getConnection()))),
dbConfig.getValidationQuery()));
}
public Configuration getConfiguration() {
return configuration.derive();
}
public JooqBundle setMultiTenantConnectionProvider(TenantConnectionProvider multiTenantConnectionProvider) {
this.multiTenantConnectionProvider = multiTenantConnectionProvider;
return this;
}
protected abstract void configure(Configuration configuration);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy