package todowizard.core.doma;
import static com.google.common.base.Preconditions.*;
import io.dropwizard.Configuration;
import io.dropwizard.ConfiguredBundle;
import io.dropwizard.db.DataSourceFactory;
import io.dropwizard.db.DatabaseConfiguration;
import io.dropwizard.setup.Bootstrap;
import io.dropwizard.setup.Environment;
import javax.sql.DataSource;
/**
* Doma2 用の Dropwizard バンドル
*
* @author t_endo
*/
public abstract class DomaBundle<T extends Configuration> implements
ConfiguredBundle<T>, DatabaseConfiguration<T> {
private final String dataSourceName;
private DomaConfig domaConfig;
public DomaBundle(String dataSourceName) {
this.dataSourceName = checkNotNull(dataSourceName);
}
/**
* {@inheritDoc}
*/
@Override
public void initialize(Bootstrap<?> bootstrap) {
}
/**
* {@inheritDoc}
*/
@Override
public void run(T configuration, Environment environment) throws Exception {
DataSourceFactory dataSourceFactory = getDataSourceFactory(configuration);
DataSource dataSource = dataSourceFactory.build(environment.metrics(),
"doma");
this.domaConfig = new DomaConfig(dataSourceName, dataSource,
DialectUtil.inferDialect(dataSourceFactory.getDriverClass()));
}
public DomaConfig getDomaConfig() {
return domaConfig;
}
}