package org.resthub.jpa.pool; import com.jolbox.bonecp.BoneCPConfig; import com.jolbox.bonecp.BoneCPDataSource; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import javax.sql.DataSource; import java.lang.reflect.InvocationTargetException; import java.util.Properties; /** * This factory allows to create directly a BoneCPDataSource instance from a set of configuration * properties. * <p/> * Check <a href="http://jolbox.com/index.html?page=http://jolbox.com/configuration.html">BoneCP documentation</a> * for a full list of configuration properties. * <p/> * @see AbstractDataSourceFactory#create(java.util.Properties) * @see AbstractDataSourceFactory */ public class BoneCPDataSourceFactory extends AbstractDataSourceFactory<BoneCPDataSource> { public BoneCPDataSourceFactory() { this.setDsClass(BoneCPDataSource.class); } /** * Initialize a new {@link com.jolbox.bonecp.BoneCPDataSource} instance with given configuration * properties * * @see AbstractDataSourceFactory#callConstructor(Class, java.util.Properties) */ @Override protected DataSource callConstructor(Class clazz, Properties configProperties) throws Exception { BoneCPConfig config = new BoneCPConfig(configProperties); BoneCPDataSource dataSource = (BoneCPDataSource) clazz.getConstructor(BoneCPConfig.class).newInstance(config); dataSource.setDriverClass(configProperties.getProperty("driverClass")); return dataSource; } }