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

View the commit online:
https://github.com/apache/tomcat/commit/e4b3e7865e43913a32009b4de0c38179d73a74c9

commit e4b3e7865e43913a32009b4de0c38179d73a74c9
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed Nov 20 12:24:31 2019 +0000

    Back-port some SpotBugs fixes and Javadoc alignment.
---
 .../apache/tomcat/jdbc/pool/ConnectionPool.java    | 45 ++++++++++++++--------
 .../apache/tomcat/jdbc/pool/PoolProperties.java    | 10 +----
 .../apache/tomcat/jdbc/pool/PooledConnection.java  |  4 +-
 3 files changed, 32 insertions(+), 27 deletions(-)

diff --git 
a/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
 
b/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
index ccb941f..e699a42 100644
--- 
a/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
+++ 
b/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
@@ -51,10 +51,8 @@ import org.apache.juli.logging.LogFactory;
  * The ConnectionPool uses a {@link PoolProperties} object for storing all the 
meta information about the connection pool.
  * As the underlying implementation, the connection pool uses {@link 
java.util.concurrent.BlockingQueue} to store active and idle connections.
  * A custom implementation of a fair {@link FairBlockingQueue} blocking queue 
is provided with the connection pool itself.
- * @author Filip Hanik
  * @version 1.0
  */
