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

Reply via email to