package jef.database.datasource; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties; import javax.sql.DataSource; import com.jolbox.bonecp.BoneCPConfig; import com.jolbox.bonecp.BoneCPDataSource; public class BoneCpWrapper extends AbstractDataSource implements DataSourceWrapper{ BoneCPDataSource datasource; public String getUrl() { return datasource.getJdbcUrl(); } public String getUser() { return datasource.getUsername(); } public String getPassword() { return datasource.getPassword(); } public String getDriverClass() { return datasource.getDriverClass(); } public void setUrl(String url) { datasource.setJdbcUrl(url); } public void setUser(String user) { datasource.setUsername(user); } public void setPassword(String password) { datasource.setPassword(password); } public void setDriverClass(String driverClassName) { datasource.setDriverClass(driverClassName); } //TODO 和TomcatPool一样,是基于各个属性的直接getter和setter的。因此无法直接获得Properties对象 public Properties getProperties() { return new ReflectionProperties(BoneCPConfig.class, datasource); } public void putProperty(String key, Object value) { new ReflectionProperties(BoneCPConfig.class, datasource).put(key, value); } public Connection getConnection() throws SQLException { return datasource.getConnection(); } public Connection getConnection(String username, String password) throws SQLException { return datasource.getConnection(username, password); } public boolean isConnectionPool() { return true; } public void setWrappedDataSource(DataSource ds) { datasource=(BoneCPDataSource)ds; } @Override protected Class<? extends DataSource> getWrappedClass() { return BoneCPDataSource.class; } }