This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 7.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/7.0.x by this push: new 744c87b Generics: BasicDataSource excluding the statement pool 744c87b is described below commit 744c87b973c74439e8b033b3e1a84741b7f39027 Author: Mark Thomas <ma...@apache.org> AuthorDate: Fri Mar 22 11:51:21 2019 +0000 Generics: BasicDataSource excluding the statement pool --- .../apache/tomcat/dbcp/dbcp/BasicDataSource.java | 4 +- .../dbcp/dbcp/PoolableConnectionFactory.java | 157 ++++++++++----------- 2 files changed, 76 insertions(+), 85 deletions(-) diff --git a/java/org/apache/tomcat/dbcp/dbcp/BasicDataSource.java b/java/org/apache/tomcat/dbcp/dbcp/BasicDataSource.java index 585cff5..48fc6d1 100644 --- a/java/org/apache/tomcat/dbcp/dbcp/BasicDataSource.java +++ b/java/org/apache/tomcat/dbcp/dbcp/BasicDataSource.java @@ -1726,9 +1726,9 @@ public class BasicDataSource implements DataSource { } protected static void validateConnectionFactory(PoolableConnectionFactory connectionFactory) throws Exception { - Connection conn = null; + PoolableConnection conn = null; try { - conn = (Connection) connectionFactory.makeObject(); + conn = connectionFactory.makeObject(); connectionFactory.activateObject(conn); connectionFactory.validateConnection(conn); connectionFactory.passivateObject(conn); diff --git a/java/org/apache/tomcat/dbcp/dbcp/PoolableConnectionFactory.java b/java/org/apache/tomcat/dbcp/dbcp/PoolableConnectionFactory.java index 6642689..9406365 100644 --- a/java/org/apache/tomcat/dbcp/dbcp/PoolableConnectionFactory.java +++ b/java/org/apache/tomcat/dbcp/dbcp/PoolableConnectionFactory.java @@ -23,6 +23,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.Collection; import java.util.Iterator; + import org.apache.tomcat.dbcp.pool.KeyedObjectPool; import org.apache.tomcat.dbcp.pool.KeyedObjectPoolFactory; import org.apache.tomcat.dbcp.pool.PoolableObjectFactory; @@ -37,7 +38,7 @@ import org.apache.tomcat.dbcp.pool.ObjectPool; * @author James House * @author Dirk Verbeeck */ -public class PoolableConnectionFactory implements PoolableObjectFactory { +public class PoolableConnectionFactory implements PoolableObjectFactory<PoolableConnection> { /** * Create a new <tt>PoolableConnectionFactory</tt>. * @param connFactory the {@link ConnectionFactory} from which to obtain base {@link Connection}s @@ -47,7 +48,8 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { * @param defaultReadOnly the default "read only" setting for borrowed {@link Connection}s * @param defaultAutoCommit the default "auto commit" setting for returned {@link Connection}s */ - public PoolableConnectionFactory(ConnectionFactory connFactory, ObjectPool pool, KeyedObjectPoolFactory stmtPoolFactory, String validationQuery, boolean defaultReadOnly, boolean defaultAutoCommit) { + public PoolableConnectionFactory(ConnectionFactory connFactory, ObjectPool<PoolableConnection> pool, + KeyedObjectPoolFactory stmtPoolFactory, String validationQuery, boolean defaultReadOnly, boolean defaultAutoCommit) { _connFactory = connFactory; _pool = pool; _pool.setFactory(this); @@ -68,7 +70,8 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { * @param defaultAutoCommit the default "auto commit" setting for returned {@link Connection}s * @since 1.3 */ - public PoolableConnectionFactory(ConnectionFactory connFactory, ObjectPool pool, KeyedObjectPoolFactory stmtPoolFactory, String validationQuery, Collection connectionInitSqls, boolean defaultReadOnly, boolean defaultAutoCommit) { + public PoolableConnectionFactory(ConnectionFactory connFactory, ObjectPool<PoolableConnection> pool, + KeyedObjectPoolFactory stmtPoolFactory, String validationQuery, Collection<String> connectionInitSqls, boolean defaultReadOnly, boolean defaultAutoCommit) { _connFactory = connFactory; _pool = pool; _pool.setFactory(this); @@ -78,7 +81,7 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { _defaultReadOnly = defaultReadOnly ? Boolean.TRUE : Boolean.FALSE; _defaultAutoCommit = defaultAutoCommit; } - + /** * Create a new <tt>PoolableConnectionFactory</tt>. * @param connFactory the {@link ConnectionFactory} from which to obtain base {@link Connection}s @@ -90,7 +93,8 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { * @param defaultAutoCommit the default "auto commit" setting for returned {@link Connection}s * @since 1.3 */ - public PoolableConnectionFactory(ConnectionFactory connFactory, ObjectPool pool, KeyedObjectPoolFactory stmtPoolFactory, String validationQuery, int validationQueryTimeout, boolean defaultReadOnly, boolean defaultAutoCommit) { + public PoolableConnectionFactory(ConnectionFactory connFactory, ObjectPool<PoolableConnection> pool, + KeyedObjectPoolFactory stmtPoolFactory, String validationQuery, int validationQueryTimeout, boolean defaultReadOnly, boolean defaultAutoCommit) { _connFactory = connFactory; _pool = pool; _pool.setFactory(this); @@ -100,7 +104,7 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { _defaultReadOnly = defaultReadOnly ? Boolean.TRUE : Boolean.FALSE; _defaultAutoCommit = defaultAutoCommit; } - + /** * Create a new <tt>PoolableConnectionFactory</tt>. * @param connFactory the {@link ConnectionFactory} from which to obtain base {@link Connection}s @@ -113,7 +117,8 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { * @param defaultAutoCommit the default "auto commit" setting for returned {@link Connection}s * @since 1.3 */ - public PoolableConnectionFactory(ConnectionFactory connFactory, ObjectPool pool, KeyedObjectPoolFactory stmtPoolFactory, String validationQuery, int validationQueryTimeout, Collection connectionInitSqls, boolean defaultReadOnly, boolean defaultAutoCommit) { + public PoolableConnectionFactory(ConnectionFactory connFactory, ObjectPool<PoolableConnection> pool, + KeyedObjectPoolFactory stmtPoolFactory, String validationQuery, int validationQueryTimeout, Collection<String> connectionInitSqls, boolean defaultReadOnly, boolean defaultAutoCommit) { _connFactory = connFactory; _pool = pool; _pool.setFactory(this); @@ -135,7 +140,8 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { * @param defaultAutoCommit the default "auto commit" setting for returned {@link Connection}s * @param defaultTransactionIsolation the default "Transaction Isolation" setting for returned {@link Connection}s */ - public PoolableConnectionFactory(ConnectionFactory connFactory, ObjectPool pool, KeyedObjectPoolFactory stmtPoolFactory, String validationQuery, boolean defaultReadOnly, boolean defaultAutoCommit, int defaultTransactionIsolation) { + public PoolableConnectionFactory(ConnectionFactory connFactory, ObjectPool<PoolableConnection> pool, + KeyedObjectPoolFactory stmtPoolFactory, String validationQuery, boolean defaultReadOnly, boolean defaultAutoCommit, int defaultTransactionIsolation) { _connFactory = connFactory; _pool = pool; _pool.setFactory(this); @@ -158,7 +164,8 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { * @param defaultTransactionIsolation the default "Transaction Isolation" setting for returned {@link Connection}s * @since 1.3 */ - public PoolableConnectionFactory(ConnectionFactory connFactory, ObjectPool pool, KeyedObjectPoolFactory stmtPoolFactory, String validationQuery, Collection connectionInitSqls, boolean defaultReadOnly, boolean defaultAutoCommit, int defaultTransactionIsolation) { + public PoolableConnectionFactory(ConnectionFactory connFactory, ObjectPool<PoolableConnection> pool, + KeyedObjectPoolFactory stmtPoolFactory, String validationQuery, Collection<String> connectionInitSqls, boolean defaultReadOnly, boolean defaultAutoCommit, int defaultTransactionIsolation) { _connFactory = connFactory; _pool = pool; _pool.setFactory(this); @@ -169,7 +176,7 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { _defaultAutoCommit = defaultAutoCommit; _defaultTransactionIsolation = defaultTransactionIsolation; } - + /** * Create a new <tt>PoolableConnectionFactory</tt>. * @param connFactory the {@link ConnectionFactory} from which to obtain base {@link Connection}s @@ -182,7 +189,8 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { * @param defaultTransactionIsolation the default "Transaction Isolation" setting for returned {@link Connection}s * @since 1.3 */ - public PoolableConnectionFactory(ConnectionFactory connFactory, ObjectPool pool, KeyedObjectPoolFactory stmtPoolFactory, String validationQuery, int validationQueryTimeout, boolean defaultReadOnly, boolean defaultAutoCommit, int defaultTransactionIsolation) { + public PoolableConnectionFactory(ConnectionFactory connFactory, ObjectPool<PoolableConnection> pool, + KeyedObjectPoolFactory stmtPoolFactory, String validationQuery, int validationQueryTimeout, boolean defaultReadOnly, boolean defaultAutoCommit, int defaultTransactionIsolation) { _connFactory = connFactory; _pool = pool; _pool.setFactory(this); @@ -193,7 +201,7 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { _defaultAutoCommit = defaultAutoCommit; _defaultTransactionIsolation = defaultTransactionIsolation; } - + /** * Create a new <tt>PoolableConnectionFactory</tt>. * @param connFactory the {@link ConnectionFactory} from which to obtain base {@link Connection}s @@ -207,7 +215,8 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { * @param defaultTransactionIsolation the default "Transaction Isolation" setting for returned {@link Connection}s * @since 1.3 */ - public PoolableConnectionFactory(ConnectionFactory connFactory, ObjectPool pool, KeyedObjectPoolFactory stmtPoolFactory, String validationQuery, int validationQueryTimeout, Collection connectionInitSqls, boolean defaultReadOnly, boolean defaultAutoCommit, int defaultTransactionIsolation) { + public PoolableConnectionFactory(ConnectionFactory connFactory, ObjectPool<PoolableConnection> pool, + KeyedObjectPoolFactory stmtPoolFactory, String validationQuery, int validationQueryTimeout, Collection<String> connectionInitSqls, boolean defaultReadOnly, boolean defaultAutoCommit, int defaultTransactionIsolation) { _connFactory = connFactory; _pool = pool; _pool.setFactory(this); @@ -232,7 +241,7 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { */ public PoolableConnectionFactory( ConnectionFactory connFactory, - ObjectPool pool, + ObjectPool<PoolableConnection> pool, KeyedObjectPoolFactory stmtPoolFactory, String validationQuery, boolean defaultReadOnly, @@ -262,7 +271,7 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { */ public PoolableConnectionFactory( ConnectionFactory connFactory, - ObjectPool pool, + ObjectPool<PoolableConnection> pool, KeyedObjectPoolFactory stmtPoolFactory, String validationQuery, boolean defaultReadOnly, @@ -295,7 +304,7 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { */ public PoolableConnectionFactory( ConnectionFactory connFactory, - ObjectPool pool, + ObjectPool<PoolableConnection> pool, KeyedObjectPoolFactory stmtPoolFactory, String validationQuery, boolean defaultReadOnly, @@ -330,7 +339,7 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { */ public PoolableConnectionFactory( ConnectionFactory connFactory, - ObjectPool pool, + ObjectPool<PoolableConnection> pool, KeyedObjectPoolFactory stmtPoolFactory, String validationQuery, Boolean defaultReadOnly, @@ -367,10 +376,10 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { */ public PoolableConnectionFactory( ConnectionFactory connFactory, - ObjectPool pool, + ObjectPool<PoolableConnection> pool, KeyedObjectPoolFactory stmtPoolFactory, String validationQuery, - Collection connectionInitSqls, + Collection<String> connectionInitSqls, Boolean defaultReadOnly, boolean defaultAutoCommit, int defaultTransactionIsolation, @@ -389,7 +398,7 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { _defaultTransactionIsolation = defaultTransactionIsolation; _defaultCatalog = defaultCatalog; } - + /** * Create a new <tt>PoolableConnectionFactory</tt>. * @param connFactory the {@link ConnectionFactory} from which to obtain base {@link Connection}s @@ -406,7 +415,7 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { */ public PoolableConnectionFactory( ConnectionFactory connFactory, - ObjectPool pool, + ObjectPool<PoolableConnection> pool, KeyedObjectPoolFactory stmtPoolFactory, String validationQuery, int validationQueryTimeout, @@ -428,7 +437,7 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { _defaultTransactionIsolation = defaultTransactionIsolation; _defaultCatalog = defaultCatalog; } - + /** * Create a new <tt>PoolableConnectionFactory</tt>. * @param connFactory the {@link ConnectionFactory} from which to obtain base {@link Connection}s @@ -446,11 +455,11 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { */ public PoolableConnectionFactory( ConnectionFactory connFactory, - ObjectPool pool, + ObjectPool<PoolableConnection> pool, KeyedObjectPoolFactory stmtPoolFactory, String validationQuery, int validationQueryTimeout, - Collection connectionInitSqls, + Collection<String> connectionInitSqls, Boolean defaultReadOnly, boolean defaultAutoCommit, int defaultTransactionIsolation, @@ -488,7 +497,7 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { public void setValidationQuery(String validationQuery) { _validationQuery = validationQuery; } - + /** * Sets the validation query timeout, the amount of time, in seconds, that * connection validation will wait for a response from the database when @@ -508,7 +517,7 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { * @param connectionInitSqls SQL statement to initialize {@link Connection}s. * @since 1.3 */ - synchronized public void setConnectionInitSql(Collection connectionInitSqls) { + synchronized public void setConnectionInitSql(Collection<String> connectionInitSqls) { _connectionInitSqls = connectionInitSqls; } @@ -516,7 +525,7 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { * Sets the {@link ObjectPool} in which to pool {@link Connection}s. * @param pool the {@link ObjectPool} in which to pool those {@link Connection}s */ - synchronized public void setPool(ObjectPool pool) { + synchronized public void setPool(ObjectPool<PoolableConnection> pool) { if(null != _pool && pool != _pool) { try { _pool.close(); @@ -531,7 +540,7 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { * Returns the {@link ObjectPool} in which {@link Connection}s are pooled. * @return the connection pool */ - public synchronized ObjectPool getPool() { + public synchronized ObjectPool<PoolableConnection> getPool() { return _pool; } @@ -578,7 +587,7 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { } @Override - public Object makeObject() throws Exception { + public PoolableConnection makeObject() throws Exception { Connection conn = _connFactory.createConnection(); if (conn == null) { throw new IllegalStateException("Connection factory returned null from createConnection"); @@ -593,7 +602,7 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { } protected void initializeConnection(Connection conn) throws SQLException { - Collection sqls = _connectionInitSqls; + Collection<String> sqls = _connectionInitSqls; if(conn.isClosed()) { throw new SQLException("initializeConnection: connection closed"); } @@ -601,14 +610,12 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { Statement stmt = null; try { stmt = conn.createStatement(); - for (Iterator iterator = sqls.iterator(); iterator.hasNext();) + for (Iterator<String> iterator = sqls.iterator(); iterator.hasNext();) { - Object o = iterator.next(); - if (o == null) { + String sql = iterator.next(); + if (sql == null) { throw new NullPointerException("null connectionInitSqls element"); } - // o might not be a String instance - String sql = o.toString(); stmt.execute(sql); } } finally { @@ -624,22 +631,16 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { } @Override - public void destroyObject(Object obj) throws Exception { - if(obj instanceof PoolableConnection) { - ((PoolableConnection)obj).reallyClose(); - } + public void destroyObject(PoolableConnection obj) throws Exception { + obj.reallyClose(); } @Override - public boolean validateObject(Object obj) { - if(obj instanceof Connection) { - try { - validateConnection((Connection) obj); - return true; - } catch(Exception e) { - return false; - } - } else { + public boolean validateObject(PoolableConnection obj) { + try { + validateConnection(obj); + return true; + } catch(Exception e) { return false; } } @@ -681,53 +682,43 @@ public class PoolableConnectionFactory implements PoolableObjectFactory { } @Override - public void passivateObject(Object obj) throws Exception { - if(obj instanceof Connection) { - Connection conn = (Connection)obj; - if(!conn.getAutoCommit() && !conn.isReadOnly()) { - conn.rollback(); - } - conn.clearWarnings(); - if(!conn.getAutoCommit()) { - conn.setAutoCommit(true); - } + public void passivateObject(PoolableConnection conn) throws Exception { + if(!conn.getAutoCommit() && !conn.isReadOnly()) { + conn.rollback(); } - if(obj instanceof DelegatingConnection) { - ((DelegatingConnection)obj).passivate(); + conn.clearWarnings(); + if(!conn.getAutoCommit()) { + conn.setAutoCommit(true); } + conn.passivate(); } @Override - public void activateObject(Object obj) throws Exception { - if(obj instanceof DelegatingConnection) { - ((DelegatingConnection)obj).activate(); + public void activateObject(PoolableConnection conn) throws Exception { + conn.activate(); + if (conn.getAutoCommit() != _defaultAutoCommit) { + conn.setAutoCommit(_defaultAutoCommit); } - if(obj instanceof Connection) { - Connection conn = (Connection)obj; - if (conn.getAutoCommit() != _defaultAutoCommit) { - conn.setAutoCommit(_defaultAutoCommit); - } - if ((_defaultTransactionIsolation != UNKNOWN_TRANSACTIONISOLATION) - && (conn.getTransactionIsolation() != - _defaultTransactionIsolation)) { - conn.setTransactionIsolation(_defaultTransactionIsolation); - } - if ((_defaultReadOnly != null) && - (conn.isReadOnly() != _defaultReadOnly.booleanValue())) { - conn.setReadOnly(_defaultReadOnly.booleanValue()); - } - if ((_defaultCatalog != null) && - (!_defaultCatalog.equals(conn.getCatalog()))) { - conn.setCatalog(_defaultCatalog); - } + if ((_defaultTransactionIsolation != UNKNOWN_TRANSACTIONISOLATION) + && (conn.getTransactionIsolation() != + _defaultTransactionIsolation)) { + conn.setTransactionIsolation(_defaultTransactionIsolation); + } + if ((_defaultReadOnly != null) && + (conn.isReadOnly() != _defaultReadOnly.booleanValue())) { + conn.setReadOnly(_defaultReadOnly.booleanValue()); + } + if ((_defaultCatalog != null) && + (!_defaultCatalog.equals(conn.getCatalog()))) { + conn.setCatalog(_defaultCatalog); } } protected volatile ConnectionFactory _connFactory = null; protected volatile String _validationQuery = null; protected volatile int _validationQueryTimeout = -1; - protected Collection _connectionInitSqls = null; - protected volatile ObjectPool _pool = null; + protected Collection<String> _connectionInitSqls = null; + protected volatile ObjectPool<PoolableConnection> _pool = null; protected volatile KeyedObjectPoolFactory _stmtPoolFactory = null; protected Boolean _defaultReadOnly = null; protected boolean _defaultAutoCommit = true; --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org