-
 public class ConnectionPool {
 
     /**
@@ -149,7 +147,7 @@ public class ConnectionPool {
      * Instantiate a connection pool. This will create connections if 
initialSize is larger than 0.
      * The {@link PoolProperties} should not be reused for another connection 
pool.
      * @param prop PoolProperties - all the properties for this connection pool
-     * @throws SQLException
+     * @throws SQLException Pool initialization error
      */
     public ConnectionPool(PoolConfiguration prop) throws SQLException {
         //setup quick access variables and pools
@@ -163,7 +161,7 @@ public class ConnectionPool {
      * If a connection is not retrieved, the Future must be cancelled in order 
for the connection to be returned
      * to the pool.
      * @return a Future containing a reference to the connection or the future 
connection
-     * @throws SQLException
+     * @throws SQLException Cannot use asynchronous connect
      */
     public Future<Connection> getConnectionAsync() throws SQLException {
         try {
@@ -208,7 +206,8 @@ public class ConnectionPool {
      * maxActive} connections a connection is returned immediately. If no
      * connection is available, the pool will attempt to fetch a connection for
      * {@link PoolProperties#maxWait maxWait} milliseconds.
-     *
+     * @param username The user name to use for the connection
+     * @param password The password for the connection
      * @return Connection - a java.sql.Connection/javax.sql.PooledConnection
      *         reflection proxy, wrapping the underlying object.
      * @throws SQLException
@@ -355,8 +354,9 @@ public class ConnectionPool {
     /**
      * Creates and caches a {@link java.lang.reflect.Constructor} used to 
instantiate the proxy object.
      * We cache this, since the creation of a constructor is fairly slow.
+     * @param xa Use a XA connection
      * @return constructor used to instantiate the wrapper object
-     * @throws NoSuchMethodException
+     * @throws NoSuchMethodException Failed to get a constructor
      */
     public Constructor<?> getProxyConstructor(boolean xa) throws 
NoSuchMethodException {
         //cache the constructor
@@ -540,6 +540,7 @@ public class ConnectionPool {
         }
     }
 
+
 
//===============================================================================
 //         CONNECTION POOLING IMPL LOGIC
 
//===============================================================================
@@ -620,7 +621,10 @@ public class ConnectionPool {
         // we could have threads stuck in idle.poll(timeout) that will never be
         // notified
         if (waitcount.get() > 0) {
-            idle.offer(create(true));
+            if (!idle.offer(create(true))) {
+                log.warn("Failed to add a new connection to the pool after 
releasing a connection " +
+                        "when at least one thread was waiting for a 
connection.");
+            }
         }
     }
 
@@ -628,8 +632,10 @@ public class ConnectionPool {
      * Thread safe way to retrieve a connection from the pool
      * @param wait - time to wait, overrides the maxWait from the properties,
      * set to -1 if you wish to use maxWait, 0 if you wish no wait time.
-     * @return PooledConnection
-     * @throws SQLException
+     * @param username The user name to use for the connection
+     * @param password The password for the connection
+     * @return a connection
+     * @throws SQLException Failed to get a connection
      */
     private PooledConnection borrowConnection(int wait, String username, 
String password) throws SQLException {
 
@@ -715,8 +721,10 @@ public class ConnectionPool {
      * Creates a JDBC connection and tries to connect to the database.
      * @param now timestamp of when this was called
      * @param notUsed Argument not used
+     * @param username The user name to use for the connection
+     * @param password The password for the connection
      * @return a PooledConnection that has been connected
-     * @throws SQLException
+     * @throws SQLException Failed to get a connection
      */
     protected PooledConnection createConnection(long now, PooledConnection 
notUsed, String username, String password) throws SQLException {
         //no connections where available we'll create one
@@ -768,7 +776,9 @@ public class ConnectionPool {
      * Validates and configures a previously idle connection
      * @param now - timestamp
      * @param con - the connection to validate and configure
-     * @return con
+     * @param username The user name to use for the connection
+     * @param password The password for the connection
+     * @return a connection
      * @throws SQLException if a validation error happens
      */
     protected PooledConnection borrowConnection(long now, PooledConnection 
con, String username, String password) throws SQLException {
@@ -850,7 +860,7 @@ public class ConnectionPool {
     }
     /**
      * Terminate the current transaction for the given connection.
-     * @param con
+     * @param con The connection
      * @return <code>true</code> if the connection TX termination succeeded
      *         otherwise <code>false</code>
      */
@@ -877,7 +887,7 @@ public class ConnectionPool {
      * Determines if a connection should be closed upon return to the pool.
      * @param con - the connection
      * @param action - the validation action that should be performed
-     * @return true if the connection should be closed
+     * @return <code>true</code> if the connection should be closed
      */
     protected boolean shouldClose(PooledConnection con, int action) {
         if (con.getConnectionVersion() < getPoolVersion()) return true;
@@ -954,7 +964,7 @@ public class ConnectionPool {
     /**
      * Determines if a connection should be abandoned based on
      * {@link PoolProperties#abandonWhenPercentageFull} setting.
-     * @return true if the connection should be abandoned
+     * @return <code>true</code> if the connection should be abandoned
      */
     protected boolean shouldAbandon() {
         if (!poolProperties.isRemoveAbandoned()) return false;
@@ -1118,6 +1128,7 @@ public class ConnectionPool {
 
     /**
      * Create a new pooled connection object. Not connected nor validated.
+     * @param incrementCounter <code>true</code> to increment the connection 
count
      * @return a pooled connection object
      */
     protected PooledConnection create(boolean incrementCounter) {
@@ -1149,7 +1160,7 @@ public class ConnectionPool {
 
     /**
      * Hook to perform final actions on a pooled connection object once it has 
been disconnected and will be discarded
-     * @param con
+     * @param con The connection
      */
     protected void finalize(PooledConnection con) {
         JdbcInterceptor handler = con.getHandler();
@@ -1161,7 +1172,8 @@ public class ConnectionPool {
 
     /**
      * Hook to perform final actions on a pooled connection object once it has 
been disconnected and will be discarded
-     * @param con
+     * @param con The connection
+     * @param finalizing <code>true</code> if finalizing the connection
      */
     protected void disconnectEvent(PooledConnection con, boolean finalizing) {
         JdbcInterceptor handler = con.getHandler();
@@ -1265,7 +1277,6 @@ public class ConnectionPool {
      * and performs the initialization according to
      * interceptors and validation rules.
      * This class is thread safe and is cancellable
-     * @author fhanik
      *
      */
     protected class ConnectionFuture implements Future<Connection>, Runnable {
diff --git 
a/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
 
b/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
index 31c1525..bc498ca 100644
--- 
a/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
+++ 
b/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
@@ -16,7 +16,6 @@
  */
 package org.apache.tomcat.jdbc.pool;
 
-
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.Serializable;
@@ -28,14 +27,9 @@ import java.util.Properties;
 import java.util.concurrent.atomic.AtomicInteger;
 
 
-
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 
-/**
- * @author Filip Hanik
- *
- */
 public class PoolProperties implements PoolConfiguration, Cloneable, 
Serializable {
 
     private static final long serialVersionUID = -8519283440854213745L;
@@ -60,7 +54,7 @@ public class PoolProperties implements PoolConfiguration, 
Cloneable, Serializabl
     private volatile String validationQuery;
     private volatile int validationQueryTimeout = -1;
     private volatile String validatorClassName;
-    private volatile Validator validator;
+    private transient volatile Validator validator;
     private volatile boolean testOnBorrow = false;
     private volatile boolean testOnReturn = false;
     private volatile boolean testWhileIdle = false;
@@ -488,7 +482,7 @@ public class PoolProperties implements PoolConfiguration, 
Cloneable, Serializabl
                     } else {
                         String name = 
interceptorValues[i].substring(0,propIndex).trim();
                         definitions[i+1] = new InterceptorDefinition(name);
-                        String propsAsString = 
interceptorValues[i].substring(propIndex+1, interceptorValues[i].length()-1);
+                        String propsAsString = 
interceptorValues[i].substring(propIndex+1, endIndex);
                         String[] props = propsAsString.split(",");
                         for (int j=0; j<props.length; j++) {
                             int pidx = props[j].indexOf('=');
diff --git 
a/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PooledConnection.java
 
b/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PooledConnection.java
index 5dd7f16..9f8b725 100644
--- 
a/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PooledConnection.java
+++ 
b/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PooledConnection.java
@@ -171,9 +171,9 @@ public class PooledConnection {
                 log.debug("Unable to disconnect previous connection.", x);
             } //catch
         } //end if
-        if (poolProperties.getDataSource()==null && 
poolProperties.getDataSourceJNDI()!=null) {
+        //if (poolProperties.getDataSource()==null && 
poolProperties.getDataSourceJNDI()!=null) {
             //TODO lookup JNDI name
-        }
+        //}
 
         if (poolProperties.getDataSource()!=null) {
             connectUsingDataSource();


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to