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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]