be.fluid_it.tools.dropwizard.box.datasource.JEEDataSourceFactory Maven / Gradle / Ivy
package be.fluid_it.tools.dropwizard.box.datasource;
import be.fluid_it.tools.dropwizard.box.config.JEEDataSourceConfiguration;
import io.dropwizard.Configuration;
import io.dropwizard.db.DataSourceFactory;
import io.dropwizard.db.DatabaseConfiguration;
import io.dropwizard.db.ManagedDataSource;
import java.util.Map;
import javax.naming.NamingException;
import javax.sql.DataSource;
import com.codahale.metrics.MetricRegistry;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
* A {@link DataSourceFactory} that provides {@link DataSource} configured in
* JEE Container.
*
* You should override
* {@link DatabaseConfiguration#getDataSourceFactory(io.dropwizard.Configuration)}
* from your database bundle to return this factory, using a
* {@link JEEDataSourceConfiguration} defined in your application
* {@link Configuration}.
*/
public class JEEDataSourceFactory extends DataSourceFactory {
private JEEDataSourceConfiguration configuration;
public JEEDataSourceFactory(JEEDataSourceConfiguration configuration) {
this.configuration = configuration;
}
@Override
@JsonProperty
public Map getProperties() {
return configuration.getProperties();
}
@Override
public ManagedDataSource build(MetricRegistry metricRegistry, String name) {
try {
return new JEEManagedDataSource(this.configuration.getDatasourcesJndiKey(), this.configuration.getName());
} catch (NamingException e) {
throw new IllegalStateException("An error has occured while opening datasource " + name, e);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy