You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2016/05/13 20:02:33 UTC

svn commit: r1743737 [1/3] - in /tomcat/tc8.0.x/trunk: java/org/apache/tomcat/dbcp/pool2/ java/org/apache/tomcat/dbcp/pool2/impl/ webapps/docs/

Author: markt
Date: Fri May 13 20:02:33 2016
New Revision: 1743737

URL: http://svn.apache.org/viewvc?rev=1743737&view=rev
Log:
Update internal fork of Commons Pool 2

Added:
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/BaseObject.java
      - copied, changed from r1743734, commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BaseObject.java
Modified:
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/   (props changed)
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/BaseKeyedPooledObjectFactory.java
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/BaseObjectPool.java
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/BasePooledObjectFactory.java
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/PoolUtils.java
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/UsageTracking.java
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/AbandonedConfig.java
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/BaseGenericObjectPool.java
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/BaseObjectPoolConfig.java
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/DefaultEvictionPolicy.java
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/DefaultPooledObject.java
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/DefaultPooledObjectInfo.java
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/EvictionConfig.java
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/EvictionTimer.java
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/GenericKeyedObjectPool.java
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/GenericKeyedObjectPoolConfig.java
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/GenericObjectPool.java
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/GenericObjectPoolConfig.java
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/InterruptibleReentrantLock.java
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/LinkedBlockingDeque.java
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/PoolImplUtils.java
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/PooledSoftReference.java
    tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/SoftReferenceObjectPool.java
    tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml

Propchange: tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri May 13 20:02:33 2016
@@ -1,2 +1,2 @@
-/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2:1593516-1693755
-/tomcat/trunk/java/org/apache/tomcat/dbcp/pool2:1643814,1648907,1682320,1694660
+/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2:1593516-1743734
+/tomcat/trunk/java/org/apache/tomcat/dbcp/pool2:1643814-1743698

Modified: tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/BaseKeyedPooledObjectFactory.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/BaseKeyedPooledObjectFactory.java?rev=1743737&r1=1743736&r2=1743737&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/BaseKeyedPooledObjectFactory.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/BaseKeyedPooledObjectFactory.java Fri May 13 20:02:33 2016
@@ -30,7 +30,7 @@ package org.apache.tomcat.dbcp.pool2;
  *
  * @since 2.0
  */
-public abstract class BaseKeyedPooledObjectFactory<K,V>
+public abstract class BaseKeyedPooledObjectFactory<K,V> extends BaseObject
         implements KeyedPooledObjectFactory<K,V> {
 
     /**
@@ -56,7 +56,7 @@ public abstract class BaseKeyedPooledObj
     public abstract PooledObject<V> wrap(V value);
 
     @Override
-    public PooledObject<V> makeObject(K key) throws Exception {
+    public PooledObject<V> makeObject(final K key) throws Exception {
         return wrap(create(key));
     }
 
@@ -69,7 +69,7 @@ public abstract class BaseKeyedPooledObj
      * @param p a {@code PooledObject} wrapping the the instance to be destroyed
      */
     @Override
-    public void destroyObject(K key, PooledObject<V> p)
+    public void destroyObject(final K key, final PooledObject<V> p)
         throws Exception {
     }
 
@@ -83,7 +83,7 @@ public abstract class BaseKeyedPooledObj
      * @return always <code>true</code> in the default implementation
      */
     @Override
-    public boolean validateObject(K key, PooledObject<V> p) {
+    public boolean validateObject(final K key, final PooledObject<V> p) {
         return true;
     }
 
@@ -96,7 +96,7 @@ public abstract class BaseKeyedPooledObj
      * @param p a {@code PooledObject} wrapping the the instance to be activated
      */
     @Override
-    public void activateObject(K key, PooledObject<V> p)
+    public void activateObject(final K key, final PooledObject<V> p)
         throws Exception {
     }
 
@@ -109,7 +109,7 @@ public abstract class BaseKeyedPooledObj
      * @param p a {@code PooledObject} wrapping the the instance to be passivated
      */
     @Override
-    public void passivateObject(K key, PooledObject<V> p)
+    public void passivateObject(final K key, final PooledObject<V> p)
         throws Exception {
     }
 }

Copied: tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/BaseObject.java (from r1743734, commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BaseObject.java)
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/BaseObject.java?p2=tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/BaseObject.java&p1=commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BaseObject.java&r1=1743734&r2=1743737&rev=1743737&view=diff
==============================================================================
--- commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BaseObject.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/BaseObject.java Fri May 13 20:02:33 2016
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.pool2;
+package org.apache.tomcat.dbcp.pool2;
 
 /**
  * A base class for common functionality.

Modified: tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/BaseObjectPool.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/BaseObjectPool.java?rev=1743737&r1=1743736&r2=1743737&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/BaseObjectPool.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/BaseObjectPool.java Fri May 13 20:02:33 2016
@@ -27,7 +27,7 @@ package org.apache.tomcat.dbcp.pool2;
  *
  * @since 2.0
  */
-public abstract class BaseObjectPool<T> implements ObjectPool<T> {
+public abstract class BaseObjectPool<T> extends BaseObject implements ObjectPool<T> {
 
     @Override
     public abstract T borrowObject() throws Exception;
@@ -116,4 +116,10 @@ public abstract class BaseObjectPool<T>
     }
 
     private volatile boolean closed = false;
+
+    @Override
+    protected void toStringAppendFields(final StringBuilder builder) {
+        builder.append("closed=");
+        builder.append(closed);
+    }
 }

Modified: tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/BasePooledObjectFactory.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/BasePooledObjectFactory.java?rev=1743737&r1=1743736&r2=1743737&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/BasePooledObjectFactory.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/BasePooledObjectFactory.java Fri May 13 20:02:33 2016
@@ -30,7 +30,7 @@ package org.apache.tomcat.dbcp.pool2;
  *
  * @since 2.0
  */
-public abstract class BasePooledObjectFactory<T> implements PooledObjectFactory<T> {
+public abstract class BasePooledObjectFactory<T> extends BaseObject implements PooledObjectFactory<T> {
     /**
      * Creates an object instance, to be wrapped in a {@link PooledObject}.
      * <p>This method <strong>must</strong> support concurrent, multi-threaded
@@ -64,7 +64,7 @@ public abstract class BasePooledObjectFa
      *  @param p ignored
      */
     @Override
-    public void destroyObject(PooledObject<T> p)
+    public void destroyObject(final PooledObject<T> p)
         throws Exception  {
     }
 
@@ -76,7 +76,7 @@ public abstract class BasePooledObjectFa
      * @return {@code true}
      */
     @Override
-    public boolean validateObject(PooledObject<T> p) {
+    public boolean validateObject(final PooledObject<T> p) {
         return true;
     }
 
@@ -86,7 +86,7 @@ public abstract class BasePooledObjectFa
      *  @param p ignored
      */
     @Override
-    public void activateObject(PooledObject<T> p) throws Exception {
+    public void activateObject(final PooledObject<T> p) throws Exception {
     }
 
     /**
@@ -95,7 +95,7 @@ public abstract class BasePooledObjectFa
      * @param p ignored
      */
     @Override
-    public void passivateObject(PooledObject<T> p)
+    public void passivateObject(final PooledObject<T> p)
         throws Exception {
     }
 }

Modified: tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/PoolUtils.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/PoolUtils.java?rev=1743737&r1=1743736&r2=1743737&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/PoolUtils.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/PoolUtils.java Fri May 13 20:02:33 2016
@@ -66,7 +66,7 @@ public final class PoolUtils {
      * @throws VirtualMachineError
      *             if that is passed in
      */
-    public static void checkRethrow(Throwable t) {
+    public static void checkRethrow(final Throwable t) {
         if (t instanceof ThreadDeath) {
             throw (ThreadDeath) t;
         }
@@ -563,7 +563,7 @@ public final class PoolUtils {
      * instances reaches the configured minIdle. Note that this is not the same
      * as the pool's minIdle setting.
      */
-    private static class ObjectPoolMinIdleTimerTask<T> extends TimerTask {
+    private static final class ObjectPoolMinIdleTimerTask<T> extends TimerTask {
 
         /** Minimum number of idle instances. Not the same as pool.getMinIdle(). */
         private final int minIdle;
@@ -603,7 +603,7 @@ public final class PoolUtils {
                 }
                 success = true;
 
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 cancel();
             } finally {
                 // detect other types of Throwable and cancel this Timer
@@ -632,7 +632,7 @@ public final class PoolUtils {
      * instances for the given key reaches the configured minIdle. Note that
      * this is not the same as the pool's minIdle setting.
      */
-    private static class KeyedObjectPoolMinIdleTimerTask<K, V> extends
+    private static final class KeyedObjectPoolMinIdleTimerTask<K, V> extends
             TimerTask {
         /** Minimum number of idle instances. Not the same as pool.getMinIdle(). */
         private final int minIdle;
@@ -678,7 +678,7 @@ public final class PoolUtils {
                 }
                 success = true;
 
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 cancel();
 
             } finally {
@@ -716,7 +716,7 @@ public final class PoolUtils {
      * deadlock.
      * </p>
      */
-    private static class SynchronizedObjectPool<T> implements ObjectPool<T> {
+    private static final class SynchronizedObjectPool<T> implements ObjectPool<T> {
 
         /**
          * Object whose monitor is used to synchronize methods on the wrapped
@@ -750,7 +750,7 @@ public final class PoolUtils {
         @Override
         public T borrowObject() throws Exception, NoSuchElementException,
                 IllegalStateException {
-            WriteLock writeLock = readWriteLock.writeLock();
+            final WriteLock writeLock = readWriteLock.writeLock();
             writeLock.lock();
             try {
                 return pool.borrowObject();
@@ -764,11 +764,11 @@ public final class PoolUtils {
          */
         @Override
         public void returnObject(final T obj) {
-            WriteLock writeLock = readWriteLock.writeLock();
+            final WriteLock writeLock = readWriteLock.writeLock();
             writeLock.lock();
             try {
                 pool.returnObject(obj);
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // swallowed as of Pool 2
             } finally {
                 writeLock.unlock();
@@ -780,11 +780,11 @@ public final class PoolUtils {
          */
         @Override
         public void invalidateObject(final T obj) {
-            WriteLock writeLock = readWriteLock.writeLock();
+            final WriteLock writeLock = readWriteLock.writeLock();
             writeLock.lock();
             try {
                 pool.invalidateObject(obj);
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // swallowed as of Pool 2
             } finally {
                 writeLock.unlock();
@@ -797,7 +797,7 @@ public final class PoolUtils {
         @Override
         public void addObject() throws Exception, IllegalStateException,
                 UnsupportedOperationException {
-            WriteLock writeLock = readWriteLock.writeLock();
+            final WriteLock writeLock = readWriteLock.writeLock();
             writeLock.lock();
             try {
                 pool.addObject();
@@ -811,7 +811,7 @@ public final class PoolUtils {
          */
         @Override
         public int getNumIdle() {
-            ReadLock readLock = readWriteLock.readLock();
+            final ReadLock readLock = readWriteLock.readLock();
             readLock.lock();
             try {
                 return pool.getNumIdle();
@@ -825,7 +825,7 @@ public final class PoolUtils {
          */
         @Override
         public int getNumActive() {
-            ReadLock readLock = readWriteLock.readLock();
+            final ReadLock readLock = readWriteLock.readLock();
             readLock.lock();
             try {
                 return pool.getNumActive();
@@ -839,7 +839,7 @@ public final class PoolUtils {
          */
         @Override
         public void clear() throws Exception, UnsupportedOperationException {
-            WriteLock writeLock = readWriteLock.writeLock();
+            final WriteLock writeLock = readWriteLock.writeLock();
             writeLock.lock();
             try {
                 pool.clear();
@@ -853,11 +853,11 @@ public final class PoolUtils {
          */
         @Override
         public void close() {
-            WriteLock writeLock = readWriteLock.writeLock();
+            final WriteLock writeLock = readWriteLock.writeLock();
             writeLock.lock();
             try {
                 pool.close();
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // swallowed as of Pool 2
             } finally {
                 writeLock.unlock();
@@ -889,7 +889,7 @@ public final class PoolUtils {
      * deadlock.
      * </p>
      */
-    private static class SynchronizedKeyedObjectPool<K, V> implements
+    private static final class SynchronizedKeyedObjectPool<K, V> implements
             KeyedObjectPool<K, V> {
 
         /**
@@ -924,7 +924,7 @@ public final class PoolUtils {
         @Override
         public V borrowObject(final K key) throws Exception,
                 NoSuchElementException, IllegalStateException {
-            WriteLock writeLock = readWriteLock.writeLock();
+            final WriteLock writeLock = readWriteLock.writeLock();
             writeLock.lock();
             try {
                 return keyedPool.borrowObject(key);
@@ -938,11 +938,11 @@ public final class PoolUtils {
          */
         @Override
         public void returnObject(final K key, final V obj) {
-            WriteLock writeLock = readWriteLock.writeLock();
+            final WriteLock writeLock = readWriteLock.writeLock();
             writeLock.lock();
             try {
                 keyedPool.returnObject(key, obj);
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // swallowed
             } finally {
                 writeLock.unlock();
@@ -954,11 +954,11 @@ public final class PoolUtils {
          */
         @Override
         public void invalidateObject(final K key, final V obj) {
-            WriteLock writeLock = readWriteLock.writeLock();
+            final WriteLock writeLock = readWriteLock.writeLock();
             writeLock.lock();
             try {
                 keyedPool.invalidateObject(key, obj);
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // swallowed as of Pool 2
             } finally {
                 writeLock.unlock();
@@ -971,7 +971,7 @@ public final class PoolUtils {
         @Override
         public void addObject(final K key) throws Exception,
                 IllegalStateException, UnsupportedOperationException {
-            WriteLock writeLock = readWriteLock.writeLock();
+            final WriteLock writeLock = readWriteLock.writeLock();
             writeLock.lock();
             try {
                 keyedPool.addObject(key);
@@ -985,7 +985,7 @@ public final class PoolUtils {
          */
         @Override
         public int getNumIdle(final K key) {
-            ReadLock readLock = readWriteLock.readLock();
+            final ReadLock readLock = readWriteLock.readLock();
             readLock.lock();
             try {
                 return keyedPool.getNumIdle(key);
@@ -999,7 +999,7 @@ public final class PoolUtils {
          */
         @Override
         public int getNumActive(final K key) {
-            ReadLock readLock = readWriteLock.readLock();
+            final ReadLock readLock = readWriteLock.readLock();
             readLock.lock();
             try {
                 return keyedPool.getNumActive(key);
@@ -1013,7 +1013,7 @@ public final class PoolUtils {
          */
         @Override
         public int getNumIdle() {
-            ReadLock readLock = readWriteLock.readLock();
+            final ReadLock readLock = readWriteLock.readLock();
             readLock.lock();
             try {
                 return keyedPool.getNumIdle();
@@ -1027,7 +1027,7 @@ public final class PoolUtils {
          */
         @Override
         public int getNumActive() {
-            ReadLock readLock = readWriteLock.readLock();
+            final ReadLock readLock = readWriteLock.readLock();
             readLock.lock();
             try {
                 return keyedPool.getNumActive();
@@ -1041,7 +1041,7 @@ public final class PoolUtils {
          */
         @Override
         public void clear() throws Exception, UnsupportedOperationException {
-            WriteLock writeLock = readWriteLock.writeLock();
+            final WriteLock writeLock = readWriteLock.writeLock();
             writeLock.lock();
             try {
                 keyedPool.clear();
@@ -1056,7 +1056,7 @@ public final class PoolUtils {
         @Override
         public void clear(final K key) throws Exception,
                 UnsupportedOperationException {
-            WriteLock writeLock = readWriteLock.writeLock();
+            final WriteLock writeLock = readWriteLock.writeLock();
             writeLock.lock();
             try {
                 keyedPool.clear(key);
@@ -1070,11 +1070,11 @@ public final class PoolUtils {
          */
         @Override
         public void close() {
-            WriteLock writeLock = readWriteLock.writeLock();
+            final WriteLock writeLock = readWriteLock.writeLock();
             writeLock.lock();
             try {
                 keyedPool.close();
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // swallowed as of Pool 2
             } finally {
                 writeLock.unlock();
@@ -1104,7 +1104,7 @@ public final class PoolUtils {
      * Pool library.
      * </p>
      */
-    private static class SynchronizedPooledObjectFactory<T> implements
+    private static final class SynchronizedPooledObjectFactory<T> implements
             PooledObjectFactory<T> {
         /** Synchronization lock */
         private final WriteLock writeLock = new ReentrantReadWriteLock().writeLock();
@@ -1217,7 +1217,7 @@ public final class PoolUtils {
      * Pool library.
      * </p>
      */
-    private static class SynchronizedKeyedPooledObjectFactory<K, V>
+    private static final class SynchronizedKeyedPooledObjectFactory<K, V>
             implements KeyedPooledObjectFactory<K, V> {
         /** Synchronization lock */
         private final WriteLock writeLock = new ReentrantReadWriteLock().writeLock();
@@ -1332,7 +1332,7 @@ public final class PoolUtils {
      * to previously established high water mark), erosion occurs more
      * frequently.
      */
-    private static class ErodingFactor {
+    private static final class ErodingFactor {
         /** Determines frequency of "erosion" events */
         private final float factor;
 
@@ -1464,7 +1464,7 @@ public final class PoolUtils {
                 } else {
                     pool.returnObject(obj);
                 }
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // swallowed
             }
         }
@@ -1476,7 +1476,7 @@ public final class PoolUtils {
         public void invalidateObject(final T obj) {
             try {
                 pool.invalidateObject(obj);
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // swallowed
             }
         }
@@ -1521,7 +1521,7 @@ public final class PoolUtils {
         public void close() {
             try {
                 pool.close();
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // swallowed
             }
         }
@@ -1629,7 +1629,7 @@ public final class PoolUtils {
                 } else {
                     keyedPool.returnObject(key, obj);
                 }
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // swallowed
             }
         }
@@ -1652,7 +1652,7 @@ public final class PoolUtils {
         public void invalidateObject(final K key, final V obj) {
             try {
                 keyedPool.invalidateObject(key, obj);
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // swallowed
             }
         }
@@ -1722,7 +1722,7 @@ public final class PoolUtils {
         public void close() {
             try {
                 keyedPool.close();
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // swallowed
             }
         }
@@ -1751,7 +1751,7 @@ public final class PoolUtils {
      * per-key basis. Timing of erosion events is tracked separately for
      * separate keyed pools.
      */
-    private static class ErodingPerKeyKeyedObjectPool<K, V> extends
+    private static final class ErodingPerKeyKeyedObjectPool<K, V> extends
             ErodingKeyedObjectPool<K, V> {
         /** Erosion factor - same for all pools */
         private final float factor;

Modified: tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/UsageTracking.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/UsageTracking.java?rev=1743737&r1=1743736&r2=1743737&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/UsageTracking.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/UsageTracking.java Fri May 13 20:02:33 2016
@@ -30,7 +30,7 @@ package org.apache.tomcat.dbcp.pool2;
 public interface UsageTracking<T> {
 
     /**
-     * This method is called every time a pooled object to enable the pool to
+     * This method is called every time a pooled object is used to enable the pool to
      * better track borrowed objects.
      *
      * @param pooledObject  The object that is being used

Modified: tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/AbandonedConfig.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/AbandonedConfig.java?rev=1743737&r1=1743736&r2=1743737&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/AbandonedConfig.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/AbandonedConfig.java Fri May 13 20:02:33 2016
@@ -55,7 +55,7 @@ public class AbandonedConfig {
      *   removed by borrowObject
      * @see #getRemoveAbandonedOnBorrow()
      */
-    public void setRemoveAbandonedOnBorrow(boolean removeAbandonedOnBorrow) {
+    public void setRemoveAbandonedOnBorrow(final boolean removeAbandonedOnBorrow) {
         this.removeAbandonedOnBorrow = removeAbandonedOnBorrow;
     }
 
@@ -92,7 +92,7 @@ public class AbandonedConfig {
      *   removed by pool maintenance
      * @see #getRemoveAbandonedOnMaintenance
      */
-    public void setRemoveAbandonedOnMaintenance(boolean removeAbandonedOnMaintenance) {
+    public void setRemoveAbandonedOnMaintenance(final boolean removeAbandonedOnMaintenance) {
         this.removeAbandonedOnMaintenance = removeAbandonedOnMaintenance;
     }
 
@@ -129,7 +129,7 @@ public class AbandonedConfig {
      * @param removeAbandonedTimeout new abandoned timeout in seconds
      * @see #getRemoveAbandonedTimeout()
      */
-    public void setRemoveAbandonedTimeout(int removeAbandonedTimeout) {
+    public void setRemoveAbandonedTimeout(final int removeAbandonedTimeout) {
         this.removeAbandonedTimeout = removeAbandonedTimeout;
     }
 
@@ -163,7 +163,7 @@ public class AbandonedConfig {
      * @see #getLogAbandoned()
      *
      */
-    public void setLogAbandoned(boolean logAbandoned) {
+    public void setLogAbandoned(final boolean logAbandoned) {
         this.logAbandoned = logAbandoned;
     }
 
@@ -190,7 +190,7 @@ public class AbandonedConfig {
      *
      * @param logWriter The new log writer
      */
-    public void setLogWriter(PrintWriter logWriter) {
+    public void setLogWriter(final PrintWriter logWriter) {
         this.logWriter = logWriter;
     }
 
@@ -226,7 +226,29 @@ public class AbandonedConfig {
      *                              the recording of a stack trace on every use
      *                              of a pooled object
      */
-    public void setUseUsageTracking(boolean useUsageTracking) {
+    public void setUseUsageTracking(final boolean useUsageTracking) {
         this.useUsageTracking = useUsageTracking;
     }
+
+    /**
+     * @since 2.4.3
+     */
+    @Override
+    public String toString() {
+        final StringBuilder builder = new StringBuilder();
+        builder.append("AbandonedConfig [removeAbandonedOnBorrow=");
+        builder.append(removeAbandonedOnBorrow);
+        builder.append(", removeAbandonedOnMaintenance=");
+        builder.append(removeAbandonedOnMaintenance);
+        builder.append(", removeAbandonedTimeout=");
+        builder.append(removeAbandonedTimeout);
+        builder.append(", logAbandoned=");
+        builder.append(logAbandoned);
+        builder.append(", logWriter=");
+        builder.append(logWriter);
+        builder.append(", useUsageTracking=");
+        builder.append(useUsageTracking);
+        builder.append("]");
+        return builder.toString();
+    }
 }

Modified: tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/BaseGenericObjectPool.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/BaseGenericObjectPool.java?rev=1743737&r1=1743736&r2=1743737&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/BaseGenericObjectPool.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/BaseGenericObjectPool.java Fri May 13 20:02:33 2016
@@ -21,6 +21,7 @@ import java.io.StringWriter;
 import java.io.Writer;
 import java.lang.management.ManagementFactory;
 import java.lang.ref.WeakReference;
+import java.util.Arrays;
 import java.util.Deque;
 import java.util.Iterator;
 import java.util.TimerTask;
@@ -34,6 +35,7 @@ import javax.management.MalformedObjectN
 import javax.management.NotCompliantMBeanException;
 import javax.management.ObjectName;
 
+import org.apache.tomcat.dbcp.pool2.BaseObject;
 import org.apache.tomcat.dbcp.pool2.PooledObject;
 import org.apache.tomcat.dbcp.pool2.SwallowedExceptionListener;
 
@@ -48,7 +50,7 @@ import org.apache.tomcat.dbcp.pool2.Swal
  *
  * @since 2.0
  */
-public abstract class BaseGenericObjectPool<T> {
+public abstract class BaseGenericObjectPool<T> extends BaseObject {
 
     // Constants
     /**
@@ -125,8 +127,8 @@ public abstract class BaseGenericObjectP
      *                      overridden by the config
      * @param jmxNamePrefix Prefix to be used for JMX name for the new pool
      */
-    public BaseGenericObjectPool(BaseObjectPoolConfig config,
-            String jmxNameBase, String jmxNamePrefix) {
+    public BaseGenericObjectPool(final BaseObjectPoolConfig config,
+            final String jmxNameBase, final String jmxNamePrefix) {
         if (config.getJmxEnabled()) {
             this.oname = jmxRegister(config, jmxNameBase, jmxNamePrefix);
         } else {
@@ -137,7 +139,7 @@ public abstract class BaseGenericObjectP
         this.creationStackTrace = getStackTrace(new Exception());
 
         // save the current TCCL (if any) to be used later by the evictor Thread
-        ClassLoader cl = Thread.currentThread().getContextClassLoader();
+        final ClassLoader cl = Thread.currentThread().getContextClassLoader();
         if (cl == null) {
             factoryClassLoader = null;
         } else {
@@ -174,7 +176,7 @@ public abstract class BaseGenericObjectP
      *
      * @see #getMaxTotal
      */
-    public final void setMaxTotal(int maxTotal) {
+    public final void setMaxTotal(final int maxTotal) {
         this.maxTotal = maxTotal;
     }
 
@@ -203,7 +205,7 @@ public abstract class BaseGenericObjectP
      *
      * @see #getBlockWhenExhausted
      */
-    public final void setBlockWhenExhausted(boolean blockWhenExhausted) {
+    public final void setBlockWhenExhausted(final boolean blockWhenExhausted) {
         this.blockWhenExhausted = blockWhenExhausted;
     }
 
@@ -238,7 +240,7 @@ public abstract class BaseGenericObjectP
      * @see #getMaxWaitMillis
      * @see #setBlockWhenExhausted
      */
-    public final void setMaxWaitMillis(long maxWaitMillis) {
+    public final void setMaxWaitMillis(final long maxWaitMillis) {
         this.maxWaitMillis = maxWaitMillis;
     }
 
@@ -281,7 +283,7 @@ public abstract class BaseGenericObjectP
      *
      * @see #getLifo()
      */
-    public final void setLifo(boolean lifo) {
+    public final void setLifo(final boolean lifo) {
         this.lifo = lifo;
     }
 
@@ -318,7 +320,7 @@ public abstract class BaseGenericObjectP
      *
      * @since 2.2
      */
-    public final void setTestOnCreate(boolean testOnCreate) {
+    public final void setTestOnCreate(final boolean testOnCreate) {
         this.testOnCreate = testOnCreate;
     }
 
@@ -353,7 +355,7 @@ public abstract class BaseGenericObjectP
      *
      * @see #getTestOnBorrow
      */
-    public final void setTestOnBorrow(boolean testOnBorrow) {
+    public final void setTestOnBorrow(final boolean testOnBorrow) {
         this.testOnBorrow = testOnBorrow;
     }
 
@@ -386,7 +388,7 @@ public abstract class BaseGenericObjectP
      *
      * @see #getTestOnReturn
      */
-    public final void setTestOnReturn(boolean testOnReturn) {
+    public final void setTestOnReturn(final boolean testOnReturn) {
         this.testOnReturn = testOnReturn;
     }
 
@@ -423,7 +425,7 @@ public abstract class BaseGenericObjectP
      * @see #getTestWhileIdle
      * @see #setTimeBetweenEvictionRunsMillis
      */
-    public final void setTestWhileIdle(boolean testWhileIdle) {
+    public final void setTestWhileIdle(final boolean testWhileIdle) {
         this.testWhileIdle = testWhileIdle;
     }
 
@@ -451,7 +453,7 @@ public abstract class BaseGenericObjectP
      * @see #getTimeBetweenEvictionRunsMillis
      */
     public final void setTimeBetweenEvictionRunsMillis(
-            long timeBetweenEvictionRunsMillis) {
+            final long timeBetweenEvictionRunsMillis) {
         this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
         startEvictor(timeBetweenEvictionRunsMillis);
     }
@@ -491,7 +493,7 @@ public abstract class BaseGenericObjectP
      * @see #getNumTestsPerEvictionRun
      * @see #setTimeBetweenEvictionRunsMillis
      */
-    public final void setNumTestsPerEvictionRun(int numTestsPerEvictionRun) {
+    public final void setNumTestsPerEvictionRun(final int numTestsPerEvictionRun) {
         this.numTestsPerEvictionRun = numTestsPerEvictionRun;
     }
 
@@ -525,7 +527,7 @@ public abstract class BaseGenericObjectP
      * @see #setTimeBetweenEvictionRunsMillis
      */
     public final void setMinEvictableIdleTimeMillis(
-            long minEvictableIdleTimeMillis) {
+            final long minEvictableIdleTimeMillis) {
         this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
     }
 
@@ -566,7 +568,7 @@ public abstract class BaseGenericObjectP
      * @see #getSoftMinEvictableIdleTimeMillis
      */
     public final void setSoftMinEvictableIdleTimeMillis(
-            long softMinEvictableIdleTimeMillis) {
+            final long softMinEvictableIdleTimeMillis) {
         this.softMinEvictableIdleTimeMillis = softMinEvictableIdleTimeMillis;
     }
 
@@ -594,30 +596,31 @@ public abstract class BaseGenericObjectP
      * @see #getEvictionPolicyClassName()
      */
     public final void setEvictionPolicyClassName(
-            String evictionPolicyClassName) {
+            final String evictionPolicyClassName) {
         try {
             Class<?> clazz;
             try {
                 clazz = Class.forName(evictionPolicyClassName, true,
                         Thread.currentThread().getContextClassLoader());
-            } catch (ClassNotFoundException e) {
+            } catch (final ClassNotFoundException e) {
                 clazz = Class.forName(evictionPolicyClassName);
             }
-            Object policy = clazz.newInstance();
+            final Object policy = clazz.newInstance();
             if (policy instanceof EvictionPolicy<?>) {
                 @SuppressWarnings("unchecked") // safe, because we just checked the class
+                final
                 EvictionPolicy<T> evicPolicy = (EvictionPolicy<T>) policy;
                 this.evictionPolicy = evicPolicy;
             }
-        } catch (ClassNotFoundException e) {
+        } catch (final ClassNotFoundException e) {
             throw new IllegalArgumentException(
                     "Unable to create EvictionPolicy instance of type " +
                     evictionPolicyClassName, e);
-        } catch (InstantiationException e) {
+        } catch (final InstantiationException e) {
             throw new IllegalArgumentException(
                     "Unable to create EvictionPolicy instance of type " +
                     evictionPolicyClassName, e);
-        } catch (IllegalAccessException e) {
+        } catch (final IllegalAccessException e) {
             throw new IllegalArgumentException(
                     "Unable to create EvictionPolicy instance of type " +
                     evictionPolicyClassName, e);
@@ -681,7 +684,7 @@ public abstract class BaseGenericObjectP
      *
      * @param delay time in milliseconds before start and between eviction runs
      */
-    final void startEvictor(long delay) {
+    final void startEvictor(final long delay) {
         synchronized (evictionLock) {
             if (null != evictor) {
                 EvictionTimer.cancel(evictor);
@@ -845,7 +848,7 @@ public abstract class BaseGenericObjectP
      *                                      for no listener
      */
     public final void setSwallowedExceptionListener(
-            SwallowedExceptionListener swallowedExceptionListener) {
+            final SwallowedExceptionListener swallowedExceptionListener) {
         this.swallowedExceptionListener = swallowedExceptionListener;
     }
 
@@ -855,8 +858,8 @@ public abstract class BaseGenericObjectP
      *
      * @param e exception to be swallowed
      */
-    final void swallowException(Exception e) {
-        SwallowedExceptionListener listener = getSwallowedExceptionListener();
+    final void swallowException(final Exception e) {
+        final SwallowedExceptionListener listener = getSwallowedExceptionListener();
 
         if (listener == null) {
             return;
@@ -864,11 +867,11 @@ public abstract class BaseGenericObjectP
 
         try {
             listener.onSwallowException(e);
-        } catch (OutOfMemoryError oome) {
+        } catch (final OutOfMemoryError oome) {
             throw oome;
-        } catch (VirtualMachineError vme) {
+        } catch (final VirtualMachineError vme) {
             throw vme;
-        } catch (Throwable t) {
+        } catch (final Throwable t) {
             // Ignore. Enjoy the irony.
         }
     }
@@ -878,7 +881,7 @@ public abstract class BaseGenericObjectP
      * @param p object borrowed from the pool
      * @param waitTime time (in milliseconds) that the borrowing thread had to wait
      */
-    final void updateStatsBorrow(PooledObject<T> p, long waitTime) {
+    final void updateStatsBorrow(final PooledObject<T> p, final long waitTime) {
         borrowedCount.incrementAndGet();
         idleTimes.add(p.getIdleTimeMillis());
         waitTimes.add(waitTime);
@@ -898,7 +901,7 @@ public abstract class BaseGenericObjectP
      * @param activeTime the amount of time (in milliseconds) that the returning
      * object was checked out
      */
-    final void updateStatsReturn(long activeTime) {
+    final void updateStatsReturn(final long activeTime) {
         returnedCount.incrementAndGet();
         activeTimes.add(activeTime);
     }
@@ -911,9 +914,9 @@ public abstract class BaseGenericObjectP
             try {
                 ManagementFactory.getPlatformMBeanServer().unregisterMBean(
                         oname);
-            } catch (MBeanRegistrationException e) {
+            } catch (final MBeanRegistrationException e) {
                 swallowException(e);
-            } catch (InstanceNotFoundException e) {
+            } catch (final InstanceNotFoundException e) {
                 swallowException(e);
             }
         }
@@ -932,10 +935,10 @@ public abstract class BaseGenericObjectP
      * @param jmxNamePrefix name prefix
      * @return registered ObjectName, null if registration fails
      */
-    private ObjectName jmxRegister(BaseObjectPoolConfig config,
-            String jmxNameBase, String jmxNamePrefix) {
+    private ObjectName jmxRegister(final BaseObjectPoolConfig config,
+            final String jmxNameBase, String jmxNamePrefix) {
         ObjectName objectName = null;
-        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+        final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
         int i = 1;
         boolean registered = false;
         String base = config.getJmxNameBase();
@@ -955,7 +958,7 @@ public abstract class BaseGenericObjectP
                 mbs.registerMBean(this, objName);
                 objectName = objName;
                 registered = true;
-            } catch (MalformedObjectNameException e) {
+            } catch (final MalformedObjectNameException e) {
                 if (BaseObjectPoolConfig.DEFAULT_JMX_NAME_PREFIX.equals(
                         jmxNamePrefix) && jmxNameBase.equals(base)) {
                     // Shouldn't happen. Skip registration if it does.
@@ -966,13 +969,13 @@ public abstract class BaseGenericObjectP
                             BaseObjectPoolConfig.DEFAULT_JMX_NAME_PREFIX;
                     base = jmxNameBase;
                 }
-            } catch (InstanceAlreadyExistsException e) {
+            } catch (final InstanceAlreadyExistsException e) {
                 // Increment the index and try again
                 i++;
-            } catch (MBeanRegistrationException e) {
+            } catch (final MBeanRegistrationException e) {
                 // Shouldn't happen. Skip registration if it does.
                 registered = true;
-            } catch (NotCompliantMBeanException e) {
+            } catch (final NotCompliantMBeanException e) {
                 // Shouldn't happen. Skip registration if it does.
                 registered = true;
             }
@@ -985,12 +988,12 @@ public abstract class BaseGenericObjectP
      * @param e exception to trace
      * @return exception stack trace as a string
      */
-    private String getStackTrace(Exception e) {
+    private String getStackTrace(final Exception e) {
         // Need the exception in string form to prevent the retention of
         // references to classes in the stack trace that could trigger a memory
         // leak in a container environment.
-        Writer w = new StringWriter();
-        PrintWriter pw = new PrintWriter(w);
+        final Writer w = new StringWriter();
+        final PrintWriter pw = new PrintWriter(w);
         e.printStackTrace(pw);
         return w.toString();
     }
@@ -1013,12 +1016,12 @@ public abstract class BaseGenericObjectP
          */
         @Override
         public void run() {
-            ClassLoader savedClassLoader =
+            final ClassLoader savedClassLoader =
                     Thread.currentThread().getContextClassLoader();
             try {
                 if (factoryClassLoader != null) {
                     // Set the class loader for the factory
-                    ClassLoader cl = factoryClassLoader.get();
+                    final ClassLoader cl = factoryClassLoader.get();
                     if (cl == null) {
                         // The pool has been dereferenced and the class loader
                         // GC'd. Cancel this timer so the pool can be GC'd as
@@ -1032,9 +1035,9 @@ public abstract class BaseGenericObjectP
                 // Evict from the pool
                 try {
                     evict();
-                } catch(Exception e) {
+                } catch(final Exception e) {
                     swallowException(e);
-                } catch(OutOfMemoryError oome) {
+                } catch(final OutOfMemoryError oome) {
                     // Log problem but give evictor thread a chance to continue
                     // in case error is recoverable
                     oome.printStackTrace(System.err);
@@ -1042,7 +1045,7 @@ public abstract class BaseGenericObjectP
                 // Re-create idle instances.
                 try {
                     ensureMinIdle();
-                } catch (Exception e) {
+                } catch (final Exception e) {
                     swallowException(e);
                 }
             } finally {
@@ -1067,7 +1070,7 @@ public abstract class BaseGenericObjectP
          *
          * @param size number of values to maintain in the cache.
          */
-        public StatsStore(int size) {
+        public StatsStore(final int size) {
             this.size = size;
             values = new AtomicLong[size];
             for (int i = 0; i < size; i++) {
@@ -1081,7 +1084,7 @@ public abstract class BaseGenericObjectP
          *
          * @param value new value to add to the cache.
          */
-        public synchronized void add(long value) {
+        public synchronized void add(final long value) {
             values[index].set(value);
             index++;
             if (index == size) {
@@ -1098,7 +1101,7 @@ public abstract class BaseGenericObjectP
             double result = 0;
             int counter = 0;
             for (int i = 0; i < size; i++) {
-                long value = values[i].get();
+                final long value = values[i].get();
                 if (value != -1) {
                     counter++;
                     result = result * ((counter - 1) / (double) counter) +
@@ -1107,6 +1110,19 @@ public abstract class BaseGenericObjectP
             }
             return (long) result;
         }
+
+        @Override
+        public String toString() {
+            final StringBuilder builder = new StringBuilder();
+            builder.append("StatsStore [values=");
+            builder.append(Arrays.toString(values));
+            builder.append(", size=");
+            builder.append(size);
+            builder.append(", index=");
+            builder.append(index);
+            builder.append("]");
+            return builder.toString();
+        }
     }
 
     /**
@@ -1177,7 +1193,7 @@ public abstract class BaseGenericObjectP
          *
          * @param instance object to wrap
          */
-        public IdentityWrapper(T instance) {
+        public IdentityWrapper(final T instance) {
             this.instance = instance;
         }
 
@@ -1188,8 +1204,9 @@ public abstract class BaseGenericObjectP
 
         @Override
         @SuppressWarnings("rawtypes")
-        public boolean equals(Object other) {
-            return ((IdentityWrapper) other).instance == instance;
+        public boolean equals(final Object other) {
+            return  other instanceof IdentityWrapper &&
+                    ((IdentityWrapper) other).instance == instance;
         }
 
         /**
@@ -1198,6 +1215,85 @@ public abstract class BaseGenericObjectP
         public T getObject() {
             return instance;
         }
+
+        @Override
+        public String toString() {
+            final StringBuilder builder = new StringBuilder();
+            builder.append("IdentityWrapper [instance=");
+            builder.append(instance);
+            builder.append("]");
+            return builder.toString();
+        }
+    }
+
+    @Override
+    protected void toStringAppendFields(final StringBuilder builder) {
+        builder.append("maxTotal=");
+        builder.append(maxTotal);
+        builder.append(", blockWhenExhausted=");
+        builder.append(blockWhenExhausted);
+        builder.append(", maxWaitMillis=");
+        builder.append(maxWaitMillis);
+        builder.append(", lifo=");
+        builder.append(lifo);
+        builder.append(", fairness=");
+        builder.append(fairness);
+        builder.append(", testOnCreate=");
+        builder.append(testOnCreate);
+        builder.append(", testOnBorrow=");
+        builder.append(testOnBorrow);
+        builder.append(", testOnReturn=");
+        builder.append(testOnReturn);
+        builder.append(", testWhileIdle=");
+        builder.append(testWhileIdle);
+        builder.append(", timeBetweenEvictionRunsMillis=");
+        builder.append(timeBetweenEvictionRunsMillis);
+        builder.append(", numTestsPerEvictionRun=");
+        builder.append(numTestsPerEvictionRun);
+        builder.append(", minEvictableIdleTimeMillis=");
+        builder.append(minEvictableIdleTimeMillis);
+        builder.append(", softMinEvictableIdleTimeMillis=");
+        builder.append(softMinEvictableIdleTimeMillis);
+        builder.append(", evictionPolicy=");
+        builder.append(evictionPolicy);
+        builder.append(", closeLock=");
+        builder.append(closeLock);
+        builder.append(", closed=");
+        builder.append(closed);
+        builder.append(", evictionLock=");
+        builder.append(evictionLock);
+        builder.append(", evictor=");
+        builder.append(evictor);
+        builder.append(", evictionIterator=");
+        builder.append(evictionIterator);
+        builder.append(", factoryClassLoader=");
+        builder.append(factoryClassLoader);
+        builder.append(", oname=");
+        builder.append(oname);
+        builder.append(", creationStackTrace=");
+        builder.append(creationStackTrace);
+        builder.append(", borrowedCount=");
+        builder.append(borrowedCount);
+        builder.append(", returnedCount=");
+        builder.append(returnedCount);
+        builder.append(", createdCount=");
+        builder.append(createdCount);
+        builder.append(", destroyedCount=");
+        builder.append(destroyedCount);
+        builder.append(", destroyedByEvictorCount=");
+        builder.append(destroyedByEvictorCount);
+        builder.append(", destroyedByBorrowValidationCount=");
+        builder.append(destroyedByBorrowValidationCount);
+        builder.append(", activeTimes=");
+        builder.append(activeTimes);
+        builder.append(", idleTimes=");
+        builder.append(idleTimes);
+        builder.append(", waitTimes=");
+        builder.append(waitTimes);
+        builder.append(", maxBorrowWaitTimeMillis=");
+        builder.append(maxBorrowWaitTimeMillis);
+        builder.append(", swallowedExceptionListener=");
+        builder.append(swallowedExceptionListener);
     }
 
 }

Modified: tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/BaseObjectPoolConfig.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/BaseObjectPoolConfig.java?rev=1743737&r1=1743736&r2=1743737&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/BaseObjectPoolConfig.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/BaseObjectPoolConfig.java Fri May 13 20:02:33 2016
@@ -16,6 +16,8 @@
  */
 package org.apache.tomcat.dbcp.pool2.impl;
 
+import org.apache.tomcat.dbcp.pool2.BaseObject;
+
 /**
  * Provides the implementation for the common attributes shared by the
  * sub-classes. New instances of this class will be created using the defaults
@@ -25,7 +27,7 @@ package org.apache.tomcat.dbcp.pool2.imp
  *
  * @since 2.0
  */
-public abstract class BaseObjectPoolConfig implements Cloneable {
+public abstract class BaseObjectPoolConfig extends BaseObject implements Cloneable {
 
     /**
      * The default value for the {@code lifo} configuration attribute.
@@ -228,7 +230,7 @@ public abstract class BaseObjectPoolConf
      * @see GenericObjectPool#getLifo()
      * @see GenericKeyedObjectPool#getLifo()
      */
-    public void setLifo(boolean lifo) {
+    public void setLifo(final boolean lifo) {
         this.lifo = lifo;
     }
 
@@ -242,7 +244,7 @@ public abstract class BaseObjectPoolConf
      * @see GenericObjectPool#getFairness()
      * @see GenericKeyedObjectPool#getFairness()
      */
-    public void setFairness(boolean fairness) {
+    public void setFairness(final boolean fairness) {
         this.fairness = fairness;
     }
 
@@ -270,7 +272,7 @@ public abstract class BaseObjectPoolConf
      * @see GenericObjectPool#getMaxWaitMillis()
      * @see GenericKeyedObjectPool#getMaxWaitMillis()
      */
-    public void setMaxWaitMillis(long maxWaitMillis) {
+    public void setMaxWaitMillis(final long maxWaitMillis) {
         this.maxWaitMillis = maxWaitMillis;
     }
 
@@ -298,7 +300,7 @@ public abstract class BaseObjectPoolConf
      * @see GenericObjectPool#getMinEvictableIdleTimeMillis()
      * @see GenericKeyedObjectPool#getMinEvictableIdleTimeMillis()
      */
-    public void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) {
+    public void setMinEvictableIdleTimeMillis(final long minEvictableIdleTimeMillis) {
         this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
     }
 
@@ -330,7 +332,7 @@ public abstract class BaseObjectPoolConf
      * @see GenericKeyedObjectPool#getSoftMinEvictableIdleTimeMillis()
      */
     public void setSoftMinEvictableIdleTimeMillis(
-            long softMinEvictableIdleTimeMillis) {
+            final long softMinEvictableIdleTimeMillis) {
         this.softMinEvictableIdleTimeMillis = softMinEvictableIdleTimeMillis;
     }
 
@@ -358,7 +360,7 @@ public abstract class BaseObjectPoolConf
      * @see GenericObjectPool#getNumTestsPerEvictionRun()
      * @see GenericKeyedObjectPool#getNumTestsPerEvictionRun()
      */
-    public void setNumTestsPerEvictionRun(int numTestsPerEvictionRun) {
+    public void setNumTestsPerEvictionRun(final int numTestsPerEvictionRun) {
         this.numTestsPerEvictionRun = numTestsPerEvictionRun;
     }
 
@@ -390,7 +392,7 @@ public abstract class BaseObjectPoolConf
      *
      * @since 2.2
      */
-    public void setTestOnCreate(boolean testOnCreate) {
+    public void setTestOnCreate(final boolean testOnCreate) {
         this.testOnCreate = testOnCreate;
     }
 
@@ -418,7 +420,7 @@ public abstract class BaseObjectPoolConf
      * @see GenericObjectPool#getTestOnBorrow()
      * @see GenericKeyedObjectPool#getTestOnBorrow()
      */
-    public void setTestOnBorrow(boolean testOnBorrow) {
+    public void setTestOnBorrow(final boolean testOnBorrow) {
         this.testOnBorrow = testOnBorrow;
     }
 
@@ -446,7 +448,7 @@ public abstract class BaseObjectPoolConf
      * @see GenericObjectPool#getTestOnReturn()
      * @see GenericKeyedObjectPool#getTestOnReturn()
      */
-    public void setTestOnReturn(boolean testOnReturn) {
+    public void setTestOnReturn(final boolean testOnReturn) {
         this.testOnReturn = testOnReturn;
     }
 
@@ -474,7 +476,7 @@ public abstract class BaseObjectPoolConf
      * @see GenericObjectPool#getTestWhileIdle()
      * @see GenericKeyedObjectPool#getTestWhileIdle()
      */
-    public void setTestWhileIdle(boolean testWhileIdle) {
+    public void setTestWhileIdle(final boolean testWhileIdle) {
         this.testWhileIdle = testWhileIdle;
     }
 
@@ -504,7 +506,7 @@ public abstract class BaseObjectPoolConf
      * @see GenericKeyedObjectPool#getTimeBetweenEvictionRunsMillis()
      */
     public void setTimeBetweenEvictionRunsMillis(
-            long timeBetweenEvictionRunsMillis) {
+            final long timeBetweenEvictionRunsMillis) {
         this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
     }
 
@@ -532,7 +534,7 @@ public abstract class BaseObjectPoolConf
      * @see GenericObjectPool#getEvictionPolicyClassName()
      * @see GenericKeyedObjectPool#getEvictionPolicyClassName()
      */
-    public void setEvictionPolicyClassName(String evictionPolicyClassName) {
+    public void setEvictionPolicyClassName(final String evictionPolicyClassName) {
         this.evictionPolicyClassName = evictionPolicyClassName;
     }
 
@@ -560,7 +562,7 @@ public abstract class BaseObjectPoolConf
      * @see GenericObjectPool#getBlockWhenExhausted()
      * @see GenericKeyedObjectPool#getBlockWhenExhausted()
      */
-    public void setBlockWhenExhausted(boolean blockWhenExhausted) {
+    public void setBlockWhenExhausted(final boolean blockWhenExhausted) {
         this.blockWhenExhausted = blockWhenExhausted;
     }
 
@@ -582,7 +584,7 @@ public abstract class BaseObjectPoolConf
      * @param jmxEnabled The new setting of {@code jmxEnabled}
      *        for this configuration instance
      */
-    public void setJmxEnabled(boolean jmxEnabled) {
+    public void setJmxEnabled(final boolean jmxEnabled) {
         this.jmxEnabled = jmxEnabled;
     }
 
@@ -608,7 +610,7 @@ public abstract class BaseObjectPoolConf
      * @param jmxNameBase The new setting of {@code jmxNameBase}
      *        for this configuration instance
      */
-    public void setJmxNameBase(String jmxNameBase) {
+    public void setJmxNameBase(final String jmxNameBase) {
         this.jmxNameBase = jmxNameBase;
     }
 
@@ -632,7 +634,43 @@ public abstract class BaseObjectPoolConf
      * @param jmxNamePrefix The new setting of {@code jmxNamePrefix}
      *        for this configuration instance
      */
-    public void setJmxNamePrefix(String jmxNamePrefix) {
+    public void setJmxNamePrefix(final String jmxNamePrefix) {
         this.jmxNamePrefix = jmxNamePrefix;
     }
+
+    @Override
+    protected void toStringAppendFields(final StringBuilder builder) {
+        builder.append("lifo=");
+        builder.append(lifo);
+        builder.append(", fairness=");
+        builder.append(fairness);
+        builder.append(", maxWaitMillis=");
+        builder.append(maxWaitMillis);
+        builder.append(", minEvictableIdleTimeMillis=");
+        builder.append(minEvictableIdleTimeMillis);
+        builder.append(", softMinEvictableIdleTimeMillis=");
+        builder.append(softMinEvictableIdleTimeMillis);
+        builder.append(", numTestsPerEvictionRun=");
+        builder.append(numTestsPerEvictionRun);
+        builder.append(", evictionPolicyClassName=");
+        builder.append(evictionPolicyClassName);
+        builder.append(", testOnCreate=");
+        builder.append(testOnCreate);
+        builder.append(", testOnBorrow=");
+        builder.append(testOnBorrow);
+        builder.append(", testOnReturn=");
+        builder.append(testOnReturn);
+        builder.append(", testWhileIdle=");
+        builder.append(testWhileIdle);
+        builder.append(", timeBetweenEvictionRunsMillis=");
+        builder.append(timeBetweenEvictionRunsMillis);
+        builder.append(", blockWhenExhausted=");
+        builder.append(blockWhenExhausted);
+        builder.append(", jmxEnabled=");
+        builder.append(jmxEnabled);
+        builder.append(", jmxNamePrefix=");
+        builder.append(jmxNamePrefix);
+        builder.append(", jmxNameBase=");
+        builder.append(jmxNameBase);
+    }
 }

Modified: tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/DefaultEvictionPolicy.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/DefaultEvictionPolicy.java?rev=1743737&r1=1743736&r2=1743737&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/DefaultEvictionPolicy.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/DefaultEvictionPolicy.java Fri May 13 20:02:33 2016
@@ -40,8 +40,8 @@ import org.apache.tomcat.dbcp.pool2.Pool
 public class DefaultEvictionPolicy<T> implements EvictionPolicy<T> {
 
     @Override
-    public boolean evict(EvictionConfig config, PooledObject<T> underTest,
-            int idleCount) {
+    public boolean evict(final EvictionConfig config, final PooledObject<T> underTest,
+            final int idleCount) {
 
         if ((config.getIdleSoftEvictTime() < underTest.getIdleTimeMillis() &&
                 config.getMinIdle() < idleCount) ||

Modified: tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/DefaultPooledObject.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/DefaultPooledObject.java?rev=1743737&r1=1743736&r2=1743737&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/DefaultPooledObject.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/DefaultPooledObject.java Fri May 13 20:02:33 2016
@@ -54,7 +54,7 @@ public class DefaultPooledObject<T> impl
      *
      * @param object The object to wrap
      */
-    public DefaultPooledObject(T object) {
+    public DefaultPooledObject(final T object) {
         this.object = object;
     }
 
@@ -71,14 +71,13 @@ public class DefaultPooledObject<T> impl
     @Override
     public long getActiveTimeMillis() {
         // Take copies to avoid threading issues
-        long rTime = lastReturnTime;
-        long bTime = lastBorrowTime;
+        final long rTime = lastReturnTime;
+        final long bTime = lastBorrowTime;
 
         if (rTime > bTime) {
             return rTime - bTime;
-        } else {
-            return System.currentTimeMillis() - bTime;
         }
+        return System.currentTimeMillis() - bTime;
     }
 
     @Override
@@ -122,13 +121,12 @@ public class DefaultPooledObject<T> impl
     public long getLastUsedTime() {
         if (object instanceof TrackedUse) {
             return Math.max(((TrackedUse) object).getLastUsed(), lastUseTime);
-        } else {
-            return lastUseTime;
         }
+        return lastUseTime;
     }
 
     @Override
-    public int compareTo(PooledObject<T> other) {
+    public int compareTo(final PooledObject<T> other) {
         final long lastActiveDiff = this.getLastReturnTime() - other.getLastReturnTime();
         if (lastActiveDiff == 0) {
             // Make sure the natural ordering is broadly consistent with equals
@@ -143,7 +141,7 @@ public class DefaultPooledObject<T> impl
 
     @Override
     public String toString() {
-        StringBuilder result = new StringBuilder();
+        final StringBuilder result = new StringBuilder();
         result.append("Object: ");
         result.append(object.toString());
         result.append(", State: ");
@@ -166,7 +164,7 @@ public class DefaultPooledObject<T> impl
 
     @Override
     public synchronized boolean endEvictionTest(
-            Deque<PooledObject<T>> idleQueue) {
+            final Deque<PooledObject<T>> idleQueue) {
         if (state == PooledObjectState.EVICTION) {
             state = PooledObjectState.IDLE;
             return true;
@@ -240,14 +238,14 @@ public class DefaultPooledObject<T> impl
     }
 
     @Override
-    public void printStackTrace(PrintWriter writer) {
+    public void printStackTrace(final PrintWriter writer) {
         boolean written = false;
-        Exception borrowedByCopy = this.borrowedBy;
+        final Exception borrowedByCopy = this.borrowedBy;
         if (borrowedByCopy != null) {
             borrowedByCopy.printStackTrace(writer);
             written = true;
         }
-        Exception usedByCopy = this.usedBy;
+        final Exception usedByCopy = this.usedBy;
         if (usedByCopy != null) {
             usedByCopy.printStackTrace(writer);
             written = true;
@@ -283,7 +281,7 @@ public class DefaultPooledObject<T> impl
     }
 
     @Override
-    public void setLogAbandoned(boolean logAbandoned) {
+    public void setLogAbandoned(final boolean logAbandoned) {
         this.logAbandoned = logAbandoned;
     }
 

Modified: tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/DefaultPooledObjectInfo.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/DefaultPooledObjectInfo.java?rev=1743737&r1=1743736&r2=1743737&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/DefaultPooledObjectInfo.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/DefaultPooledObjectInfo.java Fri May 13 20:02:33 2016
@@ -37,7 +37,7 @@ public class DefaultPooledObjectInfo imp
      *
      * @param pooledObject The pooled object that this instance will represent
      */
-    public DefaultPooledObjectInfo(PooledObject<?> pooledObject) {
+    public DefaultPooledObjectInfo(final PooledObject<?> pooledObject) {
         this.pooledObject = pooledObject;
     }
 
@@ -48,7 +48,7 @@ public class DefaultPooledObjectInfo imp
 
     @Override
     public String getCreateTimeFormatted() {
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
+        final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
         return sdf.format(Long.valueOf(pooledObject.getCreateTime()));
     }
 
@@ -59,13 +59,13 @@ public class DefaultPooledObjectInfo imp
 
     @Override
     public String getLastBorrowTimeFormatted() {
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
+        final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
         return sdf.format(Long.valueOf(pooledObject.getLastBorrowTime()));
     }
 
     @Override
     public String getLastBorrowTrace() {
-        StringWriter sw = new StringWriter();
+        final StringWriter sw = new StringWriter();
         pooledObject.printStackTrace(new PrintWriter(sw));
         return sw.toString();
     }
@@ -77,7 +77,7 @@ public class DefaultPooledObjectInfo imp
 
     @Override
     public String getLastReturnTimeFormatted() {
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
+        final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
         return sdf.format(Long.valueOf(pooledObject.getLastReturnTime()));
     }
 
@@ -96,8 +96,19 @@ public class DefaultPooledObjectInfo imp
         // TODO Simplify this once getBorrowedCount has been added to PooledObject
         if (pooledObject instanceof DefaultPooledObject) {
             return ((DefaultPooledObject<?>) pooledObject).getBorrowedCount();
-        } else {
-            return -1;
         }
+        return -1;
+    }
+
+    /**
+     * @since 2.4.3
+     */
+    @Override
+    public String toString() {
+        final StringBuilder builder = new StringBuilder();
+        builder.append("DefaultPooledObjectInfo [pooledObject=");
+        builder.append(pooledObject);
+        builder.append("]");
+        return builder.toString();
     }
 }

Modified: tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/EvictionConfig.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/EvictionConfig.java?rev=1743737&r1=1743736&r2=1743737&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/EvictionConfig.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/EvictionConfig.java Fri May 13 20:02:33 2016
@@ -31,7 +31,6 @@ public class EvictionConfig {
     private final long idleSoftEvictTime;
     private final int minIdle;
 
-
     /**
      * Create a new eviction configuration with the specified parameters.
      * Instances are immutable.
@@ -44,8 +43,8 @@ public class EvictionConfig {
      *        {@link GenericObjectPool#getMinIdle()} or
      *        {@link GenericKeyedObjectPool#getMinIdlePerKey()}
      */
-    public EvictionConfig(long poolIdleEvictTime, long poolIdleSoftEvictTime,
-            int minIdle) {
+    public EvictionConfig(final long poolIdleEvictTime, final long poolIdleSoftEvictTime,
+            final int minIdle) {
         if (poolIdleEvictTime > 0) {
             idleEvictTime = poolIdleEvictTime;
         } else {
@@ -96,4 +95,20 @@ public class EvictionConfig {
     public int getMinIdle() {
         return minIdle;
     }
+
+    /**
+     * @since 2.4
+     */
+    @Override
+    public String toString() {
+        final StringBuilder builder = new StringBuilder();
+        builder.append("EvictionConfig [idleEvictTime=");
+        builder.append(idleEvictTime);
+        builder.append(", idleSoftEvictTime=");
+        builder.append(idleSoftEvictTime);
+        builder.append(", minIdle=");
+        builder.append(minIdle);
+        builder.append("]");
+        return builder.toString();
+    }
 }

Modified: tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/EvictionTimer.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/EvictionTimer.java?rev=1743737&r1=1743736&r2=1743737&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/EvictionTimer.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/tomcat/dbcp/pool2/impl/EvictionTimer.java Fri May 13 20:02:33 2016
@@ -58,11 +58,11 @@ class EvictionTimer {
      * @param delay     Delay in milliseconds before task is executed
      * @param period    Time in milliseconds between executions
      */
-    static synchronized void schedule(TimerTask task, long delay, long period) {
+    static synchronized void schedule(final TimerTask task, final long delay, final long period) {
         if (null == _timer) {
             // Force the new Timer thread to be created with a context class
             // loader set to the class loader that loaded this library
-            ClassLoader ccl = AccessController.doPrivileged(
+            final ClassLoader ccl = AccessController.doPrivileged(
                     new PrivilegedGetTccl());
             try {
                 AccessController.doPrivileged(new PrivilegedSetTccl(
@@ -80,7 +80,7 @@ class EvictionTimer {
      * Remove the specified eviction task from the timer.
      * @param task      Task to be scheduled
      */
-    static synchronized void cancel(TimerTask task) {
+    static synchronized void cancel(final TimerTask task) {
         task.cancel();
         _usageCount--;
         if (_usageCount == 0) {
@@ -109,14 +109,14 @@ class EvictionTimer {
     private static class PrivilegedSetTccl implements PrivilegedAction<Void> {
 
         /** ClassLoader */
-        private final ClassLoader cl;
+        private final ClassLoader classLoader;
 
         /**
          * Create a new PrivilegedSetTccl using the given classloader
-         * @param cl ClassLoader to use
+         * @param classLoader ClassLoader to use
          */
-        PrivilegedSetTccl(ClassLoader cl) {
-            this.cl = cl;
+        PrivilegedSetTccl(final ClassLoader cl) {
+            this.classLoader = cl;
         }
 
         /**
@@ -124,9 +124,18 @@ class EvictionTimer {
          */
         @Override
         public Void run() {
-            Thread.currentThread().setContextClassLoader(cl);
+            Thread.currentThread().setContextClassLoader(classLoader);
             return null;
         }
+
+        @Override
+        public String toString() {
+            final StringBuilder builder = new StringBuilder();
+            builder.append("PrivilegedSetTccl [classLoader=");
+            builder.append(classLoader);
+            builder.append("]");
+            return builder.toString();
+        }
     }
 
     /**
@@ -147,4 +156,14 @@ class EvictionTimer {
             return new Timer("commons-pool-EvictionTimer", true);
         }
     }
+
+    /**
+     * @since 2.4.3
+     */
+    @Override
+    public String toString() {
+        final StringBuilder builder = new StringBuilder();
+        builder.append("EvictionTimer []");
+        return builder.toString();
+    }
 }



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