You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ma...@apache.org on 2017/03/12 19:47:31 UTC

[01/50] [abbrv] commons-pool git commit: Obsolete DOAP

Repository: commons-pool
Updated Branches:
  refs/heads/1_3_RELEASE_BRANCH [created] 69e8dabed
  refs/heads/1_4_RELEASE_BRANCH [created] 7c1298675
  refs/heads/1_5_RELEASE [created] 1ad1ea8b8
  refs/heads/2_0_DEV [created] ec8305a96
  refs/heads/POOL_1_5 [created] 6d76be52d
  refs/heads/POOL_1_X [created] 3f9714fca
  refs/heads/POOL_FUTURE [created] 28a07d414
  refs/heads/master [created] 3994baf0f
  refs/heads/performance-concurrent [created] 05c3d6f1d
  refs/heads/performance-ideas [created] ae5838a2d
  refs/heads/pool [created] 34bfbae4a


Obsolete DOAP

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/branches/2_0_DEV@1719167 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/ec8305a9
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/ec8305a9
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/ec8305a9

Branch: refs/heads/2_0_DEV
Commit: ec8305a96c2cbe76cda2f55c8b6b300a8b3c8f0f
Parents: 6b7635d
Author: Sebastian Bazley <se...@apache.org>
Authored: Thu Dec 10 18:16:24 2015 +0000
Committer: Sebastian Bazley <se...@apache.org>
Committed: Thu Dec 10 18:16:24 2015 +0000

----------------------------------------------------------------------
 doap_pool.rdf | 50 --------------------------------------------------
 1 file changed, 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/ec8305a9/doap_pool.rdf
----------------------------------------------------------------------
diff --git a/doap_pool.rdf b/doap_pool.rdf
deleted file mode 100644
index b8dcc66..0000000
--- a/doap_pool.rdf
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0"?>
-<rdf:RDF xmlns="http://usefulinc.com/ns/doap#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:asfext="http://projects.apache.org/ns/asfext#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:doap="http://usefulinc.com/ns/doap#" xml:lang="en">
-  <Project rdf:about="http://commons.apache.org/pool/">
-    <name>Apache Commons Pool</name>
-    <homepage rdf:resource="http://commons.apache.org/pool/"/>
-    <programming-language>Java</programming-language>
-    <category rdf:resource="http://projects.apache.org/category/library"/>
-    <license rdf:resource="http://usefulinc.com/doap/licenses/asl20"/>
-    <bug-database rdf:resource="http://issues.apache.org/jira/browse/POOL"/>
-    <download-page rdf:resource="http://jakarta.apache.org/site/downloads/downloads_commons-pool.cgi"/>
-    <asfext:pmc rdf:resource="http://commons.apache.org/"/>
-    <shortdesc xml:lang="en">Commons Object Pooling Library</shortdesc>
-    <description xml:lang="en">Commons Object Pooling Library</description>
-    <repository>
-      <SVNRepository>
-        <browse rdf:resource="http://svn.apache.org/repos/asf/commons/proper/pool/trunk"/>
-        <location rdf:resource="http://svn.apache.org/repos/asf/commons/proper/pool"/>
-      </SVNRepository>
-    </repository>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2004-06-07</created>
-        <revision>1.2</revision>
-      </Version>
-    </release>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2004-10-20</created>
-        <revision>1.1</revision>
-      </Version>
-    </release>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2002-08-12</created>
-        <revision>1.0.1</revision>
-      </Version>
-    </release>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2002-05-04</created>
-        <revision>1.0</revision>
-      </Version>
-    </release>
-    <mailing-list rdf:resource="http://commons.apache.org/mail-lists.html"/>
-  </Project>
-</rdf:RDF>


[33/50] [abbrv] commons-pool git commit: Fix POOL-310 Ensure that threads using GKOP do not block indefinitely if more than maxTotal threads try to borrow objects with different keys at the same time and the factory destroys objects on return.

Posted by ma...@apache.org.
Fix POOL-310
Ensure that threads using GKOP do not block indefinitely if more than maxTotal threads try to borrow objects with different keys at the same time and the factory destroys objects on return. 

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1735563 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/9257fb9e
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/9257fb9e
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/9257fb9e

Branch: refs/heads/master
Commit: 9257fb9e40526f7ad33ac83f0b7f152607510ccd
Parents: f7a0d26
Author: Mark Thomas <ma...@apache.org>
Authored: Fri Mar 18 09:53:38 2016 +0000
Committer: Mark Thomas <ma...@apache.org>
Committed: Fri Mar 18 09:53:38 2016 +0000

----------------------------------------------------------------------
 src/changes/changes.xml                         |  5 +
 .../pool2/impl/GenericKeyedObjectPool.java      | 97 ++++++++++----------
 2 files changed, 53 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/9257fb9e/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 6b48a1f..65ca2b8 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -62,6 +62,11 @@ The <action> type attribute can be add,update,fix,remove.
     <action dev="markt" issue="POOL-307" type="update" due-to="Anthony Whitford">
       Replace inefficient use of keySet with entrySet in GKOP.
     </action>
+    <action dev="markt" issue="POOL-310" type="fix" due-to="Ivan Iliev">
+      Ensure that threads using GKOP do not block indefinitely if more than
+      maxTotal threads try to borrow objects with different keys at the same
+      time and the factory destroys objects on return. 
+    </action>
   </release>
   <release version="2.4.2" date="2015-08-01" description=
  "This is a patch release, including bug fixes only.">

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/9257fb9e/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
index 200c424..6976f2a 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
@@ -478,8 +478,29 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
 
         final long activeTime = p.getActiveTimeMillis();
 
-        if (getTestOnReturn()) {
-            if (!factory.validateObject(key, p)) {
+        try {
+            if (getTestOnReturn()) {
+                if (!factory.validateObject(key, p)) {
+                    try {
+                        destroy(key, p, true);
+                    } catch (final Exception e) {
+                        swallowException(e);
+                    }
+                    if (objectDeque.idleObjects.hasTakeWaiters()) {
+                        try {
+                            addObject(key);
+                        } catch (final Exception e) {
+                            swallowException(e);
+                        }
+                    }
+                    return;
+                }
+            }
+
+            try {
+                factory.passivateObject(key, p);
+            } catch (final Exception e1) {
+                swallowException(e1);
                 try {
                     destroy(key, p, true);
                 } catch (final Exception e) {
@@ -492,65 +513,43 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
                         swallowException(e);
                     }
                 }
-                updateStatsReturn(activeTime);
                 return;
             }
-        }
 
-        try {
-            factory.passivateObject(key, p);
-        } catch (final Exception e1) {
-            swallowException(e1);
-            try {
-                destroy(key, p, true);
-            } catch (final Exception e) {
-                swallowException(e);
+            if (!p.deallocate()) {
+                throw new IllegalStateException(
+                        "Object has already been returned to this pool");
             }
-            if (objectDeque.idleObjects.hasTakeWaiters()) {
+
+            final int maxIdle = getMaxIdlePerKey();
+            final LinkedBlockingDeque<PooledObject<T>> idleObjects =
+                objectDeque.getIdleObjects();
+
+            if (isClosed() || maxIdle > -1 && maxIdle <= idleObjects.size()) {
                 try {
-                    addObject(key);
+                    destroy(key, p, true);
                 } catch (final Exception e) {
                     swallowException(e);
                 }
-            }
-            updateStatsReturn(activeTime);
-            return;
-        }
-
-        if (!p.deallocate()) {
-            throw new IllegalStateException(
-                    "Object has already been returned to this pool");
-        }
-
-        final int maxIdle = getMaxIdlePerKey();
-        final LinkedBlockingDeque<PooledObject<T>> idleObjects =
-            objectDeque.getIdleObjects();
-
-        if (isClosed() || maxIdle > -1 && maxIdle <= idleObjects.size()) {
-            try {
-                destroy(key, p, true);
-            } catch (final Exception e) {
-                swallowException(e);
-            }
-        } else {
-            if (getLifo()) {
-                idleObjects.addFirst(p);
             } else {
-                idleObjects.addLast(p);
+                if (getLifo()) {
+                    idleObjects.addFirst(p);
+                } else {
+                    idleObjects.addLast(p);
+                }
+                if (isClosed()) {
+                    // Pool closed while object was being added to idle objects.
+                    // Make sure the returned object is destroyed rather than left
+                    // in the idle object pool (which would effectively be a leak)
+                    clear(key);
+                }
             }
-            if (isClosed()) {
-                // Pool closed while object was being added to idle objects.
-                // Make sure the returned object is destroyed rather than left
-                // in the idle object pool (which would effectively be a leak)
-                clear(key);
+        } finally {
+            if (hasBorrowWaiters()) {
+                reuseCapacity();
             }
+            updateStatsReturn(activeTime);
         }
-
-        if (hasBorrowWaiters()) {
-            reuseCapacity();
-        }
-
-        updateStatsReturn(activeTime);
     }
 
 


[21/50] [abbrv] commons-pool git commit: [POOL-309] Fix misspellings from "destory" to "destroy". interupt -> interrupt

Posted by ma...@apache.org.
[POOL-309] Fix misspellings from "destory" to "destroy". interupt -> interrupt

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1733561 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/29cc202b
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/29cc202b
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/29cc202b

Branch: refs/heads/master
Commit: 29cc202b9c9783a8cf7a0e2d01785dbfb0a97060
Parents: 5ec116a
Author: Gary D. Gregory <gg...@apache.org>
Authored: Fri Mar 4 06:41:20 2016 +0000
Committer: Gary D. Gregory <gg...@apache.org>
Committed: Fri Mar 4 06:41:20 2016 +0000

----------------------------------------------------------------------
 .../java/org/apache/commons/pool2/impl/TestGenericObjectPool.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/29cc202b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
index 92fee38..a694106 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
@@ -248,7 +248,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         Thread.sleep(200);
         wtt.interrupt();
 
-        // Give interupt time to take effect
+        // Give interrupt time to take effect
         Thread.sleep(200);
 
         // Check thread was interrupted


[22/50] [abbrv] commons-pool git commit: [POOL-309] Fix misspellings from "destory" to "destroy". interupt -> interrupt

Posted by ma...@apache.org.
[POOL-309] Fix misspellings from "destory" to "destroy". interupt -> interrupt

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1733562 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/cd3f495f
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/cd3f495f
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/cd3f495f

Branch: refs/heads/master
Commit: cd3f495f13f535c2e5b413d8988e34d53f617dff
Parents: 29cc202
Author: Gary D. Gregory <gg...@apache.org>
Authored: Fri Mar 4 06:42:32 2016 +0000
Committer: Gary D. Gregory <gg...@apache.org>
Committed: Fri Mar 4 06:42:32 2016 +0000

----------------------------------------------------------------------
 src/changes/changes.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/cd3f495f/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 2503b03..f5d27d4 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -44,7 +44,7 @@ The <action> type attribute can be add,update,fix,remove.
   </properties>
   <body>
   <release version="2.4.3" date="TBD" description="TBD">
-    <action dev="ggregory" issue="POOL-309" type="fix">
+    <action dev="ggregory" issue="POOL-309" type="fix" due-to="jolestar, Roopam Patekar">
       Fix misspellings from "destory" to "destroy".
     </action>
   </release>


[37/50] [abbrv] commons-pool git commit: Format: add a blank line between methods.

Posted by ma...@apache.org.
Format: add a blank line between methods.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1765924 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/8cc1fa06
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/8cc1fa06
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/8cc1fa06

Branch: refs/heads/master
Commit: 8cc1fa06c74e9262e5b1e676abcede026559677b
Parents: bdab334
Author: Gary D. Gregory <gg...@apache.org>
Authored: Fri Oct 21 06:12:33 2016 +0000
Committer: Gary D. Gregory <gg...@apache.org>
Committed: Fri Oct 21 06:12:33 2016 +0000

----------------------------------------------------------------------
 .../commons/pool2/VisitTrackerFactory.java       | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/8cc1fa06/src/test/java/org/apache/commons/pool2/VisitTrackerFactory.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/VisitTrackerFactory.java b/src/test/java/org/apache/commons/pool2/VisitTrackerFactory.java
index f341dea..155613c 100644
--- a/src/test/java/org/apache/commons/pool2/VisitTrackerFactory.java
+++ b/src/test/java/org/apache/commons/pool2/VisitTrackerFactory.java
@@ -22,56 +22,67 @@ import org.apache.commons.pool2.PooledObjectFactory;
 import org.apache.commons.pool2.impl.DefaultPooledObject;
 
 /**
- * Factory that creates VisitTracker instances. Used to
- * test Evictor runs.
+ * Factory that creates VisitTracker instances. Used to test Evictor runs.
  *
  */
-public class VisitTrackerFactory<K> implements PooledObjectFactory<VisitTracker<K>>,
-    KeyedPooledObjectFactory<K,VisitTracker<K>> {
+public class VisitTrackerFactory<K>
+        implements PooledObjectFactory<VisitTracker<K>>, KeyedPooledObjectFactory<K, VisitTracker<K>> {
     private int nextId = 0;
+
     public VisitTrackerFactory() {
         super();
     }
+
     @Override
     public PooledObject<VisitTracker<K>> makeObject() {
         return new DefaultPooledObject<VisitTracker<K>>(new VisitTracker<K>(nextId++));
     }
+
     @Override
     public PooledObject<VisitTracker<K>> makeObject(final K key) {
         return new DefaultPooledObject<VisitTracker<K>>(new VisitTracker<K>(nextId++, key));
     }
+
     @Override
     public void destroyObject(final PooledObject<VisitTracker<K>> ref) {
         ref.getObject().destroy();
     }
+
     @Override
     public void destroyObject(final K key, final PooledObject<VisitTracker<K>> ref) {
         ref.getObject().destroy();
     }
+
     @Override
     public boolean validateObject(final PooledObject<VisitTracker<K>> ref) {
         return ref.getObject().validate();
     }
+
     @Override
     public boolean validateObject(final K key, final PooledObject<VisitTracker<K>> ref) {
         return ref.getObject().validate();
     }
+
     @Override
     public void activateObject(final PooledObject<VisitTracker<K>> ref) throws Exception {
         ref.getObject().activate();
     }
+
     @Override
     public void activateObject(final K key, final PooledObject<VisitTracker<K>> ref) throws Exception {
         ref.getObject().activate();
     }
+
     @Override
     public void passivateObject(final PooledObject<VisitTracker<K>> ref) throws Exception {
         ref.getObject().passivate();
     }
+
     @Override
     public void passivateObject(final K key, final PooledObject<VisitTracker<K>> ref) throws Exception {
         ref.getObject().passivate();
     }
+
     public void resetId() {
         nextId = 0;
     }


[10/50] [abbrv] commons-pool git commit: Fill some Javadoc gaps

Posted by ma...@apache.org.
Fill some Javadoc gaps

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1725738 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/3737d6e6
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/3737d6e6
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/3737d6e6

Branch: refs/heads/master
Commit: 3737d6e67cd4c2b141c1db6125a996c198e51909
Parents: d404937
Author: Mark Thomas <ma...@apache.org>
Authored: Wed Jan 20 15:20:09 2016 +0000
Committer: Mark Thomas <ma...@apache.org>
Committed: Wed Jan 20 15:20:09 2016 +0000

----------------------------------------------------------------------
 .../commons/pool2/impl/LinkedBlockingDeque.java | 52 ++++++++++++--------
 1 file changed, 32 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/3737d6e6/src/main/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java b/src/main/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java
index 8ace792..dcbcc18 100644
--- a/src/main/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java
+++ b/src/main/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java
@@ -418,8 +418,9 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      *
      * @param e element to link
      *
-     * @throws NullPointerException
-     * @throws InterruptedException
+     * @throws NullPointerException if e is null
+     * @throws InterruptedException if the thread is interrupted whilst waiting
+     *         for space
      */
     public void putFirst(E e) throws InterruptedException {
         if (e == null) {
@@ -441,8 +442,9 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      *
      * @param e element to link
      *
-     * @throws NullPointerException
-     * @throws InterruptedException
+     * @throws NullPointerException if e is null
+     * @throws InterruptedException if the thread is interrupted whilst waiting
+     *         for space
      */
     public void putLast(E e) throws InterruptedException {
         if (e == null) {
@@ -468,8 +470,9 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      *
      * @return {@code true} if successful, otherwise {@code false}
      *
-     * @throws NullPointerException
-     * @throws InterruptedException
+     * @throws NullPointerException if e is null
+     * @throws InterruptedException if the thread is interrupted whilst waiting
+     *         for space
      */
     public boolean offerFirst(E e, long timeout, TimeUnit unit)
         throws InterruptedException {
@@ -501,8 +504,9 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      *
      * @return {@code true} if successful, otherwise {@code false}
      *
-     * @throws NullPointerException
-     * @throws InterruptedException
+     * @throws NullPointerException if e is null
+     * @throws InterruptedException if the thread is interrupted whist waiting
+     *         for space
      */
     public boolean offerLast(E e, long timeout, TimeUnit unit)
         throws InterruptedException {
@@ -773,8 +777,9 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      *
      * @param e element to link
      *
-     * @throws NullPointerException
-     * @throws InterruptedException
+     * @throws NullPointerException if e is null
+     * @throws InterruptedException if the thread is interrupted whilst waiting
+     *         for space
      */
     public void put(E e) throws InterruptedException {
         putLast(e);
@@ -792,8 +797,9 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      *
      * @return {@code true} if successful, otherwise {@code false}
      *
-     * @throws NullPointerException
-     * @throws InterruptedException
+     * @throws NullPointerException if e is null
+     * @throws InterruptedException if the thread is interrupted whilst waiting
+     *         for space
      */
     public boolean offer(E e, long timeout, TimeUnit unit)
         throws InterruptedException {
@@ -898,10 +904,13 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      *
      * @return number of elements added to the collection
      *
-     * @throws UnsupportedOperationException
-     * @throws ClassCastException
-     * @throws NullPointerException
-     * @throws IllegalArgumentException
+     * @throws UnsupportedOperationException if the add operation is not
+     *         supported by the specified collection
+     * @throws ClassCastException if the class of the elements held by this
+     *         collection prevents them from being added to the specified
+     *         collection
+     * @throws NullPointerException if c is null
+     * @throws IllegalArgumentException if c is this instance
      */
     public int drainTo(Collection<? super E> c) {
         return drainTo(c, Integer.MAX_VALUE);
@@ -915,10 +924,13 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * @param maxElements maximum number of elements to remove from the queue
      *
      * @return number of elements added to the collection
-     * @throws UnsupportedOperationException
-     * @throws ClassCastException
-     * @throws NullPointerException
-     * @throws IllegalArgumentException
+     * @throws UnsupportedOperationException if the add operation is not
+     *         supported by the specified collection
+     * @throws ClassCastException if the class of the elements held by this
+     *         collection prevents them from being added to the specified
+     *         collection
+     * @throws NullPointerException if c is null
+     * @throws IllegalArgumentException if c is this instance
      */
     public int drainTo(Collection<? super E> c, int maxElements) {
         if (c == null) {


[50/50] [abbrv] commons-pool git commit: [POOL-320]: Use more efficient stack walking mechanisms for usage tracking

Posted by ma...@apache.org.
[POOL-320]: Use more efficient stack walking mechanisms for usage tracking

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1785520 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/3994baf0
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/3994baf0
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/3994baf0

Branch: refs/heads/master
Commit: 3994baf0f3ce59b73bd36e869320275d757d1884
Parents: d00d176
Author: Matt Sicker <ma...@apache.org>
Authored: Sat Mar 4 20:18:19 2017 +0000
Committer: Matt Sicker <ma...@apache.org>
Committed: Sat Mar 4 20:18:19 2017 +0000

----------------------------------------------------------------------
 src/changes/changes.xml                         |   3 +
 .../apache/commons/pool2/impl/CallStack.java    |  54 ++++++++++
 .../commons/pool2/impl/CallStackUtils.java      |  62 +++++++++++
 .../commons/pool2/impl/DefaultPooledObject.java |  71 +++---------
 .../pool2/impl/SecurityManagerCallStack.java    | 107 +++++++++++++++++++
 .../commons/pool2/impl/ThrowableCallStack.java  |  76 +++++++++++++
 .../commons/pool2/impl/CallStackTest.java       |  63 +++++++++++
 .../pool2/impl/TestDefaultPooledObjectInfo.java |  17 ++-
 8 files changed, 383 insertions(+), 70 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/3994baf0/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 7409dc3..c710cd5 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -83,6 +83,9 @@ The <action> type attribute can be add,update,fix,remove.
       Ensure that a call to GKOP preparePool() takes account of other threads
       that might create objects concurrently, particularly the Evictor.
     </action>
+    <action dev="mattsicker" issue="POOL-320" type="add">
+      Use more efficient stack walking mechanisms for usage tracking when possible.
+    </action>
   </release>
   <release version="2.4.2" date="2015-08-01" description=
  "This is a patch release, including bug fixes only.">

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/3994baf0/src/main/java/org/apache/commons/pool2/impl/CallStack.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/CallStack.java b/src/main/java/org/apache/commons/pool2/impl/CallStack.java
new file mode 100644
index 0000000..9986553
--- /dev/null
+++ b/src/main/java/org/apache/commons/pool2/impl/CallStack.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.commons.pool2.impl;
+
+import org.apache.commons.pool2.PooledObject;
+import org.apache.commons.pool2.UsageTracking;
+
+import java.io.PrintWriter;
+
+/**
+ * Strategy for obtaining and printing the current call stack. This is primarily useful for
+ * {@linkplain UsageTracking usage tracking} so that different JVMs and configurations can use more efficient strategies
+ * for obtaining the current call stack.
+ *
+ * @see CallStackUtils
+ * @since 2.4.3
+ */
+public interface CallStack {
+
+    /**
+     * Prints the current stack trace if available to a PrintWriter. The format is undefined and is primarily useful
+     * for debugging issues with {@link PooledObject} usage in user code.
+     *
+     * @param writer a PrintWriter to write the curren stack trace to if available
+     * @return true if a stack trace was available to print or false if nothing was printed
+     */
+    boolean printStackTrace(final PrintWriter writer);
+
+    /**
+     * Takes a snapshot of the current call stack. Subsequent calls to {@link #printStackTrace(PrintWriter)} will print
+     * out that stack trace until it is {@linkplain #clear() cleared}.
+     */
+    void fillInStackTrace();
+
+    /**
+     * Clears the current stack trace snapshot. Subsequent calls to {@link #printStackTrace(PrintWriter)} will be
+     * no-ops until another call to {@link #fillInStackTrace()}.
+     */
+    void clear();
+}

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/3994baf0/src/main/java/org/apache/commons/pool2/impl/CallStackUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/CallStackUtils.java b/src/main/java/org/apache/commons/pool2/impl/CallStackUtils.java
new file mode 100644
index 0000000..7700651
--- /dev/null
+++ b/src/main/java/org/apache/commons/pool2/impl/CallStackUtils.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.commons.pool2.impl;
+
+import java.security.AccessControlException;
+
+/**
+ * Utility methods for {@link CallStack}.
+ *
+ * @since 2.4.3
+ */
+public final class CallStackUtils {
+
+    private static final boolean CAN_CREATE_SECURITY_MANAGER;
+
+    static {
+        CAN_CREATE_SECURITY_MANAGER = canCreateSecurityManager();
+    }
+
+    private static boolean canCreateSecurityManager() {
+        SecurityManager manager = System.getSecurityManager();
+        if (manager == null) {
+            return true;
+        }
+        try {
+            manager.checkPermission(new RuntimePermission("createSecurityManager"));
+            return true;
+        } catch (final AccessControlException ignored) {
+            return false;
+        }
+    }
+
+    /**
+     * Constructs a new {@link CallStack} using the fastest allowed strategy.
+     *
+     * @param messageFormat message (or format) to print first in stack traces
+     * @param useTimestamp  if true, interpret message as a SimpleDateFormat and print the created timestamp; otherwise,
+     *                      print message format literally
+     * @return a new CallStack
+     */
+    public static CallStack newCallStack(final String messageFormat, final boolean useTimestamp) {
+        return CAN_CREATE_SECURITY_MANAGER ? new SecurityManagerCallStack(messageFormat, useTimestamp)
+            : new ThrowableCallStack(messageFormat, useTimestamp);
+    }
+
+    private CallStackUtils() {
+    }
+}

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/3994baf0/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObject.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObject.java b/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObject.java
index 3caa40c..39ad54b 100644
--- a/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObject.java
+++ b/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObject.java
@@ -16,15 +16,13 @@
  */
 package org.apache.commons.pool2.impl;
 
-import java.io.PrintWriter;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Deque;
-
 import org.apache.commons.pool2.PooledObject;
 import org.apache.commons.pool2.PooledObjectState;
 import org.apache.commons.pool2.TrackedUse;
 
+import java.io.PrintWriter;
+import java.util.Deque;
+
 /**
  * This wrapper is used to track the additional information, such as state, for
  * the pooled objects.
@@ -46,8 +44,10 @@ public class DefaultPooledObject<T> implements PooledObject<T> {
     private volatile long lastUseTime = createTime;
     private volatile long lastReturnTime = createTime;
     private volatile boolean logAbandoned = false;
-    private volatile Exception borrowedBy = null;
-    private volatile Exception usedBy = null;
+    private final CallStack borrowedBy = CallStackUtils.newCallStack("'Pooled object created' " +
+        "yyyy-MM-dd HH:mm:ss Z 'by the following code has not been returned to the pool:'", true);
+    private final CallStack usedBy = CallStackUtils.newCallStack("The last code to use this object was:",
+        false);
     private volatile long borrowedCount = 0;
 
     /**
@@ -193,7 +193,7 @@ public class DefaultPooledObject<T> implements PooledObject<T> {
             lastUseTime = lastBorrowTime;
             borrowedCount++;
             if (logAbandoned) {
-                borrowedBy = new AbandonedObjectCreatedException();
+                borrowedBy.fillInStackTrace();
             }
             return true;
         } else if (state == PooledObjectState.EVICTION) {
@@ -218,7 +218,7 @@ public class DefaultPooledObject<T> implements PooledObject<T> {
                 state == PooledObjectState.RETURNING) {
             state = PooledObjectState.IDLE;
             lastReturnTime = System.currentTimeMillis();
-            borrowedBy = null;
+            borrowedBy.clear();
             return true;
         }
 
@@ -236,22 +236,13 @@ public class DefaultPooledObject<T> implements PooledObject<T> {
     @Override
     public void use() {
         lastUseTime = System.currentTimeMillis();
-        usedBy = new Exception("The last code to use this object was:");
+        usedBy.fillInStackTrace();
     }
 
     @Override
     public void printStackTrace(final PrintWriter writer) {
-        boolean written = false;
-        final Exception borrowedByCopy = this.borrowedBy;
-        if (borrowedByCopy != null) {
-            borrowedByCopy.printStackTrace(writer);
-            written = true;
-        }
-        final Exception usedByCopy = this.usedBy;
-        if (usedByCopy != null) {
-            usedByCopy.printStackTrace(writer);
-            written = true;
-        }
+        boolean written = borrowedBy.printStackTrace(writer);
+        written |= usedBy.printStackTrace(writer);
         if (written) {
             writer.flush();
         }
@@ -287,42 +278,4 @@ public class DefaultPooledObject<T> implements PooledObject<T> {
         this.logAbandoned = logAbandoned;
     }
 
-    /**
-     * Used to track how an object was obtained from the pool (the stack trace
-     * of the exception will show which code borrowed the object) and when the
-     * object was borrowed.
-     */
-    static class AbandonedObjectCreatedException extends Exception {
-
-        private static final long serialVersionUID = 7398692158058772916L;
-
-        /** Date format */
-        //@GuardedBy("format")
-        private static final SimpleDateFormat format = new SimpleDateFormat
-            ("'Pooled object created' yyyy-MM-dd HH:mm:ss Z " +
-             "'by the following code has not been returned to the pool:'");
-
-        private final long _createdTime;
-
-        /**
-         * Create a new instance.
-         * <p>
-         * @see Exception#Exception()
-         */
-        public AbandonedObjectCreatedException() {
-            super();
-            _createdTime = System.currentTimeMillis();
-        }
-
-        // Override getMessage to avoid creating objects and formatting
-        // dates unless the log message will actually be used.
-        @Override
-        public String getMessage() {
-            String msg;
-            synchronized(format) {
-                msg = format.format(new Date(_createdTime));
-            }
-            return msg;
-        }
-    }
 }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/3994baf0/src/main/java/org/apache/commons/pool2/impl/SecurityManagerCallStack.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/SecurityManagerCallStack.java b/src/main/java/org/apache/commons/pool2/impl/SecurityManagerCallStack.java
new file mode 100644
index 0000000..9d0a8d7
--- /dev/null
+++ b/src/main/java/org/apache/commons/pool2/impl/SecurityManagerCallStack.java
@@ -0,0 +1,107 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.commons.pool2.impl;
+
+import java.io.PrintWriter;
+import java.lang.ref.WeakReference;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * CallStack strategy using a {@link SecurityManager}. Obtaining the current call stack is much faster via a
+ * SecurityManger, but access to the underlying method may be restricted by the current SecurityManager. In environments
+ * where a SecurityManager cannot be created, {@link ThrowableCallStack} should be used instead.
+ *
+ * @see RuntimePermission
+ * @see SecurityManager#getClassContext()
+ * @since 2.4.3
+ */
+public class SecurityManagerCallStack implements CallStack {
+
+    private final String messageFormat;
+    //@GuardedBy("dateFormat")
+    private final DateFormat dateFormat;
+    private final PrivateSecurityManager securityManager;
+
+    private volatile Snapshot snapshot;
+
+    public SecurityManagerCallStack(final String messageFormat, final boolean useTimestamp) {
+        this.messageFormat = messageFormat;
+        this.dateFormat = useTimestamp ? new SimpleDateFormat(messageFormat) : null;
+        this.securityManager = AccessController.doPrivileged(new PrivilegedAction<PrivateSecurityManager>() {
+            @Override
+            public PrivateSecurityManager run() {
+                return new PrivateSecurityManager();
+            }
+        });
+    }
+
+    @Override
+    public boolean printStackTrace(PrintWriter writer) {
+        final Snapshot snapshot = this.snapshot;
+        if (snapshot == null) {
+            return false;
+        }
+        final String message;
+        if (dateFormat == null) {
+            message = messageFormat;
+        } else {
+            synchronized (dateFormat) {
+                message = dateFormat.format(snapshot.timestamp);
+            }
+        }
+        writer.println(message);
+        for (final WeakReference<Class<?>> reference : snapshot.stack) {
+            writer.println(reference.get());
+        }
+        return true;
+    }
+
+    @Override
+    public void fillInStackTrace() {
+        snapshot = new Snapshot(securityManager.getCallStack());
+    }
+
+    @Override
+    public void clear() {
+        snapshot = null;
+    }
+
+    private static class PrivateSecurityManager extends SecurityManager {
+        private List<WeakReference<Class<?>>> getCallStack() {
+            final Class[] classes = getClassContext();
+            final List<WeakReference<Class<?>>> stack = new ArrayList<WeakReference<Class<?>>>(classes.length);
+            for (final Class klass : classes) {
+                stack.add(new WeakReference<Class<?>>(klass));
+            }
+            return stack;
+        }
+    }
+
+    private static class Snapshot {
+        private final long timestamp = System.currentTimeMillis();
+        private final List<WeakReference<Class<?>>> stack;
+
+        private Snapshot(List<WeakReference<Class<?>>> stack) {
+            this.stack = stack;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/3994baf0/src/main/java/org/apache/commons/pool2/impl/ThrowableCallStack.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/ThrowableCallStack.java b/src/main/java/org/apache/commons/pool2/impl/ThrowableCallStack.java
new file mode 100644
index 0000000..98c733f
--- /dev/null
+++ b/src/main/java/org/apache/commons/pool2/impl/ThrowableCallStack.java
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.commons.pool2.impl;
+
+import java.io.PrintWriter;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+
+/**
+ * CallStack strategy that uses the stack trace from a {@link Throwable}. While being the most portable method of
+ * obtaining the current call stack, this is also the slowest way to do it. In environments where a new SecurityManager
+ * can be created, it is preferred to use {@link SecurityManagerCallStack}.
+ *
+ * @see Throwable#fillInStackTrace()
+ * @since 2.4.3
+ */
+public class ThrowableCallStack implements CallStack {
+
+    private final String messageFormat;
+    //@GuardedBy("dateFormat")
+    private final DateFormat dateFormat;
+
+    private volatile Snapshot snapshot;
+
+    public ThrowableCallStack(final String messageFormat, final boolean useTimestamp) {
+        this.messageFormat = messageFormat;
+        this.dateFormat = useTimestamp ? new SimpleDateFormat(messageFormat) : null;
+    }
+
+    @Override
+    public synchronized boolean printStackTrace(PrintWriter writer) {
+        Snapshot snapshot = this.snapshot;
+        if (snapshot == null) {
+            return false;
+        }
+        final String message;
+        if (dateFormat == null) {
+            message = messageFormat;
+        } else {
+            synchronized (dateFormat) {
+                message = dateFormat.format(snapshot.timestamp);
+            }
+        }
+        writer.println(message);
+        snapshot.printStackTrace(writer);
+        return true;
+    }
+
+    @Override
+    public void fillInStackTrace() {
+        snapshot = new Snapshot();
+    }
+
+    @Override
+    public void clear() {
+        snapshot = null;
+    }
+
+    private static class Snapshot extends Throwable {
+        private final long timestamp = System.currentTimeMillis();
+    }
+}

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/3994baf0/src/test/java/org/apache/commons/pool2/impl/CallStackTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/CallStackTest.java b/src/test/java/org/apache/commons/pool2/impl/CallStackTest.java
new file mode 100644
index 0000000..d3df55d
--- /dev/null
+++ b/src/test/java/org/apache/commons/pool2/impl/CallStackTest.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.commons.pool2.impl;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+@RunWith(Parameterized.class)
+public class CallStackTest {
+
+    private final CallStack stack;
+    private final StringWriter writer = new StringWriter();
+
+    public CallStackTest(CallStack stack) {
+        this.stack = stack;
+    }
+
+    @Parameterized.Parameters
+    public static Object[] data() {
+        return new Object[]{
+            new ThrowableCallStack("Test", false),
+            new SecurityManagerCallStack("Test", false)
+        };
+    }
+
+    @Test
+    public void testPrintClearedStackTraceIsNoOp() throws Exception {
+        stack.fillInStackTrace();
+        stack.clear();
+        stack.printStackTrace(new PrintWriter(writer));
+        String stackTrace = writer.toString();
+        assertEquals("", stackTrace);
+    }
+
+    @Test
+    public void testPrintFilledStackTrace() throws Exception {
+        stack.fillInStackTrace();
+        stack.printStackTrace(new PrintWriter(writer));
+        String stackTrace = writer.toString();
+        assertTrue(stackTrace.contains(getClass().getName()));
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/3994baf0/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObjectInfo.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObjectInfo.java b/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObjectInfo.java
index 584dd82..42f2b17 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObjectInfo.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObjectInfo.java
@@ -16,14 +16,13 @@
  */
 package org.apache.commons.pool2.impl;
 
-import java.text.SimpleDateFormat;
-import java.util.Set;
-
-import org.apache.commons.pool2.impl.DefaultPooledObject.AbandonedObjectCreatedException;
 import org.apache.commons.pool2.impl.TestGenericObjectPool.SimpleFactory;
 import org.junit.Assert;
 import org.junit.Test;
 
+import java.text.SimpleDateFormat;
+import java.util.Set;
+
 public class TestDefaultPooledObjectInfo {
 
     @Test
@@ -120,17 +119,13 @@ public class TestDefaultPooledObjectInfo {
                 new GenericObjectPoolConfig(),
                 abandonedConfig);
 
-        try {
-            pool.borrowObject();
-            //pool.returnObject(s1); // Object not returned, causes abandoned object created exception
-        } catch (final AbandonedObjectCreatedException e) {
-            // do nothing. We will print the stack trace later
-        }
+        pool.borrowObject();
+        //pool.returnObject(s1); // Object not returned, causes abandoned object created exception
 
         final Set<DefaultPooledObjectInfo> strings = pool.listAllObjects();
         final DefaultPooledObjectInfo s1Info = strings.iterator().next();
         final String lastBorrowTrace = s1Info.getLastBorrowTrace();
 
-        Assert.assertTrue(lastBorrowTrace.startsWith(AbandonedObjectCreatedException.class.getName()));
+        Assert.assertTrue(lastBorrowTrace.startsWith("Pooled object created"));
     }
 }


[09/50] [abbrv] commons-pool git commit: Remove unused throws

Posted by ma...@apache.org.
Remove unused throws

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1725736 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/d404937b
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/d404937b
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/d404937b

Branch: refs/heads/master
Commit: d404937b66525d96f8e4ba5dd034328dd7bd883d
Parents: ccbbb32
Author: Mark Thomas <ma...@apache.org>
Authored: Wed Jan 20 15:01:00 2016 +0000
Committer: Mark Thomas <ma...@apache.org>
Committed: Wed Jan 20 15:01:00 2016 +0000

----------------------------------------------------------------------
 .../org/apache/commons/pool2/impl/GenericObjectPool.java     | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/d404937b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
index ed18d49..6182d41 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
@@ -327,7 +327,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      *
      * @see AbandonedConfig
      */
-    public void setAbandonedConfig(AbandonedConfig abandonedConfig) throws IllegalArgumentException {
+    public void setAbandonedConfig(AbandonedConfig abandonedConfig) {
         if (abandonedConfig == null) {
             this.abandonedConfig = null;
         } else {
@@ -534,7 +534,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
     @Override
     public void returnObject(T obj) {
         PooledObject<T> p = allObjects.get(new IdentityWrapper<T>(obj));
-        
+
         if (p == null) {
             if (!isAbandonedConfig()) {
                 throw new IllegalStateException(
@@ -825,7 +825,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
             removeAbandoned(ac);
         }
     }
-    
+
     /**
      * Tries to ensure that {@link #getMinIdle()} idle instances are available
      * in the pool.
@@ -1163,5 +1163,5 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
         builder.append(", abandonedConfig=");
         builder.append(abandonedConfig);
     }
-    
+
 }


[19/50] [abbrv] commons-pool git commit: Always use statement blocks.

Posted by ma...@apache.org.
Always use statement blocks.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1729271 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/14d82910
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/14d82910
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/14d82910

Branch: refs/heads/master
Commit: 14d829107a8a4d5ea443042b96f69318ad5d55c5
Parents: 844cbd2
Author: Gary D. Gregory <gg...@apache.org>
Authored: Mon Feb 8 21:49:46 2016 +0000
Committer: Gary D. Gregory <gg...@apache.org>
Committed: Mon Feb 8 21:49:46 2016 +0000

----------------------------------------------------------------------
 .../org/apache/commons/pool2/impl/LinkedBlockingDeque.java  | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/14d82910/src/main/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java b/src/main/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java
index a0091cf..6cf9f4e 100644
--- a/src/main/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java
+++ b/src/main/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java
@@ -1250,14 +1250,15 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
             // are possible if multiple interior nodes are removed.
             for (;;) {
                 final Node<E> s = nextNode(n);
-                if (s == null)
+                if (s == null) {
                     return null;
-                else if (s.item != null)
+                } else if (s.item != null) {
                     return s;
-                else if (s == n)
+                } else if (s == n) {
                     return firstNode();
-                else
+                } else {
                     n = s;
+                }
             }
         }
 


[13/50] [abbrv] commons-pool git commit: Add final modifier to local variables.

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
index da7e14d..0ede9b0 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
@@ -61,7 +61,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
 
     @Override
     protected ObjectPool<String> makeEmptyPool(int mincap) {
-       GenericObjectPool<String> mtPool =
+       final GenericObjectPool<String> mtPool =
                new GenericObjectPool<String>(new SimpleFactory());
        mtPool.setMaxTotal(mincap);
        mtPool.setMaxIdle(mincap);
@@ -87,21 +87,21 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
 
     @After
     public void tearDown() throws Exception {
-        String poolName = pool.getJmxName().toString();
+        final String poolName = pool.getJmxName().toString();
         pool.clear();
         pool.close();
         pool = null;
         factory = null;
 
-        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
-        Set<ObjectName> result = mbs.queryNames(new ObjectName(
+        final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+        final Set<ObjectName> result = mbs.queryNames(new ObjectName(
                 "org.apache.commoms.pool2:type=GenericObjectPool,*"), null);
         // There should be no registered pools at this point
-        int registeredPoolCount = result.size();
-        StringBuilder msg = new StringBuilder("Current pool is: ");
+        final int registeredPoolCount = result.size();
+        final StringBuilder msg = new StringBuilder("Current pool is: ");
         msg.append(poolName);
         msg.append("  Still open pools are: ");
-        for (ObjectName name : result) {
+        for (final ObjectName name : result) {
             // Clean these up ready for the next test
             msg.append(name.toString());
             msg.append(" created via\n");
@@ -124,19 +124,19 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     public void testConstructors() throws Exception {
 
         // Make constructor arguments all different from defaults
-        int minIdle = 2;
-        long maxWait = 3;
-        int maxIdle = 4;
-        int maxTotal = 5;
-        long minEvictableIdleTimeMillis = 6;
-        int numTestsPerEvictionRun = 7;
-        boolean testOnBorrow = true;
-        boolean testOnReturn = true;
-        boolean testWhileIdle = true;
-        long timeBetweenEvictionRunsMillis = 8;
-        boolean blockWhenExhausted = false;
-        boolean lifo = false;
-        PooledObjectFactory<Object> dummyFactory = new DummyFactory();
+        final int minIdle = 2;
+        final long maxWait = 3;
+        final int maxIdle = 4;
+        final int maxTotal = 5;
+        final long minEvictableIdleTimeMillis = 6;
+        final int numTestsPerEvictionRun = 7;
+        final boolean testOnBorrow = true;
+        final boolean testOnReturn = true;
+        final boolean testWhileIdle = true;
+        final long timeBetweenEvictionRunsMillis = 8;
+        final boolean blockWhenExhausted = false;
+        final boolean lifo = false;
+        final PooledObjectFactory<Object> dummyFactory = new DummyFactory();
         GenericObjectPool<Object> dummyPool =
                 new GenericObjectPool<Object>(dummyFactory);
         assertEquals(GenericObjectPoolConfig.DEFAULT_MAX_IDLE, dummyPool.getMaxIdle());
@@ -161,7 +161,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
                 Boolean.valueOf(dummyPool.getLifo()));
         dummyPool.close();
 
-        GenericObjectPoolConfig config =
+        final GenericObjectPoolConfig config =
                 new GenericObjectPoolConfig();
         config.setLifo(lifo);
         config.setMaxIdle(maxIdle);
@@ -201,12 +201,12 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     public void testWhenExhaustedFail() throws Exception {
         pool.setMaxTotal(1);
         pool.setBlockWhenExhausted(false);
-        String obj1 = pool.borrowObject();
+        final String obj1 = pool.borrowObject();
         assertNotNull(obj1);
         try {
             pool.borrowObject();
             fail("Expected NoSuchElementException");
-        } catch(NoSuchElementException e) {
+        } catch(final NoSuchElementException e) {
             // expected
         }
         pool.returnObject(obj1);
@@ -219,12 +219,12 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         pool.setMaxTotal(1);
         pool.setBlockWhenExhausted(true);
         pool.setMaxWaitMillis(10L);
-        String obj1 = pool.borrowObject();
+        final String obj1 = pool.borrowObject();
         assertNotNull(obj1);
         try {
             pool.borrowObject();
             fail("Expected NoSuchElementException");
-        } catch(NoSuchElementException e) {
+        } catch(final NoSuchElementException e) {
             // expected
         }
         pool.returnObject(obj1);
@@ -236,13 +236,13 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         pool.setMaxTotal(1);
         pool.setBlockWhenExhausted(true);
         pool.setMaxWaitMillis(-1);
-        String obj1 = pool.borrowObject();
+        final String obj1 = pool.borrowObject();
 
         // Make sure on object was obtained
         assertNotNull(obj1);
 
         // Create a separate thread to try and borrow another object
-        WaitingTestThread wtt = new WaitingTestThread(pool, 200000);
+        final WaitingTestThread wtt = new WaitingTestThread(pool, 200000);
         wtt.start();
         // Give wtt time to start
         Thread.sleep(200);
@@ -263,7 +263,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         try {
              obj2 = pool.borrowObject();
             assertNotNull(obj2);
-        } catch(NoSuchElementException e) {
+        } catch(final NoSuchElementException e) {
             // Not expected
             fail("NoSuchElementException not expected");
         }
@@ -294,8 +294,8 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         pool.borrowObject(); // numActive = 1, numIdle = 0
         // Create a test thread that will run once and try a borrow after
         // 150ms fixed delay
-        TestThread<String> borrower = new TestThread<String>(pool, 1, 150, false);
-        Thread borrowerThread = new Thread(borrower);
+        final TestThread<String> borrower = new TestThread<String>(pool, 1, 150, false);
+        final Thread borrowerThread = new Thread(borrower);
         // Set evictor to run in 100 ms - will create idle instance
         pool.setTimeBetweenEvictionRunsMillis(100);
         borrowerThread.start();  // Off to the races
@@ -370,7 +370,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         }
         // Order, oldest to youngest, is "0", "1", ...,"4"
         pool.evict(); // Should evict "0" and "1"
-        Object obj = pool.borrowObject();
+        final Object obj = pool.borrowObject();
         assertTrue("oldest not evicted", !obj.equals("0"));
         assertTrue("second oldest not evicted", !obj.equals("1"));
         // 2 should be next out for FIFO, 4 for LIFO
@@ -388,7 +388,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         }
         pool.evict(); // Should evict "0" and "1"
         pool.evict(); // Should evict "2" and "3"
-        Object obj = pool.borrowObject();
+        final Object obj = pool.borrowObject();
         assertEquals("Wrong instance remaining in pool", "4", obj);
     }
 
@@ -427,7 +427,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         //  LIFO, 7 out, then in, then out, then in
         trackerPool.evict();  // Should visit 2 and 3 in either case
         for (int i = 0; i < 8; i++) {
-            VisitTracker<Object> tracker = trackerPool.borrowObject();
+            final VisitTracker<Object> tracker = trackerPool.borrowObject();
             if (tracker.getId() >= 4) {
                 assertEquals("Unexpected instance visited " + tracker.getId(),
                         0, tracker.getValidateCount());
@@ -465,7 +465,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         trackerPool.evict();
         // Should hit 6,7,0 - 0 for second time
         for (int i = 0; i < 8; i++) {
-            VisitTracker<Object> tracker = trackerPool.borrowObject();
+            final VisitTracker<Object> tracker = trackerPool.borrowObject();
             if (tracker.getId() != 0) {
                 assertEquals("Instance " +  tracker.getId() +
                         " visited wrong number of times.",
@@ -480,8 +480,8 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
 
         // Randomly generate a pools with random numTests
         // and make sure evictor cycles through elements appropriately
-        int[] smallPrimes = {2, 3, 5, 7};
-        Random random = new Random();
+        final int[] smallPrimes = {2, 3, 5, 7};
+        final Random random = new Random();
         random.setSeed(System.currentTimeMillis());
         for (int i = 0; i < 4; i++) {
             for (int j = 0; j < 5; j++) {
@@ -493,20 +493,20 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
                 trackerPool.setTestOnReturn(false);
                 trackerPool.setTestOnBorrow(false);
                 trackerPool.setMaxIdle(-1);
-                int instanceCount = 10 + random.nextInt(20);
+                final int instanceCount = 10 + random.nextInt(20);
                 trackerPool.setMaxTotal(instanceCount);
                 for (int k = 0; k < instanceCount; k++) {
                     trackerPool.addObject();
                 }
 
                 // Execute a random number of evictor runs
-                int runs = 10 + random.nextInt(50);
+                final int runs = 10 + random.nextInt(50);
                 for (int k = 0; k < runs; k++) {
                     trackerPool.evict();
                 }
 
                 // Number of times evictor should have cycled through the pool
-                int cycleCount = (runs * trackerPool.getNumTestsPerEvictionRun()) /
+                final int cycleCount = (runs * trackerPool.getNumTestsPerEvictionRun()) /
                         instanceCount;
 
                 // Look at elements and make sure they are visited cycleCount
@@ -527,7 +527,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
 
     @Test(timeout=60000)
     public void testExceptionOnPassivateDuringReturn() throws Exception {
-        String obj = pool.borrowObject();
+        final String obj = pool.borrowObject();
         factory.setThrowExceptionOnPassivate(true);
         pool.returnObject(obj);
         assertEquals(0,pool.getNumIdle());
@@ -542,7 +542,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         try {
             pool.borrowObject();
             fail("Expecting NoSuchElementException");
-        } catch (NoSuchElementException ex) {
+        } catch (final NoSuchElementException ex) {
             // expected
         }
         assertEquals(1, pool.getNumActive());
@@ -553,7 +553,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     public void testExceptionOnDestroyDuringReturn() throws Exception {
         factory.setThrowExceptionOnDestroy(true);
         pool.setTestOnReturn(true);
-        String obj1 = pool.borrowObject();
+        final String obj1 = pool.borrowObject();
         pool.borrowObject();
         factory.setValid(false); // Make validation fail
         pool.returnObject(obj1);
@@ -563,15 +563,15 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
 
     @Test(timeout=60000)
     public void testExceptionOnActivateDuringBorrow() throws Exception {
-        String obj1 = pool.borrowObject();
-        String obj2 = pool.borrowObject();
+        final String obj1 = pool.borrowObject();
+        final String obj2 = pool.borrowObject();
         pool.returnObject(obj1);
         pool.returnObject(obj2);
         factory.setThrowExceptionOnActivate(true);
         factory.setEvenValid(false);
         // Activation will now throw every other time
         // First attempt throws, but loop continues and second succeeds
-        String obj = pool.borrowObject();
+        final String obj = pool.borrowObject();
         assertEquals(1, pool.getNumActive());
         assertEquals(0, pool.getNumIdle());
 
@@ -582,7 +582,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         try {
             pool.borrowObject();
             fail("Expecting NoSuchElementException");
-        } catch (NoSuchElementException ex) {
+        } catch (final NoSuchElementException ex) {
             // expected
         }
         assertEquals(0, pool.getNumActive());
@@ -593,7 +593,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     public void testNegativeMaxTotal() throws Exception {
         pool.setMaxTotal(-1);
         pool.setBlockWhenExhausted(false);
-        String obj = pool.borrowObject();
+        final String obj = pool.borrowObject();
         assertEquals(getNthObject(0),obj);
         pool.returnObject(obj);
     }
@@ -602,7 +602,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     public void testMaxIdle() throws Exception {
         pool.setMaxTotal(100);
         pool.setMaxIdle(8);
-        String[] active = new String[100];
+        final String[] active = new String[100];
         for(int i=0;i<100;i++) {
             active[i] = pool.borrowObject();
         }
@@ -619,7 +619,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     public void testMaxIdleZero() throws Exception {
         pool.setMaxTotal(100);
         pool.setMaxIdle(0);
-        String[] active = new String[100];
+        final String[] active = new String[100];
         for(int i=0;i<100;i++) {
             active[i] = pool.borrowObject();
         }
@@ -643,7 +643,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         try {
             pool.borrowObject();
             fail("Expected NoSuchElementException");
-        } catch(NoSuchElementException e) {
+        } catch(final NoSuchElementException e) {
             // expected
         }
     }
@@ -653,12 +653,12 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         pool.setMaxTotal(2);
         pool.setMaxWaitMillis(10);
         pool.setBlockWhenExhausted(true);
-        String obj = pool.borrowObject();
-        String obj2 = pool.borrowObject();
+        final String obj = pool.borrowObject();
+        final String obj2 = pool.borrowObject();
         try {
             pool.borrowObject();
             fail("Expecting NoSuchElementException");
-        } catch (NoSuchElementException ex) {
+        } catch (final NoSuchElementException ex) {
             // expected
         }
         pool.returnObject(obj2);
@@ -676,7 +676,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         try {
             pool.borrowObject();
             fail("Expected NoSuchElementException");
-        } catch(NoSuchElementException e) {
+        } catch(final NoSuchElementException e) {
             // expected
         }
     }
@@ -685,10 +685,10 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     @SuppressWarnings("rawtypes")
     public void testMaxTotalUnderLoad() {
         // Config
-        int numThreads = 199; // And main thread makes a round 200.
-        int numIter = 20;
-        int delay = 25;
-        int maxTotal = 10;
+        final int numThreads = 199; // And main thread makes a round 200.
+        final int numIter = 20;
+        final int delay = 25;
+        final int maxTotal = 10;
 
         factory.setMaxTotal(maxTotal);
         pool.setMaxTotal(maxTotal);
@@ -696,19 +696,19 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         pool.setTimeBetweenEvictionRunsMillis(-1);
 
         // Start threads to borrow objects
-        TestThread[] threads = new TestThread[numThreads];
+        final TestThread[] threads = new TestThread[numThreads];
         for(int i=0;i<numThreads;i++) {
             // Factor of 2 on iterations so main thread does work whilst other
             // threads are running. Factor of 2 on delay so average delay for
             // other threads == actual delay for main thread
             threads[i] = new TestThread<String>(pool, numIter * 2, delay * 2);
-            Thread t = new Thread(threads[i]);
+            final Thread t = new Thread(threads[i]);
             t.start();
         }
         // Give the threads a chance to start doing some work
         try {
             Thread.sleep(5000);
-        } catch(InterruptedException e) {
+        } catch(final InterruptedException e) {
             // ignored
         }
 
@@ -717,7 +717,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             try {
                 try {
                     Thread.sleep(delay);
-                } catch(InterruptedException e) {
+                } catch(final InterruptedException e) {
                     // ignored
                 }
                 obj = pool.borrowObject();
@@ -727,10 +727,10 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
                 }
                 try {
                     Thread.sleep(delay);
-                } catch(InterruptedException e) {
+                } catch(final InterruptedException e) {
                     // ignored
                 }
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // Shouldn't happen
                 e.printStackTrace();
                 fail("Exception on borrow");
@@ -738,7 +738,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
                 if (obj != null) {
                     try {
                         pool.returnObject(obj);
-                    } catch (Exception e) {
+                    } catch (final Exception e) {
                         // Ignore
                     }
                 }
@@ -749,7 +749,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             while(!(threads[i]).complete()) {
                 try {
                     Thread.sleep(500L);
-                } catch(InterruptedException e) {
+                } catch(final InterruptedException e) {
                     // ignored
                 }
             }
@@ -772,12 +772,12 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
 
         pool.setMaxTotal(1);
         pool.setMaxIdle(-1);
-        String active = pool.borrowObject();
+        final String active = pool.borrowObject();
 
         assertEquals(1, pool.getNumActive());
         assertEquals(0, pool.getNumIdle());
 
-        Thread t = new Thread() {
+        final Thread t = new Thread() {
 
             @Override
             public void run() {
@@ -899,7 +899,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
 
     @Test(timeout=60000)
     public void testSetConfig() throws Exception {
-        GenericObjectPoolConfig expected = new GenericObjectPoolConfig();
+        final GenericObjectPoolConfig expected = new GenericObjectPoolConfig();
         assertConfiguration(expected,pool);
         expected.setMaxTotal(2);
         expected.setMaxIdle(3);
@@ -927,7 +927,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         for(int j=0;j<2;j++) {
             // populate the pool
             {
-                String[] active = new String[6];
+                final String[] active = new String[6];
                 for(int i=0;i<6;i++) {
                     active[i] = pool.borrowObject();
                 }
@@ -943,7 +943,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             pool.setTimeBetweenEvictionRunsMillis(50L);
 
             // wait a second (well, .2 seconds)
-            try { Thread.sleep(200L); } catch(InterruptedException e) { }
+            try { Thread.sleep(200L); } catch(final InterruptedException e) { }
 
             // assert that the evictor has cleared out the pool
             assertEquals("Should have 0 idle",0,pool.getNumIdle());
@@ -962,7 +962,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         pool.setMinEvictableIdleTimeMillis(50L);
         pool.setTimeBetweenEvictionRunsMillis(100L);
 
-        String[] active = new String[6];
+        final String[] active = new String[6];
         for(int i=0;i<6;i++) {
             active[i] = pool.borrowObject();
         }
@@ -970,13 +970,13 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             pool.returnObject(active[i]);
         }
 
-        try { Thread.sleep(100L); } catch(InterruptedException e) { }
+        try { Thread.sleep(100L); } catch(final InterruptedException e) { }
         assertTrue("Should at most 6 idle, found " + pool.getNumIdle(),pool.getNumIdle() <= 6);
-        try { Thread.sleep(100L); } catch(InterruptedException e) { }
+        try { Thread.sleep(100L); } catch(final InterruptedException e) { }
         assertTrue("Should at most 3 idle, found " + pool.getNumIdle(),pool.getNumIdle() <= 3);
-        try { Thread.sleep(100L); } catch(InterruptedException e) { }
+        try { Thread.sleep(100L); } catch(final InterruptedException e) { }
         assertTrue("Should be at most 2 idle, found " + pool.getNumIdle(),pool.getNumIdle() <= 2);
-        try { Thread.sleep(100L); } catch(InterruptedException e) { }
+        try { Thread.sleep(100L); } catch(final InterruptedException e) { }
         assertEquals("Should be zero idle, found " + pool.getNumIdle(),0,pool.getNumIdle());
     }
 
@@ -989,7 +989,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         pool.setTimeBetweenEvictionRunsMillis(500L);
         pool.setTestWhileIdle(true);
 
-        String[] active = new String[500];
+        final String[] active = new String[500];
         for(int i=0;i<500;i++) {
             active[i] = pool.borrowObject();
         }
@@ -997,17 +997,17 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             pool.returnObject(active[i]);
         }
 
-        try { Thread.sleep(1000L); } catch(InterruptedException e) { }
+        try { Thread.sleep(1000L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 500 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 500);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 400 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 400);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 300 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 300);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 200 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 200);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 100 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 100);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertEquals("Should be zero idle, found " + pool.getNumIdle(),0,pool.getNumIdle());
 
         for(int i=0;i<500;i++) {
@@ -1017,17 +1017,17 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             pool.returnObject(active[i]);
         }
 
-        try { Thread.sleep(1000L); } catch(InterruptedException e) { }
+        try { Thread.sleep(1000L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 500 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 500);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 400 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 400);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 300 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 300);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 200 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 200);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 100 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 100);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertEquals("Should be zero idle, found " + pool.getNumIdle(),0,pool.getNumIdle());
     }
 
@@ -1058,7 +1058,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         try {
             pool.setEvictionPolicyClassName(Long.toString(System.currentTimeMillis()));
             fail("setEvictionPolicyClassName must throw an error if the class name is invalid.");
-        } catch (IllegalArgumentException e) {
+        } catch (final IllegalArgumentException e) {
             // expected
         }
 
@@ -1066,7 +1066,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         try {
             pool.setEvictionPolicyClassName(java.io.Serializable.class.getName());
             fail("setEvictionPolicyClassName must throw an error if the class name is invalid.");
-        } catch (IllegalArgumentException e) {
+        } catch (final IllegalArgumentException e) {
             // expected
         }
 
@@ -1074,14 +1074,14 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         try {
             pool.setEvictionPolicyClassName(java.util.Collections.class.getName());
             fail("setEvictionPolicyClassName must throw an error if the class name is invalid.");
-        } catch (IllegalArgumentException e) {
+        } catch (final IllegalArgumentException e) {
             // expected
         }
 
         pool.setEvictionPolicyClassName(TestEvictionPolicy.class.getName());
         assertEquals(TestEvictionPolicy.class.getName(), pool.getEvictionPolicyClassName());
 
-        String[] active = new String[500];
+        final String[] active = new String[500];
         for(int i=0;i<500;i++) {
             active[i] = pool.borrowObject();
         }
@@ -1092,11 +1092,11 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         // Eviction policy ignores first 1500 attempts to evict and then always
         // evicts. After 1s, there should have been two runs of 500 tests so no
         // evictions
-        try { Thread.sleep(1000L); } catch(InterruptedException e) { }
+        try { Thread.sleep(1000L); } catch(final InterruptedException e) { }
         assertEquals("Should be 500 idle", 500, pool.getNumIdle());
         // A further 1s wasn't enough so allow 2s for the evictor to clear out
         // all of the idle objects.
-        try { Thread.sleep(2000L); } catch(InterruptedException e) { }
+        try { Thread.sleep(2000L); } catch(final InterruptedException e) { }
         assertEquals("Should be 0 idle", 0, pool.getNumIdle());
     }
 
@@ -1121,7 +1121,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             }
         }
 
-        GenericObjectPool<TimeTest> timePool =
+        final GenericObjectPool<TimeTest> timePool =
             new GenericObjectPool<TimeTest>(new TimeTest());
 
         timePool.setMaxIdle(5);
@@ -1131,8 +1131,8 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         timePool.setSoftMinEvictableIdleTimeMillis(1000L);
         timePool.setMinIdle(2);
 
-        TimeTest[] active = new TimeTest[5];
-        Long[] creationTime = new Long[5] ;
+        final TimeTest[] active = new TimeTest[5];
+        final Long[] creationTime = new Long[5] ;
         for(int i=0;i<5;i++) {
             active[i] = timePool.borrowObject();
             creationTime[i] = Long.valueOf((active[i]).getCreateTime());
@@ -1168,11 +1168,11 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         invalidFactoryPool.setMinEvictableIdleTimeMillis(100000);
         invalidFactoryPool.setNumTestsPerEvictionRun(1);
 
-        Object p = invalidFactoryPool.borrowObject();
+        final Object p = invalidFactoryPool.borrowObject();
         invalidFactoryPool.returnObject(p);
 
         // Run eviction in a separate thread
-        Thread t = new EvictionThread<Object>(invalidFactoryPool);
+        final Thread t = new EvictionThread<Object>(invalidFactoryPool);
         t.start();
 
         // Sleep to make sure evictor has started
@@ -1180,7 +1180,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
 
         try {
             invalidFactoryPool.borrowObject(1);
-        } catch (NoSuchElementException nsee) {
+        } catch (final NoSuchElementException nsee) {
             // Ignore
         }
 
@@ -1261,9 +1261,9 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         public void run() {
             try {
                 pool.invalidateObject(obj);
-            } catch (IllegalStateException ex) {
+            } catch (final IllegalStateException ex) {
                 // Ignore
-            } catch (Exception ex) {
+            } catch (final Exception ex) {
                 Assert.fail("Unexpected exception " + ex.toString());
             } finally {
                 done = true;
@@ -1284,27 +1284,27 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         pool.setTimeBetweenEvictionRunsMillis(100L);
         pool.setTestWhileIdle(true);
 
-        try { Thread.sleep(150L); } catch(InterruptedException e) { }
+        try { Thread.sleep(150L); } catch(final InterruptedException e) { }
         assertTrue("Should be 5 idle, found " + pool.getNumIdle(),pool.getNumIdle() == 5);
 
-        String[] active = new String[5];
+        final String[] active = new String[5];
         active[0] = pool.borrowObject();
 
-        try { Thread.sleep(150L); } catch(InterruptedException e) { }
+        try { Thread.sleep(150L); } catch(final InterruptedException e) { }
         assertTrue("Should be 5 idle, found " + pool.getNumIdle(),pool.getNumIdle() == 5);
 
         for(int i=1 ; i<5 ; i++) {
             active[i] = pool.borrowObject();
         }
 
-        try { Thread.sleep(150L); } catch(InterruptedException e) { }
+        try { Thread.sleep(150L); } catch(final InterruptedException e) { }
         assertTrue("Should be 5 idle, found " + pool.getNumIdle(),pool.getNumIdle() == 5);
 
         for(int i=0 ; i<5 ; i++) {
             pool.returnObject(active[i]);
         }
 
-        try { Thread.sleep(150L); } catch(InterruptedException e) { }
+        try { Thread.sleep(150L); } catch(final InterruptedException e) { }
         assertTrue("Should be 10 idle, found " + pool.getNumIdle(),pool.getNumIdle() == 10);
     }
 
@@ -1318,40 +1318,40 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         pool.setTimeBetweenEvictionRunsMillis(100L);
         pool.setTestWhileIdle(true);
 
-        try { Thread.sleep(150L); } catch(InterruptedException e) { }
+        try { Thread.sleep(150L); } catch(final InterruptedException e) { }
         assertTrue("Should be 5 idle, found " + pool.getNumIdle(),pool.getNumIdle() == 5);
 
-        String[] active = new String[10];
+        final String[] active = new String[10];
 
-        try { Thread.sleep(150L); } catch(InterruptedException e) { }
+        try { Thread.sleep(150L); } catch(final InterruptedException e) { }
         assertTrue("Should be 5 idle, found " + pool.getNumIdle(),pool.getNumIdle() == 5);
 
         for(int i=0 ; i<5 ; i++) {
             active[i] = pool.borrowObject();
         }
 
-        try { Thread.sleep(150L); } catch(InterruptedException e) { }
+        try { Thread.sleep(150L); } catch(final InterruptedException e) { }
         assertTrue("Should be 5 idle, found " + pool.getNumIdle(),pool.getNumIdle() == 5);
 
         for(int i=0 ; i<5 ; i++) {
             pool.returnObject(active[i]);
         }
 
-        try { Thread.sleep(150L); } catch(InterruptedException e) { }
+        try { Thread.sleep(150L); } catch(final InterruptedException e) { }
         assertTrue("Should be 10 idle, found " + pool.getNumIdle(),pool.getNumIdle() == 10);
 
         for(int i=0 ; i<10 ; i++) {
             active[i] = pool.borrowObject();
         }
 
-        try { Thread.sleep(150L); } catch(InterruptedException e) { }
+        try { Thread.sleep(150L); } catch(final InterruptedException e) { }
         assertTrue("Should be 0 idle, found " + pool.getNumIdle(),pool.getNumIdle() == 0);
 
         for(int i=0 ; i<10 ; i++) {
             pool.returnObject(active[i]);
         }
 
-        try { Thread.sleep(150L); } catch(InterruptedException e) { }
+        try { Thread.sleep(150L); } catch(final InterruptedException e) { }
         assertTrue("Should be 10 idle, found " + pool.getNumIdle(),pool.getNumIdle() == 10);
     }
 
@@ -1364,17 +1364,17 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         "rawtypes", "unchecked"
     })
     private void runTestThreads(int numThreads, int iterations, int delay, GenericObjectPool testPool) {
-        TestThread[] threads = new TestThread[numThreads];
+        final TestThread[] threads = new TestThread[numThreads];
         for(int i=0;i<numThreads;i++) {
             threads[i] = new TestThread<String>(testPool,iterations,delay);
-            Thread t = new Thread(threads[i]);
+            final Thread t = new Thread(threads[i]);
             t.start();
         }
         for(int i=0;i<numThreads;i++) {
             while(!(threads[i]).complete()) {
                 try {
                     Thread.sleep(500L);
-                } catch(InterruptedException e) {
+                } catch(final InterruptedException e) {
                     // ignored
                 }
             }
@@ -1401,7 +1401,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
      */
     @Test(timeout=60000)
     public void testMaxTotalInvariant() throws Exception {
-        int maxTotal = 15;
+        final int maxTotal = 15;
         factory.setEvenValid(false);     // Every other validation fails
         factory.setDestroyLatency(100);  // Destroy takes 100 ms
         factory.setMaxTotal(maxTotal); // (makes - destroys) bound
@@ -1420,9 +1420,9 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         pool.addObject();
 
         for( int i=0; i<5000; i++) {
-            ConcurrentBorrowAndEvictThread one =
+            final ConcurrentBorrowAndEvictThread one =
                     new ConcurrentBorrowAndEvictThread(true);
-            ConcurrentBorrowAndEvictThread two =
+            final ConcurrentBorrowAndEvictThread two =
                     new ConcurrentBorrowAndEvictThread(false);
 
             one.start();
@@ -1449,8 +1449,8 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         final int numThreads = 100;
         final int delay = 1;
         final int iterations = 1000;
-        AtomicIntegerFactory factory = new AtomicIntegerFactory();
-        GenericObjectPool<AtomicInteger> pool = new GenericObjectPool<AtomicInteger>(factory);
+        final AtomicIntegerFactory factory = new AtomicIntegerFactory();
+        final GenericObjectPool<AtomicInteger> pool = new GenericObjectPool<AtomicInteger>(factory);
         pool.setMaxTotal(maxTotal);
         pool.setMaxIdle(maxTotal);
         pool.setTestOnBorrow(true);
@@ -1470,13 +1470,13 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         pool.setMaxTotal(1);
         pool.setBlockWhenExhausted(true);
         pool.setMaxWaitMillis(-1);
-        Object obj1 = pool.borrowObject();
+        final Object obj1 = pool.borrowObject();
 
         // Make sure an object was obtained
         assertNotNull(obj1);
 
         // Create a separate thread to try and borrow another object
-        WaitingTestThread wtt = new WaitingTestThread(pool, 200);
+        final WaitingTestThread wtt = new WaitingTestThread(pool, 200);
         wtt.start();
         // Give wtt time to start
         Thread.sleep(200);
@@ -1507,7 +1507,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
                 } else {
                     pool.evict();
                 }
-            } catch (Exception e) { /* Ignore */}
+            } catch (final Exception e) { /* Ignore */}
         }
     }
 
@@ -1582,19 +1582,19 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         @Override
         public void run() {
             for(int i=0;i<_iter;i++) {
-                long startDelay =
+                final long startDelay =
                     _randomDelay ? (long)_random.nextInt(_startDelay) : _startDelay;
-                long holdTime =
+                final long holdTime =
                     _randomDelay ? (long)_random.nextInt(_holdTime) : _holdTime;
                 try {
                     Thread.sleep(startDelay);
-                } catch(InterruptedException e) {
+                } catch(final InterruptedException e) {
                     // ignored
                 }
                 T obj = null;
                 try {
                     obj = _pool.borrowObject();
-                } catch(Exception e) {
+                } catch(final Exception e) {
                     _error = e;
                     _failed = true;
                     _complete = true;
@@ -1610,12 +1610,12 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
 
                 try {
                     Thread.sleep(holdTime);
-                } catch(InterruptedException e) {
+                } catch(final InterruptedException e) {
                     // ignored
                 }
                 try {
                     _pool.returnObject(obj);
-                } catch(Exception e) {
+                } catch(final Exception e) {
                     _error = e;
                     _failed = true;
                     _complete = true;
@@ -1666,7 +1666,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         pool.addObject();
         assertEquals("should be one idle", 1, pool.getNumIdle());
         assertEquals("should be zero active", 0, pool.getNumActive());
-        String obj = pool.borrowObject();
+        final String obj = pool.borrowObject();
         assertEquals("should be zero idle", 0, pool.getNumIdle());
         assertEquals("should be one active", 1, pool.getNumActive());
         pool.returnObject(obj);
@@ -1864,7 +1864,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         private void doWait(long latency) {
             try {
                 Thread.sleep(latency);
-            } catch (InterruptedException ex) {
+            } catch (final InterruptedException ex) {
                 // ignore
             }
         }
@@ -1883,7 +1883,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     public AtomicInteger create() {
         try {
             Thread.sleep(createLatency);
-        } catch (InterruptedException ex) {}
+        } catch (final InterruptedException ex) {}
         return new AtomicInteger(0);
     }
 
@@ -1897,7 +1897,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         p.getObject().incrementAndGet();
         try {
             Thread.sleep(activateLatency);
-        } catch (InterruptedException ex) {}
+        } catch (final InterruptedException ex) {}
     }
 
     @Override
@@ -1905,14 +1905,14 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         p.getObject().decrementAndGet();
         try {
             Thread.sleep(passivateLatency);
-        } catch (InterruptedException ex) {}
+        } catch (final InterruptedException ex) {}
     }
 
     @Override
     public boolean validateObject(PooledObject<AtomicInteger> instance) {
         try {
             Thread.sleep(validateLatency);
-        } catch (InterruptedException ex) {}
+        } catch (final InterruptedException ex) {}
         return instance.getObject().intValue() == 1;
     }
 
@@ -1920,7 +1920,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     public void destroyObject(PooledObject<AtomicInteger> p) {
         try {
             Thread.sleep(destroyLatency);
-        } catch (InterruptedException ex) {}
+        } catch (final InterruptedException ex) {}
     }
 
 
@@ -1985,10 +1985,10 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     @Test(timeout=60000)
     public void testBorrowObjectFairness() throws Exception {
 
-        int numThreads = 40;
-        int maxTotal = 40;
+        final int numThreads = 40;
+        final int maxTotal = 40;
 
-        GenericObjectPoolConfig config = new GenericObjectPoolConfig();
+        final GenericObjectPoolConfig config = new GenericObjectPoolConfig();
         config.setMaxTotal(maxTotal);
         config.setMaxIdle(maxTotal);
         config.setFairness(true);
@@ -1997,21 +1997,21 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         pool = new GenericObjectPool(factory, config);
 
         // Exhaust the pool
-        String[] objects = new String[maxTotal];
+        final String[] objects = new String[maxTotal];
         for (int i = 0; i < maxTotal; i++) {
             objects[i] = pool.borrowObject();
         }
 
         // Start and park threads waiting to borrow objects
-        TestThread[] threads = new TestThread[numThreads];
+        final TestThread[] threads = new TestThread[numThreads];
         for(int i=0;i<numThreads;i++) {
             threads[i] = new TestThread(pool, 1, 0, 2000, false, String.valueOf(i % maxTotal));
-            Thread t = new Thread(threads[i]);
+            final Thread t = new Thread(threads[i]);
             t.start();
             // Short delay to ensure threads start in correct order
             try {
                 Thread.sleep(10);
-            } catch (InterruptedException e) {
+            } catch (final InterruptedException e) {
                 fail(e.toString());
             }
         }
@@ -2026,7 +2026,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             while(!(threads[i]).complete()) {
                 try {
                     Thread.sleep(500L);
-                } catch(InterruptedException e) {
+                } catch(final InterruptedException e) {
                     // ignored
                 }
             }
@@ -2042,7 +2042,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
      */
     @Test(timeout=60000)
     public void testBrokenFactoryShouldNotBlockPool() {
-        int maxTotal = 1;
+        final int maxTotal = 1;
 
         factory.setMaxTotal(maxTotal);
         pool.setMaxTotal(maxTotal);
@@ -2056,7 +2056,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         factory.setValid(false);
         try {
             obj = pool.borrowObject();
-        } catch (Exception e) {
+        } catch (final Exception e) {
             ex = e;
         }
         // Failure expected
@@ -2070,13 +2070,13 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         // Subsequent borrows should be OK
         try {
             obj = pool.borrowObject();
-        } catch (Exception e1) {
+        } catch (final Exception e1) {
             fail();
         }
         assertNotNull(obj);
         try {
             pool.returnObject(obj);
-        } catch (Exception e) {
+        } catch (final Exception e) {
             fail();
         }
     }
@@ -2106,13 +2106,13 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         public void run() {
             try {
                 preborrow = System.currentTimeMillis();
-                String obj = _pool.borrowObject();
+                final String obj = _pool.borrowObject();
                 objectId = obj;
                 postborrow = System.currentTimeMillis();
                 Thread.sleep(_pause);
                 _pool.returnObject(obj);
                 postreturn = System.currentTimeMillis();
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 _thrown = e;
             } finally{
                 ended = System.currentTimeMillis();
@@ -2143,16 +2143,16 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         pool.setMaxWaitMillis(maxWait);
         pool.setMaxTotal(threads);
         // Create enough threads so half the threads will have to wait
-        WaitingTestThread wtt[] = new WaitingTestThread[threads * 2];
+        final WaitingTestThread wtt[] = new WaitingTestThread[threads * 2];
         for(int i=0; i < wtt.length; i++){
             wtt[i] = new WaitingTestThread(pool,holdTime);
         }
-        long origin = System.currentTimeMillis()-1000;
-        for (WaitingTestThread element : wtt) {
+        final long origin = System.currentTimeMillis()-1000;
+        for (final WaitingTestThread element : wtt) {
             element.start();
         }
         int failed = 0;
-        for (WaitingTestThread element : wtt) {
+        for (final WaitingTestThread element : wtt) {
             element.join();
             if (element._thrown != null){
                 failed++;
@@ -2166,7 +2166,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
                     " Threads: " + wtt.length +
                     " Failed: " + failed
                     );
-            for (WaitingTestThread wt : wtt) {
+            for (final WaitingTestThread wt : wtt) {
                 System.out.println(
                         "Preborrow: " + (wt.preborrow-origin) +
                         " Postborrow: " + (wt.postborrow != 0 ? wt.postborrow-origin : -1) +
@@ -2194,12 +2194,12 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         pool.setTestOnBorrow(true);
         factory.setValid(true);
         // Borrow and return an instance, with a short wait
-        WaitingTestThread thread1 = new WaitingTestThread(pool, 200);
+        final WaitingTestThread thread1 = new WaitingTestThread(pool, 200);
         thread1.start();
         Thread.sleep(50); // wait for validation to succeed
         // Slow down validation and borrow an instance
         factory.setValidateLatency(400);
-        String instance = pool.borrowObject();
+        final String instance = pool.borrowObject();
         // Now make sure that we have not leaked an instance
         assertEquals(factory.getMakeCounter(), pool.getNumIdle() + 1);
         pool.returnObject(instance);
@@ -2211,21 +2211,21 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
      */
     @Test(timeout=60000)
     public void testJmxRegistration() {
-        ObjectName oname = pool.getJmxName();
-        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
-        Set<ObjectName> result = mbs.queryNames(oname, null);
+        final ObjectName oname = pool.getJmxName();
+        final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+        final Set<ObjectName> result = mbs.queryNames(oname, null);
         Assert.assertEquals(1, result.size());
         pool.jmxUnregister();
 
-        GenericObjectPoolConfig config = new GenericObjectPoolConfig();
+        final GenericObjectPoolConfig config = new GenericObjectPoolConfig();
         config.setJmxEnabled(false);
-        GenericObjectPool<String> poolWithoutJmx = new GenericObjectPool<String>(factory, config);
+        final GenericObjectPool<String> poolWithoutJmx = new GenericObjectPool<String>(factory, config);
         assertNull(poolWithoutJmx.getJmxName());
         config.setJmxEnabled(true);
         poolWithoutJmx.jmxUnregister();
 
         config.setJmxNameBase(null);
-        GenericObjectPool<String> poolWithDefaultJmxNameBase = new GenericObjectPool<String>(factory, config);
+        final GenericObjectPool<String> poolWithDefaultJmxNameBase = new GenericObjectPool<String>(factory, config);
         assertNotNull(poolWithDefaultJmxNameBase.getJmxName());
     }
 
@@ -2240,17 +2240,17 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     @Test
     public void testInvalidateFreesCapacity()
         throws Exception {
-        SimpleFactory factory = new SimpleFactory();
-        GenericObjectPool<String> pool = new GenericObjectPool<String>(factory);
+        final SimpleFactory factory = new SimpleFactory();
+        final GenericObjectPool<String> pool = new GenericObjectPool<String>(factory);
         pool.setMaxTotal(2);
         pool.setMaxWaitMillis(500);
         // Borrow an instance and hold if for 5 seconds
-        WaitingTestThread thread1 = new WaitingTestThread(pool, 5000);
+        final WaitingTestThread thread1 = new WaitingTestThread(pool, 5000);
         thread1.start();
         // Borrow another instance
-        String obj = pool.borrowObject();
+        final String obj = pool.borrowObject();
         // Launch another thread - will block, but fail in 500 ms
-        WaitingTestThread thread2 = new WaitingTestThread(pool, 100);
+        final WaitingTestThread thread2 = new WaitingTestThread(pool, 100);
         thread2.start();
         // Invalidate the object borrowed by this thread - should allow thread2 to create
         Thread.sleep(20);
@@ -2272,23 +2272,23 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     @Test
     public void testValidationFailureOnReturnFreesCapacity()
         throws Exception {
-        SimpleFactory factory = new SimpleFactory();
+        final SimpleFactory factory = new SimpleFactory();
         factory.setValid(false); // Validate will always fail
         factory.setValidationEnabled(true);
-        GenericObjectPool<String> pool = new GenericObjectPool<String>(factory);
+        final GenericObjectPool<String> pool = new GenericObjectPool<String>(factory);
         pool.setMaxTotal(2);
         pool.setMaxWaitMillis(1500);
         pool.setTestOnReturn(true);
         pool.setTestOnBorrow(false);
         // Borrow an instance and hold if for 5 seconds
-        WaitingTestThread thread1 = new WaitingTestThread(pool, 5000);
+        final WaitingTestThread thread1 = new WaitingTestThread(pool, 5000);
         thread1.start();
         // Borrow another instance and return it after 500 ms (validation will fail)
-        WaitingTestThread thread2 = new WaitingTestThread(pool, 500);
+        final WaitingTestThread thread2 = new WaitingTestThread(pool, 500);
         thread2.start();
         Thread.sleep(50);
         // Try to borrow an object
-        String obj = pool.borrowObject();
+        final String obj = pool.borrowObject();
         pool.returnObject(obj);
     }
 
@@ -2310,8 +2310,8 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         };
         pool.setSwallowedExceptionListener(listener);
 
-        Exception e1 = new Exception();
-        Exception e2 = new ArrayIndexOutOfBoundsException();
+        final Exception e1 = new Exception();
+        final Exception e2 = new ArrayIndexOutOfBoundsException();
 
         pool.swallowException(e1);
         pool.swallowException(e2);
@@ -2319,7 +2319,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         try {
             pool.swallowException(e1);
             fail("Not supposed to get here");
-        } catch (OutOfMemoryError oom) {
+        } catch (final OutOfMemoryError oom) {
             // expected
         }
 
@@ -2335,7 +2335,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         Assert.assertEquals(0, pool.getNumActive());
         Assert.assertEquals(0, pool.getNumIdle());
 
-        String obj = pool.borrowObject();
+        final String obj = pool.borrowObject();
 
         Assert.assertEquals(1, pool.getNumActive());
         Assert.assertEquals(0, pool.getNumIdle());
@@ -2354,12 +2354,12 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     // POOL-259
     @Test
     public void testClientWaitStats() throws Exception {
-        SimpleFactory factory = new SimpleFactory();
+        final SimpleFactory factory = new SimpleFactory();
         // Give makeObject a little latency
         factory.setMakeLatency(200);
         final GenericObjectPool<String> pool = new GenericObjectPool<String>(
                 factory, new GenericObjectPoolConfig());
-        String s = pool.borrowObject();
+        final String s = pool.borrowObject();
         // First borrow waits on create, so wait time should be at least 200 ms
         // Allow 100ms error in clock times
         Assert.assertTrue(pool.getMaxBorrowWaitTimeMillis() >= 100);
@@ -2383,7 +2383,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
 
         final String o1 = pool.borrowObject();
         Assert.assertEquals("0", o1);
-        Timer t = new Timer();
+        final Timer t = new Timer();
         t.schedule(
                 new TimerTask() {
                     @Override
@@ -2392,7 +2392,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
                     }
                 }, 3000);
 
-        String o2 = pool.borrowObject();
+        final String o2 = pool.borrowObject();
         Assert.assertEquals("0", o2);
 
         Assert.assertEquals(1, factory.validateCounter);
@@ -2447,14 +2447,14 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         final WaiterFactory<String> factory = new WaiterFactory<String>(0, 0, 0, 0, 0, 0);
         final GenericObjectPool<Waiter> pool = new GenericObjectPool<Waiter>(factory);
         pool.setTestOnReturn(true);
-        Waiter waiter = pool.borrowObject();
+        final Waiter waiter = pool.borrowObject();
         pool.returnObject(waiter);
         Assert.assertEquals(1, waiter.getValidationCount());
         Assert.assertEquals(1, waiter.getPassivationCount());
         try {
             pool.returnObject(waiter);
             fail("Expecting IllegalStateException from multiple return");
-        } catch (IllegalStateException ex) {
+        } catch (final IllegalStateException ex) {
             // Exception is expected, now check no repeat validation/passivation
             Assert.assertEquals(1, waiter.getValidationCount());
             Assert.assertEquals(1, waiter.getPassivationCount());
@@ -2466,7 +2466,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         pool.setMaxTotal(1);
         pool.preparePool();
         Assert.assertEquals(1, pool.getNumIdle());
-        String obj = pool.borrowObject();
+        final String obj = pool.borrowObject();
         pool.preparePool();
         Assert.assertEquals(0, pool.getNumIdle());
         pool.setMinIdle(0);
@@ -2520,7 +2520,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         public boolean validateObject(PooledObject<Object> obj) {
             try {
                 Thread.sleep(1000);
-            } catch (InterruptedException e) {
+            } catch (final InterruptedException e) {
                 // Ignore
             }
             return false;
@@ -2539,7 +2539,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         public void run() {
             try {
                 pool.evict();
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // Ignore
             }
         }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPoolClassLoaders.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPoolClassLoaders.java b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPoolClassLoaders.java
index bada554..7bfded0 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPoolClassLoaders.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPoolClassLoaders.java
@@ -34,15 +34,15 @@ public class TestGenericObjectPoolClassLoaders {
     @Test
     public void testContextClassLoader() throws Exception {
 
-        ClassLoader savedClassloader =
+        final ClassLoader savedClassloader =
                 Thread.currentThread().getContextClassLoader();
 
         try {
-            CustomClassLoader cl1 = new CustomClassLoader(1);
+            final CustomClassLoader cl1 = new CustomClassLoader(1);
             Thread.currentThread().setContextClassLoader(cl1);
-            CustomClassLoaderObjectFactory factory1 =
+            final CustomClassLoaderObjectFactory factory1 =
                     new CustomClassLoaderObjectFactory(1);
-            GenericObjectPool<URL> pool1 = new GenericObjectPool<URL>(factory1);
+            final GenericObjectPool<URL> pool1 = new GenericObjectPool<URL>(factory1);
             pool1.setMinIdle(1);
             pool1.setTimeBetweenEvictionRunsMillis(100);
             int counter = 0;
@@ -54,11 +54,11 @@ public class TestGenericObjectPoolClassLoaders {
                     pool1.getNumIdle());
 
             // ---------------
-            CustomClassLoader cl2 = new CustomClassLoader(2);
+            final CustomClassLoader cl2 = new CustomClassLoader(2);
             Thread.currentThread().setContextClassLoader(cl2);
-            CustomClassLoaderObjectFactory factory2 =
+            final CustomClassLoaderObjectFactory factory2 =
                     new CustomClassLoaderObjectFactory(2);
-            GenericObjectPool<URL> pool2 =
+            final GenericObjectPool<URL> pool2 =
                     new GenericObjectPool<URL>(factory2);
             pool2.setMinIdle(1);
 
@@ -94,7 +94,7 @@ public class TestGenericObjectPoolClassLoaders {
 
         @Override
         public URL create() throws Exception {
-            URL url = Thread.currentThread().getContextClassLoader()
+            final URL url = Thread.currentThread().getContextClassLoader()
                     .getResource("test" + n);
             if (url == null) {
                 throw new IllegalStateException("Object should not be null");

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/impl/TestLinkedBlockingDeque.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestLinkedBlockingDeque.java b/src/test/java/org/apache/commons/pool2/impl/TestLinkedBlockingDeque.java
index 8099163..6cb33f3 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestLinkedBlockingDeque.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestLinkedBlockingDeque.java
@@ -62,7 +62,7 @@ public class TestLinkedBlockingDeque {
         try {
             deque = new LinkedBlockingDeque<Integer>(Arrays.asList(ONE, null));
             fail("Not supposed to get here");
-        } catch (NullPointerException npe) {
+        } catch (final NullPointerException npe) {
             // OK
         }
     }
@@ -75,7 +75,7 @@ public class TestLinkedBlockingDeque {
         try {
             deque.addFirst(THREE);
             fail("Not supposed to get here");
-        } catch (IllegalStateException e) {}
+        } catch (final IllegalStateException e) {}
         assertEquals(Integer.valueOf(2), deque.pop());
     }
 
@@ -87,7 +87,7 @@ public class TestLinkedBlockingDeque {
         try {
             deque.addLast(THREE);
             fail("Not supposed to get here");
-        } catch (IllegalStateException e) {}
+        } catch (final IllegalStateException e) {}
         assertEquals(Integer.valueOf(1), deque.pop());
     }
 
@@ -99,7 +99,7 @@ public class TestLinkedBlockingDeque {
         try {
             deque.offerFirst(null);
             fail("Not supposed to get here");
-        } catch (NullPointerException e) {}
+        } catch (final NullPointerException e) {}
         assertEquals(Integer.valueOf(2), deque.pop());
     }
 
@@ -111,7 +111,7 @@ public class TestLinkedBlockingDeque {
         try {
             deque.offerLast(null);
             fail("Not supposed to get here");
-        } catch (NullPointerException e) {}
+        } catch (final NullPointerException e) {}
         assertEquals(Integer.valueOf(1), deque.pop());
     }
 
@@ -120,7 +120,7 @@ public class TestLinkedBlockingDeque {
         try {
             deque.putFirst(null);
             fail("Not supposed to get here");
-        } catch (NullPointerException e) {}
+        } catch (final NullPointerException e) {}
         deque.putFirst(ONE);
         deque.putFirst(TWO);
         assertEquals(2, deque.size());
@@ -132,7 +132,7 @@ public class TestLinkedBlockingDeque {
         try {
             deque.putLast(null);
             fail("Not supposed to get here");
-        } catch (NullPointerException e) {}
+        } catch (final NullPointerException e) {}
         deque.putLast(ONE);
         deque.putLast(TWO);
         assertEquals(2, deque.size());
@@ -144,7 +144,7 @@ public class TestLinkedBlockingDeque {
         try {
             deque.offerFirst(null);
             fail("Not supposed to get here");
-        } catch (NullPointerException e) {}
+        } catch (final NullPointerException e) {}
         assertTrue(deque.offerFirst(ONE, 50, TimeUnit.MILLISECONDS));
         assertTrue(deque.offerFirst(TWO, 50, TimeUnit.MILLISECONDS));
         assertFalse(deque.offerFirst(THREE, 50, TimeUnit.MILLISECONDS));
@@ -155,7 +155,7 @@ public class TestLinkedBlockingDeque {
         try {
             deque.offerLast(null);
             fail("Not supposed to get here");
-        } catch (NullPointerException e) {}
+        } catch (final NullPointerException e) {}
         assertTrue(deque.offerLast(ONE, 50, TimeUnit.MILLISECONDS));
         assertTrue(deque.offerLast(TWO, 50, TimeUnit.MILLISECONDS));
         assertFalse(deque.offerLast(THREE, 50, TimeUnit.MILLISECONDS));
@@ -166,7 +166,7 @@ public class TestLinkedBlockingDeque {
         try {
             deque.removeFirst();
             fail("Not supposed to get here");
-        } catch (NoSuchElementException e) {}
+        } catch (final NoSuchElementException e) {}
         deque.add(ONE);
         deque.add(TWO);
         assertEquals(Integer.valueOf(1), deque.removeFirst());
@@ -174,7 +174,7 @@ public class TestLinkedBlockingDeque {
             deque.removeFirst();
             deque.removeFirst();
             fail("Not supposed to get here");
-        } catch (NoSuchElementException e) {}
+        } catch (final NoSuchElementException e) {}
     }
 
     @Test
@@ -182,7 +182,7 @@ public class TestLinkedBlockingDeque {
         try {
             deque.removeLast();
             fail("Not supposed to get here");
-        } catch (NoSuchElementException e) {}
+        } catch (final NoSuchElementException e) {}
         deque.add(ONE);
         deque.add(TWO);
         assertEquals(Integer.valueOf(2), deque.removeLast());
@@ -190,7 +190,7 @@ public class TestLinkedBlockingDeque {
             deque.removeLast();
             deque.removeLast();
             fail("Not supposed to get here");
-        } catch (NoSuchElementException e) {}
+        } catch (final NoSuchElementException e) {}
     }
 
     @Test
@@ -240,7 +240,7 @@ public class TestLinkedBlockingDeque {
         try {
             deque.getFirst();
             fail("Not supposed to get here");
-        } catch (NoSuchElementException e){}
+        } catch (final NoSuchElementException e){}
         deque.add(ONE);
         deque.add(TWO);
         assertEquals(Integer.valueOf(1), deque.getFirst());
@@ -251,7 +251,7 @@ public class TestLinkedBlockingDeque {
         try {
             deque.getLast();
             fail("Not supposed to get here");
-        } catch (NoSuchElementException e){}
+        } catch (final NoSuchElementException e){}
         deque.add(ONE);
         deque.add(TWO);
         assertEquals(Integer.valueOf(2), deque.getLast());
@@ -290,11 +290,11 @@ public class TestLinkedBlockingDeque {
         try {
             assertTrue(deque.add(THREE));
             fail("Not supposed to get here");
-        } catch (IllegalStateException e) {}
+        } catch (final IllegalStateException e) {}
         try {
             assertTrue(deque.add(null));
             fail("Not supposed to get here");
-        } catch (NullPointerException e) {}
+        } catch (final NullPointerException e) {}
     }
 
     @Test
@@ -305,7 +305,7 @@ public class TestLinkedBlockingDeque {
         try {
             deque.offer(null);
             fail("Not supposed to get here");
-        } catch (NullPointerException e) {}
+        } catch (final NullPointerException e) {}
     }
 
     @Test
@@ -313,7 +313,7 @@ public class TestLinkedBlockingDeque {
         try {
             deque.put(null);
             fail("Not supposed to get here");
-        } catch (NullPointerException e) {}
+        } catch (final NullPointerException e) {}
         deque.put(ONE);
         deque.put(TWO);
     }
@@ -326,7 +326,7 @@ public class TestLinkedBlockingDeque {
         try {
             deque.offer(null, 50, TimeUnit.MILLISECONDS);
             fail("Not supposed to get here");
-        } catch (NullPointerException e) {}
+        } catch (final NullPointerException e) {}
     }
 
     @Test
@@ -334,7 +334,7 @@ public class TestLinkedBlockingDeque {
         try {
             deque.remove();
             fail("Not supposed to get here");
-        } catch (NoSuchElementException e) {}
+        } catch (final NoSuchElementException e) {}
         deque.add(ONE);
         deque.add(TWO);
         assertEquals(Integer.valueOf(1), deque.remove());
@@ -358,7 +358,7 @@ public class TestLinkedBlockingDeque {
         try {
             deque.element();
             fail("Not supposed to get here");
-        } catch (NoSuchElementException e){}
+        } catch (final NoSuchElementException e){}
         deque.add(ONE);
         deque.add(TWO);
         assertEquals(Integer.valueOf(1), deque.element());
@@ -397,7 +397,7 @@ public class TestLinkedBlockingDeque {
         try {
             deque.push(THREE);
             fail("Not supposed to get here");
-        } catch (IllegalStateException e) {}
+        } catch (final IllegalStateException e) {}
         assertEquals(Integer.valueOf(2), deque.pop());
     }
 
@@ -406,7 +406,7 @@ public class TestLinkedBlockingDeque {
         try {
             deque.pop();
             fail("Not supposed to get here");
-        } catch (NoSuchElementException e) {}
+        } catch (final NoSuchElementException e) {}
         deque.add(ONE);
         deque.add(TWO);
         assertEquals(Integer.valueOf(1), deque.pop());
@@ -414,7 +414,7 @@ public class TestLinkedBlockingDeque {
             deque.pop();
             deque.pop();
             fail("Not supposed to get here");
-        } catch (NoSuchElementException e) {}
+        } catch (final NoSuchElementException e) {}
     }
 
     @Test
@@ -459,10 +459,10 @@ public class TestLinkedBlockingDeque {
         try {
             deque.iterator().next();
             fail("Not supposed to get here");
-        } catch (NoSuchElementException e) {}
+        } catch (final NoSuchElementException e) {}
         deque.add(ONE);
         deque.add(TWO);
-        Iterator<Integer> iter = deque.iterator();
+        final Iterator<Integer> iter = deque.iterator();
         assertEquals(Integer.valueOf(1), iter.next());
         iter.remove();
         assertEquals(Integer.valueOf(2), iter.next());
@@ -473,10 +473,10 @@ public class TestLinkedBlockingDeque {
         try {
             deque.descendingIterator().next();
             fail("Not supposed to get here");
-        } catch (NoSuchElementException e) {}
+        } catch (final NoSuchElementException e) {}
         deque.add(ONE);
         deque.add(TWO);
-        Iterator<Integer> iter = deque.descendingIterator();
+        final Iterator<Integer> iter = deque.descendingIterator();
         assertEquals(Integer.valueOf(2), iter.next());
         iter.remove();
         assertEquals(Integer.valueOf(1), iter.next());
@@ -498,7 +498,7 @@ public class TestLinkedBlockingDeque {
         // This particular sequence of method calls() (there may be others)
         // creates an internal state that triggers an infinite loop in the
         // iterator.
-        Iterator<Integer> iter = deque.iterator();
+        final Iterator<Integer> iter = deque.iterator();
         iter.next();
 
         deque.remove(Integer.valueOf(1));

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/impl/TestPoolImplUtils.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestPoolImplUtils.java b/src/test/java/org/apache/commons/pool2/impl/TestPoolImplUtils.java
index b411fd7..921f183 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestPoolImplUtils.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestPoolImplUtils.java
@@ -26,13 +26,13 @@ public class TestPoolImplUtils {
 
     @Test
     public void testFactoryTypeSimple() {
-        Class<?> result = PoolImplUtils.getFactoryType(SimpleFactory.class);
+        final Class<?> result = PoolImplUtils.getFactoryType(SimpleFactory.class);
         assertEquals(String.class, result);
     }
 
     @Test
     public void testFactoryTypeNotSimple() {
-        Class<?> result = PoolImplUtils.getFactoryType(NotSimpleFactory.class);
+        final Class<?> result = PoolImplUtils.getFactoryType(NotSimpleFactory.class);
         assertEquals(Long.class, result);
     }
 

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/impl/TestPooledSoftReference.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestPooledSoftReference.java b/src/test/java/org/apache/commons/pool2/impl/TestPooledSoftReference.java
index 21c27a5..5edd2dc 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestPooledSoftReference.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestPooledSoftReference.java
@@ -34,7 +34,7 @@ public class TestPooledSoftReference {
 
     @Before
     public void setUp() {
-        SoftReference<String> softRef = new SoftReference<String>(REFERENT);
+        final SoftReference<String> softRef = new SoftReference<String>(REFERENT);
         ref = new PooledSoftReference<String>(softRef);
     }
 
@@ -58,7 +58,7 @@ public class TestPooledSoftReference {
 
     @Test
     public void testToString() {
-        String expected = "Referenced Object: test, State: IDLE";
+        final String expected = "Referenced Object: test, State: IDLE";
         assertEquals(expected, ref.toString());
     }
 

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/impl/TestSoftRefOutOfMemory.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestSoftRefOutOfMemory.java b/src/test/java/org/apache/commons/pool2/impl/TestSoftRefOutOfMemory.java
index bce3e55..056060e 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestSoftRefOutOfMemory.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestSoftRefOutOfMemory.java
@@ -65,7 +65,7 @@ public class TestSoftRefOutOfMemory {
                     freeMemory = Integer.MAX_VALUE;
                 }
                 garbage.add(new byte[Math.min(1024 * 1024, (int)freeMemory/2)]);
-            } catch (OutOfMemoryError oome) {
+            } catch (final OutOfMemoryError oome) {
                 System.gc();
             }
             System.gc();
@@ -105,7 +105,7 @@ public class TestSoftRefOutOfMemory {
                     freeMemory = Integer.MAX_VALUE;
                 }
                 garbage.add(new byte[Math.min(1024 * 1024, (int)freeMemory/2)]);
-            } catch (OutOfMemoryError oome) {
+            } catch (final OutOfMemoryError oome) {
                 System.gc();
             }
             System.gc();
@@ -141,7 +141,7 @@ public class TestSoftRefOutOfMemory {
                     freeMemory = Integer.MAX_VALUE;
                 }
                 garbage.add(new byte[Math.min(1024 * 1024, (int)freeMemory/2)]);
-            } catch (OutOfMemoryError oome) {
+            } catch (final OutOfMemoryError oome) {
                 System.gc();
             }
             System.gc();
@@ -171,7 +171,7 @@ public class TestSoftRefOutOfMemory {
             pool.borrowObject();
             fail("Expected out of memory.");
         }
-        catch (OutOfMemoryError ex) {
+        catch (final OutOfMemoryError ex) {
             // expected
         }
         pool.close();
@@ -183,7 +183,7 @@ public class TestSoftRefOutOfMemory {
             pool.borrowObject();
             fail("Expected out of memory.");
         }
-        catch (OutOfMemoryError ex) {
+        catch (final OutOfMemoryError ex) {
             // expected
         }
         pool.close();
@@ -195,7 +195,7 @@ public class TestSoftRefOutOfMemory {
             pool.borrowObject();
             fail("Expected out of memory.");
         }
-        catch (OutOfMemoryError ex) {
+        catch (final OutOfMemoryError ex) {
             // expected
         }
         pool.close();
@@ -226,7 +226,7 @@ public class TestSoftRefOutOfMemory {
         private int counter = 0;
 
         public LargePoolableObjectFactory(int size) {
-            char[] data = new char[size];
+            final char[] data = new char[size];
             Arrays.fill(data, '.');
             buffer = new String(data);
         }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/performance/PerformanceTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/performance/PerformanceTest.java b/src/test/java/org/apache/commons/pool2/performance/PerformanceTest.java
index 72ed484..5324f88 100644
--- a/src/test/java/org/apache/commons/pool2/performance/PerformanceTest.java
+++ b/src/test/java/org/apache/commons/pool2/performance/PerformanceTest.java
@@ -59,31 +59,31 @@ public class PerformanceTest {
             try {
                 taskStats.waiting++;
                 if (logLevel >= 5) {
-                    String name = "thread" + Thread.currentThread().getName();
+                    final String name = "thread" + Thread.currentThread().getName();
                     System.out.println(name +
                             "   waiting: " + taskStats.waiting +
                             "   complete: " + taskStats.complete);
                 }
-                long bbegin = System.currentTimeMillis();
-                Integer o = pool.borrowObject();
-                long bend = System.currentTimeMillis();
+                final long bbegin = System.currentTimeMillis();
+                final Integer o = pool.borrowObject();
+                final long bend = System.currentTimeMillis();
                 taskStats.waiting--;
 
                 if (logLevel >= 3) {
-                    String name = "thread" + Thread.currentThread().getName();
+                    final String name = "thread" + Thread.currentThread().getName();
                     System.out.println(name +
                             "    waiting: " + taskStats.waiting +
                             "   complete: " + taskStats.complete);
                 }
 
-                long rbegin = System.currentTimeMillis();
+                final long rbegin = System.currentTimeMillis();
                 pool.returnObject(o);
-                long rend = System.currentTimeMillis();
+                final long rend = System.currentTimeMillis();
                 Thread.yield();
                 taskStats.complete++;
                 borrowTime = bend-bbegin;
                 returnTime = rend-rbegin;
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 e.printStackTrace();
             }
         }
@@ -97,7 +97,7 @@ public class PerformanceTest {
                taskStats.totalReturnTime += returnTime;
                taskStats.nrSamples++;
                if (logLevel >= 2) {
-                   String name = "thread" + Thread.currentThread().getName();
+                   final String name = "thread" + Thread.currentThread().getName();
                    System.out.println("result " + taskStats.nrSamples + "\t" +
                            name + "\t" + "borrow time: " + borrowTime + "\t" +
                            "return time: " + returnTime + "\t" + "waiting: " +
@@ -112,16 +112,16 @@ public class PerformanceTest {
     private void run(int iterations, int nrThreads, int maxTotal, int maxIdle) {
         this.nrIterations = iterations;
 
-        SleepingObjectFactory factory = new SleepingObjectFactory();
+        final SleepingObjectFactory factory = new SleepingObjectFactory();
         if (logLevel >= 4) { factory.setDebug(true); }
         pool = new GenericObjectPool<Integer>(factory);
         pool.setMaxTotal(maxTotal);
         pool.setMaxIdle(maxIdle);
         pool.setTestOnBorrow(true);
 
-        ExecutorService threadPool = Executors.newFixedThreadPool(nrThreads);
+        final ExecutorService threadPool = Executors.newFixedThreadPool(nrThreads);
 
-        List<Callable<TaskStats>> tasks = new ArrayList<Callable<TaskStats>>();
+        final List<Callable<TaskStats>> tasks = new ArrayList<Callable<TaskStats>>();
         for (int i = 0; i < nrThreads; i++) {
             tasks.add(new PerfTask());
             Thread.yield();
@@ -134,7 +134,7 @@ public class PerformanceTest {
         List<Future<TaskStats>> futures = null;
         try {
             futures = threadPool.invokeAll(tasks);
-        } catch (InterruptedException e) {
+        } catch (final InterruptedException e) {
             e.printStackTrace();
         }
 
@@ -146,15 +146,15 @@ public class PerformanceTest {
 
         if (logLevel >= 1) { System.out.println("finish"); }
 
-        TaskStats aggregate = new TaskStats();
+        final TaskStats aggregate = new TaskStats();
         if (futures != null) {
-            for (Future<TaskStats> future : futures) {
+            for (final Future<TaskStats> future : futures) {
                 TaskStats taskStats = null;
                 try {
                     taskStats = future.get();
-                } catch (InterruptedException e) {
+                } catch (final InterruptedException e) {
                     e.printStackTrace();
-                } catch (ExecutionException e) {
+                } catch (final ExecutionException e) {
                     e.printStackTrace();
                 }
                 if (taskStats != null) {
@@ -184,7 +184,7 @@ public class PerformanceTest {
     }
 
     public static void main(String[] args) {
-        PerformanceTest test = new PerformanceTest();
+        final PerformanceTest test = new PerformanceTest();
         test.setLogLevel(0);
         System.out.println("Increase threads");
         test.run(1,  50,  5,  5);

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/performance/SleepingObjectFactory.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/performance/SleepingObjectFactory.java b/src/test/java/org/apache/commons/pool2/performance/SleepingObjectFactory.java
index c0e3ce8..5b46712 100644
--- a/src/test/java/org/apache/commons/pool2/performance/SleepingObjectFactory.java
+++ b/src/test/java/org/apache/commons/pool2/performance/SleepingObjectFactory.java
@@ -35,7 +35,7 @@ public class SleepingObjectFactory implements PooledObjectFactory<Integer> {
     public PooledObject<Integer> makeObject() throws Exception {
         // Deliberate choice to create a new object in case future unit tests
         // check for a specific object.
-        Integer obj = new Integer(counter++);
+        final Integer obj = new Integer(counter++);
         debug("makeObject", obj);
         sleep(500);
         return new DefaultPooledObject<Integer>(obj);
@@ -68,7 +68,7 @@ public class SleepingObjectFactory implements PooledObjectFactory<Integer> {
 
     private void debug(String method, Object obj) {
         if (debug) {
-            String thread = "thread" + Thread.currentThread().getName();
+            final String thread = "thread" + Thread.currentThread().getName();
             System.out.println(thread + ": " + method + " " + obj);
         }
     }
@@ -77,7 +77,7 @@ public class SleepingObjectFactory implements PooledObjectFactory<Integer> {
         try {
             Thread.sleep(millis);
         }
-        catch (InterruptedException e) {
+        catch (final InterruptedException e) {
         }
     }
 

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedKeyedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedKeyedObjectPool.java b/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedKeyedObjectPool.java
index 0c77abd..a58db99 100644
--- a/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedKeyedObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedKeyedObjectPool.java
@@ -39,13 +39,13 @@ public abstract class BaseTestProxiedKeyedObjectPool {
 
     @Before
     public void setUp() {
-        GenericKeyedObjectPoolConfig config = new GenericKeyedObjectPoolConfig();
+        final GenericKeyedObjectPoolConfig config = new GenericKeyedObjectPoolConfig();
         config.setMaxTotal(3);
 
-        KeyedPooledObjectFactory<String, TestObject> factory =
+        final KeyedPooledObjectFactory<String, TestObject> factory =
                 new TestKeyedObjectFactory();
 
-        KeyedObjectPool<String,TestObject> innerPool =
+        final KeyedObjectPool<String,TestObject> innerPool =
                 new GenericKeyedObjectPool<String,TestObject>(
                         factory, config);
 
@@ -57,7 +57,7 @@ public abstract class BaseTestProxiedKeyedObjectPool {
 
     @Test
     public void testBorrowObject() throws Exception {
-        TestObject obj = pool.borrowObject(KEY1);
+        final TestObject obj = pool.borrowObject(KEY1);
         assertNotNull(obj);
 
         // Make sure proxied methods are working
@@ -70,7 +70,7 @@ public abstract class BaseTestProxiedKeyedObjectPool {
 
     @Test(expected=IllegalStateException.class)
     public void testAccessAfterReturn() throws Exception {
-        TestObject obj = pool.borrowObject(KEY1);
+        final TestObject obj = pool.borrowObject(KEY1);
         assertNotNull(obj);
 
         // Make sure proxied methods are working
@@ -87,7 +87,7 @@ public abstract class BaseTestProxiedKeyedObjectPool {
 
     @Test(expected=IllegalStateException.class)
     public void testAccessAfterInvalidate() throws Exception {
-        TestObject obj = pool.borrowObject(KEY1);
+        final TestObject obj = pool.borrowObject(KEY1);
         assertNotNull(obj);
 
         // Make sure proxied methods are working

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedObjectPool.java b/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedObjectPool.java
index 1da854c..c3014ca 100644
--- a/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedObjectPool.java
@@ -47,20 +47,20 @@ public abstract class BaseTestProxiedObjectPool {
     public void setUp() {
         log = new StringWriter();
 
-        PrintWriter pw = new PrintWriter(log);
-        AbandonedConfig abandonedConfig = new AbandonedConfig();
+        final PrintWriter pw = new PrintWriter(log);
+        final AbandonedConfig abandonedConfig = new AbandonedConfig();
         abandonedConfig.setLogAbandoned(true);
         abandonedConfig.setRemoveAbandonedOnBorrow(true);
         abandonedConfig.setUseUsageTracking(true);
         abandonedConfig.setRemoveAbandonedTimeout(ABANDONED_TIMEOUT_SECS);
         abandonedConfig.setLogWriter(pw);
 
-        GenericObjectPoolConfig config = new GenericObjectPoolConfig();
+        final GenericObjectPoolConfig config = new GenericObjectPoolConfig();
         config.setMaxTotal(3);
 
-        PooledObjectFactory<TestObject> factory = new TestObjectFactory();
+        final PooledObjectFactory<TestObject> factory = new TestObjectFactory();
 
-        ObjectPool<TestObject> innerPool =
+        final ObjectPool<TestObject> innerPool =
                 new GenericObjectPool<TestObject>(factory, config, abandonedConfig);
 
         pool = new ProxiedObjectPool<TestObject>(innerPool, getproxySource());
@@ -71,7 +71,7 @@ public abstract class BaseTestProxiedObjectPool {
 
     @Test
     public void testBorrowObject() throws Exception {
-        TestObject obj = pool.borrowObject();
+        final TestObject obj = pool.borrowObject();
         assertNotNull(obj);
 
         // Make sure proxied methods are working
@@ -84,7 +84,7 @@ public abstract class BaseTestProxiedObjectPool {
 
     @Test(expected=IllegalStateException.class)
     public void testAccessAfterReturn() throws Exception {
-        TestObject obj = pool.borrowObject();
+        final TestObject obj = pool.borrowObject();
         assertNotNull(obj);
 
         // Make sure proxied methods are working
@@ -101,7 +101,7 @@ public abstract class BaseTestProxiedObjectPool {
 
     @Test(expected=IllegalStateException.class)
     public void testAccessAfterInvalidate() throws Exception {
-        TestObject obj = pool.borrowObject();
+        final TestObject obj = pool.borrowObject();
         assertNotNull(obj);
 
         // Make sure proxied methods are working
@@ -118,7 +118,7 @@ public abstract class BaseTestProxiedObjectPool {
 
     @Test
     public void testUsageTracking() throws Exception {
-        TestObject obj = pool.borrowObject();
+        final TestObject obj = pool.borrowObject();
         assertNotNull(obj);
 
         // Use the object to trigger collection of last used stack trace
@@ -130,7 +130,7 @@ public abstract class BaseTestProxiedObjectPool {
         // Borrow another object to trigger the abandoned object processing
         pool.borrowObject();
 
-        String logOutput = log.getBuffer().toString();
+        final String logOutput = log.getBuffer().toString();
 
         assertTrue(logOutput.contains("Pooled object created"));
         assertTrue(logOutput.contains("The last code to use this object was"));


[29/50] [abbrv] commons-pool git commit: Partial fix for regression in fix for POOL-303. Remove interrupt calls where they can't help.

Posted by ma...@apache.org.
Partial fix for regression in fix for POOL-303. Remove interrupt calls where they can't help.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1735260 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/170a5097
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/170a5097
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/170a5097

Branch: refs/heads/master
Commit: 170a5097d7840299a1564b82f4a47c613d94663b
Parents: 9c75d18
Author: Mark Thomas <ma...@apache.org>
Authored: Wed Mar 16 16:37:02 2016 +0000
Committer: Mark Thomas <ma...@apache.org>
Committed: Wed Mar 16 16:37:02 2016 +0000

----------------------------------------------------------------------
 .../org/apache/commons/pool2/impl/GenericKeyedObjectPool.java  | 6 ------
 .../java/org/apache/commons/pool2/impl/GenericObjectPool.java  | 3 ---
 2 files changed, 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/170a5097/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
index 82987da..dcfe448 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
@@ -1009,9 +1009,6 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
             if (maxTotal > -1 && newNumTotal > maxTotal) {
                 numTotal.decrementAndGet();
                 if (getNumIdle() == 0) {
-                    // POOL-303. There may be threads waiting on an object
-                    // return that isn't going to happen. Unblock them.
-                    objectDeque.idleObjects.interuptTakeWaiters();
                     return null;
                 }
                 clearOldest();
@@ -1026,9 +1023,6 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         if (newCreateCount > maxTotalPerKeySave) {
             numTotal.decrementAndGet();
             objectDeque.getCreateCount().decrementAndGet();
-            // POOL-303. There may be threads waiting on an object return that
-            // isn't going to happen. Unblock them.
-            objectDeque.idleObjects.interuptTakeWaiters();
             return null;
         }
 

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/170a5097/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
index 2aadb43..0e0c9bd 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
@@ -848,9 +848,6 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
         final long newCreateCount = createCount.incrementAndGet();
         if (newCreateCount > localMaxTotal) {
             createCount.decrementAndGet();
-            // POOL-303. There may be threads waiting on an object return that
-            // isn't going to happen. Unblock them.
-            idleObjects.interuptTakeWaiters();
             return null;
         }
 


[39/50] [abbrv] commons-pool git commit: Check class used for evictionPolicyClassName implements EvictionPolicy

Posted by ma...@apache.org.
Check class used for evictionPolicyClassName implements EvictionPolicy

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1767714 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/108f44a4
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/108f44a4
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/108f44a4

Branch: refs/heads/master
Commit: 108f44a45f1e95dd6bbb6db3934fc0a2cc7019ab
Parents: dcf4d6d
Author: Mark Thomas <ma...@apache.org>
Authored: Wed Nov 2 15:53:08 2016 +0000
Committer: Mark Thomas <ma...@apache.org>
Committed: Wed Nov 2 15:53:08 2016 +0000

----------------------------------------------------------------------
 src/changes/changes.xml                         |  4 +++
 .../pool2/impl/BaseGenericObjectPool.java       |  3 ++
 .../pool2/impl/TestGenericObjectPool.java       | 38 ++++++++++++--------
 3 files changed, 30 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/108f44a4/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 65ca2b8..5cca806 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -67,6 +67,10 @@ The <action> type attribute can be add,update,fix,remove.
       maxTotal threads try to borrow objects with different keys at the same
       time and the factory destroys objects on return. 
     </action>
+    <action dev="markt" type="fix">
+      Ensure that any class name used for evictionPolicyClassName represents a
+      class that implements EvictionPolicy.
+    </action>
   </release>
   <release version="2.4.2" date="2015-08-01" description=
  "This is a patch release, including bug fixes only.">

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/108f44a4/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
index 8d5efbd..8afa8f1 100644
--- a/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
@@ -613,6 +613,9 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
                 final
                 EvictionPolicy<T> evicPolicy = (EvictionPolicy<T>) policy;
                 this.evictionPolicy = evicPolicy;
+            } else {
+                throw new IllegalArgumentException("[" + evictionPolicyClassName +
+                        "] does not implement EvictionPolicy");
             }
         } catch (final ClassNotFoundException e) {
             throw new IllegalArgumentException(

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/108f44a4/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
index 75b9438..c9014ac 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
@@ -1080,6 +1080,14 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             // expected
         }
 
+        try {
+            pool.setEvictionPolicyClassName(java.lang.String.class.getName());
+            fail("setEvictionPolicyClassName must throw an error if a class that does not "
+                    + "implement EvictionPolicy is specified.");
+        } catch (final IllegalArgumentException e) {
+            // expected
+        }
+
         pool.setEvictionPolicyClassName(TestEvictionPolicy.class.getName());
         assertEquals(TestEvictionPolicy.class.getName(), pool.getEvictionPolicyClassName());
 
@@ -1704,49 +1712,49 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         public SimpleFactory() {
             this(true);
         }
-        
+
         public SimpleFactory(final boolean valid) {
             this(valid,valid);
         }
-        
+
         public SimpleFactory(final boolean evalid, final boolean ovalid) {
             evenValid = evalid;
             oddValid = ovalid;
         }
-        
+
         public synchronized void setValid(final boolean valid) {
             setEvenValid(valid);
             setOddValid(valid);
         }
-        
+
         public synchronized void setEvenValid(final boolean valid) {
             evenValid = valid;
         }
-        
+
         public synchronized void setOddValid(final boolean valid) {
             oddValid = valid;
         }
-        
+
         public synchronized void setThrowExceptionOnPassivate(final boolean bool) {
             exceptionOnPassivate = bool;
         }
-        
+
         public synchronized void setMaxTotal(final int maxTotal) {
             this.maxTotal = maxTotal;
         }
-        
+
         public synchronized void setDestroyLatency(final long destroyLatency) {
             this.destroyLatency = destroyLatency;
         }
-        
+
         public synchronized void setMakeLatency(final long makeLatency) {
             this.makeLatency = makeLatency;
         }
-        
+
         public synchronized void setValidateLatency(final long validateLatency) {
             this.validateLatency = validateLatency;
         }
-        
+
         @Override
         public PooledObject<String> makeObject() {
             final long waitLatency;
@@ -1767,7 +1775,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             }
             return new DefaultPooledObject<String>(String.valueOf(counter));
         }
-        
+
         @Override
         public void destroyObject(final PooledObject<String> obj) throws Exception {
             final long waitLatency;
@@ -1786,7 +1794,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
                 throw new Exception();
             }
         }
-        
+
         @Override
         public boolean validateObject(final PooledObject<String> obj) {
             final boolean validate;
@@ -1809,7 +1817,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             }
             return true;
         }
-        
+
         @Override
         public void activateObject(final PooledObject<String> obj) throws Exception {
             final boolean hurl;
@@ -1828,7 +1836,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
                 }
             }
         }
-        
+
         @Override
         public void passivateObject(final PooledObject<String> obj) throws Exception {
             final boolean hurl;


[04/50] [abbrv] commons-pool git commit: Obsolete DOAP

Posted by ma...@apache.org.
Obsolete DOAP

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/branches/performance-concurrent@1719170 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/05c3d6f1
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/05c3d6f1
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/05c3d6f1

Branch: refs/heads/performance-concurrent
Commit: 05c3d6f1d57c76a2628cd845c542c5119defaff6
Parents: f8b3268
Author: Sebastian Bazley <se...@apache.org>
Authored: Thu Dec 10 18:16:55 2015 +0000
Committer: Sebastian Bazley <se...@apache.org>
Committed: Thu Dec 10 18:16:55 2015 +0000

----------------------------------------------------------------------
 doap_pool.rdf | 50 --------------------------------------------------
 1 file changed, 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/05c3d6f1/doap_pool.rdf
----------------------------------------------------------------------
diff --git a/doap_pool.rdf b/doap_pool.rdf
deleted file mode 100644
index dc3fc84..0000000
--- a/doap_pool.rdf
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0"?>
-<rdf:RDF xmlns="http://usefulinc.com/ns/doap#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:asfext="http://projects.apache.org/ns/asfext#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:doap="http://usefulinc.com/ns/doap#" xml:lang="en">
-  <Project rdf:about="http://jakarta.apache.org/commons/pool/">
-    <name>Apache Jakarta Commons Pool</name>
-    <homepage rdf:resource="http://jakarta.apache.org/commons/pool/"/>
-    <programming-language>Java</programming-language>
-    <category rdf:resource="http://projects.apache.org/category/library"/>
-    <license rdf:resource="http://usefulinc.com/doap/licenses/asl20"/>
-    <bug-database rdf:resource="http://issues.apache.org/bugzilla/buglist.cgi?product=Commons&amp;component=pool"/>
-    <download-page rdf:resource="http://jakarta.apache.org/site/downloads/downloads_commons-pool.cgi"/>
-    <asfext:pmc rdf:resource="http://jakarta.apache.org/"/>
-    <shortdesc xml:lang="en">Commons Object Pooling Library</shortdesc>
-    <description xml:lang="en">Commons Object Pooling Library</description>
-    <repository>
-      <SVNRepository>
-        <browse rdf:resource="http://svn.apache.org/repos/asf/jakarta/commons/proper/pool/trunk"/>
-        <location rdf:resource="http://svn.apache.org/repos/asf/jakarta/commons/proper/pool"/>
-      </SVNRepository>
-    </repository>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2004-06-07</created>
-        <revision>1.2</revision>
-      </Version>
-    </release>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2004-10-20</created>
-        <revision>1.1</revision>
-      </Version>
-    </release>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2002-08-12</created>
-        <revision>1.0.1</revision>
-      </Version>
-    </release>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2002-05-04</created>
-        <revision>1.0</revision>
-      </Version>
-    </release>
-    <mailing-list rdf:resource="http://jakarta.apache.org/site/mail2.html#Commons"/>
-  </Project>
-</rdf:RDF>


[43/50] [abbrv] commons-pool git commit: Simplify

Posted by ma...@apache.org.
Simplify

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1767832 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/741d1f5c
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/741d1f5c
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/741d1f5c

Branch: refs/heads/master
Commit: 741d1f5c6d3cbfbf232d604d7c8fb9809b5449e7
Parents: ed91f49
Author: Mark Thomas <ma...@apache.org>
Authored: Thu Nov 3 08:09:38 2016 +0000
Committer: Mark Thomas <ma...@apache.org>
Committed: Thu Nov 3 08:09:38 2016 +0000

----------------------------------------------------------------------
 src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/741d1f5c/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java b/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
index b448141..4b20a45 100644
--- a/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
+++ b/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
@@ -110,8 +110,7 @@ class EvictionTimer {
 
         @Override
         public Thread newThread(final Runnable r) {
-            final Thread t = new Thread(null, r, "commons-pool-evictor-thrreads");
-            t.setName("commons-pool-evictor");
+            final Thread t = new Thread(null, r, "commons-pool-evictor-thread");
 
             AccessController.doPrivileged(new PrivilegedAction<Void>() {
                 @Override


[14/50] [abbrv] commons-pool git commit: Add final modifier to local variables.

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java
index de7cfc7..9305783 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java
@@ -69,9 +69,9 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
 
     @Override
     protected KeyedObjectPool<Object,Object> makeEmptyPool(int mincapacity) {
-        KeyedPooledObjectFactory<Object,Object> perKeyFactory =
+        final KeyedPooledObjectFactory<Object,Object> perKeyFactory =
                 new SimplePerKeyFactory();
-        GenericKeyedObjectPool<Object,Object> perKeyPool =
+        final GenericKeyedObjectPool<Object,Object> perKeyPool =
             new GenericKeyedObjectPool<Object,Object>(perKeyFactory);
         perKeyPool.setMaxTotalPerKey(mincapacity);
         perKeyPool.setMaxIdlePerKey(mincapacity);
@@ -111,22 +111,22 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
     @After
     public void tearDown() throws Exception {
         super.tearDown();
-        String poolName = pool.getJmxName().toString();
+        final String poolName = pool.getJmxName().toString();
         pool.clear();
         pool.close();
         pool = null;
         factory = null;
 
-        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
-        Set<ObjectName> result = mbs.queryNames(new ObjectName(
+        final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+        final Set<ObjectName> result = mbs.queryNames(new ObjectName(
                 "org.apache.commoms.pool2:type=GenericKeyedObjectPool,*"),
                 null);
         // There should be no registered pools at this point
-        int registeredPoolCount = result.size();
-        StringBuilder msg = new StringBuilder("Current pool is: ");
+        final int registeredPoolCount = result.size();
+        final StringBuilder msg = new StringBuilder("Current pool is: ");
         msg.append(poolName);
         msg.append("  Still open pools are: ");
-        for (ObjectName name : result) {
+        for (final ObjectName name : result) {
             // Clean these up ready for the next test
             msg.append(name.toString());
             msg.append(" created via\n");
@@ -141,7 +141,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
     public void testNegativeMaxTotalPerKey() throws Exception {
         pool.setMaxTotalPerKey(-1);
         pool.setBlockWhenExhausted(false);
-        String obj = pool.borrowObject("");
+        final String obj = pool.borrowObject("");
         assertEquals("0",obj);
         pool.returnObject("",obj);
     }
@@ -155,8 +155,8 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         assertEquals(0,pool.getNumActive("B"));
         assertEquals(0,pool.getNumIdle("B"));
 
-        String objA0 = pool.borrowObject("A");
-        String objB0 = pool.borrowObject("B");
+        final String objA0 = pool.borrowObject("A");
+        final String objB0 = pool.borrowObject("B");
 
         assertEquals(2,pool.getNumActive());
         assertEquals(0,pool.getNumIdle());
@@ -165,8 +165,8 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         assertEquals(1,pool.getNumActive("B"));
         assertEquals(0,pool.getNumIdle("B"));
 
-        String objA1 = pool.borrowObject("A");
-        String objB1 = pool.borrowObject("B");
+        final String objA1 = pool.borrowObject("A");
+        final String objB1 = pool.borrowObject("B");
 
         assertEquals(4,pool.getNumActive());
         assertEquals(0,pool.getNumIdle());
@@ -200,7 +200,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
     public void testMaxIdle() throws Exception {
         pool.setMaxTotalPerKey(100);
         pool.setMaxIdlePerKey(8);
-        String[] active = new String[100];
+        final String[] active = new String[100];
         for(int i=0;i<100;i++) {
             active[i] = pool.borrowObject("");
         }
@@ -242,7 +242,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         try {
             pool.borrowObject("");
             fail("Expected NoSuchElementException");
-        } catch(NoSuchElementException e) {
+        } catch(final NoSuchElementException e) {
             // expected
         }
     }
@@ -255,7 +255,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         try {
             pool.borrowObject("a");
             fail("Expected NoSuchElementException");
-        } catch(NoSuchElementException e) {
+        } catch(final NoSuchElementException e) {
             // expected
         }
     }
@@ -266,16 +266,16 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         pool.setMaxTotal(3);
         pool.setBlockWhenExhausted(false);
 
-        String o1 = pool.borrowObject("a");
+        final String o1 = pool.borrowObject("a");
         assertNotNull(o1);
-        String o2 = pool.borrowObject("a");
+        final String o2 = pool.borrowObject("a");
         assertNotNull(o2);
-        String o3 = pool.borrowObject("b");
+        final String o3 = pool.borrowObject("b");
         assertNotNull(o3);
         try {
             pool.borrowObject("c");
             fail("Expected NoSuchElementException");
-        } catch(NoSuchElementException e) {
+        } catch(final NoSuchElementException e) {
             // expected
         }
 
@@ -285,13 +285,13 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         assertEquals(1, pool.getNumIdle());
         assertEquals(1, pool.getNumIdle("b"));
 
-        Object o4 = pool.borrowObject("b");
+        final Object o4 = pool.borrowObject("b");
         assertNotNull(o4);
         assertEquals(0, pool.getNumIdle());
         assertEquals(0, pool.getNumIdle("b"));
 
         pool.setMaxTotal(4);
-        Object o5 = pool.borrowObject("b");
+        final Object o5 = pool.borrowObject("b");
         assertNotNull(o5);
 
         assertEquals(2, pool.getNumActive("a"));
@@ -310,7 +310,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         try {
             pool.borrowObject("a");
             fail("Expected NoSuchElementException");
-        } catch(NoSuchElementException e) {
+        } catch(final NoSuchElementException e) {
             // expected
         }
     }
@@ -320,22 +320,22 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         pool.setMaxTotalPerKey(2);
         pool.setMaxTotal(3);
 
-        String o1 = pool.borrowObject("a");
+        final String o1 = pool.borrowObject("a");
         assertNotNull(o1);
         pool.returnObject("a", o1);
         Thread.sleep(25);
 
-        String o2 = pool.borrowObject("b");
+        final String o2 = pool.borrowObject("b");
         assertNotNull(o2);
         pool.returnObject("b", o2);
         Thread.sleep(25);
 
-        String o3 = pool.borrowObject("c");
+        final String o3 = pool.borrowObject("c");
         assertNotNull(o3);
         pool.returnObject("c", o3);
         Thread.sleep(25);
 
-        String o4 = pool.borrowObject("a");
+        final String o4 = pool.borrowObject("a");
         assertNotNull(o4);
         pool.returnObject("a", o4);
         Thread.sleep(25);
@@ -343,14 +343,14 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         assertSame(o1, o4);
 
         // this should cause b to be bumped out of the pool
-        String o5 = pool.borrowObject("d");
+        final String o5 = pool.borrowObject("d");
         assertNotNull(o5);
         pool.returnObject("d", o5);
         Thread.sleep(25);
 
         // now re-request b, we should get a different object because it should
         // have been expelled from pool (was oldest because a was requested after b)
-        String o6 = pool.borrowObject("b");
+        final String o6 = pool.borrowObject("b");
         assertNotNull(o6);
         pool.returnObject("b", o6);
 
@@ -358,7 +358,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         assertNotSame(o2, o6);
 
         // second a is still in there
-        String o7 = pool.borrowObject("a");
+        final String o7 = pool.borrowObject("a");
         assertNotNull(o7);
         pool.returnObject("a", o7);
 
@@ -423,17 +423,17 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
      */
     @Test
     public void testContructorEvictionConfig() throws Exception {
-        GenericKeyedObjectPoolConfig config = new GenericKeyedObjectPoolConfig();
+        final GenericKeyedObjectPoolConfig config = new GenericKeyedObjectPoolConfig();
         config.setTimeBetweenEvictionRunsMillis(500);
         config.setMinEvictableIdleTimeMillis(50);
         config.setNumTestsPerEvictionRun(5);
-        GenericKeyedObjectPool<String, String> p = new GenericKeyedObjectPool<String, String>(factory, config);
+        final GenericKeyedObjectPool<String, String> p = new GenericKeyedObjectPool<String, String>(factory, config);
         for(int i=0;i<5;i++) {
             p.addObject("one");
         }
-        try { Thread.sleep(100); } catch(InterruptedException e) { }
+        try { Thread.sleep(100); } catch(final InterruptedException e) { }
         assertEquals(5, p.getNumIdle("one"));
-        try { Thread.sleep(500); } catch(InterruptedException e) { }
+        try { Thread.sleep(500); } catch(final InterruptedException e) { }
         assertEquals(0, p.getNumIdle("one"));
         p.close();
     }
@@ -447,7 +447,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         pool.setMinEvictableIdleTimeMillis(250L);
         pool.setTimeBetweenEvictionRunsMillis(500L);
 
-        String[] active = new String[500];
+        final String[] active = new String[500];
         for(int i=0;i<500;i++) {
             active[i] = pool.borrowObject("");
         }
@@ -455,17 +455,17 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
             pool.returnObject("",active[i]);
         }
 
-        try { Thread.sleep(1000L); } catch(InterruptedException e) { }
+        try { Thread.sleep(1000L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 500 idle, found " + pool.getNumIdle(""),pool.getNumIdle("") < 500);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 400 idle, found " + pool.getNumIdle(""),pool.getNumIdle("") < 400);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 300 idle, found " + pool.getNumIdle(""),pool.getNumIdle("") < 300);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 200 idle, found " + pool.getNumIdle(""),pool.getNumIdle("") < 200);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 100 idle, found " + pool.getNumIdle(""),pool.getNumIdle("") < 100);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertEquals("Should be zero idle, found " + pool.getNumIdle(""),0,pool.getNumIdle(""));
 
         for(int i=0;i<500;i++) {
@@ -475,17 +475,17 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
             pool.returnObject("",active[i]);
         }
 
-        try { Thread.sleep(1000L); } catch(InterruptedException e) { }
+        try { Thread.sleep(1000L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 500 idle, found " + pool.getNumIdle(""),pool.getNumIdle("") < 500);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 400 idle, found " + pool.getNumIdle(""),pool.getNumIdle("") < 400);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 300 idle, found " + pool.getNumIdle(""),pool.getNumIdle("") < 300);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 200 idle, found " + pool.getNumIdle(""),pool.getNumIdle("") < 200);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 100 idle, found " + pool.getNumIdle(""),pool.getNumIdle("") < 100);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertEquals("Should be zero idle, found " + pool.getNumIdle(""),0,pool.getNumIdle(""));
     }
 
@@ -497,8 +497,8 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         pool.setMinEvictableIdleTimeMillis(500L);
         pool.setTimeBetweenEvictionRunsMillis(500L);
 
-        String[] active = new String[500];
-        String[] active2 = new String[500];
+        final String[] active = new String[500];
+        final String[] active2 = new String[500];
         for(int i=0;i<500;i++) {
             active[i] = pool.borrowObject("");
             active2[i] = pool.borrowObject("2");
@@ -508,27 +508,27 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
             pool.returnObject("2",active2[i]);
         }
 
-        try { Thread.sleep(1100L); } catch(InterruptedException e) { }
+        try { Thread.sleep(1100L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 1000 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 1000);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 900 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 900);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 800 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 800);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 700 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 700);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 600 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 600);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 500 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 500);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 400 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 400);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 300 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 300);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 200 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 200);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertTrue("Should be less than 100 idle, found " + pool.getNumIdle(),pool.getNumIdle() < 100);
-        try { Thread.sleep(600L); } catch(InterruptedException e) { }
+        try { Thread.sleep(600L); } catch(final InterruptedException e) { }
         assertEquals("Should be zero idle, found " + pool.getNumIdle(),0,pool.getNumIdle());
     }
 
@@ -544,18 +544,18 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
      * @param gkopPool      The keyed object pool to use
      */
     public <T> void runTestThreads(int numThreads, int iterations, int delay, GenericKeyedObjectPool<String,T> gkopPool) {
-        ArrayList<TestThread<T>> threads = new ArrayList<TestThread<T>>();
+        final ArrayList<TestThread<T>> threads = new ArrayList<TestThread<T>>();
         for(int i=0;i<numThreads;i++) {
-            TestThread<T> testThread = new TestThread<T>(gkopPool, iterations, delay);
+            final TestThread<T> testThread = new TestThread<T>(gkopPool, iterations, delay);
             threads.add(testThread);
-            Thread t = new Thread(testThread);
+            final Thread t = new Thread(testThread);
             t.start();
         }
-        for (TestThread<T> testThread : threads) {
+        for (final TestThread<T> testThread : threads) {
             while(!(testThread.complete())) {
                 try {
                     Thread.sleep(500L);
-                } catch(InterruptedException e) {
+                } catch(final InterruptedException e) {
                     // ignored
                 }
             }
@@ -583,7 +583,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
      */
     @Test(timeout=60000)
     public void testMaxTotalInvariant() throws Exception {
-        int maxTotal = 15;
+        final int maxTotal = 15;
         factory.setEvenValid(false);     // Every other validation fails
         factory.setDestroyLatency(100);  // Destroy takes 100 ms
         factory.setMaxTotalPerKey(maxTotal);  // (makes - destroys) bound
@@ -607,31 +607,31 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
 
 
         //Generate a random key
-        String key = "A";
+        final String key = "A";
 
         pool.preparePool(key);
 
-        try { Thread.sleep(150L); } catch(InterruptedException e) { }
+        try { Thread.sleep(150L); } catch(final InterruptedException e) { }
         assertTrue("Should be 5 idle, found " + pool.getNumIdle(),pool.getNumIdle() == 5);
 
-        String[] active = new String[5];
+        final String[] active = new String[5];
         active[0] = pool.borrowObject(key);
 
-        try { Thread.sleep(150L); } catch(InterruptedException e) { }
+        try { Thread.sleep(150L); } catch(final InterruptedException e) { }
         assertTrue("Should be 5 idle, found " + pool.getNumIdle(),pool.getNumIdle() == 5);
 
         for(int i=1 ; i<5 ; i++) {
             active[i] = pool.borrowObject(key);
         }
 
-        try { Thread.sleep(150L); } catch(InterruptedException e) { }
+        try { Thread.sleep(150L); } catch(final InterruptedException e) { }
         assertTrue("Should be 5 idle, found " + pool.getNumIdle(),pool.getNumIdle() == 5);
 
         for(int i=0 ; i<5 ; i++) {
             pool.returnObject(key, active[i]);
         }
 
-        try { Thread.sleep(150L); } catch(InterruptedException e) { }
+        try { Thread.sleep(150L); } catch(final InterruptedException e) { }
         assertTrue("Should be 10 idle, found " + pool.getNumIdle(),pool.getNumIdle() == 10);
     }
 
@@ -645,46 +645,46 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         pool.setTimeBetweenEvictionRunsMillis(100L);
         pool.setTestWhileIdle(true);
 
-        String key = "A";
+        final String key = "A";
 
         pool.preparePool(key);
         assertTrue("Should be 5 idle, found " +
                 pool.getNumIdle(),pool.getNumIdle() == 5);
 
-        try { Thread.sleep(150L); } catch(InterruptedException e) { }
+        try { Thread.sleep(150L); } catch(final InterruptedException e) { }
         assertTrue("Should be 5 idle, found " + pool.getNumIdle(),pool.getNumIdle() == 5);
 
-        String[] active = new String[10];
+        final String[] active = new String[10];
 
-        try { Thread.sleep(150L); } catch(InterruptedException e) { }
+        try { Thread.sleep(150L); } catch(final InterruptedException e) { }
         assertTrue("Should be 5 idle, found " + pool.getNumIdle(),pool.getNumIdle() == 5);
 
         for(int i=0 ; i<5 ; i++) {
             active[i] = pool.borrowObject(key);
         }
 
-        try { Thread.sleep(150L); } catch(InterruptedException e) { }
+        try { Thread.sleep(150L); } catch(final InterruptedException e) { }
         assertTrue("Should be 5 idle, found " + pool.getNumIdle(),pool.getNumIdle() == 5);
 
         for(int i=0 ; i<5 ; i++) {
             pool.returnObject(key, active[i]);
         }
 
-        try { Thread.sleep(150L); } catch(InterruptedException e) { }
+        try { Thread.sleep(150L); } catch(final InterruptedException e) { }
         assertTrue("Should be 10 idle, found " + pool.getNumIdle(),pool.getNumIdle() == 10);
 
         for(int i=0 ; i<10 ; i++) {
             active[i] = pool.borrowObject(key);
         }
 
-        try { Thread.sleep(150L); } catch(InterruptedException e) { }
+        try { Thread.sleep(150L); } catch(final InterruptedException e) { }
         assertTrue("Should be 0 idle, found " + pool.getNumIdle(),pool.getNumIdle() == 0);
 
         for(int i=0 ; i<10 ; i++) {
             pool.returnObject(key, active[i]);
         }
 
-        try { Thread.sleep(150L); } catch(InterruptedException e) { }
+        try { Thread.sleep(150L); } catch(final InterruptedException e) { }
         assertTrue("Should be 10 idle, found " + pool.getNumIdle(),pool.getNumIdle() == 10);
     }
 
@@ -700,15 +700,15 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
 
 
         //Generate a random key
-        String key = "A";
+        final String key = "A";
 
-        try { Thread.sleep(150L); } catch(InterruptedException e) { }
+        try { Thread.sleep(150L); } catch(final InterruptedException e) { }
         assertTrue("Should be 0 idle, found " + pool.getNumIdle(),pool.getNumIdle() == 0);
 
-        Object active = pool.borrowObject(key);
+        final Object active = pool.borrowObject(key);
         assertNotNull(active);
 
-        try { Thread.sleep(150L); } catch(InterruptedException e) { }
+        try { Thread.sleep(150L); } catch(final InterruptedException e) { }
         assertTrue("Should be 5 idle, found " + pool.getNumIdle(),pool.getNumIdle() == 5);
     }
 
@@ -722,7 +722,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         assertEquals("Oldest", "key0", pool.borrowObject(key));
         assertEquals("Middle", "key1", pool.borrowObject(key));
         assertEquals("Youngest", "key2", pool.borrowObject(key));
-        String s = pool.borrowObject(key);
+        final String s = pool.borrowObject(key);
         assertEquals("new-3", "key3", s);
         pool.returnObject(key, s);
         assertEquals("returned", s, pool.borrowObject(key));
@@ -739,7 +739,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         assertEquals("Youngest", "key2", pool.borrowObject(key));
         assertEquals("Middle", "key1", pool.borrowObject(key));
         assertEquals("Oldest", "key0", pool.borrowObject(key));
-        String s = pool.borrowObject(key);
+        final String s = pool.borrowObject(key);
         assertEquals("new-3", "key3", s);
         pool.returnObject(key, s);
         assertEquals("returned", s, pool.borrowObject(key));
@@ -761,15 +761,15 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
     }
 
     private void checkEvictionOrder(boolean lifo) throws Exception {
-        SimpleFactory<Integer> intFactory = new SimpleFactory<Integer>();
-        GenericKeyedObjectPool<Integer,String> intPool =
+        final SimpleFactory<Integer> intFactory = new SimpleFactory<Integer>();
+        final GenericKeyedObjectPool<Integer,String> intPool =
             new GenericKeyedObjectPool<Integer,String>(intFactory);
         intPool.setNumTestsPerEvictionRun(2);
         intPool.setMinEvictableIdleTimeMillis(100);
         intPool.setLifo(lifo);
 
         for (int i = 0; i < 3; i ++) {
-            Integer key = Integer.valueOf(i);
+            final Integer key = Integer.valueOf(i);
             for (int j = 0; j < 5; j++) {
                 intPool.addObject(key);
             }
@@ -788,20 +788,20 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
 
         intPool.evict(); // Kill (0,0),(0,1)
         assertEquals(3, intPool.getNumIdle(KEY_ZERO));
-        String objZeroA = intPool.borrowObject(KEY_ZERO);
+        final String objZeroA = intPool.borrowObject(KEY_ZERO);
         assertTrue(lifo ? objZeroA.equals("04") : objZeroA.equals("02"));
         assertEquals(2, intPool.getNumIdle(KEY_ZERO));
-        String objZeroB = intPool.borrowObject(KEY_ZERO);
+        final String objZeroB = intPool.borrowObject(KEY_ZERO);
         assertTrue(objZeroB.equals("03"));
         assertEquals(1, intPool.getNumIdle(KEY_ZERO));
 
         intPool.evict(); // Kill remaining 0 survivor and (1,5)
         assertEquals(0, intPool.getNumIdle(KEY_ZERO));
         assertEquals(4, intPool.getNumIdle(KEY_ONE));
-        String objOneA = intPool.borrowObject(KEY_ONE);
+        final String objOneA = intPool.borrowObject(KEY_ONE);
         assertTrue(lifo ? objOneA.equals("19") : objOneA.equals("16"));
         assertEquals(3, intPool.getNumIdle(KEY_ONE));
-        String objOneB = intPool.borrowObject(KEY_ONE);
+        final String objOneB = intPool.borrowObject(KEY_ONE);
         assertTrue(lifo ? objOneB.equals("18") : objOneB.equals("17"));
         assertEquals(2, intPool.getNumIdle(KEY_ONE));
 
@@ -809,7 +809,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         assertEquals(0, intPool.getNumIdle(KEY_ONE));
         intPool.evict(); // Kill (2,10), (2,11)
         assertEquals(3, intPool.getNumIdle(KEY_TWO));
-        String objTwoA = intPool.borrowObject(KEY_TWO);
+        final String objTwoA = intPool.borrowObject(KEY_TWO);
         assertTrue(lifo ? objTwoA.equals("214") : objTwoA.equals("212"));
         assertEquals(2, intPool.getNumIdle(KEY_TWO));
         intPool.evict(); // All dead now
@@ -829,7 +829,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         intPool.setMinEvictableIdleTimeMillis(500);
         intFactory.counter = 0; // Reset counter
         for (int i = 0; i < 3; i ++) {
-            Integer key = Integer.valueOf(i);
+            final Integer key = Integer.valueOf(i);
             for (int j = 0; j < 5; j++) {
                 intPool.addObject(key);
             }
@@ -864,7 +864,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         intPool.evict(); // kill (1,6), (1,7) - (1,5) missed
         assertEquals(3, intPool.getNumIdle(KEY_ONE));
         assertEquals(5, intPool.getNumIdle(KEY_TWO));
-        String obj = intPool.borrowObject(KEY_ONE);
+        final String obj = intPool.borrowObject(KEY_ONE);
         if (lifo) {
             assertEquals("19", obj);
         } else {
@@ -898,7 +898,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         intPool.setTestOnBorrow(false);
         for (int i = 0; i < 3; i ++) {
             trackerFactory.resetId();
-            Integer key = Integer.valueOf(i);
+            final Integer key = Integer.valueOf(i);
             for (int j = 0; j < 8; j++) {
                 intPool.addObject(key);
             }
@@ -913,7 +913,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         //  LIFO, 7 out, then in, then out, then in - 7,6,5,4,3,2,1,0
         intPool.evict();  // Should visit 02 and 03 in either case
         for (int i = 0; i < 8; i++) {
-            VisitTracker<Integer> tracker = intPool.borrowObject(KEY_ZERO);
+            final VisitTracker<Integer> tracker = intPool.borrowObject(KEY_ZERO);
             if (tracker.getId() >= 4) {
                 assertEquals("Unexpected instance visited " + tracker.getId(),
                         0, tracker.getValidateCount());
@@ -953,7 +953,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         // LIFO - 27, 10, 11
         // FIFO - 24, 25, 26
         for (int i = 0; i < 8; i++) {
-            VisitTracker<Integer> tracker = intPool.borrowObject(KEY_ONE);
+            final VisitTracker<Integer> tracker = intPool.borrowObject(KEY_ONE);
             if ((lifo && tracker.getId() > 1) ||
                     (!lifo && tracker.getId() > 2)) {
                 assertEquals("Instance " +  tracker.getId() +
@@ -969,8 +969,8 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
 
         // Randomly generate some pools with random numTests
         // and make sure evictor cycles through elements appropriately
-        int[] smallPrimes = {2, 3, 5, 7};
-        Random random = new Random();
+        final int[] smallPrimes = {2, 3, 5, 7};
+        final Random random = new Random();
         random.setSeed(System.currentTimeMillis());
         for (int i = 0; i < smallPrimes.length; i++) {
             for (int j = 0; j < 5; j++) {// Try the tests a few times
@@ -987,30 +987,30 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
                 intPool.setTestOnReturn(false);
                 intPool.setTestOnBorrow(false);
 
-                int zeroLength = 10 + random.nextInt(20);
+                final int zeroLength = 10 + random.nextInt(20);
                 for (int k = 0; k < zeroLength; k++) {
                     intPool.addObject(KEY_ZERO);
                 }
-                int oneLength = 10 + random.nextInt(20);
+                final int oneLength = 10 + random.nextInt(20);
                 for (int k = 0; k < oneLength; k++) {
                     intPool.addObject(KEY_ONE);
                 }
-                int twoLength = 10 + random.nextInt(20);
+                final int twoLength = 10 + random.nextInt(20);
                 for (int k = 0; k < twoLength; k++) {
                     intPool.addObject(KEY_TWO);
                 }
 
                 // Choose a random number of evictor runs
-                int runs = 10 + random.nextInt(50);
+                final int runs = 10 + random.nextInt(50);
                 for (int k = 0; k < runs; k++) {
                     intPool.evict();
                 }
 
                 // Total instances in pool
-                int totalInstances = zeroLength + oneLength + twoLength;
+                final int totalInstances = zeroLength + oneLength + twoLength;
 
                 // Number of times evictor should have cycled through pools
-                int cycleCount = (runs * intPool.getNumTestsPerEvictionRun()) /
+                final int cycleCount = (runs * intPool.getNumTestsPerEvictionRun()) /
                         totalInstances;
 
                 // Look at elements and make sure they are visited cycleCount
@@ -1035,13 +1035,13 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
                                 "totalInstances", totalInstances, zeroLength, oneLength, twoLength));
                     }
                 }
-                int visits[] = new int[twoLength];
+                final int visits[] = new int[twoLength];
                 for (int k = 0; k < twoLength; k++) {
                     tracker = intPool.borrowObject(KEY_TWO);
                     visitCount = tracker.getValidateCount();
                     visits[k] = visitCount;
                     if (visitCount < cycleCount || visitCount > cycleCount + 1){
-                        StringBuilder sb = new StringBuilder("Visits:");
+                        final StringBuilder sb = new StringBuilder("Visits:");
                         for (int l = 0; l <= k; l++){
                             sb.append(visits[l]).append(' ');
                         }
@@ -1066,10 +1066,10 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
     @Test(timeout=60000)
     public void testBorrowObjectFairness() throws Exception {
 
-        int numThreads = 40;
-        int maxTotal = 40;
+        final int numThreads = 40;
+        final int maxTotal = 40;
 
-        GenericKeyedObjectPoolConfig config = new GenericKeyedObjectPoolConfig();
+        final GenericKeyedObjectPoolConfig config = new GenericKeyedObjectPoolConfig();
         config.setMaxTotalPerKey(maxTotal);
         config.setFairness(true);
         config.setLifo(false);
@@ -1078,21 +1078,21 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         pool = new GenericKeyedObjectPool<String, String>(factory, config);
 
         // Exhaust the pool
-        String[] objects = new String[maxTotal];
+        final String[] objects = new String[maxTotal];
         for (int i = 0; i < maxTotal; i++) {
             objects[i] = pool.borrowObject("0");
         }
 
         // Start and park threads waiting to borrow objects
-        TestThread[] threads = new TestThread[numThreads];
+        final TestThread[] threads = new TestThread[numThreads];
         for(int i=0;i<numThreads;i++) {
             threads[i] = new TestThread(pool, 1, 0, 2000, false, "0" + String.valueOf(i % maxTotal), "0");
-            Thread t = new Thread(threads[i]);
+            final Thread t = new Thread(threads[i]);
             t.start();
             // Short delay to ensure threads start in correct order
             try {
                 Thread.sleep(10);
-            } catch (InterruptedException e) {
+            } catch (final InterruptedException e) {
                 fail(e.toString());
             }
         }
@@ -1107,7 +1107,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
             while(!(threads[i]).complete()) {
                 try {
                     Thread.sleep(500L);
-                } catch(InterruptedException e) {
+                } catch(final InterruptedException e) {
                     // ignored
                 }
             }
@@ -1121,20 +1121,20 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
     public void testConstructors() throws Exception {
 
         // Make constructor arguments all different from defaults
-        int maxTotalPerKey = 1;
-        int minIdle = 2;
-        long maxWait = 3;
-        int maxIdle = 4;
-        int maxTotal = 5;
-        long minEvictableIdleTimeMillis = 6;
-        int numTestsPerEvictionRun = 7;
-        boolean testOnBorrow = true;
-        boolean testOnReturn = true;
-        boolean testWhileIdle = true;
-        long timeBetweenEvictionRunsMillis = 8;
-        boolean blockWhenExhausted = false;
-        boolean lifo = false;
-        KeyedPooledObjectFactory<Object,Object> dummyFactory = new DummyFactory();
+        final int maxTotalPerKey = 1;
+        final int minIdle = 2;
+        final long maxWait = 3;
+        final int maxIdle = 4;
+        final int maxTotal = 5;
+        final long minEvictableIdleTimeMillis = 6;
+        final int numTestsPerEvictionRun = 7;
+        final boolean testOnBorrow = true;
+        final boolean testOnReturn = true;
+        final boolean testWhileIdle = true;
+        final long timeBetweenEvictionRunsMillis = 8;
+        final boolean blockWhenExhausted = false;
+        final boolean lifo = false;
+        final KeyedPooledObjectFactory<Object,Object> dummyFactory = new DummyFactory();
 
         GenericKeyedObjectPool<Object,Object> objPool =
                 new GenericKeyedObjectPool<Object,Object>(dummyFactory);
@@ -1161,7 +1161,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
                 Boolean.valueOf(objPool.getLifo()));
         objPool.close();
 
-        GenericKeyedObjectPoolConfig config =
+        final GenericKeyedObjectPoolConfig config =
                 new GenericKeyedObjectPoolConfig();
         config.setLifo(lifo);
         config.setMaxTotalPerKey(maxTotalPerKey);
@@ -1210,7 +1210,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
 
     @Test(timeout=60000)
     public void testExceptionOnPassivateDuringReturn() throws Exception {
-        String obj = pool.borrowObject("one");
+        final String obj = pool.borrowObject("one");
         factory.setThrowExceptionOnPassivate(true);
         pool.returnObject("one", obj);
         assertEquals(0,pool.getNumIdle());
@@ -1227,7 +1227,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         try {
             pool.borrowObject("one");
             fail("Expecting NoSuchElementException");
-        } catch (NoSuchElementException ex) {
+        } catch (final NoSuchElementException ex) {
             // expected
         }
         assertEquals(1, pool.getNumActive("one"));
@@ -1241,7 +1241,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         factory.setThrowExceptionOnDestroy(true);
         factory.setValidationEnabled(true);
         pool.setTestOnReturn(true);
-        String obj1 = pool.borrowObject("one");
+        final String obj1 = pool.borrowObject("one");
         pool.borrowObject("one");
         factory.setValid(false); // Make validation fail
         pool.returnObject("one", obj1);
@@ -1253,15 +1253,15 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
 
     @Test(timeout=60000)
     public void testExceptionOnActivateDuringBorrow() throws Exception {
-        String obj1 = pool.borrowObject("one");
-        String obj2 = pool.borrowObject("one");
+        final String obj1 = pool.borrowObject("one");
+        final String obj2 = pool.borrowObject("one");
         pool.returnObject("one", obj1);
         pool.returnObject("one", obj2);
         factory.setThrowExceptionOnActivate(true);
         factory.setEvenValid(false);
         // Activation will now throw every other time
         // First attempt throws, but loop continues and second succeeds
-        String obj = pool.borrowObject("one");
+        final String obj = pool.borrowObject("one");
         assertEquals(1, pool.getNumActive("one"));
         assertEquals(0, pool.getNumIdle("one"));
         assertEquals(1, pool.getNumActive());
@@ -1274,7 +1274,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         try {
             pool.borrowObject("one");
             fail("Expecting NoSuchElementException");
-        } catch (NoSuchElementException ex) {
+        } catch (final NoSuchElementException ex) {
             // expected
         }
         assertEquals(0, pool.getNumActive("one"));
@@ -1290,16 +1290,16 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         pool.setMaxTotalPerKey(1);
         pool.setMaxTotal(-1);
         pool.borrowObject("one");
-        long start = System.currentTimeMillis();
+        final long start = System.currentTimeMillis();
         // Needs to be in a separate thread as this will block
-        Runnable simple = new SimpleTestThread<String>(pool, "one");
+        final Runnable simple = new SimpleTestThread<String>(pool, "one");
         (new Thread(simple)).start();
         // This should be almost instant. If it isn't it means this thread got
         // stuck behind the thread created above which is bad.
         // Give other thread a chance to start
         Thread.sleep(1000);
         pool.borrowObject("two");
-        long end = System.currentTimeMillis();
+        final long end = System.currentTimeMillis();
         // If it fails it will be more than 4000ms (5000 less the 1000 sleep)
         // If it passes it should be almost instant
         // Use 3000ms as the threshold - should avoid timing issues on most
@@ -1332,16 +1332,16 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         pool.setMaxWaitMillis(maxWait);
         pool.setMaxTotalPerKey(threadsPerKey);
         // Create enough threads so half the threads will have to wait
-        WaitingTestThread wtt[] = new WaitingTestThread[keyCount * threadsPerKey * 2];
+        final WaitingTestThread wtt[] = new WaitingTestThread[keyCount * threadsPerKey * 2];
         for(int i=0; i < wtt.length; i++){
             wtt[i] = new WaitingTestThread(pool,Integer.toString(i % keyCount),holdTime);
         }
-        long origin = System.currentTimeMillis()-1000;
-        for (WaitingTestThread element : wtt) {
+        final long origin = System.currentTimeMillis()-1000;
+        for (final WaitingTestThread element : wtt) {
             element.start();
         }
         int failed = 0;
-        for (WaitingTestThread element : wtt) {
+        for (final WaitingTestThread element : wtt) {
             element.join();
             if (element._thrown != null){
                 failed++;
@@ -1356,7 +1356,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
                     " Threads: " + wtt.length +
                     " Failed: " + failed
                     );
-            for (WaitingTestThread wt : wtt) {
+            for (final WaitingTestThread wt : wtt) {
                 System.out.println(
                         "Preborrow: " + (wt.preborrow-origin) +
                         " Postborrow: " + (wt.postborrow != 0 ? wt.postborrow-origin : -1) +
@@ -1378,10 +1378,10 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
      */
     @Test(timeout=200000)
     public void testMaxActivePerKeyExceeded() throws Exception {
-        WaiterFactory<String> waiterFactory = new WaiterFactory<String>(0, 20, 0, 0, 0, 0, 8, 5, 0);
+        final WaiterFactory<String> waiterFactory = new WaiterFactory<String>(0, 20, 0, 0, 0, 0, 8, 5, 0);
         // TODO Fix this. Can't use local pool since runTestThreads uses the
         //      protected pool field
-        GenericKeyedObjectPool<String,Waiter> waiterPool =
+        final GenericKeyedObjectPool<String,Waiter> waiterPool =
                 new GenericKeyedObjectPool<String,Waiter>(waiterFactory);
         waiterPool.setMaxTotalPerKey(5);
         waiterPool.setMaxTotal(8);
@@ -1400,8 +1400,8 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
     @Test(timeout=60000)
     public void testClearOldest() throws Exception {
         // Make destroy have some latency so clearOldest takes some time
-        WaiterFactory<String> waiterFactory = new WaiterFactory<String>(0, 20, 0, 0, 0, 0, 50, 5, 0);
-        GenericKeyedObjectPool<String,Waiter> waiterPool =
+        final WaiterFactory<String> waiterFactory = new WaiterFactory<String>(0, 20, 0, 0, 0, 0, 50, 5, 0);
+        final GenericKeyedObjectPool<String,Waiter> waiterPool =
                 new GenericKeyedObjectPool<String,Waiter>(waiterFactory);
         waiterPool.setMaxTotalPerKey(5);
         waiterPool.setMaxTotal(50);
@@ -1418,11 +1418,11 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         // Now set up a race - one thread wants a new instance, triggering clearOldest
         // Other goes after an element on death row
         // See if we end up with dead man walking
-        SimpleTestThread<Waiter> t2 = new SimpleTestThread<Waiter>(waiterPool, "51");
-        Thread thread2 = new Thread(t2);
+        final SimpleTestThread<Waiter> t2 = new SimpleTestThread<Waiter>(waiterPool, "51");
+        final Thread thread2 = new Thread(t2);
         thread2.start();  // Triggers clearOldest, killing all of the 0's and the 2 oldest 1's
         Thread.sleep(50); // Wait for clearOldest to kick off, but not long enough to reach the 1's
-        Waiter waiter = waiterPool.borrowObject("1");
+        final Waiter waiter = waiterPool.borrowObject("1");
         Thread.sleep(200); // Wait for execution to happen
         waiterPool.returnObject("1", waiter);  // Will throw IllegalStateException if dead
         waiterPool.close();
@@ -1443,9 +1443,9 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         pool.setMaxWaitMillis(3000);  // Really a timeout for the test
 
         // Check out and briefly hold 3 "1"s
-        WaitingTestThread t1 = new WaitingTestThread(pool, "1", 100);
-        WaitingTestThread t2 = new WaitingTestThread(pool, "1", 100);
-        WaitingTestThread t3 = new WaitingTestThread(pool, "1", 100);
+        final WaitingTestThread t1 = new WaitingTestThread(pool, "1", 100);
+        final WaitingTestThread t2 = new WaitingTestThread(pool, "1", 100);
+        final WaitingTestThread t3 = new WaitingTestThread(pool, "1", 100);
         t1.start();
         t2.start();
         t3.start();
@@ -1472,8 +1472,8 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         pool.clear("one");
         assertEquals(0, pool.getNumIdle());
         assertEquals(0, pool.getNumIdle("one"));
-        String obj1 = pool.borrowObject("one");
-        String obj2 = pool.borrowObject("one");
+        final String obj1 = pool.borrowObject("one");
+        final String obj2 = pool.borrowObject("one");
         pool.returnObject("one", obj1);
         pool.returnObject("one", obj2);
         pool.clear();
@@ -1494,13 +1494,13 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         pool.setMaxTotalPerKey(1);
         pool.setBlockWhenExhausted(true);
         pool.setMaxWaitMillis(-1);
-        String obj1 = pool.borrowObject("a");
+        final String obj1 = pool.borrowObject("a");
 
         // Make sure an object was obtained
         assertNotNull(obj1);
 
         // Create a separate thread to try and borrow another object
-        WaitingTestThread wtt = new WaitingTestThread(pool, "a", 200);
+        final WaitingTestThread wtt = new WaitingTestThread(pool, "a", 200);
         wtt.start();
         // Give wtt time to start
         Thread.sleep(200);
@@ -1574,12 +1574,12 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
     // POOL-259
     @Test
     public void testClientWaitStats() throws Exception {
-        SimpleFactory<String> factory = new SimpleFactory<String>();
+        final SimpleFactory<String> factory = new SimpleFactory<String>();
         // Give makeObject a little latency
         factory.setMakeLatency(200);
         final GenericKeyedObjectPool<String, String> pool = new GenericKeyedObjectPool<String, String>(
                 factory, new GenericKeyedObjectPoolConfig());
-        String s = pool.borrowObject("one");
+        final String s = pool.borrowObject("one");
         // First borrow waits on create, so wait time should be at least 200 ms
         // Allow 100ms error in clock times
         Assert.assertTrue(pool.getMaxBorrowWaitTimeMillis() >= 100);
@@ -1605,7 +1605,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
 
         final String o1 = pool.borrowObject("KEY");
         Assert.assertEquals("KEY0", o1);
-        Timer t = new Timer();
+        final Timer t = new Timer();
         t.schedule(
                 new TimerTask() {
                     @Override
@@ -1614,7 +1614,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
                     }
                 }, 3000);
 
-        String o2 = pool.borrowObject("KEY");
+        final String o2 = pool.borrowObject("KEY");
         Assert.assertEquals("KEY0", o2);
 
         Assert.assertEquals(1, factory.validateCounter);
@@ -1637,9 +1637,9 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         public void run() {
             try {
                 pool.invalidateObject(key, obj);
-            } catch (IllegalStateException ex) {
+            } catch (final IllegalStateException ex) {
                 // Ignore
-            } catch (Exception ex) {
+            } catch (final Exception ex) {
                 Assert.fail("Unexpected exception " + ex.toString());
             } finally {
                 done = true;
@@ -1666,9 +1666,9 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         @Override
         public void run() {
             try {
-                T obj = _pool.borrowObject(_key);
+                final T obj = _pool.borrowObject(_key);
                 _pool.returnObject(_key, obj);
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // Ignore
             }
         }
@@ -1701,13 +1701,13 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         public void run() {
             try {
                 preborrow = System.currentTimeMillis();
-                String obj = _pool.borrowObject(_key);
+                final String obj = _pool.borrowObject(_key);
                 objectId = obj;
                 postborrow = System.currentTimeMillis();
                 Thread.sleep(_pause);
                 _pool.returnObject(_key, obj);
                 postreturn = System.currentTimeMillis();
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 _thrown = e;
             } finally{
                 ended = System.currentTimeMillis();
@@ -1772,16 +1772,16 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         @Override
         public void run() {
             for(int i=0;i<_iter;i++) {
-                String key = _key == null ? String.valueOf(_random.nextInt(3)) : _key;
+                final String key = _key == null ? String.valueOf(_random.nextInt(3)) : _key;
                 try {
                     Thread.sleep(_randomDelay ? _random.nextInt(_startDelay) : _startDelay);
-                } catch(InterruptedException e) {
+                } catch(final InterruptedException e) {
                     // ignored
                 }
                 T obj = null;
                 try {
                     obj = _pool.borrowObject(key);
-                } catch(Exception e) {
+                } catch(final Exception e) {
                     _exception = e;
                     _failed = true;
                     _complete = true;
@@ -1797,12 +1797,12 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
 
                 try {
                     Thread.sleep(_randomDelay ? _random.nextInt(_holdTime) : _holdTime);
-                } catch(InterruptedException e) {
+                } catch(final InterruptedException e) {
                     // ignored
                 }
                 try {
                     _pool.returnObject(key,obj);
-                } catch(Exception e) {
+                } catch(final Exception e) {
                     _exception = e;
                     _failed = true;
                     _complete = true;
@@ -1925,7 +1925,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         private void doWait(long latency) {
             try {
                 Thread.sleep(latency);
-            } catch (InterruptedException ex) {
+            } catch (final InterruptedException ex) {
                 // ignore
             }
         }
@@ -1942,14 +1942,14 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
     }
 
     private String getExceptionTrace(Throwable t){
-        StringWriter sw = new StringWriter();
+        final StringWriter sw = new StringWriter();
         t.printStackTrace(new PrintWriter(sw));
         return sw.toString();
     }
 
     private String formatSettings(String title, String s, int i, String s0, boolean b0, String s1, int i1, String s2, int i2, String s3, int i3,
             String s4, int i4, String s5, int i5, String s6, int i6, int zeroLength, int oneLength, int twoLength){
-        StringBuilder sb = new StringBuilder(80);
+        final StringBuilder sb = new StringBuilder(80);
         sb.append(title).append(' ');
         sb.append(s).append('=').append(i).append(' ');
         sb.append(s0).append('=').append(b0).append(' ');
@@ -1968,9 +1968,9 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
      */
     @Test(timeout=60000)
     public void testJmxRegistration() {
-        ObjectName oname = pool.getJmxName();
-        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
-        Set<ObjectName> result = mbs.queryNames(oname, null);
+        final ObjectName oname = pool.getJmxName();
+        final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+        final Set<ObjectName> result = mbs.queryNames(oname, null);
         Assert.assertEquals(1, result.size());
     }
 
@@ -1986,7 +1986,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
     public void testInvalidateWaiting()
         throws Exception {
 
-        GenericKeyedObjectPoolConfig config = new GenericKeyedObjectPoolConfig();
+        final GenericKeyedObjectPoolConfig config = new GenericKeyedObjectPoolConfig();
         config.setMaxTotal(2);
         config.setBlockWhenExhausted(true);
         config.setMinIdlePerKey(0);
@@ -2003,24 +2003,24 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
 
         // Allocate both objects with this thread
         pool.borrowObject(Integer.valueOf(1)); // object1
-        Object object2 = pool.borrowObject(Integer.valueOf(1));
+        final Object object2 = pool.borrowObject(Integer.valueOf(1));
 
         // Cause a thread to block waiting for an object
-        ExecutorService executorService =
+        final ExecutorService executorService =
                 Executors.newSingleThreadExecutor(new DaemonThreadFactory());
         final Semaphore signal = new Semaphore(0);
-        Future<Exception> result = executorService.submit(new Callable<Exception>() {
+        final Future<Exception> result = executorService.submit(new Callable<Exception>() {
 
             @Override
             public Exception call() {
                 try {
                     signal.release();
-                    Object object3 = pool.borrowObject(Integer.valueOf(1));
+                    final Object object3 = pool.borrowObject(Integer.valueOf(1));
                     pool.returnObject(Integer.valueOf(1), object3);
                     signal.release();
-                } catch (Exception e) {
+                } catch (final Exception e) {
                     return e;
-                } catch (Throwable e) {
+                } catch (final Throwable e) {
                     return new Exception(e);
                 }
 
@@ -2048,7 +2048,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
     private static class DaemonThreadFactory implements ThreadFactory {
         @Override
         public Thread newThread(Runnable r) {
-            Thread t = new Thread(r);
+            final Thread t = new Thread(r);
             t.setDaemon(true);
             return t;
         }
@@ -2066,17 +2066,17 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
     @Test
     public void testInvalidateFreesCapacity()
         throws Exception {
-        SimpleFactory<String> factory = new SimpleFactory<String>();
-        GenericKeyedObjectPool<String, String> pool = new GenericKeyedObjectPool<String, String>(factory);
+        final SimpleFactory<String> factory = new SimpleFactory<String>();
+        final GenericKeyedObjectPool<String, String> pool = new GenericKeyedObjectPool<String, String>(factory);
         pool.setMaxTotalPerKey(2);
         pool.setMaxWaitMillis(500);
         // Borrow an instance and hold if for 5 seconds
-        WaitingTestThread thread1 = new WaitingTestThread(pool, "one", 5000);
+        final WaitingTestThread thread1 = new WaitingTestThread(pool, "one", 5000);
         thread1.start();
         // Borrow another instance
-        String obj = pool.borrowObject("one");
+        final String obj = pool.borrowObject("one");
         // Launch another thread - will block, but fail in 500 ms
-        WaitingTestThread thread2 = new WaitingTestThread(pool, "one", 100);
+        final WaitingTestThread thread2 = new WaitingTestThread(pool, "one", 100);
         thread2.start();
         // Invalidate the object borrowed by this thread - should allow thread2 to create
         Thread.sleep(20);
@@ -2098,23 +2098,23 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
     @Test
     public void testValidationFailureOnReturnFreesCapacity()
         throws Exception {
-        SimpleFactory<String> factory = new SimpleFactory<String>();
+        final SimpleFactory<String> factory = new SimpleFactory<String>();
         factory.setValid(false); // Validate will always fail
         factory.setValidationEnabled(true);
-        GenericKeyedObjectPool<String, String> pool = new GenericKeyedObjectPool<String, String>(factory);
+        final GenericKeyedObjectPool<String, String> pool = new GenericKeyedObjectPool<String, String>(factory);
         pool.setMaxTotalPerKey(2);
         pool.setMaxWaitMillis(1500);
         pool.setTestOnReturn(true);
         pool.setTestOnBorrow(false);
         // Borrow an instance and hold if for 5 seconds
-        WaitingTestThread thread1 = new WaitingTestThread(pool,"one", 5000);
+        final WaitingTestThread thread1 = new WaitingTestThread(pool,"one", 5000);
         thread1.start();
         // Borrow another instance and return it after 500 ms (validation will fail)
-        WaitingTestThread thread2 = new WaitingTestThread(pool,"one", 500);
+        final WaitingTestThread thread2 = new WaitingTestThread(pool,"one", 500);
         thread2.start();
         Thread.sleep(50);
         // Try to borrow an object
-        String obj = pool.borrowObject("one");
+        final String obj = pool.borrowObject("one");
         pool.returnObject("one", obj);
     }
 
@@ -2128,14 +2128,14 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
     @Test
     public void testMakeObjectException()
         throws Exception {
-        SimpleFactory<String> factory = new SimpleFactory<String>();
-        GenericKeyedObjectPool<String, String> pool = new GenericKeyedObjectPool<String, String>(factory);
+        final SimpleFactory<String> factory = new SimpleFactory<String>();
+        final GenericKeyedObjectPool<String, String> pool = new GenericKeyedObjectPool<String, String>(factory);
         pool.setMaxTotalPerKey(1);
         pool.setBlockWhenExhausted(false);
         factory.exceptionOnCreate = true;
         try {
             pool.borrowObject("One");
-        } catch (Exception ex) {
+        } catch (final Exception ex) {
             // expected
         }
         factory.exceptionOnCreate = false;
@@ -2232,14 +2232,14 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         final GenericKeyedObjectPool<String, Waiter> pool =
                 new GenericKeyedObjectPool<String, Waiter>(factory);
         pool.setTestOnReturn(true);
-        Waiter waiter = pool.borrowObject("a");
+        final Waiter waiter = pool.borrowObject("a");
         pool.returnObject("a",waiter);
         Assert.assertEquals(1, waiter.getValidationCount());
         Assert.assertEquals(1, waiter.getPassivationCount());
         try {
             pool.returnObject("a",waiter);
             fail("Expecting IllegalStateException from multiple return");
-        } catch (IllegalStateException ex) {
+        } catch (final IllegalStateException ex) {
             // Exception is expected, now check no repeat validation/passivation
             Assert.assertEquals(1, waiter.getValidationCount());
             Assert.assertEquals(1, waiter.getPassivationCount());
@@ -2282,7 +2282,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         @Override
         public Object create(Object key) throws Exception {
             int counter = 0;
-            AtomicInteger Counter = map.get(key);
+            final AtomicInteger Counter = map.get(key);
             if(null != Counter) {
                 counter = Counter.incrementAndGet();
             } else {


[41/50] [abbrv] commons-pool git commit: Fix POOL-351 Add a configurable delay (default 10 seconds) to wait when shutting down an Evictor to allow the associated thread time to complete and current evictions and to terminate.

Posted by ma...@apache.org.
Fix POOL-351
Add a configurable delay (default 10 seconds) to wait when shutting down an Evictor to allow the associated thread time to complete and current evictions and to terminate.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1767782 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/4a20cdca
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/4a20cdca
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/4a20cdca

Branch: refs/heads/master
Commit: 4a20cdca923bd342360f821d7020538e985d9ec2
Parents: b15bc63
Author: Mark Thomas <ma...@apache.org>
Authored: Wed Nov 2 20:53:11 2016 +0000
Committer: Mark Thomas <ma...@apache.org>
Committed: Wed Nov 2 20:53:11 2016 +0000

----------------------------------------------------------------------
 src/changes/changes.xml                         |   5 +
 .../pool2/impl/BaseGenericObjectPool.java       |  30 +++-
 .../pool2/impl/BaseObjectPoolConfig.java        |  48 ++++++-
 .../commons/pool2/impl/EvictionTimer.java       | 144 +++++++------------
 .../pool2/impl/GenericKeyedObjectPool.java      |   1 +
 .../commons/pool2/impl/GenericObjectPool.java   |   1 +
 .../pool2/impl/TestGenericObjectPool.java       |   1 +
 7 files changed, 132 insertions(+), 98 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/4a20cdca/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 5cca806..dca51b3 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -71,6 +71,11 @@ The <action> type attribute can be add,update,fix,remove.
       Ensure that any class name used for evictionPolicyClassName represents a
       class that implements EvictionPolicy.
     </action>
+    <action dev="markt" issue="POOL-351" type="fix">
+      Add a configurable delay (default 10 seconds) to wait when shutting down
+      an Evictor to allow the associated thread time to complete and current
+      evictions and to terminate.
+    </action>
   </release>
   <release version="2.4.2" date="2015-08-01" description=
  "This is a patch release, including bug fixes only.">

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/4a20cdca/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
index 8afa8f1..1f46811 100644
--- a/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
@@ -25,6 +25,7 @@ import java.util.Arrays;
 import java.util.Deque;
 import java.util.Iterator;
 import java.util.TimerTask;
+import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
 
 import javax.management.InstanceAlreadyExistsException;
@@ -87,6 +88,8 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
     private volatile long softMinEvictableIdleTimeMillis =
             BaseObjectPoolConfig.DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS;
     private volatile EvictionPolicy<T> evictionPolicy;
+    private long evictorShutdownTimeoutMillis =
+            BaseObjectPoolConfig.DEFAULT_EVICTOR_SHUTDOWN_TIMEOUT_MILLIS;
 
 
     // Internal (primarily state) attributes
@@ -632,6 +635,31 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
         }
     }
 
+    /**
+     * Gets the timeout that will be used when waiting for the Evictor to
+     * shutdown if this pool is closed and it is the only pool still using the
+     * the value for the Evictor.
+     *
+     * @return  The timeout in milliseconds that will be used while waiting for
+     *          the Evictor to shut down.
+     */
+    public long getEvictorShutdownTimeoutMillis() {
+        return evictorShutdownTimeoutMillis;
+    }
+
+    /**
+     * Sets the timeout that will be used when waiting for the Evictor to
+     * shutdown if this pool is closed and it is the only pool still using the
+     * the value for the Evictor.
+     *
+     * @param evictorShutdownTimeoutMillis  the timeout in milliseconds that
+     *                                      will be used while waiting for the
+     *                                      Evictor to shut down.
+     */
+    public void setEvictorShutdownTimeoutMillis(
+            final long evictorShutdownTimeoutMillis) {
+        this.evictorShutdownTimeoutMillis = evictorShutdownTimeoutMillis;
+    }
 
     /**
      * Closes the pool, destroys the remaining idle objects and, if registered
@@ -692,7 +720,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
     final void startEvictor(final long delay) {
         synchronized (evictionLock) {
             if (null != evictor) {
-                EvictionTimer.cancel(evictor);
+                EvictionTimer.cancel(evictor, 10, TimeUnit.SECONDS);
                 evictor = null;
                 evictionIterator = null;
             }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/4a20cdca/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java b/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
index 2f1a595..d635227 100644
--- a/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
+++ b/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
@@ -70,6 +70,15 @@ public abstract class BaseObjectPoolConfig extends BaseObject implements Cloneab
     public static final long DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS = -1;
 
     /**
+     * The default value for {@code evictorShutdownTimeoutMillis} configuration
+     * attribute.
+     * @see GenericObjectPool#getEvictorShutdownTimeoutMillis()
+     * @see GenericKeyedObjectPool#getEvictorShutdownTimeoutMillis()
+     */
+    public static final long DEFAULT_EVICTOR_SHUTDOWN_TIMEOUT_MILLIS =
+            10L * 1000L;
+
+    /**
      * The default value for the {@code numTestsPerEvictionRun} configuration
      * attribute.
      * @see GenericObjectPool#getNumTestsPerEvictionRun()
@@ -163,13 +172,16 @@ public abstract class BaseObjectPoolConfig extends BaseObject implements Cloneab
     private long maxWaitMillis = DEFAULT_MAX_WAIT_MILLIS;
 
     private long minEvictableIdleTimeMillis =
-        DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS;
+            DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS;
+
+    private long evictorShutdownTimeoutMillis =
+            DEFAULT_EVICTOR_SHUTDOWN_TIMEOUT_MILLIS;
 
     private long softMinEvictableIdleTimeMillis =
             DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS;
 
     private int numTestsPerEvictionRun =
-        DEFAULT_NUM_TESTS_PER_EVICTION_RUN;
+            DEFAULT_NUM_TESTS_PER_EVICTION_RUN;
 
     private String evictionPolicyClassName = DEFAULT_EVICTION_POLICY_CLASS_NAME;
 
@@ -182,7 +194,7 @@ public abstract class BaseObjectPoolConfig extends BaseObject implements Cloneab
     private boolean testWhileIdle = DEFAULT_TEST_WHILE_IDLE;
 
     private long timeBetweenEvictionRunsMillis =
-        DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS;
+            DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS;
 
     private boolean blockWhenExhausted = DEFAULT_BLOCK_WHEN_EXHAUSTED;
 
@@ -367,6 +379,36 @@ public abstract class BaseObjectPoolConfig extends BaseObject implements Cloneab
     }
 
     /**
+     * Get the value for the {@code evictorShutdownTimeoutMillis} configuration
+     * attribute for pools created with this configuration instance.
+     *
+     * @return  The current setting of {@code evictorShutdownTimeoutMillis} for
+     *          this configuration instance
+     *
+     * @see GenericObjectPool#getEvictorShutdownTimeoutMillis()
+     * @see GenericKeyedObjectPool#getEvictorShutdownTimeoutMillis()
+     */
+    public long getEvictorShutdownTimeoutMillis() {
+        return evictorShutdownTimeoutMillis;
+    }
+
+    /**
+     * Set the value for the {@code evictorShutdownTimeoutMillis} configuration
+     * attribute for pools created with this configuration instance.
+     *
+     * @param evictorShutdownTimeoutMillis The new setting of
+     *        {@code evictorShutdownTimeoutMillis} for this configuration
+     *        instance
+     *
+     * @see GenericObjectPool#getEvictorShutdownTimeoutMillis()
+     * @see GenericKeyedObjectPool#getEvictorShutdownTimeoutMillis()
+     */
+    public void setEvictorShutdownTimeoutMillis(
+            final long evictorShutdownTimeoutMillis) {
+        this.evictorShutdownTimeoutMillis = evictorShutdownTimeoutMillis;
+    }
+
+    /**
      * Get the value for the {@code testOnCreate} configuration attribute for
      * pools created with this configuration instance.
      *

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/4a20cdca/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java b/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
index 191dc86..b448141 100644
--- a/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
+++ b/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
@@ -18,16 +18,19 @@ package org.apache.commons.pool2.impl;
 
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import java.util.Timer;
 import java.util.TimerTask;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.TimeUnit;
 
 /**
- * Provides a shared idle object eviction timer for all pools. This class wraps
- * the standard {@link Timer} and keeps track of how many pools are using it.
- * If no pools are using the timer, it is canceled. This prevents a thread
- * being left running which, in application server environments, can lead to
- * memory leads and/or prevent applications from shutting down or reloading
- * cleanly.
+ * Provides a shared idle object eviction timer for all pools. This class is
+ * currently implemented using {@link ScheduledThreadPoolExecutor}. This
+ * implementation may change in any future release. This class keeps track of
+ * how many pools are using it. If no pools are using the timer, it is canceled.
+ * This prevents a thread being left running which, in application server
+ * environments, can lead to memory leads and/or prevent applications from
+ * shutting down or reloading cleanly.
  * <p>
  * This class has package scope to prevent its inclusion in the pool public API.
  * The class declaration below should *not* be changed to public.
@@ -38,11 +41,11 @@ import java.util.TimerTask;
  */
 class EvictionTimer {
 
-    /** Timer instance */
-    private static Timer _timer; //@GuardedBy("EvictionTimer.class")
+    /** Executor instance */
+    private static ScheduledThreadPoolExecutor executor; //@GuardedBy("EvictionTimer.class")
 
     /** Static usage count tracker */
-    private static int _usageCount; //@GuardedBy("EvictionTimer.class")
+    private static int usageCount; //@GuardedBy("EvictionTimer.class")
 
     /** Prevent instantiation */
     private EvictionTimer() {
@@ -70,102 +73,55 @@ class EvictionTimer {
      * @param delay     Delay in milliseconds before task is executed
      * @param period    Time in milliseconds between executions
      */
-    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
-            final ClassLoader ccl = AccessController.doPrivileged(
-                    new PrivilegedGetTccl());
-            try {
-                AccessController.doPrivileged(new PrivilegedSetTccl(
-                        EvictionTimer.class.getClassLoader()));
-                _timer = AccessController.doPrivileged(new PrivilegedNewEvictionTimer());
-            } finally {
-                AccessController.doPrivileged(new PrivilegedSetTccl(ccl));
-            }
+    static synchronized void schedule(final Runnable task, final long delay, final long period) {
+        if (null == executor) {
+            executor = new ScheduledThreadPoolExecutor(1, new EvictorThreadFactory());
         }
-        _usageCount++;
-        _timer.schedule(task, delay, period);
+        usageCount++;
+        executor.scheduleWithFixedDelay(task, delay, period, TimeUnit.MILLISECONDS);
     }
 
     /**
      * Remove the specified eviction task from the timer.
-     * @param task      Task to be scheduled
+     *
+     * @param task      Task to be cancelled
+     * @param timeout   If the associated executor is no longer required, how
+     *                  long should this thread wait for the executor to
+     *                  terminate?
+     * @param unit      The units for the specified timeout
      */
-    static synchronized void cancel(final TimerTask task) {
+    static synchronized void cancel(final TimerTask task, long timeout, TimeUnit unit) {
         task.cancel();
-        _usageCount--;
-        if (_usageCount == 0) {
-            _timer.cancel();
-            _timer = null;
-        }
-    }
-
-    /**
-     * {@link PrivilegedAction} used to get the ContextClassLoader
-     */
-    private static class PrivilegedGetTccl implements PrivilegedAction<ClassLoader> {
-
-        /**
-         * {@inheritDoc}
-         */
-        @Override
-        public ClassLoader run() {
-            return Thread.currentThread().getContextClassLoader();
-        }
-    }
-
-    /**
-     * {@link PrivilegedAction} used to set the ContextClassLoader
-     */
-    private static class PrivilegedSetTccl implements PrivilegedAction<Void> {
-
-        /** ClassLoader */
-        private final ClassLoader classLoader;
-
-        /**
-         * Create a new PrivilegedSetTccl using the given classloader
-         * @param classLoader ClassLoader to use
-         */
-        PrivilegedSetTccl(final ClassLoader cl) {
-            this.classLoader = cl;
-        }
-
-        /**
-         * {@inheritDoc}
-         */
-        @Override
-        public Void run() {
-            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();
+        usageCount--;
+        if (usageCount == 0) {
+            executor.shutdown();
+            try {
+                executor.awaitTermination(timeout, unit);
+            } catch (InterruptedException e) {
+                // Swallow
+                // Significant API changes would be required to propagate this
+            }
+            executor.setCorePoolSize(0);
+            executor = null;
         }
     }
 
-    /**
-     * {@link PrivilegedAction} used to create a new Timer. Creating the timer
-     * with a privileged action means the associated Thread does not inherit the
-     * current access control context. In a container environment, inheriting
-     * the current access control context is likely to result in retaining a
-     * reference to the thread context class loader which would be a memory
-     * leak.
-     */
-    private static class PrivilegedNewEvictionTimer implements PrivilegedAction<Timer> {
+    private static class EvictorThreadFactory implements ThreadFactory {
 
-        /**
-         * {@inheritDoc}
-         */
         @Override
-        public Timer run() {
-            return new Timer("commons-pool-EvictionTimer", true);
+        public Thread newThread(final Runnable r) {
+            final Thread t = new Thread(null, r, "commons-pool-evictor-thrreads");
+            t.setName("commons-pool-evictor");
+
+            AccessController.doPrivileged(new PrivilegedAction<Void>() {
+                @Override
+                public Void run() {
+                    t.setContextClassLoader(EvictorThreadFactory.class.getClassLoader());
+                    return null;
+                }
+            });
+
+            return t;
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/4a20cdca/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
index 6976f2a..7fa21b5 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
@@ -255,6 +255,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         setTimeBetweenEvictionRunsMillis(
                 conf.getTimeBetweenEvictionRunsMillis());
         setEvictionPolicyClassName(conf.getEvictionPolicyClassName());
+        setEvictorShutdownTimeoutMillis(conf.getEvictorShutdownTimeoutMillis());
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/4a20cdca/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
index 487eec2..be0f508 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
@@ -318,6 +318,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
         setSoftMinEvictableIdleTimeMillis(
                 conf.getSoftMinEvictableIdleTimeMillis());
         setEvictionPolicyClassName(conf.getEvictionPolicyClassName());
+        setEvictorShutdownTimeoutMillis(conf.getEvictorShutdownTimeoutMillis());
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/4a20cdca/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
index c9014ac..838aab4 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
@@ -1705,6 +1705,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         assertEquals("maxWait",expected.getMaxWaitMillis(),actual.getMaxWaitMillis());
         assertEquals("minEvictableIdleTimeMillis",expected.getMinEvictableIdleTimeMillis(),actual.getMinEvictableIdleTimeMillis());
         assertEquals("numTestsPerEvictionRun",expected.getNumTestsPerEvictionRun(),actual.getNumTestsPerEvictionRun());
+        assertEquals("evictorShutdownTimeoutMillis",expected.getEvictorShutdownTimeoutMillis(),actual.getEvictorShutdownTimeoutMillis());
         assertEquals("timeBetweenEvictionRunsMillis",expected.getTimeBetweenEvictionRunsMillis(),actual.getTimeBetweenEvictionRunsMillis());
     }
 


[15/50] [abbrv] commons-pool git commit: Add final modifier to local variables.

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/main/java/org/apache/commons/pool2/impl/PoolImplUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/PoolImplUtils.java b/src/main/java/org/apache/commons/pool2/impl/PoolImplUtils.java
index dc14e07..06a3984 100644
--- a/src/main/java/org/apache/commons/pool2/impl/PoolImplUtils.java
+++ b/src/main/java/org/apache/commons/pool2/impl/PoolImplUtils.java
@@ -58,11 +58,11 @@ class PoolImplUtils {
         // Look to see if this class implements the generic interface
 
         // Get all the interfaces
-        Type[] interfaces = clazz.getGenericInterfaces();
-        for (Type iface : interfaces) {
+        final Type[] interfaces = clazz.getGenericInterfaces();
+        for (final Type iface : interfaces) {
             // Only need to check interfaces that use generics
             if (iface instanceof ParameterizedType) {
-                ParameterizedType pi = (ParameterizedType) iface;
+                final ParameterizedType pi = (ParameterizedType) iface;
                 // Look for the generic interface
                 if (pi.getRawType() instanceof Class) {
                     if (type.isAssignableFrom((Class<?>) pi.getRawType())) {
@@ -75,10 +75,11 @@ class PoolImplUtils {
 
         // Interface not found on this class. Look at the superclass.
         @SuppressWarnings("unchecked")
+        final
         Class<? extends T> superClazz =
                 (Class<? extends T>) clazz.getSuperclass();
 
-        Object result = getGenericType(type, superClazz);
+        final Object result = getGenericType(type, superClazz);
         if (result instanceof Class<?>) {
             // Superclass implements interface and defines explicit type for
             // generic
@@ -87,7 +88,7 @@ class PoolImplUtils {
             // Superclass implements interface and defines unknown type for
             // generic
             // Map that unknown type to the generic types defined in this class
-            ParameterizedType superClassType =
+            final ParameterizedType superClassType =
                     (ParameterizedType) clazz.getGenericSuperclass();
             return getTypeParameter(clazz,
                     superClassType.getActualTypeArguments()[
@@ -114,7 +115,7 @@ class PoolImplUtils {
         if (argType instanceof Class<?>) {
             return argType;
         }
-        TypeVariable<?>[] tvs = clazz.getTypeParameters();
+        final TypeVariable<?>[] tvs = clazz.getTypeParameters();
         for (int i = 0; i < tvs.length; i++) {
             if (tvs[i].equals(argType)) {
                 return Integer.valueOf(i);

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/main/java/org/apache/commons/pool2/impl/PooledSoftReference.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/PooledSoftReference.java b/src/main/java/org/apache/commons/pool2/impl/PooledSoftReference.java
index 104bc56..15d385f 100644
--- a/src/main/java/org/apache/commons/pool2/impl/PooledSoftReference.java
+++ b/src/main/java/org/apache/commons/pool2/impl/PooledSoftReference.java
@@ -63,7 +63,7 @@ public class PooledSoftReference<T> extends DefaultPooledObject<T> {
      */
     @Override
     public String toString() {
-        StringBuilder result = new StringBuilder();
+        final StringBuilder result = new StringBuilder();
         result.append("Referenced Object: ");
         result.append(getObject().toString());
         result.append(", State: ");

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/main/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java
index 3c1c54a..fd4f38a 100644
--- a/src/main/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java
@@ -146,11 +146,11 @@ public class SoftReferenceObjectPool<T> extends BaseObjectPool<T> {
                     if (!factory.validateObject(ref)) {
                         throw new Exception("ValidateObject failed");
                     }
-                } catch (Throwable t) {
+                } catch (final Throwable t) {
                     PoolUtils.checkRethrow(t);
                     try {
                         destroy(ref);
-                    } catch (Throwable t2) {
+                    } catch (final Throwable t2) {
                         PoolUtils.checkRethrow(t2);
                         // Swallowed
                     } finally {
@@ -202,13 +202,13 @@ public class SoftReferenceObjectPool<T> extends BaseObjectPool<T> {
             } else {
                 try {
                     factory.passivateObject(ref);
-                } catch (Exception e) {
+                } catch (final Exception e) {
                     success = false;
                 }
             }
         }
 
-        boolean shouldDestroy = !success;
+        final boolean shouldDestroy = !success;
         numActive--;
         if (success) {
 
@@ -221,7 +221,7 @@ public class SoftReferenceObjectPool<T> extends BaseObjectPool<T> {
         if (shouldDestroy && factory != null) {
             try {
                 destroy(ref);
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // ignored
             }
         }
@@ -273,10 +273,10 @@ public class SoftReferenceObjectPool<T> extends BaseObjectPool<T> {
             throw new IllegalStateException(
                     "Cannot add objects without a factory.");
         }
-        T obj = factory.makeObject().getObject();
+        final T obj = factory.makeObject().getObject();
         createCount++;
         // Create and register with the queue
-        PooledSoftReference<T> ref = new PooledSoftReference<T>(
+        final PooledSoftReference<T> ref = new PooledSoftReference<T>(
                 new SoftReference<T>(obj, refQueue));
         allReferences.add(ref);
 
@@ -287,7 +287,7 @@ public class SoftReferenceObjectPool<T> extends BaseObjectPool<T> {
             factory.passivateObject(ref);
         }
 
-        boolean shouldDestroy = !success;
+        final boolean shouldDestroy = !success;
         if (success) {
             idleReferences.add(ref);
             notifyAll(); // numActive has changed
@@ -296,7 +296,7 @@ public class SoftReferenceObjectPool<T> extends BaseObjectPool<T> {
         if (shouldDestroy) {
             try {
                 destroy(ref);
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // ignored
             }
         }
@@ -330,14 +330,14 @@ public class SoftReferenceObjectPool<T> extends BaseObjectPool<T> {
     @Override
     public synchronized void clear() {
         if (null != factory) {
-            Iterator<PooledSoftReference<T>> iter = idleReferences.iterator();
+            final Iterator<PooledSoftReference<T>> iter = idleReferences.iterator();
             while (iter.hasNext()) {
                 try {
                     final PooledSoftReference<T> ref = iter.next();
                     if (null != ref.getObject()) {
                         factory.destroyObject(ref);
                     }
-                } catch (Exception e) {
+                } catch (final Exception e) {
                     // ignore error, keep destroying the rest
                 }
             }
@@ -388,7 +388,7 @@ public class SoftReferenceObjectPool<T> extends BaseObjectPool<T> {
      * @return PooledSoftReference wrapping a soft reference to obj
      */
     private PooledSoftReference<T> findReference(T obj) {
-        Iterator<PooledSoftReference<T>> iterator = allReferences.iterator();
+        final Iterator<PooledSoftReference<T>> iterator = allReferences.iterator();
         while (iterator.hasNext()) {
             final PooledSoftReference<T> reference = iterator.next();
             if (reference.getObject() != null && reference.getObject().equals(obj)) {

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/main/java/org/apache/commons/pool2/proxy/BaseProxyHandler.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/proxy/BaseProxyHandler.java b/src/main/java/org/apache/commons/pool2/proxy/BaseProxyHandler.java
index 20e3c01..4da1b44 100644
--- a/src/main/java/org/apache/commons/pool2/proxy/BaseProxyHandler.java
+++ b/src/main/java/org/apache/commons/pool2/proxy/BaseProxyHandler.java
@@ -66,7 +66,7 @@ class BaseProxyHandler<T> {
      * @return the object that this proxy was wrapping
      */
     T disableProxy() {
-        T result = pooledObject;
+        final T result = pooledObject;
         pooledObject = null;
         return result;
     }
@@ -96,7 +96,7 @@ class BaseProxyHandler<T> {
      */
     Object doInvoke(Method method, Object[] args) throws Throwable {
         validateProxiedObject();
-        T object = getPooledObject();
+        final T object = getPooledObject();
         if (usageTracking != null) {
             usageTracking.use(object);
         }
@@ -109,7 +109,7 @@ class BaseProxyHandler<T> {
      */
     @Override
     public String toString() {
-        StringBuilder builder = new StringBuilder();
+        final StringBuilder builder = new StringBuilder();
         builder.append(getClass().getName());
         builder.append(" [pooledObject=");
         builder.append(pooledObject);

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/main/java/org/apache/commons/pool2/proxy/CglibProxySource.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/proxy/CglibProxySource.java b/src/main/java/org/apache/commons/pool2/proxy/CglibProxySource.java
index 53d1247..8781474 100644
--- a/src/main/java/org/apache/commons/pool2/proxy/CglibProxySource.java
+++ b/src/main/java/org/apache/commons/pool2/proxy/CglibProxySource.java
@@ -43,14 +43,15 @@ public class CglibProxySource<T> implements ProxySource<T> {
 
     @Override
     public T createProxy(T pooledObject, UsageTracking<T> usageTracking) {
-        Enhancer enhancer = new Enhancer();
+        final Enhancer enhancer = new Enhancer();
         enhancer.setSuperclass(superclass);
 
-        CglibProxyHandler<T> proxyInterceptor =
+        final CglibProxyHandler<T> proxyInterceptor =
                 new CglibProxyHandler<T>(pooledObject, usageTracking);
         enhancer.setCallback(proxyInterceptor);
 
         @SuppressWarnings("unchecked")
+        final
         T proxy = (T) enhancer.create();
 
         return proxy;
@@ -60,9 +61,10 @@ public class CglibProxySource<T> implements ProxySource<T> {
     @Override
     public T resolveProxy(T proxy) {
         @SuppressWarnings("unchecked")
+        final
         CglibProxyHandler<T> cglibProxyHandler =
                 (CglibProxyHandler<T>) ((Factory) proxy).getCallback(0);
-        T pooledObject = cglibProxyHandler.disableProxy();
+        final T pooledObject = cglibProxyHandler.disableProxy();
         return pooledObject;
     }
 
@@ -71,7 +73,7 @@ public class CglibProxySource<T> implements ProxySource<T> {
      */
     @Override
     public String toString() {
-        StringBuilder builder = new StringBuilder();
+        final StringBuilder builder = new StringBuilder();
         builder.append("CglibProxySource [superclass=");
         builder.append(superclass);
         builder.append("]");

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/main/java/org/apache/commons/pool2/proxy/JdkProxySource.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/proxy/JdkProxySource.java b/src/main/java/org/apache/commons/pool2/proxy/JdkProxySource.java
index d448458..0c74f82 100644
--- a/src/main/java/org/apache/commons/pool2/proxy/JdkProxySource.java
+++ b/src/main/java/org/apache/commons/pool2/proxy/JdkProxySource.java
@@ -51,6 +51,7 @@ public class JdkProxySource<T> implements ProxySource<T> {
     @Override
     public T createProxy(T pooledObject, UsageTracking<T> usageTracking) {
         @SuppressWarnings("unchecked")
+        final
         T proxy = (T) Proxy.newProxyInstance(classLoader, interfaces,
                 new JdkProxyHandler<T>(pooledObject, usageTracking));
         return proxy;
@@ -60,9 +61,10 @@ public class JdkProxySource<T> implements ProxySource<T> {
     @Override
     public T resolveProxy(T proxy) {
         @SuppressWarnings("unchecked")
+        final
         JdkProxyHandler<T> jdkProxyHandler =
                 (JdkProxyHandler<T>) Proxy.getInvocationHandler(proxy);
-        T pooledObject = jdkProxyHandler.disableProxy();
+        final T pooledObject = jdkProxyHandler.disableProxy();
         return pooledObject;
     }
 
@@ -72,7 +74,7 @@ public class JdkProxySource<T> implements ProxySource<T> {
      */
     @Override
     public String toString() {
-        StringBuilder builder = new StringBuilder();
+        final StringBuilder builder = new StringBuilder();
         builder.append("JdkProxySource [classLoader=");
         builder.append(classLoader);
         builder.append(", interfaces=");

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/main/java/org/apache/commons/pool2/proxy/ProxiedKeyedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/proxy/ProxiedKeyedObjectPool.java b/src/main/java/org/apache/commons/pool2/proxy/ProxiedKeyedObjectPool.java
index b2b4881..26536b0 100644
--- a/src/main/java/org/apache/commons/pool2/proxy/ProxiedKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/proxy/ProxiedKeyedObjectPool.java
@@ -59,20 +59,20 @@ public class ProxiedKeyedObjectPool<K,V> implements KeyedObjectPool<K,V> {
         if (pool instanceof UsageTracking) {
             usageTracking = (UsageTracking<V>) pool;
         }
-        V pooledObject = pool.borrowObject(key);
-        V proxy = proxySource.createProxy(pooledObject, usageTracking);
+        final V pooledObject = pool.borrowObject(key);
+        final V proxy = proxySource.createProxy(pooledObject, usageTracking);
         return proxy;
     }
 
     @Override
     public void returnObject(K key, V proxy) throws Exception {
-        V pooledObject = proxySource.resolveProxy(proxy);
+        final V pooledObject = proxySource.resolveProxy(proxy);
         pool.returnObject(key, pooledObject);
     }
 
     @Override
     public void invalidateObject(K key, V proxy) throws Exception {
-        V pooledObject = proxySource.resolveProxy(proxy);
+        final V pooledObject = proxySource.resolveProxy(proxy);
         pool.invalidateObject(key, pooledObject);
     }
 
@@ -123,7 +123,7 @@ public class ProxiedKeyedObjectPool<K,V> implements KeyedObjectPool<K,V> {
      */
     @Override
     public String toString() {
-        StringBuilder builder = new StringBuilder();
+        final StringBuilder builder = new StringBuilder();
         builder.append("ProxiedKeyedObjectPool [pool=");
         builder.append(pool);
         builder.append(", proxySource=");

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/main/java/org/apache/commons/pool2/proxy/ProxiedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/proxy/ProxiedObjectPool.java b/src/main/java/org/apache/commons/pool2/proxy/ProxiedObjectPool.java
index 891213d..59c5402 100644
--- a/src/main/java/org/apache/commons/pool2/proxy/ProxiedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/proxy/ProxiedObjectPool.java
@@ -59,22 +59,22 @@ public class ProxiedObjectPool<T> implements ObjectPool<T> {
         if (pool instanceof UsageTracking) {
             usageTracking = (UsageTracking<T>) pool;
         }
-        T pooledObject = pool.borrowObject();
-        T proxy = proxySource.createProxy(pooledObject, usageTracking);
+        final T pooledObject = pool.borrowObject();
+        final T proxy = proxySource.createProxy(pooledObject, usageTracking);
         return proxy;
     }
 
 
     @Override
     public void returnObject(T proxy) throws Exception {
-        T pooledObject = proxySource.resolveProxy(proxy);
+        final T pooledObject = proxySource.resolveProxy(proxy);
         pool.returnObject(pooledObject);
     }
 
 
     @Override
     public void invalidateObject(T proxy) throws Exception {
-        T pooledObject = proxySource.resolveProxy(proxy);
+        final T pooledObject = proxySource.resolveProxy(proxy);
         pool.invalidateObject(pooledObject);
     }
 
@@ -115,7 +115,7 @@ public class ProxiedObjectPool<T> implements ObjectPool<T> {
      */
     @Override
     public String toString() {
-        StringBuilder builder = new StringBuilder();
+        final StringBuilder builder = new StringBuilder();
         builder.append("ProxiedObjectPool [pool=");
         builder.append(pool);
         builder.append(", proxySource=");

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/MethodCallPoolableObjectFactory.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/MethodCallPoolableObjectFactory.java b/src/test/java/org/apache/commons/pool2/MethodCallPoolableObjectFactory.java
index 991ff6b..364debb 100644
--- a/src/test/java/org/apache/commons/pool2/MethodCallPoolableObjectFactory.java
+++ b/src/test/java/org/apache/commons/pool2/MethodCallPoolableObjectFactory.java
@@ -114,7 +114,7 @@ public class MethodCallPoolableObjectFactory implements PooledObjectFactory<Obje
     public PooledObject<Object> makeObject() throws Exception {
         final MethodCall call = new MethodCall("makeObject");
         methodCalls.add(call);
-        int originalCount = this.count++;
+        final int originalCount = this.count++;
         if (makeObjectFail) {
             throw new PrivateException("makeObject");
         }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/TestBaseKeyedPoolableObjectFactory.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/TestBaseKeyedPoolableObjectFactory.java b/src/test/java/org/apache/commons/pool2/TestBaseKeyedPoolableObjectFactory.java
index 35052c8..3125993 100644
--- a/src/test/java/org/apache/commons/pool2/TestBaseKeyedPoolableObjectFactory.java
+++ b/src/test/java/org/apache/commons/pool2/TestBaseKeyedPoolableObjectFactory.java
@@ -28,7 +28,7 @@ public class TestBaseKeyedPoolableObjectFactory {
 
     @Test
     public void testDefaultMethods() throws Exception {
-        KeyedPooledObjectFactory<Object,Object> factory = new TestFactory();
+        final KeyedPooledObjectFactory<Object,Object> factory = new TestFactory();
 
         factory.activateObject("key",null); // a no-op
         factory.passivateObject("key",null); // a no-op

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/TestBaseObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/TestBaseObjectPool.java b/src/test/java/org/apache/commons/pool2/TestBaseObjectPool.java
index c82e577..fc81213 100644
--- a/src/test/java/org/apache/commons/pool2/TestBaseObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/TestBaseObjectPool.java
@@ -81,7 +81,7 @@ public class TestBaseObjectPool extends TestObjectPool {
         if (!getClass().equals(TestBaseObjectPool.class)) {
             return; // skip redundant tests
         }
-        ObjectPool<Object> pool = new TestObjectPool();
+        final ObjectPool<Object> pool = new TestObjectPool();
 
         assertTrue("Negative expected.", pool.getNumIdle() < 0);
         assertTrue("Negative expected.", pool.getNumActive() < 0);
@@ -89,21 +89,21 @@ public class TestBaseObjectPool extends TestObjectPool {
         try {
             pool.clear();
             fail("Expected UnsupportedOperationException");
-        } catch(UnsupportedOperationException e) {
+        } catch(final UnsupportedOperationException e) {
             // expected
         }
 
         try {
             pool.addObject();
             fail("Expected UnsupportedOperationException");
-        } catch(UnsupportedOperationException e) {
+        } catch(final UnsupportedOperationException e) {
             // expected
         }
     }
 
     @Test
     public void testClose() throws Exception {
-        ObjectPool<Object> pool = new TestObjectPool();
+        final ObjectPool<Object> pool = new TestObjectPool();
 
         pool.close();
         pool.close(); // should not error as of Pool 2.0.
@@ -113,7 +113,7 @@ public class TestBaseObjectPool extends TestObjectPool {
     public void testBaseBorrow() throws Exception {
         try {
             _pool = makeEmptyPool(3);
-        } catch(UnsupportedOperationException e) {
+        } catch(final UnsupportedOperationException e) {
             return; // skip this test if unsupported
         }
         assertEquals(getNthObject(0),_pool.borrowObject());
@@ -126,7 +126,7 @@ public class TestBaseObjectPool extends TestObjectPool {
     public void testBaseAddObject() throws Exception {
         try {
             _pool = makeEmptyPool(3);
-        } catch(UnsupportedOperationException e) {
+        } catch(final UnsupportedOperationException e) {
             return; // skip this test if unsupported
         }
         try {
@@ -135,14 +135,14 @@ public class TestBaseObjectPool extends TestObjectPool {
             _pool.addObject();
             assertEquals(1,_pool.getNumIdle());
             assertEquals(0,_pool.getNumActive());
-            String obj = _pool.borrowObject();
+            final String obj = _pool.borrowObject();
             assertEquals(getNthObject(0),obj);
             assertEquals(0,_pool.getNumIdle());
             assertEquals(1,_pool.getNumActive());
             _pool.returnObject(obj);
             assertEquals(1,_pool.getNumIdle());
             assertEquals(0,_pool.getNumActive());
-        } catch(UnsupportedOperationException e) {
+        } catch(final UnsupportedOperationException e) {
             return; // skip this test if one of those calls is unsupported
         } finally {
             _pool.close();
@@ -153,7 +153,7 @@ public class TestBaseObjectPool extends TestObjectPool {
     public void testBaseBorrowReturn() throws Exception {
         try {
             _pool = makeEmptyPool(3);
-        } catch(UnsupportedOperationException e) {
+        } catch(final UnsupportedOperationException e) {
             return; // skip this test if unsupported
         }
         String obj0 = _pool.borrowObject();
@@ -192,15 +192,15 @@ public class TestBaseObjectPool extends TestObjectPool {
     public void testBaseNumActiveNumIdle() throws Exception {
         try {
             _pool = makeEmptyPool(3);
-        } catch(UnsupportedOperationException e) {
+        } catch(final UnsupportedOperationException e) {
             return; // skip this test if unsupported
         }
         assertEquals(0,_pool.getNumActive());
         assertEquals(0,_pool.getNumIdle());
-        String obj0 = _pool.borrowObject();
+        final String obj0 = _pool.borrowObject();
         assertEquals(1,_pool.getNumActive());
         assertEquals(0,_pool.getNumIdle());
-        String obj1 = _pool.borrowObject();
+        final String obj1 = _pool.borrowObject();
         assertEquals(2,_pool.getNumActive());
         assertEquals(0,_pool.getNumIdle());
         _pool.returnObject(obj1);
@@ -216,13 +216,13 @@ public class TestBaseObjectPool extends TestObjectPool {
     public void testBaseClear() throws Exception {
         try {
             _pool = makeEmptyPool(3);
-        } catch(UnsupportedOperationException e) {
+        } catch(final UnsupportedOperationException e) {
             return; // skip this test if unsupported
         }
         assertEquals(0,_pool.getNumActive());
         assertEquals(0,_pool.getNumIdle());
-        String obj0 = _pool.borrowObject();
-        String obj1 = _pool.borrowObject();
+        final String obj0 = _pool.borrowObject();
+        final String obj1 = _pool.borrowObject();
         assertEquals(2,_pool.getNumActive());
         assertEquals(0,_pool.getNumIdle());
         _pool.returnObject(obj1);
@@ -232,7 +232,7 @@ public class TestBaseObjectPool extends TestObjectPool {
         _pool.clear();
         assertEquals(0,_pool.getNumActive());
         assertEquals(0,_pool.getNumIdle());
-        Object obj2 = _pool.borrowObject();
+        final Object obj2 = _pool.borrowObject();
         assertEquals(getNthObject(2),obj2);
         _pool.close();
     }
@@ -241,13 +241,13 @@ public class TestBaseObjectPool extends TestObjectPool {
     public void testBaseInvalidateObject() throws Exception {
         try {
             _pool = makeEmptyPool(3);
-        } catch(UnsupportedOperationException e) {
+        } catch(final UnsupportedOperationException e) {
             return; // skip this test if unsupported
         }
         assertEquals(0,_pool.getNumActive());
         assertEquals(0,_pool.getNumIdle());
-        String obj0 = _pool.borrowObject();
-        String obj1 = _pool.borrowObject();
+        final String obj0 = _pool.borrowObject();
+        final String obj1 = _pool.borrowObject();
         assertEquals(2,_pool.getNumActive());
         assertEquals(0,_pool.getNumIdle());
         _pool.invalidateObject(obj0);
@@ -263,17 +263,17 @@ public class TestBaseObjectPool extends TestObjectPool {
     public void testBaseClosePool() throws Exception {
         try {
             _pool = makeEmptyPool(3);
-        } catch(UnsupportedOperationException e) {
+        } catch(final UnsupportedOperationException e) {
             return; // skip this test if unsupported
         }
-        String obj = _pool.borrowObject();
+        final String obj = _pool.borrowObject();
         _pool.returnObject(obj);
 
         _pool.close();
         try {
             _pool.borrowObject();
             fail("Expected IllegalStateException");
-        } catch(IllegalStateException e) {
+        } catch(final IllegalStateException e) {
             // expected
         }
     }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/TestBasePoolableObjectFactory.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/TestBasePoolableObjectFactory.java b/src/test/java/org/apache/commons/pool2/TestBasePoolableObjectFactory.java
index ad7bf8f..82eb630 100644
--- a/src/test/java/org/apache/commons/pool2/TestBasePoolableObjectFactory.java
+++ b/src/test/java/org/apache/commons/pool2/TestBasePoolableObjectFactory.java
@@ -28,7 +28,7 @@ public class TestBasePoolableObjectFactory {
 
     @Test
     public void testDefaultMethods() throws Exception {
-        PooledObjectFactory<Object> factory = new TestFactory();
+        final PooledObjectFactory<Object> factory = new TestFactory();
 
         factory.activateObject(null); // a no-op
         factory.passivateObject(null); // a no-op

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/TestKeyedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/TestKeyedObjectPool.java b/src/test/java/org/apache/commons/pool2/TestKeyedObjectPool.java
index e17b7d1..809ebb4 100644
--- a/src/test/java/org/apache/commons/pool2/TestKeyedObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/TestKeyedObjectPool.java
@@ -89,26 +89,26 @@ public abstract class TestKeyedObjectPool {
         final KeyedObjectPool<Object,Object> pool;
         try {
             pool = makeEmptyPool(new TestFactory());
-        } catch(UnsupportedOperationException uoe) {
+        } catch(final UnsupportedOperationException uoe) {
             return; // test not supported
         }
 
-        Object o1 = pool.borrowObject(KEY);
-        Object o2 = pool.borrowObject(KEY);
+        final Object o1 = pool.borrowObject(KEY);
+        final Object o2 = pool.borrowObject(KEY);
 
         pool.close();
 
         try {
             pool.addObject(KEY);
             fail("A closed pool must throw an IllegalStateException when addObject is called.");
-        } catch (IllegalStateException ise) {
+        } catch (final IllegalStateException ise) {
             // expected
         }
 
         try {
             pool.borrowObject(KEY);
             fail("A closed pool must throw an IllegalStateException when borrowObject is called.");
-        } catch (IllegalStateException ise) {
+        } catch (final IllegalStateException ise) {
             // expected
         }
 
@@ -137,7 +137,7 @@ public abstract class TestKeyedObjectPool {
         final KeyedObjectPool<Object,Object> pool;
         try {
             pool = makeEmptyPool(factory);
-        } catch(UnsupportedOperationException uoe) {
+        } catch(final UnsupportedOperationException uoe) {
             return; // test not supported
         }
         final List<MethodCall> expectedMethods = new ArrayList<MethodCall>();
@@ -156,7 +156,7 @@ public abstract class TestKeyedObjectPool {
         try {
             pool.addObject(KEY);
             fail("Expected addObject to propagate makeObject exception.");
-        } catch (PrivateException pe) {
+        } catch (final PrivateException pe) {
             // expected
         }
         expectedMethods.add(new MethodCall("makeObject", KEY));
@@ -170,7 +170,7 @@ public abstract class TestKeyedObjectPool {
         try {
             pool.addObject(KEY);
             fail("Expected addObject to propagate passivateObject exception.");
-        } catch (PrivateException pe) {
+        } catch (final PrivateException pe) {
             // expected
         }
         expectedMethods.add(new MethodCall("makeObject", KEY).returned(ONE));
@@ -185,7 +185,7 @@ public abstract class TestKeyedObjectPool {
         final KeyedObjectPool<Object,Object> pool;
         try {
             pool = makeEmptyPool(factory);
-        } catch(UnsupportedOperationException uoe) {
+        } catch(final UnsupportedOperationException uoe) {
             return; // test not supported
         }
         final List<MethodCall> expectedMethods = new ArrayList<MethodCall>();
@@ -214,7 +214,7 @@ public abstract class TestKeyedObjectPool {
         try {
             obj = pool.borrowObject(KEY);
             fail("Expected borrowObject to propagate makeObject exception.");
-        } catch (PrivateException pe) {
+        } catch (final PrivateException pe) {
             // expected
         }
         expectedMethods.add(new MethodCall("makeObject", KEY));
@@ -231,7 +231,7 @@ public abstract class TestKeyedObjectPool {
         try {
             pool.borrowObject(KEY);
             fail("Expecting NoSuchElementException");
-        } catch (NoSuchElementException e) {
+        } catch (final NoSuchElementException e) {
             //Activate should fail
         }
         // After idle object fails validation, new on is created and activation
@@ -252,7 +252,7 @@ public abstract class TestKeyedObjectPool {
         try {
             pool.borrowObject(KEY);
             fail("Expecting NoSuchElementException");
-        } catch (NoSuchElementException ex) {
+        } catch (final NoSuchElementException ex) {
             // expected
         }
         // Activate, then validate for idle instance
@@ -273,7 +273,7 @@ public abstract class TestKeyedObjectPool {
         final KeyedObjectPool<Object,Object> pool;
         try {
             pool = makeEmptyPool(factory);
-        } catch(UnsupportedOperationException uoe) {
+        } catch(final UnsupportedOperationException uoe) {
             return; // test not supported
         }
         final List<MethodCall> expectedMethods = new ArrayList<MethodCall>();
@@ -319,7 +319,7 @@ public abstract class TestKeyedObjectPool {
             if (!(pool instanceof GenericKeyedObjectPool)) { // ugh, 1.3-compat
                 fail("Expecting destroyObject exception to be propagated");
             }
-        } catch (PrivateException ex) {
+        } catch (final PrivateException ex) {
             // Expected
         }
         pool.close();
@@ -331,7 +331,7 @@ public abstract class TestKeyedObjectPool {
         final KeyedObjectPool<Object,Object> pool;
         try {
             pool = makeEmptyPool(factory);
-        } catch(UnsupportedOperationException uoe) {
+        } catch(final UnsupportedOperationException uoe) {
             return; // test not supported
         }
         final List<MethodCall> expectedMethods = new ArrayList<MethodCall>();
@@ -355,7 +355,7 @@ public abstract class TestKeyedObjectPool {
         try {
             pool.invalidateObject(KEY, obj);
             fail("Expecting destroy exception to propagate");
-        } catch (PrivateException ex) {
+        } catch (final PrivateException ex) {
             // Expected
         }
         Thread.sleep(250); // could be defered
@@ -370,7 +370,7 @@ public abstract class TestKeyedObjectPool {
         final KeyedObjectPool<Object,Object> pool;
         try {
             pool = makeEmptyPool(factory);
-        } catch(UnsupportedOperationException uoe) {
+        } catch(final UnsupportedOperationException uoe) {
             return; // test not supported
         }
         final List<MethodCall> expectedMethods = new ArrayList<MethodCall>();
@@ -393,7 +393,7 @@ public abstract class TestKeyedObjectPool {
         KeyedObjectPool<Object,Object> pool;
         try {
             pool = makeEmptyPool(factory);
-        } catch(UnsupportedOperationException uoe) {
+        } catch(final UnsupportedOperationException uoe) {
             return; // test not supported
         }
         final List<MethodCall> expectedMethods = new ArrayList<MethodCall>();
@@ -415,10 +415,10 @@ public abstract class TestKeyedObjectPool {
     public void testToString() throws Exception {
         final FailingKeyedPooledObjectFactory factory =
                 new FailingKeyedPooledObjectFactory();
-        KeyedObjectPool<Object,Object> pool = makeEmptyPool(factory);
+        final KeyedObjectPool<Object,Object> pool = makeEmptyPool(factory);
         try {
             pool.toString();
-        } catch(UnsupportedOperationException uoe) {
+        } catch(final UnsupportedOperationException uoe) {
             return; // test not supported
         } finally {
             pool.close();
@@ -429,10 +429,10 @@ public abstract class TestKeyedObjectPool {
     public void testBaseBorrowReturn() throws Exception {
         try {
             _pool = makeEmptyPool(3);
-        } catch(UnsupportedOperationException uoe) {
+        } catch(final UnsupportedOperationException uoe) {
             return; // skip this test if unsupported
         }
-        Object keya = makeKey(0);
+        final Object keya = makeKey(0);
         Object obj0 = _pool.borrowObject(keya);
         assertEquals(getNthObject(keya,0),obj0);
         Object obj1 = _pool.borrowObject(keya);
@@ -468,11 +468,11 @@ public abstract class TestKeyedObjectPool {
     public void testBaseBorrow() throws Exception {
         try {
             _pool = makeEmptyPool(3);
-        } catch(UnsupportedOperationException uoe) {
+        } catch(final UnsupportedOperationException uoe) {
             return; // skip this test if unsupported
         }
-        Object keya = makeKey(0);
-        Object keyb = makeKey(1);
+        final Object keya = makeKey(0);
+        final Object keyb = makeKey(1);
         assertEquals("1",getNthObject(keya,0),_pool.borrowObject(keya));
         assertEquals("2",getNthObject(keyb,0),_pool.borrowObject(keyb));
         assertEquals("3",getNthObject(keyb,1),_pool.borrowObject(keyb));
@@ -486,16 +486,16 @@ public abstract class TestKeyedObjectPool {
     public void testBaseNumActiveNumIdle() throws Exception {
         try {
             _pool = makeEmptyPool(3);
-        } catch(UnsupportedOperationException uoe) {
+        } catch(final UnsupportedOperationException uoe) {
             return; // skip this test if unsupported
         }
-        Object keya = makeKey(0);
+        final Object keya = makeKey(0);
         assertEquals(0,_pool.getNumActive(keya));
         assertEquals(0,_pool.getNumIdle(keya));
-        Object obj0 = _pool.borrowObject(keya);
+        final Object obj0 = _pool.borrowObject(keya);
         assertEquals(1,_pool.getNumActive(keya));
         assertEquals(0,_pool.getNumIdle(keya));
-        Object obj1 = _pool.borrowObject(keya);
+        final Object obj1 = _pool.borrowObject(keya);
         assertEquals(2,_pool.getNumActive(keya));
         assertEquals(0,_pool.getNumIdle(keya));
         _pool.returnObject(keya,obj1);
@@ -515,11 +515,11 @@ public abstract class TestKeyedObjectPool {
     public void testBaseNumActiveNumIdle2() throws Exception {
         try {
             _pool = makeEmptyPool(6);
-        } catch(UnsupportedOperationException uoe) {
+        } catch(final UnsupportedOperationException uoe) {
             return; // skip this test if unsupported
         }
-        Object keya = makeKey(0);
-        Object keyb = makeKey(1);
+        final Object keya = makeKey(0);
+        final Object keyb = makeKey(1);
         assertEquals(0,_pool.getNumActive());
         assertEquals(0,_pool.getNumIdle());
         assertEquals(0,_pool.getNumActive(keya));
@@ -527,8 +527,8 @@ public abstract class TestKeyedObjectPool {
         assertEquals(0,_pool.getNumActive(keyb));
         assertEquals(0,_pool.getNumIdle(keyb));
 
-        Object objA0 = _pool.borrowObject(keya);
-        Object objB0 = _pool.borrowObject(keyb);
+        final Object objA0 = _pool.borrowObject(keya);
+        final Object objB0 = _pool.borrowObject(keyb);
 
         assertEquals(2,_pool.getNumActive());
         assertEquals(0,_pool.getNumIdle());
@@ -537,8 +537,8 @@ public abstract class TestKeyedObjectPool {
         assertEquals(1,_pool.getNumActive(keyb));
         assertEquals(0,_pool.getNumIdle(keyb));
 
-        Object objA1 = _pool.borrowObject(keya);
-        Object objB1 = _pool.borrowObject(keyb);
+        final Object objA1 = _pool.borrowObject(keya);
+        final Object objB1 = _pool.borrowObject(keyb);
 
         assertEquals(4,_pool.getNumActive());
         assertEquals(0,_pool.getNumIdle());
@@ -574,14 +574,14 @@ public abstract class TestKeyedObjectPool {
     public void testBaseClear() throws Exception {
         try {
             _pool = makeEmptyPool(3);
-        } catch(UnsupportedOperationException uoe) {
+        } catch(final UnsupportedOperationException uoe) {
             return; // skip this test if unsupported
         }
-        Object keya = makeKey(0);
+        final Object keya = makeKey(0);
         assertEquals(0,_pool.getNumActive(keya));
         assertEquals(0,_pool.getNumIdle(keya));
-        Object obj0 = _pool.borrowObject(keya);
-        Object obj1 = _pool.borrowObject(keya);
+        final Object obj0 = _pool.borrowObject(keya);
+        final Object obj1 = _pool.borrowObject(keya);
         assertEquals(2,_pool.getNumActive(keya));
         assertEquals(0,_pool.getNumIdle(keya));
         _pool.returnObject(keya,obj1);
@@ -591,7 +591,7 @@ public abstract class TestKeyedObjectPool {
         _pool.clear(keya);
         assertEquals(0,_pool.getNumActive(keya));
         assertEquals(0,_pool.getNumIdle(keya));
-        Object obj2 = _pool.borrowObject(keya);
+        final Object obj2 = _pool.borrowObject(keya);
         assertEquals(getNthObject(keya,2),obj2);
         _pool.close();
     }
@@ -600,14 +600,14 @@ public abstract class TestKeyedObjectPool {
     public void testBaseInvalidateObject() throws Exception {
         try {
             _pool = makeEmptyPool(3);
-        } catch(UnsupportedOperationException uoe) {
+        } catch(final UnsupportedOperationException uoe) {
             return; // skip this test if unsupported
         }
-        Object keya = makeKey(0);
+        final Object keya = makeKey(0);
         assertEquals(0,_pool.getNumActive(keya));
         assertEquals(0,_pool.getNumIdle(keya));
-        Object obj0 = _pool.borrowObject(keya);
-        Object obj1 = _pool.borrowObject(keya);
+        final Object obj0 = _pool.borrowObject(keya);
+        final Object obj1 = _pool.borrowObject(keya);
         assertEquals(2,_pool.getNumActive(keya));
         assertEquals(0,_pool.getNumIdle(keya));
         _pool.invalidateObject(keya,obj0);
@@ -623,10 +623,10 @@ public abstract class TestKeyedObjectPool {
     public void testBaseAddObject() throws Exception {
         try {
             _pool = makeEmptyPool(3);
-        } catch(UnsupportedOperationException uoe) {
+        } catch(final UnsupportedOperationException uoe) {
             return; // skip this test if unsupported
         }
-        Object key = makeKey(0);
+        final Object key = makeKey(0);
         try {
             assertEquals(0,_pool.getNumIdle());
             assertEquals(0,_pool.getNumActive());
@@ -637,7 +637,7 @@ public abstract class TestKeyedObjectPool {
             assertEquals(0,_pool.getNumActive());
             assertEquals(1,_pool.getNumIdle(key));
             assertEquals(0,_pool.getNumActive(key));
-            Object obj = _pool.borrowObject(key);
+            final Object obj = _pool.borrowObject(key);
             assertEquals(getNthObject(key,0),obj);
             assertEquals(0,_pool.getNumIdle());
             assertEquals(1,_pool.getNumActive());
@@ -648,7 +648,7 @@ public abstract class TestKeyedObjectPool {
             assertEquals(0,_pool.getNumActive());
             assertEquals(1,_pool.getNumIdle(key));
             assertEquals(0,_pool.getNumActive(key));
-        } catch(UnsupportedOperationException e) {
+        } catch(final UnsupportedOperationException e) {
             return; // skip this test if one of those calls is unsupported
         } finally {
             _pool.close();
@@ -757,7 +757,7 @@ public abstract class TestKeyedObjectPool {
         public PooledObject<Object> makeObject(final Object key) throws Exception {
             final MethodCall call = new MethodCall("makeObject", key);
             methodCalls.add(call);
-            int originalCount = this.count++;
+            final int originalCount = this.count++;
             if (makeObjectFail) {
                 throw new PrivateException("makeObject");
             }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/TestObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/TestObjectPool.java b/src/test/java/org/apache/commons/pool2/TestObjectPool.java
index fa7b449..8a679b4 100644
--- a/src/test/java/org/apache/commons/pool2/TestObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/TestObjectPool.java
@@ -56,25 +56,25 @@ public abstract class TestObjectPool {
         final ObjectPool<Object> pool;
         try {
             pool = makeEmptyPool(new MethodCallPoolableObjectFactory());
-        } catch (UnsupportedOperationException uoe) {
+        } catch (final UnsupportedOperationException uoe) {
             return; // test not supported
         }
-        Object o1 = pool.borrowObject();
-        Object o2 = pool.borrowObject();
+        final Object o1 = pool.borrowObject();
+        final Object o2 = pool.borrowObject();
 
         pool.close();
 
         try {
             pool.addObject();
             fail("A closed pool must throw an IllegalStateException when addObject is called.");
-        } catch (IllegalStateException ise) {
+        } catch (final IllegalStateException ise) {
             // expected
         }
 
         try {
             pool.borrowObject();
             fail("A closed pool must throw an IllegalStateException when borrowObject is called.");
-        } catch (IllegalStateException ise) {
+        } catch (final IllegalStateException ise) {
             // expected
         }
 
@@ -114,7 +114,7 @@ public abstract class TestObjectPool {
         final ObjectPool<Object> pool;
         try {
             pool = makeEmptyPool(factory);
-        } catch(UnsupportedOperationException uoe) {
+        } catch(final UnsupportedOperationException uoe) {
             return; // test not supported
         }
         final List<MethodCall> expectedMethods = new ArrayList<MethodCall>();
@@ -142,7 +142,7 @@ public abstract class TestObjectPool {
         try {
             pool.addObject();
             fail("Expected addObject to propagate makeObject exception.");
-        } catch (PrivateException pe) {
+        } catch (final PrivateException pe) {
             // expected
         }
         expectedMethods.add(new MethodCall("makeObject"));
@@ -156,7 +156,7 @@ public abstract class TestObjectPool {
         try {
             pool.addObject();
             fail("Expected addObject to propagate passivateObject exception.");
-        } catch (PrivateException pe) {
+        } catch (final PrivateException pe) {
             // expected
         }
         expectedMethods.add(new MethodCall("makeObject").returned(ONE));
@@ -176,7 +176,7 @@ public abstract class TestObjectPool {
         final ObjectPool<Object> pool;
         try {
             pool = makeEmptyPool(factory);
-        } catch (UnsupportedOperationException uoe) {
+        } catch (final UnsupportedOperationException uoe) {
             return; // test not supported
         }
         if (pool instanceof GenericObjectPool) {
@@ -204,7 +204,7 @@ public abstract class TestObjectPool {
         try {
             obj = pool.borrowObject();
             fail("Expected borrowObject to propagate makeObject exception.");
-        } catch (PrivateException pe) {
+        } catch (final PrivateException pe) {
             // expected
         }
         expectedMethods.add(new MethodCall("makeObject"));
@@ -221,7 +221,7 @@ public abstract class TestObjectPool {
         try {
             pool.borrowObject();
             fail("Expecting NoSuchElementException");
-        } catch (NoSuchElementException ex) {
+        } catch (final NoSuchElementException ex) {
             // Expected - newly created object will also fail to activate
         }
         // Idle object fails activation, new one created, also fails
@@ -240,7 +240,7 @@ public abstract class TestObjectPool {
         expectedMethods.add(new MethodCall("validateObject", ZERO));
         try {
             pool.borrowObject();
-        } catch (NoSuchElementException ex) {
+        } catch (final NoSuchElementException ex) {
             // Expected - newly created object will also fail to validate
         }
         // Idle object is activated, but fails validation.
@@ -260,7 +260,7 @@ public abstract class TestObjectPool {
         final ObjectPool<Object> pool;
         try {
             pool = makeEmptyPool(factory);
-        } catch (UnsupportedOperationException uoe) {
+        } catch (final UnsupportedOperationException uoe) {
             return; // test not supported
         }
         final List<MethodCall> expectedMethods = new ArrayList<MethodCall>();
@@ -321,7 +321,7 @@ public abstract class TestObjectPool {
         final ObjectPool<Object> pool;
         try {
             pool = makeEmptyPool(factory);
-        } catch (UnsupportedOperationException uoe) {
+        } catch (final UnsupportedOperationException uoe) {
             return; // test not supported
         }
         final List<MethodCall> expectedMethods = new ArrayList<MethodCall>();
@@ -345,7 +345,7 @@ public abstract class TestObjectPool {
         try {
             pool.invalidateObject(obj);
             fail("Expecting destroy exception to propagate");
-        } catch (PrivateException ex) {
+        } catch (final PrivateException ex) {
             // Expected
         }
         Thread.sleep(250); // could be defered
@@ -360,7 +360,7 @@ public abstract class TestObjectPool {
         final ObjectPool<Object> pool;
         try {
             pool = makeEmptyPool(factory);
-        } catch (UnsupportedOperationException uoe) {
+        } catch (final UnsupportedOperationException uoe) {
             return; // test not supported
         }
         final List<MethodCall> expectedMethods = new ArrayList<MethodCall>();
@@ -383,7 +383,7 @@ public abstract class TestObjectPool {
         ObjectPool<Object> pool;
         try {
             pool = makeEmptyPool(factory);
-        } catch (UnsupportedOperationException uoe) {
+        } catch (final UnsupportedOperationException uoe) {
             return; // test not supported
         }
         final List<MethodCall> expectedMethods = new ArrayList<MethodCall>();
@@ -396,7 +396,7 @@ public abstract class TestObjectPool {
         //// Test exception handling close should swallow failures
         try {
             pool = makeEmptyPool(factory);
-        } catch (UnsupportedOperationException uoe) {
+        } catch (final UnsupportedOperationException uoe) {
             return; // test not supported
         }
         reset(pool, factory, expectedMethods);
@@ -410,7 +410,7 @@ public abstract class TestObjectPool {
         ObjectPool<Object> pool;
         try {
             pool = makeEmptyPool(new MethodCallPoolableObjectFactory());
-        } catch (UnsupportedOperationException uoe) {
+        } catch (final UnsupportedOperationException uoe) {
             return; // test not supported
         }
         pool.toString();
@@ -418,9 +418,9 @@ public abstract class TestObjectPool {
     }
 
     static void removeDestroyObjectCall(List<MethodCall> calls) {
-        Iterator<MethodCall> iter = calls.iterator();
+        final Iterator<MethodCall> iter = calls.iterator();
         while (iter.hasNext()) {
-            MethodCall call = iter.next();
+            final MethodCall call = iter.next();
             if ("destroyObject".equals(call.getName())) {
                 iter.remove();
             }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/TestPoolUtils.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/TestPoolUtils.java b/src/test/java/org/apache/commons/pool2/TestPoolUtils.java
index dc3ca3c..0667be1 100644
--- a/src/test/java/org/apache/commons/pool2/TestPoolUtils.java
+++ b/src/test/java/org/apache/commons/pool2/TestPoolUtils.java
@@ -64,23 +64,23 @@ public class TestPoolUtils {
     public void testCheckRethrow() {
         try {
             PoolUtils.checkRethrow(new Exception());
-        } catch (Throwable t) {
+        } catch (final Throwable t) {
             fail("PoolUtils.checkRethrow(Throwable) must rethrow only ThreadDeath and VirtualMachineError.");
         }
         try {
             PoolUtils.checkRethrow(new ThreadDeath());
             fail("PoolUtils.checkRethrow(Throwable) must rethrow ThreadDeath.");
-        } catch (ThreadDeath td) {
+        } catch (final ThreadDeath td) {
             // expected
-        } catch (Throwable t) {
+        } catch (final Throwable t) {
             fail("PoolUtils.checkRethrow(Throwable) must rethrow only ThreadDeath and VirtualMachineError.");
         }
         try {
             PoolUtils.checkRethrow(new InternalError()); // InternalError extends VirtualMachineError
             fail("PoolUtils.checkRethrow(Throwable) must rethrow VirtualMachineError.");
-        } catch (VirtualMachineError td) {
+        } catch (final VirtualMachineError td) {
             // expected
-        } catch (Throwable t) {
+        } catch (final Throwable t) {
             fail("PoolUtils.checkRethrow(Throwable) must rethrow only ThreadDeath and VirtualMachineError.");
         }
     }
@@ -95,7 +95,7 @@ public class TestPoolUtils {
         try {
             PoolUtils.checkMinIdle(null, 1, 1);
             fail("PoolUtils.checkMinIdle(ObjectPool,,) must not allow null pool.");
-        } catch (IllegalArgumentException iae) {
+        } catch (final IllegalArgumentException iae) {
             // expected
         }
         try {
@@ -103,7 +103,7 @@ public class TestPoolUtils {
             final ObjectPool<Object> pool = createProxy(ObjectPool.class, (List<String>)null);
             PoolUtils.checkMinIdle(pool, -1, 1);
             fail("PoolUtils.checkMinIdle(ObjectPool,,) must not accept negative min idle values.");
-        } catch (IllegalArgumentException iae) {
+        } catch (final IllegalArgumentException iae) {
             // expected
         }
 
@@ -149,7 +149,7 @@ public class TestPoolUtils {
                 }
                 expectedMethods.add("toString");
                 assertEquals(expectedMethods, calledMethods); // may fail because of the thread scheduler
-            } catch (AssertionFailedError e) {
+            } catch (final AssertionFailedError e) {
                 afe = e;
             }
         } while (--triesLeft > 0 && afe != null);
@@ -163,7 +163,7 @@ public class TestPoolUtils {
         try {
             PoolUtils.checkMinIdle(null, new Object(), 1, 1);
             fail("PoolUtils.checkMinIdle(KeyedObjectPool,Object,int,long) must not allow null pool.");
-        } catch (IllegalArgumentException iae) {
+        } catch (final IllegalArgumentException iae) {
             // expected
         }
         try {
@@ -171,7 +171,7 @@ public class TestPoolUtils {
             final KeyedObjectPool<Object,Object> pool = createProxy(KeyedObjectPool.class, (List<String>)null);
             PoolUtils.checkMinIdle(pool, (Object)null, 1, 1);
             fail("PoolUtils.checkMinIdle(KeyedObjectPool,Object,int,long) must not accept null keys.");
-        } catch (IllegalArgumentException iae) {
+        } catch (final IllegalArgumentException iae) {
             // expected
         }
         try {
@@ -179,7 +179,7 @@ public class TestPoolUtils {
             final KeyedObjectPool<Object,Object> pool = createProxy(KeyedObjectPool.class, (List<String>)null);
             PoolUtils.checkMinIdle(pool, new Object(), -1, 1);
             fail("PoolUtils.checkMinIdle(KeyedObjectPool,Object,int,long) must not accept negative min idle values.");
-        } catch (IllegalArgumentException iae) {
+        } catch (final IllegalArgumentException iae) {
             // expected
         }
 
@@ -229,7 +229,7 @@ public class TestPoolUtils {
                 }
                 expectedMethods.add("toString");
                 assertEquals(expectedMethods, calledMethods); // may fail because of the thread scheduler
-            } catch (AssertionFailedError e) {
+            } catch (final AssertionFailedError e) {
                 afe = e;
             }
         } while (--triesLeft > 0 && afe != null);
@@ -245,7 +245,7 @@ public class TestPoolUtils {
             final KeyedObjectPool<Object,Object> pool = createProxy(KeyedObjectPool.class, (List<String>)null);
             PoolUtils.checkMinIdle(pool, (Collection<?>) null, 1, 1);
             fail("PoolUtils.checkMinIdle(KeyedObjectPool,Collection,int,long) must not accept null keys.");
-        } catch (IllegalArgumentException iae) {
+        } catch (final IllegalArgumentException iae) {
             // expected
         }
 
@@ -253,7 +253,7 @@ public class TestPoolUtils {
             @SuppressWarnings("unchecked")
             final KeyedObjectPool<Object,Object> pool = createProxy(KeyedObjectPool.class, (List<String>)null);
             PoolUtils.checkMinIdle(pool, (Collection<?>) Collections.emptyList(), 1, 1);
-        } catch (IllegalArgumentException iae) {
+        } catch (final IllegalArgumentException iae) {
             fail("PoolUtils.checkMinIdle(KeyedObjectPool,Collection,int,long) must accept empty lists.");
         }
 
@@ -272,7 +272,7 @@ public class TestPoolUtils {
                 final Map<String, TimerTask> tasks = PoolUtils.checkMinIdle(pool, keys, 1, CHECK_PERIOD); // checks minIdle immediately
 
                 Thread.sleep(CHECK_SLEEP_PERIOD); // will check CHECK_COUNT more times.
-                for (TimerTask task : tasks.values()) {
+                for (final TimerTask task : tasks.values()) {
                     task.cancel();
                 }
 
@@ -282,7 +282,7 @@ public class TestPoolUtils {
                     expectedMethods.add("addObject");
                 }
                 assertEquals(expectedMethods, calledMethods); // may fail because of the thread scheduler
-            } catch (AssertionFailedError e) {
+            } catch (final AssertionFailedError e) {
                 afe = e;
             }
         } while (--triesLeft > 0 && afe != null);
@@ -296,7 +296,7 @@ public class TestPoolUtils {
         try {
             PoolUtils.prefill(null, 1);
             fail("PoolUtils.prefill(ObjectPool,int) must not allow null pool.");
-        } catch (IllegalArgumentException iae) {
+        } catch (final IllegalArgumentException iae) {
             // expected
         }
 
@@ -321,7 +321,7 @@ public class TestPoolUtils {
         try {
             PoolUtils.prefill(null, new Object(), 1);
             fail("PoolUtils.prefill(KeyedObjectPool,Object,int) must not accept null pool.");
-        } catch (IllegalArgumentException iae) {
+        } catch (final IllegalArgumentException iae) {
             // expected
         }
         try {
@@ -329,7 +329,7 @@ public class TestPoolUtils {
             final KeyedObjectPool<Object,Object> pool = createProxy(KeyedObjectPool.class, (List<String>)null);
             PoolUtils.prefill(pool, (Object)null, 1);
             fail("PoolUtils.prefill(KeyedObjectPool,Object,int) must not accept null key.");
-        } catch (IllegalArgumentException iae) {
+        } catch (final IllegalArgumentException iae) {
             // expected
         }
 
@@ -356,7 +356,7 @@ public class TestPoolUtils {
             final KeyedObjectPool<String,String> pool = createProxy(KeyedObjectPool.class, (List<String>)null);
             PoolUtils.prefill(pool, (Collection<String>)null, 1);
             fail("PoolUtils.prefill(KeyedObjectPool,Collection,int) must not accept null keys.");
-        } catch (IllegalArgumentException iae) {
+        } catch (final IllegalArgumentException iae) {
             // expected
         }
 
@@ -385,7 +385,7 @@ public class TestPoolUtils {
         try {
             PoolUtils.synchronizedPool((ObjectPool<Object>)null);
             fail("PoolUtils.synchronizedPool(ObjectPool) must not allow a null pool.");
-        } catch(IllegalArgumentException iae) {
+        } catch(final IllegalArgumentException iae) {
             // expected
         }
 
@@ -405,7 +405,7 @@ public class TestPoolUtils {
         try {
             PoolUtils.synchronizedPool((KeyedObjectPool<Object,Object>)null);
             fail("PoolUtils.synchronizedPool(KeyedObjectPool) must not allow a null pool.");
-        } catch(IllegalArgumentException iae) {
+        } catch(final IllegalArgumentException iae) {
             // expected
         }
 
@@ -425,7 +425,7 @@ public class TestPoolUtils {
         try {
             PoolUtils.synchronizedPooledFactory((PooledObjectFactory<Object>)null);
             fail("PoolUtils.synchronizedPoolableFactory(PoolableObjectFactory) must not allow a null factory.");
-        } catch(IllegalArgumentException iae) {
+        } catch(final IllegalArgumentException iae) {
             // expected
         }
 
@@ -446,7 +446,7 @@ public class TestPoolUtils {
         try {
             PoolUtils.synchronizedKeyedPooledFactory((KeyedPooledObjectFactory<Object,Object>)null);
             fail("PoolUtils.synchronizedPoolableFactory(KeyedPoolableObjectFactory) must not allow a null factory.");
-        } catch(IllegalArgumentException iae) {
+        } catch(final IllegalArgumentException iae) {
             // expected
         }
 
@@ -467,14 +467,14 @@ public class TestPoolUtils {
         try {
             PoolUtils.erodingPool((ObjectPool<Object>)null);
             fail("PoolUtils.erodingPool(ObjectPool) must not allow a null pool.");
-        } catch(IllegalArgumentException iae) {
+        } catch(final IllegalArgumentException iae) {
             // expected
         }
 
         try {
             PoolUtils.erodingPool((ObjectPool<Object>)null, 1f);
             fail("PoolUtils.erodingPool(ObjectPool, float) must not allow a null pool.");
-        } catch(IllegalArgumentException iae) {
+        } catch(final IllegalArgumentException iae) {
             // expected
         }
 
@@ -493,14 +493,15 @@ public class TestPoolUtils {
 
         try {
             @SuppressWarnings({"unchecked", "unused"})
+            final
             Object o = PoolUtils.erodingPool(createProxy(ObjectPool.class, handler), -1f);
             fail("PoolUtils.erodingPool(ObjectPool, float) must not allow a non-positive factor.");
-        } catch(IllegalArgumentException iae) {
+        } catch(final IllegalArgumentException iae) {
             // expected
         }
 
         // If the logic behind PoolUtils.erodingPool changes then this will need to be tweaked.
-        float factor = 0.01f; // about ~9 seconds until first discard
+        final float factor = 0.01f; // about ~9 seconds until first discard
         @SuppressWarnings("unchecked")
         final ObjectPool<Object> pool = PoolUtils.erodingPool(
                 createProxy(ObjectPool.class, handler), factor);
@@ -559,6 +560,7 @@ public class TestPoolUtils {
     @Test
     public void testErodingObjectPoolDefaultFactor() {
         @SuppressWarnings("unchecked")
+        final
         ObjectPool<Object> internalPool = createProxy(ObjectPool.class, new InvocationHandler() {
             @Override
             public Object invoke(Object arg0, Method arg1, Object[] arg2)
@@ -566,8 +568,8 @@ public class TestPoolUtils {
                 return null;
             }
         });
-        ObjectPool<Object> pool = PoolUtils.erodingPool(internalPool);
-        String expectedToString = "ErodingObjectPool{factor=ErodingFactor{factor=1.0, idleHighWaterMark=1}, pool=" + internalPool + "}";
+        final ObjectPool<Object> pool = PoolUtils.erodingPool(internalPool);
+        final String expectedToString = "ErodingObjectPool{factor=ErodingFactor{factor=1.0, idleHighWaterMark=1}, pool=" + internalPool + "}";
         // The factor is not exposed, but will be printed in the toString() method
         // In this case since we didn't pass one, the default 1.0f will be printed
         assertEquals(expectedToString, pool.toString());
@@ -578,21 +580,21 @@ public class TestPoolUtils {
         try {
             PoolUtils.erodingPool((KeyedObjectPool<Object,Object>)null);
             fail("PoolUtils.erodingPool(KeyedObjectPool) must not allow a null pool.");
-        } catch(IllegalArgumentException iae) {
+        } catch(final IllegalArgumentException iae) {
             // expected
         }
 
         try {
             PoolUtils.erodingPool((KeyedObjectPool<Object,Object>)null, 1f);
             fail("PoolUtils.erodingPool(KeyedObjectPool, float) must not allow a null pool.");
-        } catch(IllegalArgumentException iae) {
+        } catch(final IllegalArgumentException iae) {
             // expected
         }
 
         try {
             PoolUtils.erodingPool((KeyedObjectPool<Object,Object>)null, 1f, true);
             fail("PoolUtils.erodingPool(KeyedObjectPool, float, boolean) must not allow a null pool.");
-        } catch(IllegalArgumentException iae) {
+        } catch(final IllegalArgumentException iae) {
             // expected
         }
 
@@ -611,22 +613,24 @@ public class TestPoolUtils {
 
         try {
             @SuppressWarnings({"unchecked", "unused"})
+            final
             Object o = PoolUtils.erodingPool(createProxy(KeyedObjectPool.class, handler), 0f);
             fail("PoolUtils.erodingPool(ObjectPool, float) must not allow a non-positive factor.");
-        } catch(IllegalArgumentException iae) {
+        } catch(final IllegalArgumentException iae) {
             // expected
         }
 
         try {
             @SuppressWarnings({"unchecked", "unused"})
+            final
             Object o = PoolUtils.erodingPool(createProxy(KeyedObjectPool.class, handler), 0f, false);
             fail("PoolUtils.erodingPool(ObjectPool, float, boolean) must not allow a non-positive factor.");
-        } catch(IllegalArgumentException iae) {
+        } catch(final IllegalArgumentException iae) {
             // expected
         }
 
         // If the logic behind PoolUtils.erodingPool changes then this will need to be tweaked.
-        float factor = 0.01f; // about ~9 seconds until first discard
+        final float factor = 0.01f; // about ~9 seconds until first discard
         @SuppressWarnings("unchecked")
         final KeyedObjectPool<Object,Object> pool =
             PoolUtils.erodingPool(createProxy(KeyedObjectPool.class, handler), factor);
@@ -687,6 +691,7 @@ public class TestPoolUtils {
     @Test
     public void testErodingPoolKeyedObjectPoolDefaultFactor() {
         @SuppressWarnings("unchecked")
+        final
         KeyedObjectPool<Object, Object> internalPool = createProxy(KeyedObjectPool.class, new InvocationHandler() {
             @Override
             public Object invoke(Object arg0, Method arg1, Object[] arg2)
@@ -694,8 +699,8 @@ public class TestPoolUtils {
                 return null;
             }
         });
-        KeyedObjectPool<Object, Object> pool = PoolUtils.erodingPool(internalPool);
-        String expectedToString = "ErodingKeyedObjectPool{factor=ErodingFactor{factor=1.0, idleHighWaterMark=1}, keyedPool=" + internalPool + "}";
+        final KeyedObjectPool<Object, Object> pool = PoolUtils.erodingPool(internalPool);
+        final String expectedToString = "ErodingKeyedObjectPool{factor=ErodingFactor{factor=1.0, idleHighWaterMark=1}, keyedPool=" + internalPool + "}";
         // The factor is not exposed, but will be printed in the toString() method
         // In this case since we didn't pass one, the default 1.0f will be printed
         assertEquals(expectedToString, pool.toString());
@@ -706,21 +711,21 @@ public class TestPoolUtils {
         try {
             PoolUtils.erodingPool((KeyedObjectPool<Object,Object>)null, 1f, true);
             fail("PoolUtils.erodingPool(KeyedObjectPool) must not allow a null pool.");
-        } catch(IllegalArgumentException iae) {
+        } catch(final IllegalArgumentException iae) {
             // expected
         }
 
         try {
             PoolUtils.erodingPool((KeyedObjectPool<Object,Object>)null, 0f, true);
             fail("PoolUtils.erodingPool(ObjectPool, float, boolean) must not allow a non-positive factor.");
-        } catch(IllegalArgumentException iae) {
+        } catch(final IllegalArgumentException iae) {
             // expected
         }
 
         try {
             PoolUtils.erodingPool((KeyedObjectPool<Object,Object>)null, 1f, true);
             fail("PoolUtils.erodingPool(KeyedObjectPool, float, boolean) must not allow a null pool.");
-        } catch(IllegalArgumentException iae) {
+        } catch(final IllegalArgumentException iae) {
             // expected
         }
 
@@ -738,7 +743,7 @@ public class TestPoolUtils {
         };
 
         // If the logic behind PoolUtils.erodingPool changes then this will need to be tweaked.
-        float factor = 0.01f; // about ~9 seconds until first discard
+        final float factor = 0.01f; // about ~9 seconds until first discard
         @SuppressWarnings("unchecked")
         final KeyedObjectPool<Object,Object> pool = PoolUtils.erodingPool(
                 createProxy(KeyedObjectPool.class, handler), factor, true);
@@ -782,7 +787,7 @@ public class TestPoolUtils {
         expectedMethods.add("invalidateObject");
         assertEquals(expectedMethods, calledMethods);
 
-        String expectedToString = "ErodingPerKeyKeyedObjectPool{factor="+factor+", keyedPool=null}";
+        final String expectedToString = "ErodingPerKeyKeyedObjectPool{factor="+factor+", keyedPool=null}";
         assertEquals(expectedToString, pool.toString());
     }
 
@@ -791,7 +796,7 @@ public class TestPoolUtils {
      */
     @Test
     public void testTimerHolder() {
-        PoolUtils.TimerHolder h = new PoolUtils.TimerHolder();
+        final PoolUtils.TimerHolder h = new PoolUtils.TimerHolder();
         assertNotNull(h);
         assertNotNull(PoolUtils.TimerHolder.MIN_IDLE_TIMER);
     }
@@ -873,6 +878,7 @@ public class TestPoolUtils {
 
     private static <T> T createProxy(final Class<T> clazz, final InvocationHandler handler) {
         @SuppressWarnings("unchecked")
+        final
         T ret = (T) Proxy.newProxyInstance(
                 clazz.getClassLoader(), new Class[] { clazz }, handler);
         return ret;

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/Waiter.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/Waiter.java b/src/test/java/org/apache/commons/pool2/Waiter.java
index 1c310a6..fe8e689 100644
--- a/src/test/java/org/apache/commons/pool2/Waiter.java
+++ b/src/test/java/org/apache/commons/pool2/Waiter.java
@@ -50,7 +50,7 @@ public class Waiter {
     public void doWait() {
         try {
             Thread.sleep(latency);
-        } catch (InterruptedException ex) {
+        } catch (final InterruptedException ex) {
             // ignore
         }
     }
@@ -166,7 +166,7 @@ public class Waiter {
 
     @Override
     public String toString() {
-        StringBuilder buff = new StringBuilder();
+        final StringBuilder buff = new StringBuilder();
         buff.append("ID = " + id + "\n");
         buff.append("valid = " + valid + "\n");
         buff.append("active = " + active + "\n");

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/WaiterFactory.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/WaiterFactory.java b/src/test/java/org/apache/commons/pool2/WaiterFactory.java
index c942b47..7727e25 100644
--- a/src/test/java/org/apache/commons/pool2/WaiterFactory.java
+++ b/src/test/java/org/apache/commons/pool2/WaiterFactory.java
@@ -148,7 +148,7 @@ KeyedPooledObjectFactory<K,Waiter> {
         }
         try {
             Thread.sleep(latency);
-        } catch (InterruptedException ex) {
+        } catch (final InterruptedException ex) {
             // ignore
         }
     }
@@ -158,9 +158,9 @@ KeyedPooledObjectFactory<K,Waiter> {
         if (activeCounts.isEmpty()) {
             return;
         }
-        Iterator<K> it = activeCounts.keySet().iterator();
+        final Iterator<K> it = activeCounts.keySet().iterator();
         while (it.hasNext()) {
-            K key = it.next();
+            final K key = it.next();
             activeCounts.put(key, Integer.valueOf(0));
         }
     }
@@ -183,7 +183,7 @@ KeyedPooledObjectFactory<K,Waiter> {
     public void destroyObject(K key,PooledObject<Waiter> obj) throws Exception {
         destroyObject(obj);
         synchronized (this) {
-            Integer count = activeCounts.get(key);
+            final Integer count = activeCounts.get(key);
             activeCounts.put(key, Integer.valueOf(count.intValue() - 1));
         }
     }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java
index bd39814..3c0ef81 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java
@@ -62,20 +62,20 @@ public class TestAbandonedObjectPool {
 
     @After
     public void tearDown() throws Exception {
-        String poolName = pool.getJmxName().toString();
+        final String poolName = pool.getJmxName().toString();
         pool.clear();
         pool.close();
         pool = null;
 
-        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
-        Set<ObjectName> result = mbs.queryNames(new ObjectName(
+        final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+        final Set<ObjectName> result = mbs.queryNames(new ObjectName(
                 "org.apache.commoms.pool2:type=GenericObjectPool,*"), null);
         // There should be no registered pools at this point
-        int registeredPoolCount = result.size();
-        StringBuilder msg = new StringBuilder("Current pool is: ");
+        final int registeredPoolCount = result.size();
+        final StringBuilder msg = new StringBuilder("Current pool is: ");
         msg.append(poolName);
         msg.append("  Still open pools are: ");
-        for (ObjectName name : result) {
+        for (final ObjectName name : result) {
             // Clean these up ready for the next test
             msg.append(name.toString());
             msg.append(" created via\n");
@@ -100,7 +100,7 @@ public class TestAbandonedObjectPool {
         pool.setBlockWhenExhausted(false);
 
         // Exhaust the connection pool
-        ArrayList<PooledTestObject> vec = new ArrayList<PooledTestObject>();
+        final ArrayList<PooledTestObject> vec = new ArrayList<PooledTestObject>();
         for (int i = 0; i < POOL_SIZE; i++) {
             vec.add(pool.borrowObject());
         }
@@ -112,7 +112,7 @@ public class TestAbandonedObjectPool {
 
         // Try launching a bunch of borrows concurrently.  Abandoned sweep will be triggered for each.
         final int CONCURRENT_BORROWS = 5;
-        Thread[] threads = new Thread[CONCURRENT_BORROWS];
+        final Thread[] threads = new Thread[CONCURRENT_BORROWS];
         for (int i = 0; i < CONCURRENT_BORROWS; i++) {
             threads[i] = new ConcurrentBorrower(vec);
             threads[i].start();
@@ -125,7 +125,7 @@ public class TestAbandonedObjectPool {
 
         // Return all objects that have not been destroyed
         for (int i = 0; i < vec.size(); i++) {
-            PooledTestObject pto = vec.get(i);
+            final PooledTestObject pto = vec.get(i);
             if (pto.isActive()) {
                 pool.returnObject(pto);
             }
@@ -162,7 +162,7 @@ public class TestAbandonedObjectPool {
             throw new NullPointerException("Unable to borrow object from pool");
         }
         final int deadMansHash = obj.hashCode();
-        ConcurrentReturner returner = new ConcurrentReturner(obj);
+        final ConcurrentReturner returner = new ConcurrentReturner(obj);
         Thread.sleep(2000);  // abandon checked out instances
         // Now start a race - returner waits until borrowObject has kicked
         // off removeAbandoned and then returns an instance that borrowObject
@@ -228,10 +228,10 @@ public class TestAbandonedObjectPool {
         // Borrow an object, wait long enough for it to be abandoned
         // then arrange for evictor to run while it is being returned
         // validation takes a second, evictor runs every 500 ms
-        PooledTestObject obj = pool.borrowObject();
+        final PooledTestObject obj = pool.borrowObject();
         Thread.sleep(50);       // abandon obj
         pool.returnObject(obj); // evictor will run during validation
-        PooledTestObject obj2 = pool.borrowObject();
+        final PooledTestObject obj2 = pool.borrowObject();
         Assert.assertEquals(obj, obj2);          // should get original back
         Assert.assertTrue(!obj2.isDestroyed());  // and not destroyed
     }
@@ -254,11 +254,12 @@ public class TestAbandonedObjectPool {
         pool.setMaxTotal(1);
 
         @SuppressWarnings("unused") // This is going to be abandoned
+        final
         PooledTestObject o1 = pool.borrowObject();
 
-        long start = System.currentTimeMillis();
-        PooledTestObject o2 = pool.borrowObject(5000);
-        long end = System.currentTimeMillis();
+        final long start = System.currentTimeMillis();
+        final PooledTestObject o2 = pool.borrowObject(5000);
+        final long end = System.currentTimeMillis();
 
         pool.returnObject(o2);
 
@@ -273,12 +274,12 @@ public class TestAbandonedObjectPool {
         abandonedConfig.setRemoveAbandonedOnMaintenance(true);
         abandonedConfig.setLogAbandoned(true);
         abandonedConfig.setRemoveAbandonedTimeout(1);
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        PrintWriter pw = new PrintWriter(new BufferedOutputStream(baos));
+        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        final PrintWriter pw = new PrintWriter(new BufferedOutputStream(baos));
         abandonedConfig.setLogWriter(pw);
         pool.setAbandonedConfig(abandonedConfig);
         pool.setTimeBetweenEvictionRunsMillis(100);
-        PooledTestObject o1 = pool.borrowObject();
+        final PooledTestObject o1 = pool.borrowObject();
         Thread.sleep(2000);
         Assert.assertTrue(o1.isDestroyed());
         Assert.assertTrue(baos.toString().indexOf("Pooled object") >= 0);
@@ -295,7 +296,7 @@ public class TestAbandonedObjectPool {
         public void run() {
             try {
                 _borrowed.add(pool.borrowObject());
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // expected in most cases
             }
         }
@@ -311,7 +312,7 @@ public class TestAbandonedObjectPool {
             try {
                 sleep(20);
                 pool.returnObject(returned);
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // ignore
             }
         }
@@ -341,7 +342,7 @@ public class TestAbandonedObjectPool {
         public boolean validateObject(PooledObject<PooledTestObject> obj) {
             try {
                 Thread.sleep(validateLatency);
-            } catch (Exception ex) {
+            } catch (final Exception ex) {
                 // ignore
             }
             return true;

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/impl/TestBaseGenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestBaseGenericObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestBaseGenericObjectPool.java
index c57173b..449bb1f 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestBaseGenericObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestBaseGenericObjectPool.java
@@ -46,7 +46,7 @@ public class TestBaseGenericObjectPool {
     
     @Test
     public void testBorrowWaitStatistics() {
-        DefaultPooledObject<String> p = (DefaultPooledObject<String>) factory.makeObject();
+        final DefaultPooledObject<String> p = (DefaultPooledObject<String>) factory.makeObject();
         pool.updateStatsBorrow(p, 10);
         pool.updateStatsBorrow(p, 20);
         pool.updateStatsBorrow(p, 20);
@@ -56,7 +56,7 @@ public class TestBaseGenericObjectPool {
     }
 
     public void testBorrowWaitStatisticsMax() {
-        DefaultPooledObject<String> p = (DefaultPooledObject<String>) factory.makeObject();
+        final DefaultPooledObject<String> p = (DefaultPooledObject<String>) factory.makeObject();
         Assert.assertEquals(0, pool.getMaxBorrowWaitTimeMillis(), Double.MIN_VALUE);
         pool.updateStatsBorrow(p, 0);
         Assert.assertEquals(0, pool.getMaxBorrowWaitTimeMillis(), Double.MIN_VALUE);

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObject.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObject.java b/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObject.java
index 91c8492..07f1629 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObject.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObject.java
@@ -36,9 +36,9 @@ public class TestDefaultPooledObject {
     public void testgetIdleTimeMillis() throws Exception {
         final DefaultPooledObject<Object> dpo = new DefaultPooledObject<Object>(new Object());
         final AtomicBoolean negativeIdleTimeReturned = new AtomicBoolean(false);
-        ExecutorService executor = Executors.newFixedThreadPool(
+        final ExecutorService executor = Executors.newFixedThreadPool(
                                       Runtime.getRuntime().availableProcessors()*3);
-        Runnable allocateAndDeallocateTask = new Runnable() {
+        final Runnable allocateAndDeallocateTask = new Runnable() {
             public void run() {
                 for (int i=0;i<10000;i++) {
                     if (dpo.getIdleTimeMillis() < 0) {
@@ -56,7 +56,7 @@ public class TestDefaultPooledObject {
                 dpo.deallocate();
             }
         };
-        Runnable getIdleTimeTask = new Runnable() {
+        final Runnable getIdleTimeTask = new Runnable() {
             public void run() {
                 for (int i=0;i<10000;i++) {
                     if (dpo.getIdleTimeMillis() < 0) {
@@ -66,14 +66,14 @@ public class TestDefaultPooledObject {
                 }
             }
         };
-        double probabilityOfAllocationTask = 0.7;
-        List<Future<?>> futures = new ArrayList<Future<?>>();
+        final double probabilityOfAllocationTask = 0.7;
+        final List<Future<?>> futures = new ArrayList<Future<?>>();
         for (int i = 1; i <= 10000; i++) {
-            Runnable randomTask = Math.random() < probabilityOfAllocationTask ?
+            final Runnable randomTask = Math.random() < probabilityOfAllocationTask ?
                                   allocateAndDeallocateTask : getIdleTimeTask;
             futures.add(executor.submit(randomTask));
         }
-        for (Future<?> future: futures) {
+        for (final Future<?> future: futures) {
             future.get();
         }
         Assert.assertFalse(

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObjectInfo.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObjectInfo.java b/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObjectInfo.java
index 8aa8389..584dd82 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObjectInfo.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObjectInfo.java
@@ -28,36 +28,36 @@ public class TestDefaultPooledObjectInfo {
 
     @Test
     public void testTiming() throws Exception {
-        GenericObjectPool<String> pool =
+        final GenericObjectPool<String> pool =
                 new GenericObjectPool<String>(new SimpleFactory());
 
-        long t1 = System.currentTimeMillis();
+        final long t1 = System.currentTimeMillis();
 
         Thread.sleep(50);
-        String s1 = pool.borrowObject();
+        final String s1 = pool.borrowObject();
         Thread.sleep(50);
 
-        long t2 = System.currentTimeMillis();
+        final long t2 = System.currentTimeMillis();
 
         Thread.sleep(50);
         pool.returnObject(s1);
         Thread.sleep(50);
 
-        long t3 = System.currentTimeMillis();
+        final long t3 = System.currentTimeMillis();
 
         Thread.sleep(50);
         pool.borrowObject();
         Thread.sleep(50);
 
-        long t4 = System.currentTimeMillis();
+        final long t4 = System.currentTimeMillis();
 
-        Set<DefaultPooledObjectInfo> strings = pool.listAllObjects();
+        final Set<DefaultPooledObjectInfo> strings = pool.listAllObjects();
 
         Assert.assertEquals(1, strings.size());
 
-        DefaultPooledObjectInfo s1Info = strings.iterator().next();
+        final DefaultPooledObjectInfo s1Info = strings.iterator().next();
 
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
+        final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
 
         Assert.assertTrue(s1Info.getCreateTime() > t1);
         Assert.assertEquals(sdf.format(Long.valueOf(s1Info.getCreateTime())),
@@ -77,16 +77,16 @@ public class TestDefaultPooledObjectInfo {
 
     @Test
     public void testGetPooledObjectType() throws Exception {
-        GenericObjectPool<String> pool =
+        final GenericObjectPool<String> pool =
                 new GenericObjectPool<String>(new SimpleFactory());
 
         pool.borrowObject();
 
-        Set<DefaultPooledObjectInfo> strings = pool.listAllObjects();
+        final Set<DefaultPooledObjectInfo> strings = pool.listAllObjects();
 
         Assert.assertEquals(1, strings.size());
 
-        DefaultPooledObjectInfo s1Info = strings.iterator().next();
+        final DefaultPooledObjectInfo s1Info = strings.iterator().next();
 
         Assert.assertEquals(String.class.getName(),
                 s1Info.getPooledObjectType());
@@ -94,28 +94,28 @@ public class TestDefaultPooledObjectInfo {
 
     @Test
     public void testGetPooledObjectToString() throws Exception {
-        GenericObjectPool<String> pool =
+        final GenericObjectPool<String> pool =
                 new GenericObjectPool<String>(new SimpleFactory());
 
-        String s1 = pool.borrowObject();
+        final String s1 = pool.borrowObject();
 
-        Set<DefaultPooledObjectInfo> strings = pool.listAllObjects();
+        final Set<DefaultPooledObjectInfo> strings = pool.listAllObjects();
 
         Assert.assertEquals(1, strings.size());
 
-        DefaultPooledObjectInfo s1Info = strings.iterator().next();
+        final DefaultPooledObjectInfo s1Info = strings.iterator().next();
 
         Assert.assertEquals(s1, s1Info.getPooledObjectToString());
     }
 
     @Test
     public void testGetLastBorrowTrace() throws Exception {
-        AbandonedConfig abandonedConfig = new AbandonedConfig();
+        final AbandonedConfig abandonedConfig = new AbandonedConfig();
 
         abandonedConfig.setRemoveAbandonedOnBorrow(true);
         abandonedConfig.setRemoveAbandonedTimeout(1);
         abandonedConfig.setLogAbandoned(true);
-        GenericObjectPool<String> pool = new GenericObjectPool<String>(
+        final GenericObjectPool<String> pool = new GenericObjectPool<String>(
                 new SimpleFactory(),
                 new GenericObjectPoolConfig(),
                 abandonedConfig);
@@ -123,13 +123,13 @@ public class TestDefaultPooledObjectInfo {
         try {
             pool.borrowObject();
             //pool.returnObject(s1); // Object not returned, causes abandoned object created exception
-        } catch (AbandonedObjectCreatedException e) {
+        } catch (final AbandonedObjectCreatedException e) {
             // do nothing. We will print the stack trace later
         }
 
-        Set<DefaultPooledObjectInfo> strings = pool.listAllObjects();
-        DefaultPooledObjectInfo s1Info = strings.iterator().next();
-        String lastBorrowTrace = s1Info.getLastBorrowTrace();
+        final Set<DefaultPooledObjectInfo> strings = pool.listAllObjects();
+        final DefaultPooledObjectInfo s1Info = strings.iterator().next();
+        final String lastBorrowTrace = s1Info.getLastBorrowTrace();
 
         Assert.assertTrue(lastBorrowTrace.startsWith(AbandonedObjectCreatedException.class.getName()));
     }


[23/50] [abbrv] commons-pool git commit: Fix various IDE warnings

Posted by ma...@apache.org.
Fix various IDE warnings

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1735057 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/2566fd6c
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/2566fd6c
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/2566fd6c

Branch: refs/heads/master
Commit: 2566fd6c479f86f46a0f0a65c4587572100b5cfc
Parents: cd3f495
Author: Mark Thomas <ma...@apache.org>
Authored: Tue Mar 15 11:16:13 2016 +0000
Committer: Mark Thomas <ma...@apache.org>
Committed: Tue Mar 15 11:16:13 2016 +0000

----------------------------------------------------------------------
 src/main/java/org/apache/commons/pool2/BaseObject.java      | 9 +++++++--
 src/main/java/org/apache/commons/pool2/BaseObjectPool.java  | 1 +
 .../apache/commons/pool2/impl/BaseGenericObjectPool.java    | 7 ++++---
 .../org/apache/commons/pool2/impl/BaseObjectPoolConfig.java | 1 +
 .../commons/pool2/impl/GenericKeyedObjectPoolConfig.java    | 1 +
 .../apache/commons/pool2/impl/TestDefaultPooledObject.java  | 4 +++-
 .../org/apache/commons/pool2/impl/TestPoolImplUtils.java    | 2 ++
 7 files changed, 19 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/2566fd6c/src/main/java/org/apache/commons/pool2/BaseObject.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/BaseObject.java b/src/main/java/org/apache/commons/pool2/BaseObject.java
index 6a69abd..cc7f376 100644
--- a/src/main/java/org/apache/commons/pool2/BaseObject.java
+++ b/src/main/java/org/apache/commons/pool2/BaseObject.java
@@ -18,7 +18,7 @@ package org.apache.commons.pool2;
 
 /**
  * A base class for common functionality.
- * 
+ *
  * @since 2.4.3
  */
 public abstract class BaseObject {
@@ -33,8 +33,13 @@ public abstract class BaseObject {
         return builder.toString();
     }
 
+    /**
+     * Used by sub-classes to include the fields defined by the sub-class in the
+     * {@link #toString()} output.
+     *
+     * @param builder Field names and values are appended to this object
+     */
     protected void toStringAppendFields(final StringBuilder builder) {
         // do nothing by default, needed for b/w compatibility.
     }
-
 }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/2566fd6c/src/main/java/org/apache/commons/pool2/BaseObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/BaseObjectPool.java b/src/main/java/org/apache/commons/pool2/BaseObjectPool.java
index 2349622..7ef7187 100644
--- a/src/main/java/org/apache/commons/pool2/BaseObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/BaseObjectPool.java
@@ -119,6 +119,7 @@ public abstract class BaseObjectPool<T> extends BaseObject implements ObjectPool
 
     private volatile boolean closed = false;
 
+    @Override
     protected void toStringAppendFields(final StringBuilder builder) {
         builder.append("closed=");
         builder.append(closed);

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/2566fd6c/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
index 6eafcd1..6e197c9 100644
--- a/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
@@ -1176,7 +1176,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
         }
 
     }
-    
+
     /**
      * Wrapper for objects under management by the pool.
      *
@@ -1189,7 +1189,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
     static class IdentityWrapper<T> {
         /** Wrapped object */
         private final T instance;
-        
+
         /**
          * Create a wrapper for an instance.
          *
@@ -1209,7 +1209,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
         public boolean equals(final Object other) {
             return ((IdentityWrapper) other).instance == instance;
         }
-        
+
         /**
          * @return the wrapped object
          */
@@ -1227,6 +1227,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
         }
     }
 
+    @Override
     protected void toStringAppendFields(final StringBuilder builder) {
         builder.append("maxTotal=");
         builder.append(maxTotal);

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/2566fd6c/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java b/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
index 60b2384..2f1a595 100644
--- a/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
+++ b/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
@@ -640,6 +640,7 @@ public abstract class BaseObjectPoolConfig extends BaseObject implements Cloneab
         this.jmxNamePrefix = jmxNamePrefix;
     }
 
+    @Override
     protected void toStringAppendFields(final StringBuilder builder) {
         builder.append("lifo=");
         builder.append(lifo);

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/2566fd6c/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java
index bf05d53..2e201e5 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java
@@ -182,6 +182,7 @@ public class GenericKeyedObjectPoolConfig extends BaseObjectPoolConfig {
         }
     }
 
+    @Override
     protected void toStringAppendFields(final StringBuilder builder) {
         super.toStringAppendFields(builder);
         builder.append(", minIdlePerKey=");

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/2566fd6c/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObject.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObject.java b/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObject.java
index 07f1629..6484afd 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObject.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObject.java
@@ -27,7 +27,7 @@ import org.junit.Assert;
 import org.junit.Test;
 
 public class TestDefaultPooledObject {
-    
+
     /**
      * JIRA: POOL-279
      * @throws Exception
@@ -39,6 +39,7 @@ public class TestDefaultPooledObject {
         final ExecutorService executor = Executors.newFixedThreadPool(
                                       Runtime.getRuntime().availableProcessors()*3);
         final Runnable allocateAndDeallocateTask = new Runnable() {
+            @Override
             public void run() {
                 for (int i=0;i<10000;i++) {
                     if (dpo.getIdleTimeMillis() < 0) {
@@ -57,6 +58,7 @@ public class TestDefaultPooledObject {
             }
         };
         final Runnable getIdleTimeTask = new Runnable() {
+            @Override
             public void run() {
                 for (int i=0;i<10000;i++) {
                     if (dpo.getIdleTimeMillis() < 0) {

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/2566fd6c/src/test/java/org/apache/commons/pool2/impl/TestPoolImplUtils.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestPoolImplUtils.java b/src/test/java/org/apache/commons/pool2/impl/TestPoolImplUtils.java
index 6e0b20c..001b186 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestPoolImplUtils.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestPoolImplUtils.java
@@ -47,6 +47,7 @@ public class TestPoolImplUtils {
         }
     }
 
+    @SuppressWarnings("unused")
     private abstract static class FactoryAB<A,B>
             extends BasePooledObjectFactory<B> {
     }
@@ -57,6 +58,7 @@ public class TestPoolImplUtils {
     private abstract static class FactoryC<C> extends FactoryBA<C, String> {
     }
 
+    @SuppressWarnings("unused")
     private abstract static class FactoryDE<D,E> extends FactoryC<D>{
     }
 


[11/50] [abbrv] commons-pool git commit: Set svn:eol-style = native on Java files. No functional change.

Posted by ma...@apache.org.
Set svn:eol-style = native on Java files. No functional change.

Noted when running checks on the copy of Apache Commons Pool in Apache Tomcat.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1725959 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/458f5e52
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/458f5e52
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/458f5e52

Branch: refs/heads/master
Commit: 458f5e5231366ba94beeefa5030a153ec6590bf1
Parents: 3737d6e
Author: Konstantin Kolinko <kk...@apache.org>
Authored: Thu Jan 21 14:22:28 2016 +0000
Committer: Konstantin Kolinko <kk...@apache.org>
Committed: Thu Jan 21 14:22:28 2016 +0000

----------------------------------------------------------------------
 .../org/apache/commons/pool2/BaseObject.java    | 80 ++++++++++----------
 1 file changed, 40 insertions(+), 40 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/458f5e52/src/main/java/org/apache/commons/pool2/BaseObject.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/BaseObject.java b/src/main/java/org/apache/commons/pool2/BaseObject.java
index 1215430..019b678 100644
--- a/src/main/java/org/apache/commons/pool2/BaseObject.java
+++ b/src/main/java/org/apache/commons/pool2/BaseObject.java
@@ -1,40 +1,40 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.pool2;
-
-/**
- * A base class for common functionality.
- * 
- * @since 2.4.3
- */
-public abstract class BaseObject {
-
-    @Override
-    public String toString() {
-        StringBuilder builder = new StringBuilder();
-        builder.append(getClass().getSimpleName());
-        builder.append(" [");
-        toStringAppendFields(builder);
-        builder.append("]");
-        return builder.toString();
-    }
-
-    protected void toStringAppendFields(StringBuilder builder) {
-        // do nothing by default, needed for b/w compatibility.
-    }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.pool2;
+
+/**
+ * A base class for common functionality.
+ * 
+ * @since 2.4.3
+ */
+public abstract class BaseObject {
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append(getClass().getSimpleName());
+        builder.append(" [");
+        toStringAppendFields(builder);
+        builder.append("]");
+        return builder.toString();
+    }
+
+    protected void toStringAppendFields(StringBuilder builder) {
+        // do nothing by default, needed for b/w compatibility.
+    }
+
+}


[24/50] [abbrv] commons-pool git commit: Fix POOL-306 Ensure BaseGenericObjectPool.IdentityWrapper#equals() follows the expected contract for equals().

Posted by ma...@apache.org.
Fix POOL-306
Ensure BaseGenericObjectPool.IdentityWrapper#equals() follows the expected contract for equals().

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1735080 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/a898de84
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/a898de84
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/a898de84

Branch: refs/heads/master
Commit: a898de843abe44f5f0910b271a89b60e884852a5
Parents: 2566fd6
Author: Mark Thomas <ma...@apache.org>
Authored: Tue Mar 15 14:29:11 2016 +0000
Committer: Mark Thomas <ma...@apache.org>
Committed: Tue Mar 15 14:29:11 2016 +0000

----------------------------------------------------------------------
 src/changes/changes.xml                                          | 4 ++++
 .../org/apache/commons/pool2/impl/BaseGenericObjectPool.java     | 3 ++-
 2 files changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/a898de84/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index f5d27d4..f515689 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -47,6 +47,10 @@ The <action> type attribute can be add,update,fix,remove.
     <action dev="ggregory" issue="POOL-309" type="fix" due-to="jolestar, Roopam Patekar">
       Fix misspellings from "destory" to "destroy".
     </action>
+    <action dev="markt" issue="POOL-306" type="fix" due-to="Adrian Crum">
+      Ensure BaseGenericObjectPool.IdentityWrapper#equals() follows the expected
+      contract for equals(). 
+    </action>
   </release>
   <release version="2.4.2" date="2015-08-01" description=
  "This is a patch release, including bug fixes only.">

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/a898de84/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
index 6e197c9..8d5efbd 100644
--- a/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
@@ -1207,7 +1207,8 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
         @Override
         @SuppressWarnings("rawtypes")
         public boolean equals(final Object other) {
-            return ((IdentityWrapper) other).instance == instance;
+            return  other instanceof IdentityWrapper &&
+                    ((IdentityWrapper) other).instance == instance;
         }
 
         /**


[02/50] [abbrv] commons-pool git commit: Obsolete DOAP

Posted by ma...@apache.org.
Obsolete DOAP

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/branches/POOL_1_X@1719168 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/3f9714fc
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/3f9714fc
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/3f9714fc

Branch: refs/heads/POOL_1_X
Commit: 3f9714fca2c5509fb4e41e35984f1de210c5c360
Parents: 8153d2e
Author: Sebastian Bazley <se...@apache.org>
Authored: Thu Dec 10 18:16:34 2015 +0000
Committer: Sebastian Bazley <se...@apache.org>
Committed: Thu Dec 10 18:16:34 2015 +0000

----------------------------------------------------------------------
 doap_pool.rdf | 128 -----------------------------------------------------
 1 file changed, 128 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/3f9714fc/doap_pool.rdf
----------------------------------------------------------------------
diff --git a/doap_pool.rdf b/doap_pool.rdf
deleted file mode 100644
index de8920b..0000000
--- a/doap_pool.rdf
+++ /dev/null
@@ -1,128 +0,0 @@
-<?xml version="1.0"?>
-<!--
-   Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-<!-- $Id: -->
-<rdf:RDF xmlns="http://usefulinc.com/ns/doap#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:asfext="http://projects.apache.org/ns/asfext#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:doap="http://usefulinc.com/ns/doap#" xml:lang="en">
-  <Project rdf:about="http://commons.apache.org/pool/">
-    <name>Apache Commons Pool</name>
-    <homepage rdf:resource="http://commons.apache.org/pool/"/>
-    <programming-language>Java</programming-language>
-    <category rdf:resource="http://projects.apache.org/category/library"/>
-    <license rdf:resource="http://usefulinc.com/doap/licenses/asl20"/>
-    <bug-database rdf:resource="http://issues.apache.org/jira/browse/POOL"/>
-    <download-page rdf:resource="http://commons.apache.org/pool/download_pool.cgi"/>
-    <asfext:pmc rdf:resource="http://commons.apache.org/"/>
-    <shortdesc xml:lang="en">Commons Object Pooling Library</shortdesc>
-    <description xml:lang="en">Commons Object Pooling Library</description>
-    <repository>
-      <SVNRepository>
-        <browse rdf:resource="http://svn.apache.org/repos/asf/commons/proper/pool/trunk"/>
-        <location rdf:resource="http://svn.apache.org/repos/asf/commons/proper/pool"/>
-      </SVNRepository>
-    </repository>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2012-01-07</created>
-        <revision>1.6</revision>
-      </Version>
-      <Version>
-        <name>commons-pool</name>
-        <created>2011-12-20</created>
-        <revision>1.5.7</revision>
-      </Version>
-      <Version>
-        <name>commons-pool</name>
-        <created>2011-04-03</created>
-        <revision>1.5.6</revision>
-      </Version>
-      <Version>
-        <name>commons-pool</name>
-        <created>2010-09-10</created>
-        <revision>1.5.5</revision>
-      </Version>
-      <Version>
-        <name>commons-pool</name>
-        <created>2009-11-20</created>
-        <revision>1.5.4</revision>
-      </Version>
-      <Version>
-        <name>commons-pool</name>
-        <created>2009-09-23</created>
-        <revision>1.5.3</revision>
-      </Version>
-      <Version>
-        <name>commons-pool</name>
-        <created>2009-07-12</created>
-        <revision>1.5.2</revision>
-      </Version>
-      <Version>
-        <name>commons-pool</name>
-        <created>2009-06-16</created>
-        <revision>1.5.1</revision>
-      </Version>
-      <Version>
-        <name>commons-pool</name>
-        <created>2009-06-10</created>
-        <revision>1.5</revision>
-      </Version>
-    </release>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2008-01-15</created>
-        <revision>1.4</revision>
-      </Version>
-    </release>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2006-04-06</created>
-        <revision>1.3</revision>
-      </Version>
-    </release>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2004-06-07</created>
-        <revision>1.2</revision>
-      </Version>
-    </release>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2003-10-20</created>
-        <revision>1.1</revision>
-      </Version>
-    </release>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2002-08-12</created>
-        <revision>1.0.1</revision>
-      </Version>
-    </release>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2002-05-04</created>
-        <revision>1.0</revision>
-      </Version>
-    </release>
-    <mailing-list rdf:resource="http://commons.apache.org/mail-lists.html"/>
-  </Project>
-</rdf:RDF>


[08/50] [abbrv] commons-pool git commit: Update copyright for 2016 in NOTICE.txt

Posted by ma...@apache.org.
Update copyright for 2016 in NOTICE.txt

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1725441 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/ccbbb32e
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/ccbbb32e
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/ccbbb32e

Branch: refs/heads/master
Commit: ccbbb32edfa9ed6c8af4eee3f041ab3111d22742
Parents: 6425322
Author: Gary D. Gregory <gg...@apache.org>
Authored: Tue Jan 19 06:21:14 2016 +0000
Committer: Gary D. Gregory <gg...@apache.org>
Committed: Tue Jan 19 06:21:14 2016 +0000

----------------------------------------------------------------------
 NOTICE.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/ccbbb32e/NOTICE.txt
----------------------------------------------------------------------
diff --git a/NOTICE.txt b/NOTICE.txt
index db24c60..9db1cca 100644
--- a/NOTICE.txt
+++ b/NOTICE.txt
@@ -1,5 +1,5 @@
 Apache Commons Pool
-Copyright 2001-2015 The Apache Software Foundation
+Copyright 2001-2016 The Apache Software Foundation
 
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).


[18/50] [abbrv] commons-pool git commit: Add final modifier to method parameters.

Posted by ma...@apache.org.
Add final modifier to method parameters.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1729268 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/844cbd26
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/844cbd26
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/844cbd26

Branch: refs/heads/master
Commit: 844cbd2620b44f6264d39aa46e456add495d71d7
Parents: 5fe7dc0
Author: Gary D. Gregory <gg...@apache.org>
Authored: Mon Feb 8 21:47:12 2016 +0000
Committer: Gary D. Gregory <gg...@apache.org>
Committed: Mon Feb 8 21:47:12 2016 +0000

----------------------------------------------------------------------
 .../pool2/BaseKeyedPooledObjectFactory.java     |  10 +-
 .../org/apache/commons/pool2/BaseObject.java    |   2 +-
 .../apache/commons/pool2/BaseObjectPool.java    |   2 +-
 .../commons/pool2/BasePooledObjectFactory.java  |   8 +-
 .../org/apache/commons/pool2/PoolUtils.java     |   2 +-
 .../commons/pool2/impl/AbandonedConfig.java     |  12 +-
 .../pool2/impl/BaseGenericObjectPool.java       |  56 ++++-----
 .../pool2/impl/BaseObjectPoolConfig.java        |  34 +++---
 .../pool2/impl/DefaultEvictionPolicy.java       |   4 +-
 .../commons/pool2/impl/DefaultPooledObject.java |  10 +-
 .../pool2/impl/DefaultPooledObjectInfo.java     |   2 +-
 .../commons/pool2/impl/EvictionConfig.java      |   4 +-
 .../commons/pool2/impl/EvictionTimer.java       |   6 +-
 .../pool2/impl/GenericKeyedObjectPool.java      |  50 ++++----
 .../impl/GenericKeyedObjectPoolConfig.java      |  10 +-
 .../commons/pool2/impl/GenericObjectPool.java   |  36 +++---
 .../pool2/impl/GenericObjectPoolConfig.java     |   8 +-
 .../pool2/impl/InterruptibleReentrantLock.java  |   4 +-
 .../commons/pool2/impl/LinkedBlockingDeque.java |  68 +++++------
 .../commons/pool2/impl/PoolImplUtils.java       |   8 +-
 .../commons/pool2/impl/PooledSoftReference.java |   4 +-
 .../pool2/impl/SoftReferenceObjectPool.java     |  14 +--
 .../commons/pool2/proxy/BaseProxyHandler.java   |   4 +-
 .../commons/pool2/proxy/CglibProxyHandler.java  |   6 +-
 .../commons/pool2/proxy/CglibProxySource.java   |   6 +-
 .../commons/pool2/proxy/JdkProxyHandler.java    |   4 +-
 .../commons/pool2/proxy/JdkProxySource.java     |   6 +-
 .../pool2/proxy/ProxiedKeyedObjectPool.java     |  18 +--
 .../commons/pool2/proxy/ProxiedObjectPool.java  |   6 +-
 .../org/apache/commons/pool2/MethodCall.java    |   2 +-
 .../TestBaseKeyedPoolableObjectFactory.java     |   4 +-
 .../commons/pool2/TestBaseObjectPool.java       |   6 +-
 .../pool2/TestBasePoolableObjectFactory.java    |   2 +-
 .../commons/pool2/TestKeyedObjectPool.java      |  12 +-
 .../apache/commons/pool2/TestObjectPool.java    |   2 +-
 .../org/apache/commons/pool2/TestPoolUtils.java |  12 +-
 .../org/apache/commons/pool2/VisitTracker.java  |   6 +-
 .../commons/pool2/VisitTrackerFactory.java      |  18 +--
 .../java/org/apache/commons/pool2/Waiter.java   |  10 +-
 .../org/apache/commons/pool2/WaiterFactory.java |  40 +++----
 .../pool2/impl/TestAbandonedObjectPool.java     |  20 ++--
 .../pool2/impl/TestGenericKeyedObjectPool.java  |  88 +++++++-------
 .../pool2/impl/TestGenericObjectPool.java       | 116 +++++++++----------
 .../impl/TestGenericObjectPoolClassLoaders.java |   8 +-
 .../commons/pool2/impl/TestPoolImplUtils.java   |   4 +-
 .../pool2/impl/TestSoftRefOutOfMemory.java      |  14 +--
 .../pool2/impl/TestSoftReferenceObjectPool.java |   6 +-
 .../pool2/performance/PerformanceTest.java      |   6 +-
 .../performance/SleepingObjectFactory.java      |  14 +--
 .../proxy/BaseTestProxiedKeyedObjectPool.java   |   6 +-
 .../pool2/proxy/BaseTestProxiedObjectPool.java  |   4 +-
 51 files changed, 402 insertions(+), 402 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/BaseKeyedPooledObjectFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/BaseKeyedPooledObjectFactory.java b/src/main/java/org/apache/commons/pool2/BaseKeyedPooledObjectFactory.java
index 850a219..2f9edf9 100644
--- a/src/main/java/org/apache/commons/pool2/BaseKeyedPooledObjectFactory.java
+++ b/src/main/java/org/apache/commons/pool2/BaseKeyedPooledObjectFactory.java
@@ -58,7 +58,7 @@ public abstract class BaseKeyedPooledObjectFactory<K,V> extends BaseObject
     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));
     }
 
@@ -71,7 +71,7 @@ public abstract class BaseKeyedPooledObjectFactory<K,V> extends BaseObject
      * @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 {
     }
 
@@ -85,7 +85,7 @@ public abstract class BaseKeyedPooledObjectFactory<K,V> extends BaseObject
      * @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;
     }
 
@@ -98,7 +98,7 @@ public abstract class BaseKeyedPooledObjectFactory<K,V> extends BaseObject
      * @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 {
     }
 
@@ -111,7 +111,7 @@ public abstract class BaseKeyedPooledObjectFactory<K,V> extends BaseObject
      * @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 {
     }
 }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/BaseObject.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/BaseObject.java b/src/main/java/org/apache/commons/pool2/BaseObject.java
index 948dd3f..6a69abd 100644
--- a/src/main/java/org/apache/commons/pool2/BaseObject.java
+++ b/src/main/java/org/apache/commons/pool2/BaseObject.java
@@ -33,7 +33,7 @@ public abstract class BaseObject {
         return builder.toString();
     }
 
-    protected void toStringAppendFields(StringBuilder builder) {
+    protected void toStringAppendFields(final StringBuilder builder) {
         // do nothing by default, needed for b/w compatibility.
     }
 

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/BaseObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/BaseObjectPool.java b/src/main/java/org/apache/commons/pool2/BaseObjectPool.java
index c4eedbb..2349622 100644
--- a/src/main/java/org/apache/commons/pool2/BaseObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/BaseObjectPool.java
@@ -119,7 +119,7 @@ public abstract class BaseObjectPool<T> extends BaseObject implements ObjectPool
 
     private volatile boolean closed = false;
 
-    protected void toStringAppendFields(StringBuilder builder) {
+    protected void toStringAppendFields(final StringBuilder builder) {
         builder.append("closed=");
         builder.append(closed);
     }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/BasePooledObjectFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/BasePooledObjectFactory.java b/src/main/java/org/apache/commons/pool2/BasePooledObjectFactory.java
index 2c7b291..c4e0eca 100644
--- a/src/main/java/org/apache/commons/pool2/BasePooledObjectFactory.java
+++ b/src/main/java/org/apache/commons/pool2/BasePooledObjectFactory.java
@@ -66,7 +66,7 @@ public abstract class BasePooledObjectFactory<T> extends BaseObject implements P
      *  @param p ignored
      */
     @Override
-    public void destroyObject(PooledObject<T> p)
+    public void destroyObject(final PooledObject<T> p)
         throws Exception  {
     }
 
@@ -78,7 +78,7 @@ public abstract class BasePooledObjectFactory<T> extends BaseObject implements P
      * @return {@code true}
      */
     @Override
-    public boolean validateObject(PooledObject<T> p) {
+    public boolean validateObject(final PooledObject<T> p) {
         return true;
     }
 
@@ -88,7 +88,7 @@ public abstract class BasePooledObjectFactory<T> extends BaseObject implements P
      *  @param p ignored
      */
     @Override
-    public void activateObject(PooledObject<T> p) throws Exception {
+    public void activateObject(final PooledObject<T> p) throws Exception {
     }
 
     /**
@@ -97,7 +97,7 @@ public abstract class BasePooledObjectFactory<T> extends BaseObject implements P
      * @param p ignored
      */
     @Override
-    public void passivateObject(PooledObject<T> p)
+    public void passivateObject(final PooledObject<T> p)
         throws Exception {
     }
 }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/PoolUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/PoolUtils.java b/src/main/java/org/apache/commons/pool2/PoolUtils.java
index a945702..7a26aef 100644
--- a/src/main/java/org/apache/commons/pool2/PoolUtils.java
+++ b/src/main/java/org/apache/commons/pool2/PoolUtils.java
@@ -68,7 +68,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;
         }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/impl/AbandonedConfig.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/AbandonedConfig.java b/src/main/java/org/apache/commons/pool2/impl/AbandonedConfig.java
index da77d13..6c5e7b5 100644
--- a/src/main/java/org/apache/commons/pool2/impl/AbandonedConfig.java
+++ b/src/main/java/org/apache/commons/pool2/impl/AbandonedConfig.java
@@ -60,7 +60,7 @@ public class AbandonedConfig {
      *   removed by borrowObject
      * @see #getRemoveAbandonedOnBorrow()
      */
-    public void setRemoveAbandonedOnBorrow(boolean removeAbandonedOnBorrow) {
+    public void setRemoveAbandonedOnBorrow(final boolean removeAbandonedOnBorrow) {
         this.removeAbandonedOnBorrow = removeAbandonedOnBorrow;
     }
 
@@ -97,7 +97,7 @@ public class AbandonedConfig {
      *   removed by pool maintenance
      * @see #getRemoveAbandonedOnMaintenance
      */
-    public void setRemoveAbandonedOnMaintenance(boolean removeAbandonedOnMaintenance) {
+    public void setRemoveAbandonedOnMaintenance(final boolean removeAbandonedOnMaintenance) {
         this.removeAbandonedOnMaintenance = removeAbandonedOnMaintenance;
     }
 
@@ -133,7 +133,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;
     }
 
@@ -167,7 +167,7 @@ public class AbandonedConfig {
      * @see #getLogAbandoned()
      *
      */
-    public void setLogAbandoned(boolean logAbandoned) {
+    public void setLogAbandoned(final boolean logAbandoned) {
         this.logAbandoned = logAbandoned;
     }
 
@@ -194,7 +194,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,7 @@ 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;
     }
 

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
index 930dc6c..6eafcd1 100644
--- a/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
@@ -129,8 +129,8 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      *                      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 {
@@ -178,7 +178,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      *
      * @see #getMaxTotal
      */
-    public final void setMaxTotal(int maxTotal) {
+    public final void setMaxTotal(final int maxTotal) {
         this.maxTotal = maxTotal;
     }
 
@@ -207,7 +207,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      *
      * @see #getBlockWhenExhausted
      */
-    public final void setBlockWhenExhausted(boolean blockWhenExhausted) {
+    public final void setBlockWhenExhausted(final boolean blockWhenExhausted) {
         this.blockWhenExhausted = blockWhenExhausted;
     }
 
@@ -242,7 +242,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      * @see #getMaxWaitMillis
      * @see #setBlockWhenExhausted
      */
-    public final void setMaxWaitMillis(long maxWaitMillis) {
+    public final void setMaxWaitMillis(final long maxWaitMillis) {
         this.maxWaitMillis = maxWaitMillis;
     }
 
@@ -285,7 +285,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      *
      * @see #getLifo()
      */
-    public final void setLifo(boolean lifo) {
+    public final void setLifo(final boolean lifo) {
         this.lifo = lifo;
     }
 
@@ -322,7 +322,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      *
      * @since 2.2
      */
-    public final void setTestOnCreate(boolean testOnCreate) {
+    public final void setTestOnCreate(final boolean testOnCreate) {
         this.testOnCreate = testOnCreate;
     }
 
@@ -357,7 +357,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      *
      * @see #getTestOnBorrow
      */
-    public final void setTestOnBorrow(boolean testOnBorrow) {
+    public final void setTestOnBorrow(final boolean testOnBorrow) {
         this.testOnBorrow = testOnBorrow;
     }
 
@@ -390,7 +390,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      *
      * @see #getTestOnReturn
      */
-    public final void setTestOnReturn(boolean testOnReturn) {
+    public final void setTestOnReturn(final boolean testOnReturn) {
         this.testOnReturn = testOnReturn;
     }
 
@@ -427,7 +427,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      * @see #getTestWhileIdle
      * @see #setTimeBetweenEvictionRunsMillis
      */
-    public final void setTestWhileIdle(boolean testWhileIdle) {
+    public final void setTestWhileIdle(final boolean testWhileIdle) {
         this.testWhileIdle = testWhileIdle;
     }
 
@@ -455,7 +455,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      * @see #getTimeBetweenEvictionRunsMillis
      */
     public final void setTimeBetweenEvictionRunsMillis(
-            long timeBetweenEvictionRunsMillis) {
+            final long timeBetweenEvictionRunsMillis) {
         this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
         startEvictor(timeBetweenEvictionRunsMillis);
     }
@@ -495,7 +495,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      * @see #getNumTestsPerEvictionRun
      * @see #setTimeBetweenEvictionRunsMillis
      */
-    public final void setNumTestsPerEvictionRun(int numTestsPerEvictionRun) {
+    public final void setNumTestsPerEvictionRun(final int numTestsPerEvictionRun) {
         this.numTestsPerEvictionRun = numTestsPerEvictionRun;
     }
 
@@ -529,7 +529,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      * @see #setTimeBetweenEvictionRunsMillis
      */
     public final void setMinEvictableIdleTimeMillis(
-            long minEvictableIdleTimeMillis) {
+            final long minEvictableIdleTimeMillis) {
         this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
     }
 
@@ -570,7 +570,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      * @see #getSoftMinEvictableIdleTimeMillis
      */
     public final void setSoftMinEvictableIdleTimeMillis(
-            long softMinEvictableIdleTimeMillis) {
+            final long softMinEvictableIdleTimeMillis) {
         this.softMinEvictableIdleTimeMillis = softMinEvictableIdleTimeMillis;
     }
 
@@ -598,7 +598,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      * @see #getEvictionPolicyClassName()
      */
     public final void setEvictionPolicyClassName(
-            String evictionPolicyClassName) {
+            final String evictionPolicyClassName) {
         try {
             Class<?> clazz;
             try {
@@ -686,7 +686,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      *
      * @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);
@@ -850,7 +850,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      *                                      for no listener
      */
     public final void setSwallowedExceptionListener(
-            SwallowedExceptionListener swallowedExceptionListener) {
+            final SwallowedExceptionListener swallowedExceptionListener) {
         this.swallowedExceptionListener = swallowedExceptionListener;
     }
 
@@ -860,7 +860,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      *
      * @param e exception to be swallowed
      */
-    final void swallowException(Exception e) {
+    final void swallowException(final Exception e) {
         final SwallowedExceptionListener listener = getSwallowedExceptionListener();
 
         if (listener == null) {
@@ -883,7 +883,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      * @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);
@@ -903,7 +903,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      * @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);
     }
@@ -937,8 +937,8 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      * @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;
         final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
         int i = 1;
@@ -990,7 +990,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      * @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.
@@ -1072,7 +1072,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
          *
          * @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++) {
@@ -1086,7 +1086,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
          *
          * @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) {
@@ -1195,7 +1195,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
          *
          * @param instance object to wrap
          */
-        public IdentityWrapper(T instance) {
+        public IdentityWrapper(final T instance) {
             this.instance = instance;
         }
 
@@ -1206,7 +1206,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
 
         @Override
         @SuppressWarnings("rawtypes")
-        public boolean equals(Object other) {
+        public boolean equals(final Object other) {
             return ((IdentityWrapper) other).instance == instance;
         }
         
@@ -1227,7 +1227,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
         }
     }
 
-    protected void toStringAppendFields(StringBuilder builder) {
+    protected void toStringAppendFields(final StringBuilder builder) {
         builder.append("maxTotal=");
         builder.append(maxTotal);
         builder.append(", blockWhenExhausted=");

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java b/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
index 3c55edf..60b2384 100644
--- a/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
+++ b/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
@@ -232,7 +232,7 @@ public abstract class BaseObjectPoolConfig extends BaseObject implements Cloneab
      * @see GenericObjectPool#getLifo()
      * @see GenericKeyedObjectPool#getLifo()
      */
-    public void setLifo(boolean lifo) {
+    public void setLifo(final boolean lifo) {
         this.lifo = lifo;
     }
 
@@ -246,7 +246,7 @@ public abstract class BaseObjectPoolConfig extends BaseObject implements Cloneab
      * @see GenericObjectPool#getFairness()
      * @see GenericKeyedObjectPool#getFairness()
      */
-    public void setFairness(boolean fairness) {
+    public void setFairness(final boolean fairness) {
         this.fairness = fairness;
     }
 
@@ -274,7 +274,7 @@ public abstract class BaseObjectPoolConfig extends BaseObject implements Cloneab
      * @see GenericObjectPool#getMaxWaitMillis()
      * @see GenericKeyedObjectPool#getMaxWaitMillis()
      */
-    public void setMaxWaitMillis(long maxWaitMillis) {
+    public void setMaxWaitMillis(final long maxWaitMillis) {
         this.maxWaitMillis = maxWaitMillis;
     }
 
@@ -302,7 +302,7 @@ public abstract class BaseObjectPoolConfig extends BaseObject implements Cloneab
      * @see GenericObjectPool#getMinEvictableIdleTimeMillis()
      * @see GenericKeyedObjectPool#getMinEvictableIdleTimeMillis()
      */
-    public void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) {
+    public void setMinEvictableIdleTimeMillis(final long minEvictableIdleTimeMillis) {
         this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
     }
 
@@ -334,7 +334,7 @@ public abstract class BaseObjectPoolConfig extends BaseObject implements Cloneab
      * @see GenericKeyedObjectPool#getSoftMinEvictableIdleTimeMillis()
      */
     public void setSoftMinEvictableIdleTimeMillis(
-            long softMinEvictableIdleTimeMillis) {
+            final long softMinEvictableIdleTimeMillis) {
         this.softMinEvictableIdleTimeMillis = softMinEvictableIdleTimeMillis;
     }
 
@@ -362,7 +362,7 @@ public abstract class BaseObjectPoolConfig extends BaseObject implements Cloneab
      * @see GenericObjectPool#getNumTestsPerEvictionRun()
      * @see GenericKeyedObjectPool#getNumTestsPerEvictionRun()
      */
-    public void setNumTestsPerEvictionRun(int numTestsPerEvictionRun) {
+    public void setNumTestsPerEvictionRun(final int numTestsPerEvictionRun) {
         this.numTestsPerEvictionRun = numTestsPerEvictionRun;
     }
 
@@ -394,7 +394,7 @@ public abstract class BaseObjectPoolConfig extends BaseObject implements Cloneab
      *
      * @since 2.2
      */
-    public void setTestOnCreate(boolean testOnCreate) {
+    public void setTestOnCreate(final boolean testOnCreate) {
         this.testOnCreate = testOnCreate;
     }
 
@@ -422,7 +422,7 @@ public abstract class BaseObjectPoolConfig extends BaseObject implements Cloneab
      * @see GenericObjectPool#getTestOnBorrow()
      * @see GenericKeyedObjectPool#getTestOnBorrow()
      */
-    public void setTestOnBorrow(boolean testOnBorrow) {
+    public void setTestOnBorrow(final boolean testOnBorrow) {
         this.testOnBorrow = testOnBorrow;
     }
 
@@ -450,7 +450,7 @@ public abstract class BaseObjectPoolConfig extends BaseObject implements Cloneab
      * @see GenericObjectPool#getTestOnReturn()
      * @see GenericKeyedObjectPool#getTestOnReturn()
      */
-    public void setTestOnReturn(boolean testOnReturn) {
+    public void setTestOnReturn(final boolean testOnReturn) {
         this.testOnReturn = testOnReturn;
     }
 
@@ -478,7 +478,7 @@ public abstract class BaseObjectPoolConfig extends BaseObject implements Cloneab
      * @see GenericObjectPool#getTestWhileIdle()
      * @see GenericKeyedObjectPool#getTestWhileIdle()
      */
-    public void setTestWhileIdle(boolean testWhileIdle) {
+    public void setTestWhileIdle(final boolean testWhileIdle) {
         this.testWhileIdle = testWhileIdle;
     }
 
@@ -508,7 +508,7 @@ public abstract class BaseObjectPoolConfig extends BaseObject implements Cloneab
      * @see GenericKeyedObjectPool#getTimeBetweenEvictionRunsMillis()
      */
     public void setTimeBetweenEvictionRunsMillis(
-            long timeBetweenEvictionRunsMillis) {
+            final long timeBetweenEvictionRunsMillis) {
         this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
     }
 
@@ -536,7 +536,7 @@ public abstract class BaseObjectPoolConfig extends BaseObject implements Cloneab
      * @see GenericObjectPool#getEvictionPolicyClassName()
      * @see GenericKeyedObjectPool#getEvictionPolicyClassName()
      */
-    public void setEvictionPolicyClassName(String evictionPolicyClassName) {
+    public void setEvictionPolicyClassName(final String evictionPolicyClassName) {
         this.evictionPolicyClassName = evictionPolicyClassName;
     }
 
@@ -564,7 +564,7 @@ public abstract class BaseObjectPoolConfig extends BaseObject implements Cloneab
      * @see GenericObjectPool#getBlockWhenExhausted()
      * @see GenericKeyedObjectPool#getBlockWhenExhausted()
      */
-    public void setBlockWhenExhausted(boolean blockWhenExhausted) {
+    public void setBlockWhenExhausted(final boolean blockWhenExhausted) {
         this.blockWhenExhausted = blockWhenExhausted;
     }
 
@@ -586,7 +586,7 @@ public abstract class BaseObjectPoolConfig extends BaseObject implements Cloneab
      * @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;
     }
 
@@ -612,7 +612,7 @@ public abstract class BaseObjectPoolConfig extends BaseObject implements Cloneab
      * @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;
     }
 
@@ -636,11 +636,11 @@ public abstract class BaseObjectPoolConfig extends BaseObject implements Cloneab
      * @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;
     }
 
-    protected void toStringAppendFields(StringBuilder builder) {
+    protected void toStringAppendFields(final StringBuilder builder) {
         builder.append("lifo=");
         builder.append(lifo);
         builder.append(", fairness=");

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/impl/DefaultEvictionPolicy.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/DefaultEvictionPolicy.java b/src/main/java/org/apache/commons/pool2/impl/DefaultEvictionPolicy.java
index 9a203c9..dfa2317 100644
--- a/src/main/java/org/apache/commons/pool2/impl/DefaultEvictionPolicy.java
+++ b/src/main/java/org/apache/commons/pool2/impl/DefaultEvictionPolicy.java
@@ -42,8 +42,8 @@ import org.apache.commons.pool2.PooledObject;
 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) ||

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObject.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObject.java b/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObject.java
index ba6dbe4..3caa40c 100644
--- a/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObject.java
+++ b/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObject.java
@@ -56,7 +56,7 @@ public class DefaultPooledObject<T> implements PooledObject<T> {
      *
      * @param object The object to wrap
      */
-    public DefaultPooledObject(T object) {
+    public DefaultPooledObject(final T object) {
         this.object = object;
     }
 
@@ -128,7 +128,7 @@ public class DefaultPooledObject<T> implements PooledObject<T> {
     }
 
     @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
@@ -166,7 +166,7 @@ public class DefaultPooledObject<T> implements PooledObject<T> {
 
     @Override
     public synchronized boolean endEvictionTest(
-            Deque<PooledObject<T>> idleQueue) {
+            final Deque<PooledObject<T>> idleQueue) {
         if (state == PooledObjectState.EVICTION) {
             state = PooledObjectState.IDLE;
             return true;
@@ -240,7 +240,7 @@ public class DefaultPooledObject<T> implements PooledObject<T> {
     }
 
     @Override
-    public void printStackTrace(PrintWriter writer) {
+    public void printStackTrace(final PrintWriter writer) {
         boolean written = false;
         final Exception borrowedByCopy = this.borrowedBy;
         if (borrowedByCopy != null) {
@@ -283,7 +283,7 @@ public class DefaultPooledObject<T> implements PooledObject<T> {
     }
 
     @Override
-    public void setLogAbandoned(boolean logAbandoned) {
+    public void setLogAbandoned(final boolean logAbandoned) {
         this.logAbandoned = logAbandoned;
     }
 

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObjectInfo.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObjectInfo.java b/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObjectInfo.java
index 48aa797..621380c 100644
--- a/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObjectInfo.java
+++ b/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObjectInfo.java
@@ -37,7 +37,7 @@ public class DefaultPooledObjectInfo implements DefaultPooledObjectInfoMBean {
      *
      * @param pooledObject The pooled object that this instance will represent
      */
-    public DefaultPooledObjectInfo(PooledObject<?> pooledObject) {
+    public DefaultPooledObjectInfo(final PooledObject<?> pooledObject) {
         this.pooledObject = pooledObject;
     }
 

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/impl/EvictionConfig.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/EvictionConfig.java b/src/main/java/org/apache/commons/pool2/impl/EvictionConfig.java
index a23a9b1..97e689d 100644
--- a/src/main/java/org/apache/commons/pool2/impl/EvictionConfig.java
+++ b/src/main/java/org/apache/commons/pool2/impl/EvictionConfig.java
@@ -45,8 +45,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 {

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java b/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
index 4ff4b10..0d74406 100644
--- a/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
+++ b/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
@@ -58,7 +58,7 @@ 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
@@ -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) {
@@ -115,7 +115,7 @@ class EvictionTimer {
          * Create a new PrivilegedSetTccl using the given classloader
          * @param classLoader ClassLoader to use
          */
-        PrivilegedSetTccl(ClassLoader cl) {
+        PrivilegedSetTccl(final ClassLoader cl) {
             this.classLoader = cl;
         }
 

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
index 8c9d8d9..eb335d6 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
@@ -83,7 +83,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      * {@link GenericKeyedObjectPoolConfig}.
      * @param factory the factory to be used to create entries
      */
-    public GenericKeyedObjectPool(KeyedPooledObjectFactory<K,T> factory) {
+    public GenericKeyedObjectPool(final KeyedPooledObjectFactory<K,T> factory) {
         this(factory, new GenericKeyedObjectPoolConfig());
     }
 
@@ -97,8 +97,8 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      *                  the configuration object will not be reflected in the
      *                  pool.
      */
-    public GenericKeyedObjectPool(KeyedPooledObjectFactory<K,T> factory,
-            GenericKeyedObjectPoolConfig config) {
+    public GenericKeyedObjectPool(final KeyedPooledObjectFactory<K,T> factory,
+            final GenericKeyedObjectPoolConfig config) {
 
         super(config, ONAME_BASE, config.getJmxNamePrefix());
 
@@ -137,7 +137,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      *
      * @see #getMaxTotalPerKey
      */
-    public void setMaxTotalPerKey(int maxTotalPerKey) {
+    public void setMaxTotalPerKey(final int maxTotalPerKey) {
         this.maxTotalPerKey = maxTotalPerKey;
     }
 
@@ -178,7 +178,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      *
      * @see #getMaxIdlePerKey
      */
-    public void setMaxIdlePerKey(int maxIdlePerKey) {
+    public void setMaxIdlePerKey(final int maxIdlePerKey) {
         this.maxIdlePerKey = maxIdlePerKey;
     }
 
@@ -200,7 +200,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      * @see #getMaxIdlePerKey()
      * @see #setTimeBetweenEvictionRunsMillis
      */
-    public void setMinIdlePerKey(int minIdlePerKey) {
+    public void setMinIdlePerKey(final int minIdlePerKey) {
         this.minIdlePerKey = minIdlePerKey;
     }
 
@@ -236,7 +236,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      *
      * @see GenericKeyedObjectPoolConfig
      */
-    public void setConfig(GenericKeyedObjectPoolConfig conf) {
+    public void setConfig(final GenericKeyedObjectPoolConfig conf) {
         setLifo(conf.getLifo());
         setMaxIdlePerKey(conf.getMaxIdlePerKey());
         setMaxTotalPerKey(conf.getMaxTotalPerKey());
@@ -274,7 +274,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      * {@inheritDoc}
      */
     @Override
-    public T borrowObject(K key) throws Exception {
+    public T borrowObject(final K key) throws Exception {
         return borrowObject(key, getMaxWaitMillis());
     }
 
@@ -334,7 +334,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      * @throws Exception if a keyed object instance cannot be returned due to an
      *                   error
      */
-    public T borrowObject(K key, long borrowMaxWaitMillis) throws Exception {
+    public T borrowObject(final K key, final long borrowMaxWaitMillis) throws Exception {
         assertOpen();
 
         PooledObject<T> p = null;
@@ -466,7 +466,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      *                               returned to the pool multiple times
      */
     @Override
-    public void returnObject(K key, T obj) {
+    public void returnObject(final K key, final T obj) {
 
         final ObjectDeque<T> objectDeque = poolMap.get(key);
 
@@ -579,7 +579,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      *                               under the given key
      */
     @Override
-    public void invalidateObject(K key, T obj) throws Exception {
+    public void invalidateObject(final K key, final T obj) throws Exception {
 
         final ObjectDeque<T> objectDeque = poolMap.get(key);
 
@@ -636,7 +636,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      * @param key the key to clear
      */
     @Override
-    public void clear(K key) {
+    public void clear(final K key) {
 
         final ObjectDeque<T> objectDeque = register(key);
 
@@ -680,7 +680,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
 
 
     @Override
-    public int getNumActive(K key) {
+    public int getNumActive(final K key) {
         final ObjectDeque<T> objectDeque = poolMap.get(key);
         if (objectDeque != null) {
             return objectDeque.getAllObjects().size() -
@@ -691,7 +691,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
 
 
     @Override
-    public int getNumIdle(K key) {
+    public int getNumIdle(final K key) {
         final ObjectDeque<T> objectDeque = poolMap.get(key);
         return objectDeque != null ? objectDeque.getIdleObjects().size() : 0;
     }
@@ -1000,7 +1000,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      *
      * @throws Exception If the objection creation fails
      */
-    private PooledObject<T> create(K key) throws Exception {
+    private PooledObject<T> create(final K key) throws Exception {
         final int maxTotalPerKeySave = getMaxTotalPerKey(); // Per key
         final int maxTotal = getMaxTotal();   // All keys
 
@@ -1056,7 +1056,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      * @return {@code true} if the object was destroyed, otherwise {@code false}
      * @throws Exception If the object destruction failed
      */
-    private boolean destroy(K key, PooledObject<T> toDestroy, boolean always)
+    private boolean destroy(final K key, final PooledObject<T> toDestroy, final boolean always)
             throws Exception {
 
         final ObjectDeque<T> objectDeque = register(key);
@@ -1095,7 +1095,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      *         method returns without throwing an exception then it will never
      *         return null.
      */
-    private ObjectDeque<T> register(K k) {
+    private ObjectDeque<T> register(final K k) {
         Lock lock = keyLock.readLock();
         ObjectDeque<T> objectDeque = null;
         try {
@@ -1134,7 +1134,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      *
      * @param k The key to de-register
      */
-    private void deregister(K k) {
+    private void deregister(final K k) {
         ObjectDeque<T> objectDeque;
 
         objectDeque = poolMap.get(k);
@@ -1178,7 +1178,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      *
      * @throws Exception If a new object is required and cannot be created
      */
-    private void ensureMinIdle(K key) throws Exception {
+    private void ensureMinIdle(final K key) throws Exception {
         // Calculate current pool objects
         final ObjectDeque<T> objectDeque = poolMap.get(key);
 
@@ -1209,7 +1209,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      *                   fails.
      */
     @Override
-    public void addObject(K key) throws Exception {
+    public void addObject(final K key) throws Exception {
         assertOpen();
         register(key);
         try {
@@ -1228,7 +1228,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      *
      * @throws Exception If the associated factory fails to passivate the object
      */
-    private void addIdleObject(K key, PooledObject<T> p) throws Exception {
+    private void addIdleObject(final K key, final PooledObject<T> p) throws Exception {
 
         if (p != null) {
             factory.passivateObject(key, p);
@@ -1250,7 +1250,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      *
      * @throws Exception If the associated factory throws an exception
      */
-    public void preparePool(K key) throws Exception {
+    public void preparePool(final K key) throws Exception {
         final int minIdlePerKeySave = getMinIdlePerKey();
         if (minIdlePerKeySave < 1) {
             return;
@@ -1282,7 +1282,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      *
      * @return The number of new objects to create
      */
-    private int calculateDeficit(ObjectDeque<T> objectDeque) {
+    private int calculateDeficit(final ObjectDeque<T> objectDeque) {
 
         if (objectDeque == null) {
             return getMinIdlePerKey();
@@ -1451,7 +1451,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
          * @param fairness true means client threads waiting to borrow / return instances
          * will be served as if waiting in a FIFO queue.
          */
-        public ObjectDeque(boolean fairness) {
+        public ObjectDeque(final boolean fairness) {
             idleObjects = new LinkedBlockingDeque<PooledObject<S>>(fairness);
         }
 
@@ -1552,7 +1552,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         "org.apache.commons.pool2:type=GenericKeyedObjectPool,name=";
 
     @Override
-    protected void toStringAppendFields(StringBuilder builder) {
+    protected void toStringAppendFields(final StringBuilder builder) {
         super.toStringAppendFields(builder);
         builder.append(", maxIdlePerKey=");
         builder.append(maxIdlePerKey);

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java
index f3c94b2..bf05d53 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java
@@ -91,7 +91,7 @@ public class GenericKeyedObjectPoolConfig extends BaseObjectPoolConfig {
      *
      * @see GenericKeyedObjectPool#setMaxTotal(int)
      */
-    public void setMaxTotal(int maxTotal) {
+    public void setMaxTotal(final int maxTotal) {
         this.maxTotal = maxTotal;
     }
 
@@ -117,7 +117,7 @@ public class GenericKeyedObjectPoolConfig extends BaseObjectPoolConfig {
      *
      * @see GenericKeyedObjectPool#setMaxTotalPerKey(int)
      */
-    public void setMaxTotalPerKey(int maxTotalPerKey) {
+    public void setMaxTotalPerKey(final int maxTotalPerKey) {
         this.maxTotalPerKey = maxTotalPerKey;
     }
 
@@ -143,7 +143,7 @@ public class GenericKeyedObjectPoolConfig extends BaseObjectPoolConfig {
      *
      * @see GenericKeyedObjectPool#setMinIdlePerKey(int)
      */
-    public void setMinIdlePerKey(int minIdlePerKey) {
+    public void setMinIdlePerKey(final int minIdlePerKey) {
         this.minIdlePerKey = minIdlePerKey;
     }
 
@@ -169,7 +169,7 @@ public class GenericKeyedObjectPoolConfig extends BaseObjectPoolConfig {
      *
      * @see GenericKeyedObjectPool#setMaxIdlePerKey(int)
      */
-    public void setMaxIdlePerKey(int maxIdlePerKey) {
+    public void setMaxIdlePerKey(final int maxIdlePerKey) {
         this.maxIdlePerKey = maxIdlePerKey;
     }
 
@@ -182,7 +182,7 @@ public class GenericKeyedObjectPoolConfig extends BaseObjectPoolConfig {
         }
     }
 
-    protected void toStringAppendFields(StringBuilder builder) {
+    protected void toStringAppendFields(final StringBuilder builder) {
         super.toStringAppendFields(builder);
         builder.append(", minIdlePerKey=");
         builder.append(minIdlePerKey);

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
index e40f02d..2e7f047 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
@@ -86,7 +86,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      * @param factory The object factory to be used to create object instances
      *                used by this pool
      */
-    public GenericObjectPool(PooledObjectFactory<T> factory) {
+    public GenericObjectPool(final PooledObjectFactory<T> factory) {
         this(factory, new GenericObjectPoolConfig());
     }
 
@@ -101,8 +101,8 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      *                  the configuration object will not be reflected in the
      *                  pool.
      */
-    public GenericObjectPool(PooledObjectFactory<T> factory,
-            GenericObjectPoolConfig config) {
+    public GenericObjectPool(final PooledObjectFactory<T> factory,
+            final GenericObjectPoolConfig config) {
 
         super(config, ONAME_BASE, config.getJmxNamePrefix());
 
@@ -132,8 +132,8 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      * @param abandonedConfig  Configuration for abandoned object identification
      *                         and removal.  The configuration is used by value.
      */
-    public GenericObjectPool(PooledObjectFactory<T> factory,
-            GenericObjectPoolConfig config, AbandonedConfig abandonedConfig) {
+    public GenericObjectPool(final PooledObjectFactory<T> factory,
+            final GenericObjectPoolConfig config, final AbandonedConfig abandonedConfig) {
         this(factory, config);
         setAbandonedConfig(abandonedConfig);
     }
@@ -173,7 +173,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      *
      * @see #getMaxIdle
      */
-    public void setMaxIdle(int maxIdle) {
+    public void setMaxIdle(final int maxIdle) {
         this.maxIdle = maxIdle;
     }
 
@@ -194,7 +194,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      * @see #getMaxIdle()
      * @see #getTimeBetweenEvictionRunsMillis()
      */
-    public void setMinIdle(int minIdle) {
+    public void setMinIdle(final int minIdle) {
         this.minIdle = minIdle;
     }
 
@@ -300,7 +300,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      *
      * @see GenericObjectPoolConfig
      */
-    public void setConfig(GenericObjectPoolConfig conf) {
+    public void setConfig(final GenericObjectPoolConfig conf) {
         setLifo(conf.getLifo());
         setMaxIdle(conf.getMaxIdle());
         setMinIdle(conf.getMinIdle());
@@ -327,7 +327,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      *
      * @see AbandonedConfig
      */
-    public void setAbandonedConfig(AbandonedConfig abandonedConfig) {
+    public void setAbandonedConfig(final AbandonedConfig abandonedConfig) {
         if (abandonedConfig == null) {
             this.abandonedConfig = null;
         } else {
@@ -407,7 +407,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      * @throws Exception if an object instance cannot be returned due to an
      *                   error
      */
-    public T borrowObject(long borrowMaxWaitMillis) throws Exception {
+    public T borrowObject(final long borrowMaxWaitMillis) throws Exception {
         assertOpen();
 
         final AbandonedConfig ac = this.abandonedConfig;
@@ -532,7 +532,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      * but notified via a {@link SwallowedExceptionListener}.
      */
     @Override
-    public void returnObject(T obj) {
+    public void returnObject(final T obj) {
         final PooledObject<T> p = allObjects.get(new IdentityWrapper<T>(obj));
 
         if (p == null) {
@@ -628,7 +628,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      * @throws IllegalStateException if obj does not belong to this pool
      */
     @Override
-    public void invalidateObject(T obj) throws Exception {
+    public void invalidateObject(final T obj) throws Exception {
         final PooledObject<T> p = allObjects.get(new IdentityWrapper<T>(obj));
         if (p == null) {
             if (isAbandonedConfig()) {
@@ -885,7 +885,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      * @throws Exception If the factory fails to destroy the pooled object
      *                   cleanly
      */
-    private void destroy(PooledObject<T> toDestory) throws Exception {
+    private void destroy(final PooledObject<T> toDestory) throws Exception {
         toDestory.invalidate();
         idleObjects.remove(toDestory);
         allObjects.remove(new IdentityWrapper<T>(toDestory.getObject()));
@@ -914,7 +914,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      * @param always true means create instances even if the pool has no threads waiting
      * @throws Exception if the factory's makeObject throws
      */
-    private void ensureIdle(int idleCount, boolean always) throws Exception {
+    private void ensureIdle(final int idleCount, final boolean always) throws Exception {
         if (idleCount < 1 || isClosed() || (!always && !idleObjects.hasTakeWaiters())) {
             return;
         }
@@ -967,7 +967,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      *
      * @throws Exception If the factory fails to passivate the object
      */
-    private void addIdleObject(PooledObject<T> p) throws Exception {
+    private void addIdleObject(final PooledObject<T> p) throws Exception {
         if (p != null) {
             factory.passivateObject(p);
             if (getLifo()) {
@@ -999,7 +999,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      *
      * @param ac The configuration to use to identify abandoned objects
      */
-    private void removeAbandoned(AbandonedConfig ac) {
+    private void removeAbandoned(final AbandonedConfig ac) {
         // Generate a list of abandoned objects to remove
         final long now = System.currentTimeMillis();
         final long timeout =
@@ -1036,7 +1036,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
     //--- Usage tracking support -----------------------------------------------
 
     @Override
-    public void use(T pooledObject) {
+    public void use(final T pooledObject) {
         final AbandonedConfig ac = this.abandonedConfig;
         if (ac != null && ac.getUseUsageTracking()) {
             final PooledObject<T> wrapper = allObjects.get(new IdentityWrapper<T>(pooledObject));
@@ -1144,7 +1144,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
     private volatile AbandonedConfig abandonedConfig = null;
 
     @Override
-    protected void toStringAppendFields(StringBuilder builder) {
+    protected void toStringAppendFields(final StringBuilder builder) {
         super.toStringAppendFields(builder);
         builder.append(", factoryType=");
         builder.append(factoryType);

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/impl/GenericObjectPoolConfig.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPoolConfig.java b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPoolConfig.java
index ff14efc..9d6afd9 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPoolConfig.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPoolConfig.java
@@ -77,7 +77,7 @@ public class GenericObjectPoolConfig extends BaseObjectPoolConfig {
      *
      * @see GenericObjectPool#setMaxTotal(int)
      */
-    public void setMaxTotal(int maxTotal) {
+    public void setMaxTotal(final int maxTotal) {
         this.maxTotal = maxTotal;
     }
 
@@ -104,7 +104,7 @@ public class GenericObjectPoolConfig extends BaseObjectPoolConfig {
      *
      * @see GenericObjectPool#setMaxIdle(int)
      */
-    public void setMaxIdle(int maxIdle) {
+    public void setMaxIdle(final int maxIdle) {
         this.maxIdle = maxIdle;
     }
 
@@ -131,7 +131,7 @@ public class GenericObjectPoolConfig extends BaseObjectPoolConfig {
      *
      * @see GenericObjectPool#setMinIdle(int)
      */
-    public void setMinIdle(int minIdle) {
+    public void setMinIdle(final int minIdle) {
         this.minIdle = minIdle;
     }
 
@@ -145,7 +145,7 @@ public class GenericObjectPoolConfig extends BaseObjectPoolConfig {
     }
 
     @Override
-    protected void toStringAppendFields(StringBuilder builder) {
+    protected void toStringAppendFields(final StringBuilder builder) {
         super.toStringAppendFields(builder);
         builder.append(", maxTotal=");
         builder.append(maxTotal);

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/impl/InterruptibleReentrantLock.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/InterruptibleReentrantLock.java b/src/main/java/org/apache/commons/pool2/impl/InterruptibleReentrantLock.java
index 67d2be7..4509ac5 100644
--- a/src/main/java/org/apache/commons/pool2/impl/InterruptibleReentrantLock.java
+++ b/src/main/java/org/apache/commons/pool2/impl/InterruptibleReentrantLock.java
@@ -39,7 +39,7 @@ class InterruptibleReentrantLock extends ReentrantLock {
      * @param fairness true means threads should acquire contended locks as if
      * waiting in a FIFO queue
      */
-    public InterruptibleReentrantLock(boolean fairness) {
+    public InterruptibleReentrantLock(final boolean fairness) {
         super(fairness);
     }
 
@@ -48,7 +48,7 @@ class InterruptibleReentrantLock extends ReentrantLock {
      *
      * @param condition the condition on which the threads are waiting.
      */
-    public void interruptWaiters(Condition condition) {
+    public void interruptWaiters(final Condition condition) {
         final Collection<Thread> threads = getWaitingThreads(condition);
         for (final Thread thread : threads) {
             thread.interrupt();

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java b/src/main/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java
index bee74de..a0091cf 100644
--- a/src/main/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java
+++ b/src/main/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java
@@ -119,7 +119,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
          * @param p Previous item
          * @param n Next item
          */
-        Node(E x, Node<E> p, Node<E> n) {
+        Node(final E x, final Node<E> p, final Node<E> n) {
             item = x;
             prev = p;
             next = n;
@@ -169,7 +169,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * @param fairness true means threads waiting on the deque should be served
      * as if waiting in a FIFO request queue
      */
-    public LinkedBlockingDeque(boolean fairness) {
+    public LinkedBlockingDeque(final boolean fairness) {
         this(Integer.MAX_VALUE, fairness);
     }
 
@@ -179,7 +179,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * @param capacity the capacity of this deque
      * @throws IllegalArgumentException if {@code capacity} is less than 1
      */
-    public LinkedBlockingDeque(int capacity) {
+    public LinkedBlockingDeque(final int capacity) {
         this(capacity, false);
     }
 
@@ -192,7 +192,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * as if waiting in a FIFO request queue
      * @throws IllegalArgumentException if {@code capacity} is less than 1
      */
-    public LinkedBlockingDeque(int capacity, boolean fairness) {
+    public LinkedBlockingDeque(final int capacity, final boolean fairness) {
         if (capacity <= 0) {
             throw new IllegalArgumentException();
         }
@@ -212,7 +212,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * @throws NullPointerException if the specified collection or any
      *         of its elements are null
      */
-    public LinkedBlockingDeque(Collection<? extends E> c) {
+    public LinkedBlockingDeque(final Collection<? extends E> c) {
         this(Integer.MAX_VALUE);
         lock.lock(); // Never contended, but necessary for visibility
         try {
@@ -239,7 +239,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      *
      * @return {@code true} if successful, otherwise {@code false}
      */
-    private boolean linkFirst(E e) {
+    private boolean linkFirst(final E e) {
         // assert lock.isHeldByCurrentThread();
         if (count >= capacity) {
             return false;
@@ -264,7 +264,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      *
      * @return {@code true} if successful, otherwise {@code false}
      */
-    private boolean linkLast(E e) {
+    private boolean linkLast(final E e) {
         // assert lock.isHeldByCurrentThread();
         if (count >= capacity) {
             return false;
@@ -339,7 +339,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      *
      * @param x The node to unlink
      */
-    private void unlink(Node<E> x) {
+    private void unlink(final Node<E> x) {
         // assert lock.isHeldByCurrentThread();
         final Node<E> p = x.prev;
         final Node<E> n = x.next;
@@ -364,7 +364,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * {@inheritDoc}
      */
     @Override
-    public void addFirst(E e) {
+    public void addFirst(final E e) {
         if (!offerFirst(e)) {
             throw new IllegalStateException("Deque full");
         }
@@ -374,7 +374,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * {@inheritDoc}
      */
     @Override
-    public void addLast(E e) {
+    public void addLast(final E e) {
         if (!offerLast(e)) {
             throw new IllegalStateException("Deque full");
         }
@@ -384,7 +384,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * {@inheritDoc}
      */
     @Override
-    public boolean offerFirst(E e) {
+    public boolean offerFirst(final E e) {
         if (e == null) {
             throw new NullPointerException();
         }
@@ -400,7 +400,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * {@inheritDoc}
      */
     @Override
-    public boolean offerLast(E e) {
+    public boolean offerLast(final E e) {
         if (e == null) {
             throw new NullPointerException();
         }
@@ -422,7 +422,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * @throws InterruptedException if the thread is interrupted whilst waiting
      *         for space
      */
-    public void putFirst(E e) throws InterruptedException {
+    public void putFirst(final E e) throws InterruptedException {
         if (e == null) {
             throw new NullPointerException();
         }
@@ -446,7 +446,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * @throws InterruptedException if the thread is interrupted whilst waiting
      *         for space
      */
-    public void putLast(E e) throws InterruptedException {
+    public void putLast(final E e) throws InterruptedException {
         if (e == null) {
             throw new NullPointerException();
         }
@@ -474,7 +474,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * @throws InterruptedException if the thread is interrupted whilst waiting
      *         for space
      */
-    public boolean offerFirst(E e, long timeout, TimeUnit unit)
+    public boolean offerFirst(final E e, final long timeout, final TimeUnit unit)
         throws InterruptedException {
         if (e == null) {
             throw new NullPointerException();
@@ -508,7 +508,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * @throws InterruptedException if the thread is interrupted whist waiting
      *         for space
      */
-    public boolean offerLast(E e, long timeout, TimeUnit unit)
+    public boolean offerLast(final E e, final long timeout, final TimeUnit unit)
         throws InterruptedException {
         if (e == null) {
             throw new NullPointerException();
@@ -622,7 +622,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * @return the unlinked element
      * @throws InterruptedException if the current thread is interrupted
      */
-    public E pollFirst(long timeout, TimeUnit unit)
+    public E pollFirst(final long timeout, final TimeUnit unit)
         throws InterruptedException {
         long nanos = unit.toNanos(timeout);
         lock.lockInterruptibly();
@@ -650,7 +650,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * @return the unlinked element
      * @throws InterruptedException if the current thread is interrupted
      */
-    public E pollLast(long timeout, TimeUnit unit)
+    public E pollLast(final long timeout, final TimeUnit unit)
         throws InterruptedException {
         long nanos = unit.toNanos(timeout);
         lock.lockInterruptibly();
@@ -713,7 +713,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
     }
 
     @Override
-    public boolean removeFirstOccurrence(Object o) {
+    public boolean removeFirstOccurrence(final Object o) {
         if (o == null) {
             return false;
         }
@@ -732,7 +732,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
     }
 
     @Override
-    public boolean removeLastOccurrence(Object o) {
+    public boolean removeLastOccurrence(final Object o) {
         if (o == null) {
             return false;
         }
@@ -756,7 +756,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * {@inheritDoc}
      */
     @Override
-    public boolean add(E e) {
+    public boolean add(final E e) {
         addLast(e);
         return true;
     }
@@ -765,7 +765,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * {@inheritDoc}
      */
     @Override
-    public boolean offer(E e) {
+    public boolean offer(final E e) {
         return offerLast(e);
     }
 
@@ -781,7 +781,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * @throws InterruptedException if the thread is interrupted whilst waiting
      *         for space
      */
-    public void put(E e) throws InterruptedException {
+    public void put(final E e) throws InterruptedException {
         putLast(e);
     }
 
@@ -801,7 +801,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * @throws InterruptedException if the thread is interrupted whilst waiting
      *         for space
      */
-    public boolean offer(E e, long timeout, TimeUnit unit)
+    public boolean offer(final E e, final long timeout, final TimeUnit unit)
         throws InterruptedException {
         return offerLast(e, timeout, unit);
     }
@@ -851,7 +851,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * @return the unlinked element
      * @throws InterruptedException if the current thread is interrupted
      */
-    public E poll(long timeout, TimeUnit unit) throws InterruptedException {
+    public E poll(final long timeout, final TimeUnit unit) throws InterruptedException {
         return pollFirst(timeout, unit);
     }
 
@@ -912,7 +912,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * @throws NullPointerException if c is null
      * @throws IllegalArgumentException if c is this instance
      */
-    public int drainTo(Collection<? super E> c) {
+    public int drainTo(final Collection<? super E> c) {
         return drainTo(c, Integer.MAX_VALUE);
     }
 
@@ -932,7 +932,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * @throws NullPointerException if c is null
      * @throws IllegalArgumentException if c is this instance
      */
-    public int drainTo(Collection<? super E> c, int maxElements) {
+    public int drainTo(final Collection<? super E> c, final int maxElements) {
         if (c == null) {
             throw new NullPointerException();
         }
@@ -958,7 +958,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * {@inheritDoc}
      */
     @Override
-    public void push(E e) {
+    public void push(final E e) {
         addFirst(e);
     }
 
@@ -987,7 +987,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * @return {@code true} if this deque changed as a result of the call
      */
     @Override
-    public boolean remove(Object o) {
+    public boolean remove(final Object o) {
         return removeFirstOccurrence(o);
     }
 
@@ -1015,7 +1015,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * @return {@code true} if this deque contains the specified element
      */
     @Override
-    public boolean contains(Object o) {
+    public boolean contains(final Object o) {
         if (o == null) {
             return false;
         }
@@ -1314,7 +1314,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
         @Override
         Node<E> firstNode() { return first; }
         @Override
-        Node<E> nextNode(Node<E> n) { return n.next; }
+        Node<E> nextNode(final Node<E> n) { return n.next; }
         }
 
     /** Descending iterator */
@@ -1322,7 +1322,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
         @Override
         Node<E> firstNode() { return last; }
         @Override
-        Node<E> nextNode(Node<E> n) { return n.prev; }
+        Node<E> nextNode(final Node<E> n) { return n.prev; }
     }
 
     /**
@@ -1332,7 +1332,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * {@code Object}) in the proper order, followed by a null
      * @param s the stream
      */
-    private void writeObject(java.io.ObjectOutputStream s)
+    private void writeObject(final java.io.ObjectOutputStream s)
         throws java.io.IOException {
         lock.lock();
         try {
@@ -1354,7 +1354,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      * deserialize it).
      * @param s the stream
      */
-    private void readObject(java.io.ObjectInputStream s)
+    private void readObject(final java.io.ObjectInputStream s)
         throws java.io.IOException, ClassNotFoundException {
         s.defaultReadObject();
         count = 0;

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/impl/PoolImplUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/PoolImplUtils.java b/src/main/java/org/apache/commons/pool2/impl/PoolImplUtils.java
index 06a3984..fb8ace7 100644
--- a/src/main/java/org/apache/commons/pool2/impl/PoolImplUtils.java
+++ b/src/main/java/org/apache/commons/pool2/impl/PoolImplUtils.java
@@ -37,7 +37,7 @@ class PoolImplUtils {
      * @return the type of object the factory creates
      */
     @SuppressWarnings("rawtypes")
-    static Class<?> getFactoryType(Class<? extends PooledObjectFactory> factory) {
+    static Class<?> getFactoryType(final Class<? extends PooledObjectFactory> factory) {
         return (Class<?>) getGenericType(PooledObjectFactory.class, factory);
     }
 
@@ -52,8 +52,8 @@ class PoolImplUtils {
      *
      * @return concrete type used by the implementation
      */
-    private static <T> Object getGenericType(Class<T> type,
-            Class<? extends T> clazz) {
+    private static <T> Object getGenericType(final Class<T> type,
+            final Class<? extends T> clazz) {
 
         // Look to see if this class implements the generic interface
 
@@ -111,7 +111,7 @@ class PoolImplUtils {
      *         type parameter or an instance of {@link Integer} representing
      *         the index for the type in the definition of the defining class
      */
-    private static Object getTypeParameter(Class<?> clazz, Type argType) {
+    private static Object getTypeParameter(final Class<?> clazz, final Type argType) {
         if (argType instanceof Class<?>) {
             return argType;
         }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/impl/PooledSoftReference.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/PooledSoftReference.java b/src/main/java/org/apache/commons/pool2/impl/PooledSoftReference.java
index 15d385f..720d706 100644
--- a/src/main/java/org/apache/commons/pool2/impl/PooledSoftReference.java
+++ b/src/main/java/org/apache/commons/pool2/impl/PooledSoftReference.java
@@ -40,7 +40,7 @@ public class PooledSoftReference<T> extends DefaultPooledObject<T> {
      *
      * @param reference SoftReference to be managed by the pool
      */
-    public PooledSoftReference(SoftReference<T> reference) {
+    public PooledSoftReference(final SoftReference<T> reference) {
         super(null);  // Null the hard reference in the parent
         this.reference = reference;
     }
@@ -94,7 +94,7 @@ public class PooledSoftReference<T> extends DefaultPooledObject<T> {
      *
      * @param reference new reference
      */
-    public synchronized void setReference(SoftReference<T> reference) {
+    public synchronized void setReference(final SoftReference<T> reference) {
         this.reference = reference;
     }
 }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java
index fd4f38a..2c5efab 100644
--- a/src/main/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java
@@ -75,7 +75,7 @@ public class SoftReferenceObjectPool<T> extends BaseObjectPool<T> {
      *
      * @param factory object factory to use.
      */
-    public SoftReferenceObjectPool(PooledObjectFactory<T> factory) {
+    public SoftReferenceObjectPool(final PooledObjectFactory<T> factory) {
         this.factory = factory;
     }
 
@@ -189,7 +189,7 @@ public class SoftReferenceObjectPool<T> extends BaseObjectPool<T> {
      *            instance to return to the pool
      */
     @Override
-    public synchronized void returnObject(T obj) throws Exception {
+    public synchronized void returnObject(final T obj) throws Exception {
         boolean success = !isClosed();
         final PooledSoftReference<T> ref = findReference(obj);
         if (ref == null) {
@@ -231,7 +231,7 @@ public class SoftReferenceObjectPool<T> extends BaseObjectPool<T> {
      * {@inheritDoc}
      */
     @Override
-    public synchronized void invalidateObject(T obj) throws Exception {
+    public synchronized void invalidateObject(final T obj) throws Exception {
         final PooledSoftReference<T> ref = findReference(obj);
         if (ref == null) {
             throw new IllegalStateException(
@@ -387,7 +387,7 @@ public class SoftReferenceObjectPool<T> extends BaseObjectPool<T> {
      * @param obj returning object
      * @return PooledSoftReference wrapping a soft reference to obj
      */
-    private PooledSoftReference<T> findReference(T obj) {
+    private PooledSoftReference<T> findReference(final T obj) {
         final Iterator<PooledSoftReference<T>> iterator = allReferences.iterator();
         while (iterator.hasNext()) {
             final PooledSoftReference<T> reference = iterator.next();
@@ -406,7 +406,7 @@ public class SoftReferenceObjectPool<T> extends BaseObjectPool<T> {
      *
      * @throws Exception If an error occurs while trying to destroy the object
      */
-    private void destroy(PooledSoftReference<T> toDestroy) throws Exception {
+    private void destroy(final PooledSoftReference<T> toDestroy) throws Exception {
         toDestroy.invalidate();
         idleReferences.remove(toDestroy);
         allReferences.remove(toDestroy);
@@ -422,7 +422,7 @@ public class SoftReferenceObjectPool<T> extends BaseObjectPool<T> {
      * Clears cleared references from iterator's collection
      * @param iterator iterator over idle/allReferences
      */
-    private void removeClearedReferences(Iterator<PooledSoftReference<T>> iterator) {
+    private void removeClearedReferences(final Iterator<PooledSoftReference<T>> iterator) {
         PooledSoftReference<T> ref;
         while (iterator.hasNext()) {
             ref = iterator.next();
@@ -433,7 +433,7 @@ public class SoftReferenceObjectPool<T> extends BaseObjectPool<T> {
     }
 
     @Override
-    protected void toStringAppendFields(StringBuilder builder) {
+    protected void toStringAppendFields(final StringBuilder builder) {
         super.toStringAppendFields(builder);
         builder.append(", factory=");
         builder.append(factory);

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/proxy/BaseProxyHandler.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/proxy/BaseProxyHandler.java b/src/main/java/org/apache/commons/pool2/proxy/BaseProxyHandler.java
index 4da1b44..b7caf4e 100644
--- a/src/main/java/org/apache/commons/pool2/proxy/BaseProxyHandler.java
+++ b/src/main/java/org/apache/commons/pool2/proxy/BaseProxyHandler.java
@@ -42,7 +42,7 @@ class BaseProxyHandler<T> {
      *                      be provided with usage tracking information for this
      *                      wrapped object
      */
-    BaseProxyHandler(T pooledObject, UsageTracking<T> usageTracking) {
+    BaseProxyHandler(final T pooledObject, final UsageTracking<T> usageTracking) {
         this.pooledObject = pooledObject;
         this.usageTracking = usageTracking;
     }
@@ -94,7 +94,7 @@ class BaseProxyHandler<T> {
      * @return          The result of the method call
      * @throws Throwable    If the method invocation fails
      */
-    Object doInvoke(Method method, Object[] args) throws Throwable {
+    Object doInvoke(final Method method, final Object[] args) throws Throwable {
         validateProxiedObject();
         final T object = getPooledObject();
         if (usageTracking != null) {

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java b/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java
index 15db6a4..1ff3891 100644
--- a/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java
+++ b/src/main/java/org/apache/commons/pool2/proxy/CglibProxyHandler.java
@@ -42,13 +42,13 @@ class CglibProxyHandler<T> extends BaseProxyHandler<T>
      *                      be provided with usage tracking information for this
      *                      wrapped object
      */
-    CglibProxyHandler(T pooledObject, UsageTracking<T> usageTracking) {
+    CglibProxyHandler(final T pooledObject, final UsageTracking<T> usageTracking) {
         super(pooledObject, usageTracking);
     }
 
     @Override
-    public Object intercept(Object object, Method method, Object[] args,
-            MethodProxy methodProxy) throws Throwable {
+    public Object intercept(final Object object, final Method method, final Object[] args,
+            final MethodProxy methodProxy) throws Throwable {
         return doInvoke(method, args);
     }
 }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/proxy/CglibProxySource.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/proxy/CglibProxySource.java b/src/main/java/org/apache/commons/pool2/proxy/CglibProxySource.java
index 8781474..9784b5f 100644
--- a/src/main/java/org/apache/commons/pool2/proxy/CglibProxySource.java
+++ b/src/main/java/org/apache/commons/pool2/proxy/CglibProxySource.java
@@ -37,12 +37,12 @@ public class CglibProxySource<T> implements ProxySource<T> {
      *
      * @param superclass The class to proxy
      */
-    public CglibProxySource(Class<? extends T> superclass) {
+    public CglibProxySource(final Class<? extends T> superclass) {
         this.superclass = superclass;
     }
 
     @Override
-    public T createProxy(T pooledObject, UsageTracking<T> usageTracking) {
+    public T createProxy(final T pooledObject, final UsageTracking<T> usageTracking) {
         final Enhancer enhancer = new Enhancer();
         enhancer.setSuperclass(superclass);
 
@@ -59,7 +59,7 @@ public class CglibProxySource<T> implements ProxySource<T> {
 
 
     @Override
-    public T resolveProxy(T proxy) {
+    public T resolveProxy(final T proxy) {
         @SuppressWarnings("unchecked")
         final
         CglibProxyHandler<T> cglibProxyHandler =

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/proxy/JdkProxyHandler.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/proxy/JdkProxyHandler.java b/src/main/java/org/apache/commons/pool2/proxy/JdkProxyHandler.java
index 56c2542..b1f8636 100644
--- a/src/main/java/org/apache/commons/pool2/proxy/JdkProxyHandler.java
+++ b/src/main/java/org/apache/commons/pool2/proxy/JdkProxyHandler.java
@@ -39,13 +39,13 @@ class JdkProxyHandler<T> extends BaseProxyHandler<T>
      *                      be provided with usage tracking information for this
      *                      wrapped object
      */
-    JdkProxyHandler(T pooledObject, UsageTracking<T> usageTracking) {
+    JdkProxyHandler(final T pooledObject, final UsageTracking<T> usageTracking) {
         super(pooledObject, usageTracking);
     }
 
 
     @Override
-    public Object invoke(Object proxy, Method method, Object[] args)
+    public Object invoke(final Object proxy, final Method method, final Object[] args)
             throws Throwable {
         return doInvoke(method, args);
     }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/proxy/JdkProxySource.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/proxy/JdkProxySource.java b/src/main/java/org/apache/commons/pool2/proxy/JdkProxySource.java
index 0c74f82..80aa07d 100644
--- a/src/main/java/org/apache/commons/pool2/proxy/JdkProxySource.java
+++ b/src/main/java/org/apache/commons/pool2/proxy/JdkProxySource.java
@@ -40,7 +40,7 @@ public class JdkProxySource<T> implements ProxySource<T> {
      * @param classLoader The class loader with which to create the proxy
      * @param interfaces  The interfaces to proxy
      */
-    public JdkProxySource(ClassLoader classLoader, Class<?>[] interfaces) {
+    public JdkProxySource(final ClassLoader classLoader, final Class<?>[] interfaces) {
         this.classLoader = classLoader;
         // Defensive copy
         this.interfaces = new Class<?>[interfaces.length];
@@ -49,7 +49,7 @@ public class JdkProxySource<T> implements ProxySource<T> {
 
 
     @Override
-    public T createProxy(T pooledObject, UsageTracking<T> usageTracking) {
+    public T createProxy(final T pooledObject, final UsageTracking<T> usageTracking) {
         @SuppressWarnings("unchecked")
         final
         T proxy = (T) Proxy.newProxyInstance(classLoader, interfaces,
@@ -59,7 +59,7 @@ public class JdkProxySource<T> implements ProxySource<T> {
 
 
     @Override
-    public T resolveProxy(T proxy) {
+    public T resolveProxy(final T proxy) {
         @SuppressWarnings("unchecked")
         final
         JdkProxyHandler<T> jdkProxyHandler =


[27/50] [abbrv] commons-pool git commit: Fix POOL-307 Replace inefficient use of keySet with entrySet in GKOP.

Posted by ma...@apache.org.
Fix POOL-307
Replace inefficient use of keySet with entrySet in GKOP.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1735165 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/db15a295
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/db15a295
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/db15a295

Branch: refs/heads/master
Commit: db15a295e120fcd5d5ad74207d03edf09b24bb19
Parents: 564334a
Author: Mark Thomas <ma...@apache.org>
Authored: Tue Mar 15 20:37:58 2016 +0000
Committer: Mark Thomas <ma...@apache.org>
Committed: Tue Mar 15 20:37:58 2016 +0000

----------------------------------------------------------------------
 src/changes/changes.xml                         |  5 ++-
 .../pool2/impl/GenericKeyedObjectPool.java      | 42 +++++++++++---------
 2 files changed, 27 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/db15a295/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 30573e4..6b48a1f 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -56,9 +56,12 @@ The <action> type attribute can be add,update,fix,remove.
       threads try to borrow an object at the same time and the factory fails to
       create any objects. 
     </action>
-    <action dev="markt" issue="POOL-280" tyoe="update" due-to="Jacopo Cappellato">
+    <action dev="markt" issue="POOL-280" type="update" due-to="Jacopo Cappellato">
       Small refactoring of borrowObject() to reduce code duplication.
     </action>
+    <action dev="markt" issue="POOL-307" type="update" due-to="Anthony Whitford">
+      Replace inefficient use of keySet with entrySet in GKOP.
+    </action>
   </release>
   <release version="2.4.2" date="2015-08-01" description=
  "This is a patch release, including bug fixes only.">

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/db15a295/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
index 8e1f88f..20281ee 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
@@ -738,13 +738,14 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         // build sorted map of idle objects
         final Map<PooledObject<T>, K> map = new TreeMap<PooledObject<T>, K>();
 
-        for (final K k : poolMap.keySet()) {
-            final ObjectDeque<T> queue = poolMap.get(k);
+        for (Map.Entry<K, ObjectDeque<T>> entry : poolMap.entrySet()) {
+            final K k = entry.getKey();
+            final ObjectDeque<T> deque = entry.getValue();
             // Protect against possible NPE if key has been removed in another
             // thread. Not worth locking the keys while this loop completes.
-            if (queue != null) {
+            if (deque != null) {
                 final LinkedBlockingDeque<PooledObject<T>> idleObjects =
-                    queue.getIdleObjects();
+                        deque.getIdleObjects();
                 for (final PooledObject<T> p : idleObjects) {
                     // each item into the map using the PooledObject object as the
                     // key. It then gets sorted based on the idle time
@@ -800,8 +801,9 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         int maxQueueLength = 0;
         LinkedBlockingDeque<PooledObject<T>> mostLoaded = null;
         K loadedKey = null;
-        for (final K k : poolMap.keySet()) {
-            final ObjectDeque<T> deque = poolMap.get(k);
+        for (Map.Entry<K, ObjectDeque<T>> entry : poolMap.entrySet()) {
+            final K k = entry.getKey();
+            final ObjectDeque<T> deque = entry.getValue();
             if (deque != null) {
                 final LinkedBlockingDeque<PooledObject<T>> pool = deque.getIdleObjects();
                 final int queueLength = pool.getTakeQueueLength();
@@ -837,8 +839,8 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      *         {@code false}
      */
     private boolean hasBorrowWaiters() {
-        for (final K k : poolMap.keySet()) {
-            final ObjectDeque<T> deque = poolMap.get(k);
+        for (Map.Entry<K, ObjectDeque<T>> entry : poolMap.entrySet()) {
+            final ObjectDeque<T> deque = entry.getValue();
             if (deque != null) {
                 final LinkedBlockingDeque<PooledObject<T>> pool =
                     deque.getIdleObjects();
@@ -1371,14 +1373,15 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
     public Map<String,Integer> getNumWaitersByKey() {
         final Map<String,Integer> result = new HashMap<String,Integer>();
 
-        for (final K key : poolMap.keySet()) {
-            final ObjectDeque<T> queue = poolMap.get(key);
-            if (queue != null) {
+        for (Map.Entry<K, ObjectDeque<T>> entry : poolMap.entrySet()) {
+            final K k = entry.getKey();
+            final ObjectDeque<T> deque = entry.getValue();
+            if (deque != null) {
                 if (getBlockWhenExhausted()) {
-                    result.put(key.toString(), Integer.valueOf(
-                            queue.getIdleObjects().getTakeQueueLength()));
+                    result.put(k.toString(), Integer.valueOf(
+                            deque.getIdleObjects().getTakeQueueLength()));
                 } else {
-                    result.put(key.toString(), Integer.valueOf(0));
+                    result.put(k.toString(), Integer.valueOf(0));
                 }
             }
         }
@@ -1401,13 +1404,14 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         final Map<String,List<DefaultPooledObjectInfo>> result =
                 new HashMap<String,List<DefaultPooledObjectInfo>>();
 
-        for (final K key : poolMap.keySet()) {
-            final ObjectDeque<T> queue = poolMap.get(key);
-            if (queue != null) {
+        for (Map.Entry<K, ObjectDeque<T>> entry : poolMap.entrySet()) {
+            final K k = entry.getKey();
+            final ObjectDeque<T> deque = entry.getValue();
+            if (deque != null) {
                 final List<DefaultPooledObjectInfo> list =
                         new ArrayList<DefaultPooledObjectInfo>();
-                result.put(key.toString(), list);
-                for (final PooledObject<T> p : queue.getAllObjects().values()) {
+                result.put(k.toString(), list);
+                for (final PooledObject<T> p : deque.getAllObjects().values()) {
                     list.add(new DefaultPooledObjectInfo(p));
                 }
             }


[36/50] [abbrv] commons-pool git commit: commons-parent 39 -> 40.

Posted by ma...@apache.org.
commons-parent 39 -> 40.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1743106 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/bdab334c
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/bdab334c
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/bdab334c

Branch: refs/heads/master
Commit: bdab334cada9918eccc0a1ce4771338ae51a9f69
Parents: a04dac6
Author: Gary D. Gregory <gg...@apache.org>
Authored: Tue May 10 07:07:54 2016 +0000
Committer: Gary D. Gregory <gg...@apache.org>
Committed: Tue May 10 07:07:54 2016 +0000

----------------------------------------------------------------------
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/bdab334c/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 7aca347..a7e0b45 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-parent</artifactId>
-    <version>39</version>
+    <version>40</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>commons-pool2</artifactId>


[31/50] [abbrv] commons-pool git commit: Confirm that POOL-310 is invalid.

Posted by ma...@apache.org.
Confirm that POOL-310 is invalid.


git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1735291 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/55c10ec2
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/55c10ec2
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/55c10ec2

Branch: refs/heads/master
Commit: 55c10ec248933da2e2e8dd3dc8e9bad0811810c0
Parents: a4c544a
Author: Mark Thomas <ma...@apache.org>
Authored: Wed Mar 16 20:19:53 2016 +0000
Committer: Mark Thomas <ma...@apache.org>
Committed: Wed Mar 16 20:19:53 2016 +0000

----------------------------------------------------------------------
 .../pool2/impl/TestGenericKeyedObjectPool.java  | 80 +++++++++++++++-----
 1 file changed, 61 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/55c10ec2/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java
index 4777e55..5e8ea4a 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java
@@ -416,8 +416,8 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
             assertFalse(pool.getBlockWhenExhausted());
         }
     }
-    
-    /** 
+
+    /**
      * JIRA: POOL-270 - make sure constructor correctly sets run
      * frequency of evictor timer.
      */
@@ -437,7 +437,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         assertEquals(0, p.getNumIdle("one"));
         p.close();
     }
-    
+
 
     @Test(timeout=60000)
     public void testEviction() throws Exception {
@@ -2141,13 +2141,13 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         factory.exceptionOnCreate = false;
         pool.borrowObject("One");
     }
-    
+
     /**
      * JIRA: POOL-287
-     * 
+     *
      * Verify that when an attempt is made to borrow an instance from the pool
      * while the evictor is visiting it, there is no capacity leak.
-     * 
+     *
      * Test creates the scenario described in POOL-287.
      */
     @Test
@@ -2161,15 +2161,15 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         pool.setMaxTotalPerKey(2);
         pool.setNumTestsPerEvictionRun(1);
         pool.setTimeBetweenEvictionRunsMillis(500);
-        
+
         // Load pool with two objects
         pool.addObject("one");  // call this o1
         pool.addObject("one");  // call this o2
         // Default is LIFO, so "one" pool is now [o2, o1] in offer order.
         // Evictor will visit in oldest-to-youngest order, so o1 then o2
-        
+
         Thread.sleep(800); // Wait for first eviction run to complete
-        
+
         // At this point, one eviction run should have completed, visiting o1
         // and eviction cursor should be pointed at o2, which is the next offered instance
         Thread.sleep(250);         // Wait for evictor to start
@@ -2179,11 +2179,11 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         pool.returnObject("one", o2);
         pool.close();
     }
-    
+
     /**
      * Verifies that when a factory's makeObject produces instances that are not
-     * discernible by equals, the pool can handle them.  
-     * 
+     * discernible by equals, the pool can handle them.
+     *
      * JIRA: POOL-283
      */
     @Test
@@ -2198,11 +2198,11 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         pool.returnObject("a", s2);
         pool.close();
     }
-    
+
     /**
      * Verifies that when a borrowed object is mutated in a way that does not
      * preserve equality and hashcode, the pool can recognized it on return.
-     * 
+     *
      * JIRA: POOL-284
      */
     @Test
@@ -2219,11 +2219,11 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         pool.returnObject("a", s2);
         pool.close();
     }
-    
+
     /**
      * Verifies that returning an object twice (without borrow in between) causes ISE
      * but does not re-validate or re-passivate the instance.
-     * 
+     *
      * JIRA: POOL-285
      */
     @Test
@@ -2246,6 +2246,48 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         }
     }
 
+    /**
+     * Verifies that if a borrow of a new key is blocked because maxTotal has
+     * been reached, that that borrow continues once another object is returned.
+     *
+     * JIRA: POOL-310
+     */
+    @Test
+    public void testMaxTotalWithThreads() throws Exception {
+
+        pool.setMaxTotalPerKey(2);
+        pool.setMaxTotal(1);
+
+        final int holdTime = 2000;
+
+        TestThread<String> testA = new TestThread<String>(pool, 1, 0, holdTime, false, null, "a");
+        TestThread<String> testB = new TestThread<String>(pool, 1, 0, holdTime, false, null, "b");
+
+        Thread threadA = new Thread(testA);
+        Thread threadB = new Thread(testB);
+
+        threadA.start();
+        threadB.start();
+
+        Thread.sleep(holdTime * 2);
+
+        // Both threads should be complete now.
+        boolean threadRunning = true;
+        int count = 0;
+        while (threadRunning && count < 15) {
+            threadRunning = threadA.isAlive();
+            threadRunning = threadB.isAlive();
+            Thread.sleep(200);
+            count++;
+        }
+        Assert.assertFalse(threadA.isAlive());
+        Assert.assertFalse(threadB.isAlive());
+
+        Assert.assertFalse(testA._failed);
+        Assert.assertFalse(testB._failed);
+    }
+
+
     private static class DummyFactory
             extends BaseKeyedPooledObjectFactory<Object,Object> {
         @Override
@@ -2257,13 +2299,13 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
             return new DefaultPooledObject<Object>(value);
         }
     }
-    
-    /** 
+
+    /**
      * Factory that creates HashSets.  Note that this means
      *  0) All instances are initially equal (not discernible by equals)
      *  1) Instances are mutable and mutation can cause change in identity / hashcode.
      */
-    private static final class HashSetFactory 
+    private static final class HashSetFactory
             extends BaseKeyedPooledObjectFactory<String, HashSet<String>> {
         @Override
         public HashSet<String> create(final String key) throws Exception {


[16/50] [abbrv] commons-pool git commit: Add final modifier to local variables.

Posted by ma...@apache.org.
Add final modifier to local variables.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1729267 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/5fe7dc02
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/5fe7dc02
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/5fe7dc02

Branch: refs/heads/master
Commit: 5fe7dc020d070e165823f84ba9b34731f143412f
Parents: 4a7f18b
Author: Gary D. Gregory <gg...@apache.org>
Authored: Mon Feb 8 21:45:12 2016 +0000
Committer: Gary D. Gregory <gg...@apache.org>
Committed: Mon Feb 8 21:45:12 2016 +0000

----------------------------------------------------------------------
 .../org/apache/commons/pool2/BaseObject.java    |   2 +-
 .../org/apache/commons/pool2/PoolUtils.java     |  66 +--
 .../commons/pool2/impl/AbandonedConfig.java     |   2 +-
 .../pool2/impl/BaseGenericObjectPool.java       |  55 +--
 .../commons/pool2/impl/DefaultPooledObject.java |  10 +-
 .../pool2/impl/DefaultPooledObjectInfo.java     |  10 +-
 .../commons/pool2/impl/EvictionConfig.java      |   2 +-
 .../commons/pool2/impl/EvictionTimer.java       |   6 +-
 .../pool2/impl/GenericKeyedObjectPool.java      | 178 ++++----
 .../impl/GenericKeyedObjectPoolConfig.java      |   2 +-
 .../commons/pool2/impl/GenericObjectPool.java   | 104 ++---
 .../pool2/impl/GenericObjectPoolConfig.java     |   2 +-
 .../pool2/impl/InterruptibleReentrantLock.java  |   4 +-
 .../commons/pool2/impl/LinkedBlockingDeque.java |  47 +--
 .../commons/pool2/impl/PoolImplUtils.java       |  13 +-
 .../commons/pool2/impl/PooledSoftReference.java |   2 +-
 .../pool2/impl/SoftReferenceObjectPool.java     |  24 +-
 .../commons/pool2/proxy/BaseProxyHandler.java   |   6 +-
 .../commons/pool2/proxy/CglibProxySource.java   |  10 +-
 .../commons/pool2/proxy/JdkProxySource.java     |   6 +-
 .../pool2/proxy/ProxiedKeyedObjectPool.java     |  10 +-
 .../commons/pool2/proxy/ProxiedObjectPool.java  |  10 +-
 .../pool2/MethodCallPoolableObjectFactory.java  |   2 +-
 .../TestBaseKeyedPoolableObjectFactory.java     |   2 +-
 .../commons/pool2/TestBaseObjectPool.java       |  44 +-
 .../pool2/TestBasePoolableObjectFactory.java    |   2 +-
 .../commons/pool2/TestKeyedObjectPool.java      | 100 ++---
 .../apache/commons/pool2/TestObjectPool.java    |  42 +-
 .../org/apache/commons/pool2/TestPoolUtils.java |  94 +++--
 .../java/org/apache/commons/pool2/Waiter.java   |   4 +-
 .../org/apache/commons/pool2/WaiterFactory.java |   8 +-
 .../pool2/impl/TestAbandonedObjectPool.java     |  43 +-
 .../pool2/impl/TestBaseGenericObjectPool.java   |   4 +-
 .../pool2/impl/TestDefaultPooledObject.java     |  14 +-
 .../pool2/impl/TestDefaultPooledObjectInfo.java |  44 +-
 .../pool2/impl/TestGenericKeyedObjectPool.java  | 412 +++++++++----------
 .../pool2/impl/TestGenericObjectPool.java       | 378 ++++++++---------
 .../impl/TestGenericObjectPoolClassLoaders.java |  16 +-
 .../pool2/impl/TestLinkedBlockingDeque.java     |  60 +--
 .../commons/pool2/impl/TestPoolImplUtils.java   |   4 +-
 .../pool2/impl/TestPooledSoftReference.java     |   4 +-
 .../pool2/impl/TestSoftRefOutOfMemory.java      |  14 +-
 .../pool2/performance/PerformanceTest.java      |  36 +-
 .../performance/SleepingObjectFactory.java      |   6 +-
 .../proxy/BaseTestProxiedKeyedObjectPool.java   |  12 +-
 .../pool2/proxy/BaseTestProxiedObjectPool.java  |  20 +-
 46 files changed, 975 insertions(+), 961 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/main/java/org/apache/commons/pool2/BaseObject.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/BaseObject.java b/src/main/java/org/apache/commons/pool2/BaseObject.java
index 019b678..948dd3f 100644
--- a/src/main/java/org/apache/commons/pool2/BaseObject.java
+++ b/src/main/java/org/apache/commons/pool2/BaseObject.java
@@ -25,7 +25,7 @@ public abstract class BaseObject {
 
     @Override
     public String toString() {
-        StringBuilder builder = new StringBuilder();
+        final StringBuilder builder = new StringBuilder();
         builder.append(getClass().getSimpleName());
         builder.append(" [");
         toStringAppendFields(builder);

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/main/java/org/apache/commons/pool2/PoolUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/PoolUtils.java b/src/main/java/org/apache/commons/pool2/PoolUtils.java
index 3b00a2f..a945702 100644
--- a/src/main/java/org/apache/commons/pool2/PoolUtils.java
+++ b/src/main/java/org/apache/commons/pool2/PoolUtils.java
@@ -605,7 +605,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
@@ -680,7 +680,7 @@ public final class PoolUtils {
                 }
                 success = true;
 
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 cancel();
 
             } finally {
@@ -752,7 +752,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();
@@ -766,11 +766,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();
@@ -782,11 +782,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();
@@ -799,7 +799,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();
@@ -813,7 +813,7 @@ public final class PoolUtils {
          */
         @Override
         public int getNumIdle() {
-            ReadLock readLock = readWriteLock.readLock();
+            final ReadLock readLock = readWriteLock.readLock();
             readLock.lock();
             try {
                 return pool.getNumIdle();
@@ -827,7 +827,7 @@ public final class PoolUtils {
          */
         @Override
         public int getNumActive() {
-            ReadLock readLock = readWriteLock.readLock();
+            final ReadLock readLock = readWriteLock.readLock();
             readLock.lock();
             try {
                 return pool.getNumActive();
@@ -841,7 +841,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();
@@ -855,11 +855,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();
@@ -926,7 +926,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);
@@ -940,11 +940,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();
@@ -956,11 +956,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();
@@ -973,7 +973,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);
@@ -987,7 +987,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);
@@ -1001,7 +1001,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);
@@ -1015,7 +1015,7 @@ public final class PoolUtils {
          */
         @Override
         public int getNumIdle() {
-            ReadLock readLock = readWriteLock.readLock();
+            final ReadLock readLock = readWriteLock.readLock();
             readLock.lock();
             try {
                 return keyedPool.getNumIdle();
@@ -1029,7 +1029,7 @@ public final class PoolUtils {
          */
         @Override
         public int getNumActive() {
-            ReadLock readLock = readWriteLock.readLock();
+            final ReadLock readLock = readWriteLock.readLock();
             readLock.lock();
             try {
                 return keyedPool.getNumActive();
@@ -1043,7 +1043,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();
@@ -1058,7 +1058,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);
@@ -1072,11 +1072,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();
@@ -1466,7 +1466,7 @@ public final class PoolUtils {
                 } else {
                     pool.returnObject(obj);
                 }
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // swallowed
             }
         }
@@ -1478,7 +1478,7 @@ public final class PoolUtils {
         public void invalidateObject(final T obj) {
             try {
                 pool.invalidateObject(obj);
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // swallowed
             }
         }
@@ -1523,7 +1523,7 @@ public final class PoolUtils {
         public void close() {
             try {
                 pool.close();
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // swallowed
             }
         }
@@ -1631,7 +1631,7 @@ public final class PoolUtils {
                 } else {
                     keyedPool.returnObject(key, obj);
                 }
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // swallowed
             }
         }
@@ -1654,7 +1654,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
             }
         }
@@ -1724,7 +1724,7 @@ public final class PoolUtils {
         public void close() {
             try {
                 keyedPool.close();
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 // swallowed
             }
         }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/main/java/org/apache/commons/pool2/impl/AbandonedConfig.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/AbandonedConfig.java b/src/main/java/org/apache/commons/pool2/impl/AbandonedConfig.java
index cb42ec4..da77d13 100644
--- a/src/main/java/org/apache/commons/pool2/impl/AbandonedConfig.java
+++ b/src/main/java/org/apache/commons/pool2/impl/AbandonedConfig.java
@@ -235,7 +235,7 @@ public class AbandonedConfig {
      */
     @Override
     public String toString() {
-        StringBuilder builder = new StringBuilder();
+        final StringBuilder builder = new StringBuilder();
         builder.append("AbandonedConfig [removeAbandonedOnBorrow=");
         builder.append(removeAbandonedOnBorrow);
         builder.append(", removeAbandonedOnMaintenance=");

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
index ee4f5c2..930dc6c 100644
--- a/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
@@ -141,7 +141,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
         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 {
@@ -604,24 +604,25 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
             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);
@@ -860,7 +861,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      * @param e exception to be swallowed
      */
     final void swallowException(Exception e) {
-        SwallowedExceptionListener listener = getSwallowedExceptionListener();
+        final SwallowedExceptionListener listener = getSwallowedExceptionListener();
 
         if (listener == null) {
             return;
@@ -868,11 +869,11 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
 
         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.
         }
     }
@@ -915,9 +916,9 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
             try {
                 ManagementFactory.getPlatformMBeanServer().unregisterMBean(
                         oname);
-            } catch (MBeanRegistrationException e) {
+            } catch (final MBeanRegistrationException e) {
                 swallowException(e);
-            } catch (InstanceNotFoundException e) {
+            } catch (final InstanceNotFoundException e) {
                 swallowException(e);
             }
         }
@@ -939,7 +940,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
     private ObjectName jmxRegister(BaseObjectPoolConfig config,
             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();
@@ -959,7 +960,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
                 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.
@@ -970,13 +971,13 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
                             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;
             }
@@ -993,8 +994,8 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
         // 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();
     }
@@ -1017,12 +1018,12 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
          */
         @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
@@ -1036,9 +1037,9 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
                 // 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);
@@ -1046,7 +1047,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
                 // Re-create idle instances.
                 try {
                     ensureMinIdle();
-                } catch (Exception e) {
+                } catch (final Exception e) {
                     swallowException(e);
                 }
             } finally {
@@ -1102,7 +1103,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
             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) +
@@ -1114,7 +1115,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
 
         @Override
         public String toString() {
-            StringBuilder builder = new StringBuilder();
+            final StringBuilder builder = new StringBuilder();
             builder.append("StatsStore [values=");
             builder.append(Arrays.toString(values));
             builder.append(", size=");
@@ -1218,7 +1219,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
 
         @Override
         public String toString() {
-            StringBuilder builder = new StringBuilder();
+            final StringBuilder builder = new StringBuilder();
             builder.append("IdentityWrapper [instance=");
             builder.append(instance);
             builder.append("]");

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObject.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObject.java b/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObject.java
index 2077a43..ba6dbe4 100644
--- a/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObject.java
+++ b/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObject.java
@@ -73,8 +73,8 @@ public class DefaultPooledObject<T> implements PooledObject<T> {
     @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;
@@ -143,7 +143,7 @@ public class DefaultPooledObject<T> implements PooledObject<T> {
 
     @Override
     public String toString() {
-        StringBuilder result = new StringBuilder();
+        final StringBuilder result = new StringBuilder();
         result.append("Object: ");
         result.append(object.toString());
         result.append(", State: ");
@@ -242,12 +242,12 @@ public class DefaultPooledObject<T> implements PooledObject<T> {
     @Override
     public void printStackTrace(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;

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObjectInfo.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObjectInfo.java b/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObjectInfo.java
index aa32bd8..48aa797 100644
--- a/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObjectInfo.java
+++ b/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObjectInfo.java
@@ -48,7 +48,7 @@ public class DefaultPooledObjectInfo implements DefaultPooledObjectInfoMBean {
 
     @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 implements DefaultPooledObjectInfoMBean {
 
     @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 implements DefaultPooledObjectInfoMBean {
 
     @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()));
     }
 
@@ -105,7 +105,7 @@ public class DefaultPooledObjectInfo implements DefaultPooledObjectInfoMBean {
      */
     @Override
     public String toString() {
-        StringBuilder builder = new StringBuilder();
+        final StringBuilder builder = new StringBuilder();
         builder.append("DefaultPooledObjectInfo [pooledObject=");
         builder.append(pooledObject);
         builder.append("]");

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/main/java/org/apache/commons/pool2/impl/EvictionConfig.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/EvictionConfig.java b/src/main/java/org/apache/commons/pool2/impl/EvictionConfig.java
index d68aa5a..a23a9b1 100644
--- a/src/main/java/org/apache/commons/pool2/impl/EvictionConfig.java
+++ b/src/main/java/org/apache/commons/pool2/impl/EvictionConfig.java
@@ -103,7 +103,7 @@ public class EvictionConfig {
      */
     @Override
     public String toString() {
-        StringBuilder builder = new StringBuilder();
+        final StringBuilder builder = new StringBuilder();
         builder.append("EvictionConfig [idleEvictTime=");
         builder.append(idleEvictTime);
         builder.append(", idleSoftEvictTime=");

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java b/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
index 70282d1..4ff4b10 100644
--- a/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
+++ b/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
@@ -62,7 +62,7 @@ class EvictionTimer {
         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(
@@ -130,7 +130,7 @@ class EvictionTimer {
 
         @Override
         public String toString() {
-            StringBuilder builder = new StringBuilder();
+            final StringBuilder builder = new StringBuilder();
             builder.append("PrivilegedSetTccl [classLoader=");
             builder.append(classLoader);
             builder.append("]");
@@ -162,7 +162,7 @@ class EvictionTimer {
      */
     @Override
     public String toString() {
-        StringBuilder builder = new StringBuilder();
+        final StringBuilder builder = new StringBuilder();
         builder.append("EvictionTimer []");
         return builder.toString();
     }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
index f5e5858..8c9d8d9 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
@@ -222,7 +222,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      */
     @Override
     public int getMinIdlePerKey() {
-        int maxIdlePerKeySave = getMaxIdlePerKey();
+        final int maxIdlePerKeySave = getMaxIdlePerKey();
         if (this.minIdlePerKey > maxIdlePerKeySave) {
             return maxIdlePerKeySave;
         }
@@ -341,11 +341,11 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
 
         // Get local copy of current config so it is consistent for entire
         // method execution
-        boolean blockWhenExhausted = getBlockWhenExhausted();
+        final boolean blockWhenExhausted = getBlockWhenExhausted();
 
         boolean create;
-        long waitTime = System.currentTimeMillis();
-        ObjectDeque<T> objectDeque = register(key);
+        final long waitTime = System.currentTimeMillis();
+        final ObjectDeque<T> objectDeque = register(key);
 
         try {
             while (p == null) {
@@ -392,15 +392,15 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
                 if (p != null) {
                     try {
                         factory.activateObject(key, p);
-                    } catch (Exception e) {
+                    } catch (final Exception e) {
                         try {
                             destroy(key, p, true);
-                        } catch (Exception e1) {
+                        } catch (final Exception e1) {
                             // Ignore - activation failure is more important
                         }
                         p = null;
                         if (create) {
-                            NoSuchElementException nsee = new NoSuchElementException(
+                            final NoSuchElementException nsee = new NoSuchElementException(
                                     "Unable to activate object");
                             nsee.initCause(e);
                             throw nsee;
@@ -411,7 +411,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
                         Throwable validationThrowable = null;
                         try {
                             validate = factory.validateObject(key, p);
-                        } catch (Throwable t) {
+                        } catch (final Throwable t) {
                             PoolUtils.checkRethrow(t);
                             validationThrowable = t;
                         }
@@ -419,12 +419,12 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
                             try {
                                 destroy(key, p, true);
                                 destroyedByBorrowValidationCount.incrementAndGet();
-                            } catch (Exception e) {
+                            } catch (final Exception e) {
                                 // Ignore - validation failure is more important
                             }
                             p = null;
                             if (create) {
-                                NoSuchElementException nsee = new NoSuchElementException(
+                                final NoSuchElementException nsee = new NoSuchElementException(
                                         "Unable to validate object");
                                 nsee.initCause(validationThrowable);
                                 throw nsee;
@@ -468,9 +468,9 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
     @Override
     public void returnObject(K key, T obj) {
 
-        ObjectDeque<T> objectDeque = poolMap.get(key);
+        final ObjectDeque<T> objectDeque = poolMap.get(key);
 
-        PooledObject<T> p = objectDeque.getAllObjects().get(new IdentityWrapper<T>(obj));
+        final PooledObject<T> p = objectDeque.getAllObjects().get(new IdentityWrapper<T>(obj));
 
         if (p == null) {
             throw new IllegalStateException(
@@ -486,19 +486,19 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
             p.markReturning(); // Keep from being marked abandoned (once GKOP does this)
         }
 
-        long activeTime = p.getActiveTimeMillis();
+        final long activeTime = p.getActiveTimeMillis();
 
         if (getTestOnReturn()) {
             if (!factory.validateObject(key, p)) {
                 try {
                     destroy(key, p, true);
-                } catch (Exception e) {
+                } catch (final Exception e) {
                     swallowException(e);
                 }
                 if (objectDeque.idleObjects.hasTakeWaiters()) {
                     try {
                         addObject(key);
-                    } catch (Exception e) {
+                    } catch (final Exception e) {
                         swallowException(e);
                     }
                 }
@@ -509,17 +509,17 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
 
         try {
             factory.passivateObject(key, p);
-        } catch (Exception e1) {
+        } catch (final Exception e1) {
             swallowException(e1);
             try {
                 destroy(key, p, true);
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 swallowException(e);
             }
             if (objectDeque.idleObjects.hasTakeWaiters()) {
                 try {
                     addObject(key);
-                } catch (Exception e) {
+                } catch (final Exception e) {
                     swallowException(e);
                 }
             }
@@ -532,14 +532,14 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
                     "Object has already been returned to this pool");
         }
 
-        int maxIdle = getMaxIdlePerKey();
-        LinkedBlockingDeque<PooledObject<T>> idleObjects =
+        final int maxIdle = getMaxIdlePerKey();
+        final LinkedBlockingDeque<PooledObject<T>> idleObjects =
             objectDeque.getIdleObjects();
 
         if (isClosed() || maxIdle > -1 && maxIdle <= idleObjects.size()) {
             try {
                 destroy(key, p, true);
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 swallowException(e);
             }
         } else {
@@ -581,9 +581,9 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
     @Override
     public void invalidateObject(K key, T obj) throws Exception {
 
-        ObjectDeque<T> objectDeque = poolMap.get(key);
+        final ObjectDeque<T> objectDeque = poolMap.get(key);
 
-        PooledObject<T> p = objectDeque.getAllObjects().get(new IdentityWrapper<T>(obj));
+        final PooledObject<T> p = objectDeque.getAllObjects().get(new IdentityWrapper<T>(obj));
         if (p == null) {
             throw new IllegalStateException(
                     "Object not currently part of this pool");
@@ -619,7 +619,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      */
     @Override
     public void clear() {
-        Iterator<K> iter = poolMap.keySet().iterator();
+        final Iterator<K> iter = poolMap.keySet().iterator();
 
         while (iter.hasNext()) {
             clear(iter.next());
@@ -638,10 +638,10 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
     @Override
     public void clear(K key) {
 
-        ObjectDeque<T> objectDeque = register(key);
+        final ObjectDeque<T> objectDeque = register(key);
 
         try {
-            LinkedBlockingDeque<PooledObject<T>> idleObjects =
+            final LinkedBlockingDeque<PooledObject<T>> idleObjects =
                     objectDeque.getIdleObjects();
 
             PooledObject<T> p = idleObjects.poll();
@@ -649,7 +649,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
             while (p != null) {
                 try {
                     destroy(key, p, true);
-                } catch (Exception e) {
+                } catch (final Exception e) {
                     swallowException(e);
                 }
                 p = idleObjects.poll();
@@ -668,7 +668,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
 
     @Override
     public int getNumIdle() {
-        Iterator<ObjectDeque<T>> iter = poolMap.values().iterator();
+        final Iterator<ObjectDeque<T>> iter = poolMap.values().iterator();
         int result = 0;
 
         while (iter.hasNext()) {
@@ -728,7 +728,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
             jmxUnregister();
 
             // Release any threads that were waiting for an object
-            Iterator<ObjectDeque<T>> iter = poolMap.values().iterator();
+            final Iterator<ObjectDeque<T>> iter = poolMap.values().iterator();
             while (iter.hasNext()) {
                 iter.next().getIdleObjects().interuptTakeWaiters();
             }
@@ -748,14 +748,14 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         // build sorted map of idle objects
         final Map<PooledObject<T>, K> map = new TreeMap<PooledObject<T>, K>();
 
-        for (K k : poolMap.keySet()) {
-            ObjectDeque<T> queue = poolMap.get(k);
+        for (final K k : poolMap.keySet()) {
+            final ObjectDeque<T> queue = poolMap.get(k);
             // Protect against possible NPE if key has been removed in another
             // thread. Not worth locking the keys while this loop completes.
             if (queue != null) {
                 final LinkedBlockingDeque<PooledObject<T>> idleObjects =
                     queue.getIdleObjects();
-                for (PooledObject<T> p : idleObjects) {
+                for (final PooledObject<T> p : idleObjects) {
                     // each item into the map using the PooledObject object as the
                     // key. It then gets sorted based on the idle time
                     map.put(p, k);
@@ -766,22 +766,22 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         // Now iterate created map and kill the first 15% plus one to account
         // for zero
         int itemsToRemove = ((int) (map.size() * 0.15)) + 1;
-        Iterator<Map.Entry<PooledObject<T>, K>> iter =
+        final Iterator<Map.Entry<PooledObject<T>, K>> iter =
             map.entrySet().iterator();
 
         while (iter.hasNext() && itemsToRemove > 0) {
-            Map.Entry<PooledObject<T>, K> entry = iter.next();
+            final Map.Entry<PooledObject<T>, K> entry = iter.next();
             // kind of backwards on naming.  In the map, each key is the
             // PooledObject because it has the ordering with the timestamp
             // value.  Each value that the key references is the key of the
             // list it belongs to.
-            K key = entry.getValue();
-            PooledObject<T> p = entry.getKey();
+            final K key = entry.getValue();
+            final PooledObject<T> p = entry.getKey();
             // Assume the destruction succeeds
             boolean destroyed = true;
             try {
                 destroyed = destroy(key, p, false);
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 swallowException(e);
             }
             if (destroyed) {
@@ -810,7 +810,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         int maxQueueLength = 0;
         LinkedBlockingDeque<PooledObject<T>> mostLoaded = null;
         K loadedKey = null;
-        for (K k : poolMap.keySet()) {
+        for (final K k : poolMap.keySet()) {
             final ObjectDeque<T> deque = poolMap.get(k);
             if (deque != null) {
                 final LinkedBlockingDeque<PooledObject<T>> pool = deque.getIdleObjects();
@@ -827,11 +827,11 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         if (mostLoaded != null) {
             register(loadedKey);
             try {
-                PooledObject<T> p = create(loadedKey);
+                final PooledObject<T> p = create(loadedKey);
                 if (p != null) {
                     addIdleObject(loadedKey, p);
                 }
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 swallowException(e);
             } finally {
                 deregister(loadedKey);
@@ -847,7 +847,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      *         {@code false}
      */
     private boolean hasBorrowWaiters() {
-        for (K k : poolMap.keySet()) {
+        for (final K k : poolMap.keySet()) {
             final ObjectDeque<T> deque = poolMap.get(k);
             if (deque != null) {
                 final LinkedBlockingDeque<PooledObject<T>> pool =
@@ -877,22 +877,22 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         }
 
         PooledObject<T> underTest = null;
-        EvictionPolicy<T> evictionPolicy = getEvictionPolicy();
+        final EvictionPolicy<T> evictionPolicy = getEvictionPolicy();
 
         synchronized (evictionLock) {
-            EvictionConfig evictionConfig = new EvictionConfig(
+            final EvictionConfig evictionConfig = new EvictionConfig(
                     getMinEvictableIdleTimeMillis(),
                     getSoftMinEvictableIdleTimeMillis(),
                     getMinIdlePerKey());
 
-            boolean testWhileIdle = getTestWhileIdle();
+            final boolean testWhileIdle = getTestWhileIdle();
 
             for (int i = 0, m = getNumTests(); i < m; i++) {
                 if(evictionIterator == null || !evictionIterator.hasNext()) {
                     if (evictionKeyIterator == null ||
                             !evictionKeyIterator.hasNext()) {
-                        List<K> keyCopy = new ArrayList<K>();
-                        Lock readLock = keyLock.readLock();
+                        final List<K> keyCopy = new ArrayList<K>();
+                        final Lock readLock = keyLock.readLock();
                         readLock.lock();
                         try {
                             keyCopy.addAll(poolKeyList);
@@ -903,7 +903,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
                     }
                     while (evictionKeyIterator.hasNext()) {
                         evictionKey = evictionKeyIterator.next();
-                        ObjectDeque<T> objectDeque = poolMap.get(evictionKey);
+                        final ObjectDeque<T> objectDeque = poolMap.get(evictionKey);
                         if (objectDeque == null) {
                             continue;
                         }
@@ -924,7 +924,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
                 try {
                     underTest = evictionIterator.next();
                     idleObjects = evictionIterator.getIdleObjects();
-                } catch (NoSuchElementException nsee) {
+                } catch (final NoSuchElementException nsee) {
                     // Object was borrowed in another thread
                     // Don't count this as an eviction test so reduce i;
                     i--;
@@ -946,7 +946,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
                 try {
                     evict = evictionPolicy.evict(evictionConfig, underTest,
                             poolMap.get(evictionKey).getIdleObjects().size());
-                } catch (Throwable t) {
+                } catch (final Throwable t) {
                     // Slightly convoluted as SwallowedExceptionListener
                     // uses Exception rather than Throwable
                     PoolUtils.checkRethrow(t);
@@ -964,7 +964,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
                         try {
                             factory.activateObject(evictionKey, underTest);
                             active = true;
-                        } catch (Exception e) {
+                        } catch (final Exception e) {
                             destroy(evictionKey, underTest, true);
                             destroyedByEvictorCount.incrementAndGet();
                         }
@@ -975,7 +975,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
                             } else {
                                 try {
                                     factory.passivateObject(evictionKey, underTest);
-                                } catch (Exception e) {
+                                } catch (final Exception e) {
                                     destroy(evictionKey, underTest, true);
                                     destroyedByEvictorCount.incrementAndGet();
                                 }
@@ -1001,14 +1001,14 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      * @throws Exception If the objection creation fails
      */
     private PooledObject<T> create(K key) throws Exception {
-        int maxTotalPerKeySave = getMaxTotalPerKey(); // Per key
-        int maxTotal = getMaxTotal();   // All keys
+        final int maxTotalPerKeySave = getMaxTotalPerKey(); // Per key
+        final int maxTotal = getMaxTotal();   // All keys
 
         // Check against the overall limit
         boolean loop = true;
 
         while (loop) {
-            int newNumTotal = numTotal.incrementAndGet();
+            final int newNumTotal = numTotal.incrementAndGet();
             if (maxTotal > -1 && newNumTotal > maxTotal) {
                 numTotal.decrementAndGet();
                 if (getNumIdle() == 0) {
@@ -1020,8 +1020,8 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
             }
         }
 
-        ObjectDeque<T> objectDeque = poolMap.get(key);
-        long newCreateCount = objectDeque.getCreateCount().incrementAndGet();
+        final ObjectDeque<T> objectDeque = poolMap.get(key);
+        final long newCreateCount = objectDeque.getCreateCount().incrementAndGet();
 
         // Check against the per key limit
         if (maxTotalPerKeySave > -1 && newCreateCount > maxTotalPerKeySave ||
@@ -1035,7 +1035,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         PooledObject<T> p = null;
         try {
             p = factory.makeObject(key);
-        } catch (Exception e) {
+        } catch (final Exception e) {
             numTotal.decrementAndGet();
             objectDeque.getCreateCount().decrementAndGet();
             throw e;
@@ -1059,10 +1059,10 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
     private boolean destroy(K key, PooledObject<T> toDestroy, boolean always)
             throws Exception {
 
-        ObjectDeque<T> objectDeque = register(key);
+        final ObjectDeque<T> objectDeque = register(key);
 
         try {
-            boolean isIdle = objectDeque.getIdleObjects().remove(toDestroy);
+            final boolean isIdle = objectDeque.getIdleObjects().remove(toDestroy);
 
             if (isIdle || always) {
                 objectDeque.getAllObjects().remove(new IdentityWrapper<T>(toDestroy.getObject()));
@@ -1138,10 +1138,10 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         ObjectDeque<T> objectDeque;
 
         objectDeque = poolMap.get(k);
-        long numInterested = objectDeque.getNumInterested().decrementAndGet();
+        final long numInterested = objectDeque.getNumInterested().decrementAndGet();
         if (numInterested == 0 && objectDeque.getCreateCount().get() == 0) {
             // Potential to remove key
-            Lock writeLock = keyLock.writeLock();
+            final Lock writeLock = keyLock.writeLock();
             writeLock.lock();
             try {
                 if (objectDeque.getCreateCount().get() == 0 &&
@@ -1160,12 +1160,12 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
 
     @Override
     void ensureMinIdle() throws Exception {
-        int minIdlePerKeySave = getMinIdlePerKey();
+        final int minIdlePerKeySave = getMinIdlePerKey();
         if (minIdlePerKeySave < 1) {
             return;
         }
 
-        for (K k : poolMap.keySet()) {
+        for (final K k : poolMap.keySet()) {
             ensureMinIdle(k);
         }
     }
@@ -1180,7 +1180,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      */
     private void ensureMinIdle(K key) throws Exception {
         // Calculate current pool objects
-        ObjectDeque<T> objectDeque = poolMap.get(key);
+        final ObjectDeque<T> objectDeque = poolMap.get(key);
 
         // objectDeque == null is OK here. It is handled correctly by both
         // methods called below.
@@ -1190,7 +1190,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         // as a loop limit and a second time inside the loop
         // to stop when another thread already returned the
         // needed objects
-        int deficit = calculateDeficit(objectDeque);
+        final int deficit = calculateDeficit(objectDeque);
 
         for (int i = 0; i < deficit && calculateDeficit(objectDeque) > 0; i++) {
             addObject(key);
@@ -1213,7 +1213,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         assertOpen();
         register(key);
         try {
-            PooledObject<T> p = create(key);
+            final PooledObject<T> p = create(key);
             addIdleObject(key, p);
         } finally {
             deregister(key);
@@ -1232,7 +1232,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
 
         if (p != null) {
             factory.passivateObject(key, p);
-            LinkedBlockingDeque<PooledObject<T>> idleObjects =
+            final LinkedBlockingDeque<PooledObject<T>> idleObjects =
                     poolMap.get(key).getIdleObjects();
             if (getLifo()) {
                 idleObjects.addFirst(p);
@@ -1251,7 +1251,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      * @throws Exception If the associated factory throws an exception
      */
     public void preparePool(K key) throws Exception {
-        int minIdlePerKeySave = getMinIdlePerKey();
+        final int minIdlePerKeySave = getMinIdlePerKey();
         if (minIdlePerKeySave < 1) {
             return;
         }
@@ -1265,8 +1265,8 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      * @return The number of objects to test for validity
      */
     private int getNumTests() {
-        int totalIdle = getNumIdle();
-        int numTests = getNumTestsPerEvictionRun();
+        final int totalIdle = getNumIdle();
+        final int numTests = getNumTestsPerEvictionRun();
         if (numTests >= 0) {
             return Math.min(numTests, totalIdle);
         }
@@ -1289,8 +1289,8 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         }
 
         // Used more than once so keep a local copy so the value is consistent
-        int maxTotal = getMaxTotal();
-        int maxTotalPerKeySave = getMaxTotalPerKey();
+        final int maxTotal = getMaxTotal();
+        final int maxTotalPerKeySave = getMaxTotalPerKey();
 
         int objectDefecit = 0;
 
@@ -1298,14 +1298,14 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         // the number of pooled objects < maxTotalPerKey();
         objectDefecit = getMinIdlePerKey() - objectDeque.getIdleObjects().size();
         if (maxTotalPerKeySave > 0) {
-            int growLimit = Math.max(0,
+            final int growLimit = Math.max(0,
                     maxTotalPerKeySave - objectDeque.getIdleObjects().size());
             objectDefecit = Math.min(objectDefecit, growLimit);
         }
 
         // Take the maxTotal limit into account
         if (maxTotal > 0) {
-            int growLimit = Math.max(0, maxTotal - getNumActive() - getNumIdle());
+            final int growLimit = Math.max(0, maxTotal - getNumActive() - getNumIdle());
             objectDefecit = Math.min(objectDefecit, growLimit);
         }
 
@@ -1317,14 +1317,14 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
 
     @Override
     public Map<String,Integer> getNumActivePerKey() {
-        HashMap<String,Integer> result = new HashMap<String,Integer>();
+        final HashMap<String,Integer> result = new HashMap<String,Integer>();
 
-        Iterator<Entry<K,ObjectDeque<T>>> iter = poolMap.entrySet().iterator();
+        final Iterator<Entry<K,ObjectDeque<T>>> iter = poolMap.entrySet().iterator();
         while (iter.hasNext()) {
-            Entry<K,ObjectDeque<T>> entry = iter.next();
+            final Entry<K,ObjectDeque<T>> entry = iter.next();
             if (entry != null) {
-                K key = entry.getKey();
-                ObjectDeque<T> objectDequeue = entry.getValue();
+                final K key = entry.getKey();
+                final ObjectDeque<T> objectDequeue = entry.getValue();
                 if (key != null && objectDequeue != null) {
                     result.put(key.toString(), Integer.valueOf(
                             objectDequeue.getAllObjects().size() -
@@ -1348,7 +1348,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         int result = 0;
 
         if (getBlockWhenExhausted()) {
-            Iterator<ObjectDeque<T>> iter = poolMap.values().iterator();
+            final Iterator<ObjectDeque<T>> iter = poolMap.values().iterator();
 
             while (iter.hasNext()) {
                 // Assume no overflow
@@ -1369,10 +1369,10 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      */
     @Override
     public Map<String,Integer> getNumWaitersByKey() {
-        Map<String,Integer> result = new HashMap<String,Integer>();
+        final Map<String,Integer> result = new HashMap<String,Integer>();
 
-        for (K key : poolMap.keySet()) {
-            ObjectDeque<T> queue = poolMap.get(key);
+        for (final K key : poolMap.keySet()) {
+            final ObjectDeque<T> queue = poolMap.get(key);
             if (queue != null) {
                 if (getBlockWhenExhausted()) {
                     result.put(key.toString(), Integer.valueOf(
@@ -1398,16 +1398,16 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      */
     @Override
     public Map<String,List<DefaultPooledObjectInfo>> listAllObjects() {
-        Map<String,List<DefaultPooledObjectInfo>> result =
+        final Map<String,List<DefaultPooledObjectInfo>> result =
                 new HashMap<String,List<DefaultPooledObjectInfo>>();
 
-        for (K key : poolMap.keySet()) {
-            ObjectDeque<T> queue = poolMap.get(key);
+        for (final K key : poolMap.keySet()) {
+            final ObjectDeque<T> queue = poolMap.get(key);
             if (queue != null) {
-                List<DefaultPooledObjectInfo> list =
+                final List<DefaultPooledObjectInfo> list =
                         new ArrayList<DefaultPooledObjectInfo>();
                 result.put(key.toString(), list);
-                for (PooledObject<T> p : queue.getAllObjects().values()) {
+                for (final PooledObject<T> p : queue.getAllObjects().values()) {
                     list.add(new DefaultPooledObjectInfo(p));
                 }
             }
@@ -1494,7 +1494,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
 
         @Override
         public String toString() {
-            StringBuilder builder = new StringBuilder();
+            final StringBuilder builder = new StringBuilder();
             builder.append("ObjectDeque [idleObjects=");
             builder.append(idleObjects);
             builder.append(", createCount=");

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java
index 84562b0..f3c94b2 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java
@@ -177,7 +177,7 @@ public class GenericKeyedObjectPoolConfig extends BaseObjectPoolConfig {
     public GenericKeyedObjectPoolConfig clone() {
         try {
             return (GenericKeyedObjectPoolConfig) super.clone();
-        } catch (CloneNotSupportedException e) {
+        } catch (final CloneNotSupportedException e) {
             throw new AssertionError(); // Can't happen
         }
     }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
index 6182d41..e40f02d 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
@@ -216,7 +216,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      */
     @Override
     public int getMinIdle() {
-        int maxIdleSave = getMaxIdle();
+        final int maxIdleSave = getMaxIdle();
         if (this.minIdle > maxIdleSave) {
             return maxIdleSave;
         }
@@ -244,7 +244,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      */
     @Override
     public boolean getLogAbandoned() {
-        AbandonedConfig ac = this.abandonedConfig;
+        final AbandonedConfig ac = this.abandonedConfig;
         return ac != null && ac.getLogAbandoned();
     }
 
@@ -259,7 +259,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      */
     @Override
     public boolean getRemoveAbandonedOnBorrow() {
-        AbandonedConfig ac = this.abandonedConfig;
+        final AbandonedConfig ac = this.abandonedConfig;
         return ac != null && ac.getRemoveAbandonedOnBorrow();
     }
 
@@ -273,7 +273,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      */
     @Override
     public boolean getRemoveAbandonedOnMaintenance() {
-        AbandonedConfig ac = this.abandonedConfig;
+        final AbandonedConfig ac = this.abandonedConfig;
         return ac != null && ac.getRemoveAbandonedOnMaintenance();
     }
 
@@ -288,7 +288,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      */
     @Override
     public int getRemoveAbandonedTimeout() {
-        AbandonedConfig ac = this.abandonedConfig;
+        final AbandonedConfig ac = this.abandonedConfig;
         return ac != null ? ac.getRemoveAbandonedTimeout() : Integer.MAX_VALUE;
     }
 
@@ -410,7 +410,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
     public T borrowObject(long borrowMaxWaitMillis) throws Exception {
         assertOpen();
 
-        AbandonedConfig ac = this.abandonedConfig;
+        final AbandonedConfig ac = this.abandonedConfig;
         if (ac != null && ac.getRemoveAbandonedOnBorrow() &&
                 (getNumIdle() < 2) &&
                 (getNumActive() > getMaxTotal() - 3) ) {
@@ -421,10 +421,10 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
 
         // Get local copy of current config so it is consistent for entire
         // method execution
-        boolean blockWhenExhausted = getBlockWhenExhausted();
+        final boolean blockWhenExhausted = getBlockWhenExhausted();
 
         boolean create;
-        long waitTime = System.currentTimeMillis();
+        final long waitTime = System.currentTimeMillis();
 
         while (p == null) {
             create = false;
@@ -470,15 +470,15 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
             if (p != null) {
                 try {
                     factory.activateObject(p);
-                } catch (Exception e) {
+                } catch (final Exception e) {
                     try {
                         destroy(p);
-                    } catch (Exception e1) {
+                    } catch (final Exception e1) {
                         // Ignore - activation failure is more important
                     }
                     p = null;
                     if (create) {
-                        NoSuchElementException nsee = new NoSuchElementException(
+                        final NoSuchElementException nsee = new NoSuchElementException(
                                 "Unable to activate object");
                         nsee.initCause(e);
                         throw nsee;
@@ -489,7 +489,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
                     Throwable validationThrowable = null;
                     try {
                         validate = factory.validateObject(p);
-                    } catch (Throwable t) {
+                    } catch (final Throwable t) {
                         PoolUtils.checkRethrow(t);
                         validationThrowable = t;
                     }
@@ -497,12 +497,12 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
                         try {
                             destroy(p);
                             destroyedByBorrowValidationCount.incrementAndGet();
-                        } catch (Exception e) {
+                        } catch (final Exception e) {
                             // Ignore - validation failure is more important
                         }
                         p = null;
                         if (create) {
-                            NoSuchElementException nsee = new NoSuchElementException(
+                            final NoSuchElementException nsee = new NoSuchElementException(
                                     "Unable to validate object");
                             nsee.initCause(validationThrowable);
                             throw nsee;
@@ -533,7 +533,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      */
     @Override
     public void returnObject(T obj) {
-        PooledObject<T> p = allObjects.get(new IdentityWrapper<T>(obj));
+        final PooledObject<T> p = allObjects.get(new IdentityWrapper<T>(obj));
 
         if (p == null) {
             if (!isAbandonedConfig()) {
@@ -552,18 +552,18 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
             p.markReturning(); // Keep from being marked abandoned
         }
 
-        long activeTime = p.getActiveTimeMillis();
+        final long activeTime = p.getActiveTimeMillis();
 
         if (getTestOnReturn()) {
             if (!factory.validateObject(p)) {
                 try {
                     destroy(p);
-                } catch (Exception e) {
+                } catch (final Exception e) {
                     swallowException(e);
                 }
                 try {
                     ensureIdle(1, false);
-                } catch (Exception e) {
+                } catch (final Exception e) {
                     swallowException(e);
                 }
                 updateStatsReturn(activeTime);
@@ -573,16 +573,16 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
 
         try {
             factory.passivateObject(p);
-        } catch (Exception e1) {
+        } catch (final Exception e1) {
             swallowException(e1);
             try {
                 destroy(p);
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 swallowException(e);
             }
             try {
                 ensureIdle(1, false);
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 swallowException(e);
             }
             updateStatsReturn(activeTime);
@@ -594,11 +594,11 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
                     "Object has already been returned to this pool or is invalid");
         }
 
-        int maxIdleSave = getMaxIdle();
+        final int maxIdleSave = getMaxIdle();
         if (isClosed() || maxIdleSave > -1 && maxIdleSave <= idleObjects.size()) {
             try {
                 destroy(p);
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 swallowException(e);
             }
         } else {
@@ -629,7 +629,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      */
     @Override
     public void invalidateObject(T obj) throws Exception {
-        PooledObject<T> p = allObjects.get(new IdentityWrapper<T>(obj));
+        final PooledObject<T> p = allObjects.get(new IdentityWrapper<T>(obj));
         if (p == null) {
             if (isAbandonedConfig()) {
                 return;
@@ -669,7 +669,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
         while (p != null) {
             try {
                 destroy(p);
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 swallowException(e);
             }
             p = idleObjects.poll();
@@ -733,15 +733,15 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
         if (idleObjects.size() > 0) {
 
             PooledObject<T> underTest = null;
-            EvictionPolicy<T> evictionPolicy = getEvictionPolicy();
+            final EvictionPolicy<T> evictionPolicy = getEvictionPolicy();
 
             synchronized (evictionLock) {
-                EvictionConfig evictionConfig = new EvictionConfig(
+                final EvictionConfig evictionConfig = new EvictionConfig(
                         getMinEvictableIdleTimeMillis(),
                         getSoftMinEvictableIdleTimeMillis(),
                         getMinIdle());
 
-                boolean testWhileIdle = getTestWhileIdle();
+                final boolean testWhileIdle = getTestWhileIdle();
 
                 for (int i = 0, m = getNumTests(); i < m; i++) {
                     if (evictionIterator == null || !evictionIterator.hasNext()) {
@@ -754,7 +754,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
 
                     try {
                         underTest = evictionIterator.next();
-                    } catch (NoSuchElementException nsee) {
+                    } catch (final NoSuchElementException nsee) {
                         // Object was borrowed in another thread
                         // Don't count this as an eviction test so reduce i;
                         i--;
@@ -776,7 +776,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
                     try {
                         evict = evictionPolicy.evict(evictionConfig, underTest,
                                 idleObjects.size());
-                    } catch (Throwable t) {
+                    } catch (final Throwable t) {
                         // Slightly convoluted as SwallowedExceptionListener
                         // uses Exception rather than Throwable
                         PoolUtils.checkRethrow(t);
@@ -794,7 +794,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
                             try {
                                 factory.activateObject(underTest);
                                 active = true;
-                            } catch (Exception e) {
+                            } catch (final Exception e) {
                                 destroy(underTest);
                                 destroyedByEvictorCount.incrementAndGet();
                             }
@@ -805,7 +805,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
                                 } else {
                                     try {
                                         factory.passivateObject(underTest);
-                                    } catch (Exception e) {
+                                    } catch (final Exception e) {
                                         destroy(underTest);
                                         destroyedByEvictorCount.incrementAndGet();
                                     }
@@ -820,7 +820,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
                 }
             }
         }
-        AbandonedConfig ac = this.abandonedConfig;
+        final AbandonedConfig ac = this.abandonedConfig;
         if (ac != null && ac.getRemoveAbandonedOnMaintenance()) {
             removeAbandoned(ac);
         }
@@ -851,8 +851,8 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      * @throws Exception if the object factory's {@code makeObject} fails
      */
     private PooledObject<T> create() throws Exception {
-        int localMaxTotal = getMaxTotal();
-        long newCreateCount = createCount.incrementAndGet();
+        final int localMaxTotal = getMaxTotal();
+        final long newCreateCount = createCount.incrementAndGet();
         if (localMaxTotal > -1 && newCreateCount > localMaxTotal ||
                 newCreateCount > Integer.MAX_VALUE) {
             createCount.decrementAndGet();
@@ -862,12 +862,12 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
         final PooledObject<T> p;
         try {
             p = factory.makeObject();
-        } catch (Exception e) {
+        } catch (final Exception e) {
             createCount.decrementAndGet();
             throw e;
         }
 
-        AbandonedConfig ac = this.abandonedConfig;
+        final AbandonedConfig ac = this.abandonedConfig;
         if (ac != null && ac.getLogAbandoned()) {
             p.setLogAbandoned(true);
         }
@@ -920,7 +920,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
         }
 
         while (idleObjects.size() < idleCount) {
-            PooledObject<T> p = create();
+            final PooledObject<T> p = create();
             if (p == null) {
                 // Can't create objects, no reason to think another call to
                 // create will work. Give up.
@@ -954,7 +954,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
             throw new IllegalStateException(
                     "Cannot add objects without a factory.");
         }
-        PooledObject<T> p = create();
+        final PooledObject<T> p = create();
         addIdleObject(p);
     }
 
@@ -985,7 +985,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      * @return The number of objects to test for validity
      */
     private int getNumTests() {
-        int numTestsPerEvictionRun = getNumTestsPerEvictionRun();
+        final int numTestsPerEvictionRun = getNumTestsPerEvictionRun();
         if (numTestsPerEvictionRun >= 0) {
             return Math.min(numTestsPerEvictionRun, idleObjects.size());
         }
@@ -1004,10 +1004,10 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
         final long now = System.currentTimeMillis();
         final long timeout =
                 now - (ac.getRemoveAbandonedTimeout() * 1000L);
-        ArrayList<PooledObject<T>> remove = new ArrayList<PooledObject<T>>();
-        Iterator<PooledObject<T>> it = allObjects.values().iterator();
+        final ArrayList<PooledObject<T>> remove = new ArrayList<PooledObject<T>>();
+        final Iterator<PooledObject<T>> it = allObjects.values().iterator();
         while (it.hasNext()) {
-            PooledObject<T> pooledObject = it.next();
+            final PooledObject<T> pooledObject = it.next();
             synchronized (pooledObject) {
                 if (pooledObject.getState() == PooledObjectState.ALLOCATED &&
                         pooledObject.getLastUsedTime() <= timeout) {
@@ -1018,15 +1018,15 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
         }
 
         // Now remove the abandoned objects
-        Iterator<PooledObject<T>> itr = remove.iterator();
+        final Iterator<PooledObject<T>> itr = remove.iterator();
         while (itr.hasNext()) {
-            PooledObject<T> pooledObject = itr.next();
+            final PooledObject<T> pooledObject = itr.next();
             if (ac.getLogAbandoned()) {
                 pooledObject.printStackTrace(ac.getLogWriter());
             }
             try {
                 invalidateObject(pooledObject.getObject());
-            } catch (Exception e) {
+            } catch (final Exception e) {
                 e.printStackTrace();
             }
         }
@@ -1037,9 +1037,9 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
 
     @Override
     public void use(T pooledObject) {
-        AbandonedConfig ac = this.abandonedConfig;
+        final AbandonedConfig ac = this.abandonedConfig;
         if (ac != null && ac.getUseUsageTracking()) {
-            PooledObject<T> wrapper = allObjects.get(new IdentityWrapper<T>(pooledObject));
+            final PooledObject<T> wrapper = allObjects.get(new IdentityWrapper<T>(pooledObject));
             wrapper.use();
         }
     }
@@ -1075,10 +1075,10 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
     public String getFactoryType() {
         // Not thread safe. Accept that there may be multiple evaluations.
         if (factoryType == null) {
-            StringBuilder result = new StringBuilder();
+            final StringBuilder result = new StringBuilder();
             result.append(factory.getClass().getName());
             result.append('<');
-            Class<?> pooledObjectType =
+            final Class<?> pooledObjectType =
                     PoolImplUtils.getFactoryType(factory.getClass());
             result.append(pooledObjectType.getName());
             result.append('>');
@@ -1100,9 +1100,9 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      */
     @Override
     public Set<DefaultPooledObjectInfo> listAllObjects() {
-        Set<DefaultPooledObjectInfo> result =
+        final Set<DefaultPooledObjectInfo> result =
                 new HashSet<DefaultPooledObjectInfo>(allObjects.size());
-        for (PooledObject<T> p : allObjects.values()) {
+        for (final PooledObject<T> p : allObjects.values()) {
             result.add(new DefaultPooledObjectInfo(p));
         }
         return result;

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/main/java/org/apache/commons/pool2/impl/GenericObjectPoolConfig.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPoolConfig.java b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPoolConfig.java
index 0be98ed..ff14efc 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPoolConfig.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPoolConfig.java
@@ -139,7 +139,7 @@ public class GenericObjectPoolConfig extends BaseObjectPoolConfig {
     public GenericObjectPoolConfig clone() {
         try {
             return (GenericObjectPoolConfig) super.clone();
-        } catch (CloneNotSupportedException e) {
+        } catch (final CloneNotSupportedException e) {
             throw new AssertionError(); // Can't happen
         }
     }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/main/java/org/apache/commons/pool2/impl/InterruptibleReentrantLock.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/InterruptibleReentrantLock.java b/src/main/java/org/apache/commons/pool2/impl/InterruptibleReentrantLock.java
index 33bf242..67d2be7 100644
--- a/src/main/java/org/apache/commons/pool2/impl/InterruptibleReentrantLock.java
+++ b/src/main/java/org/apache/commons/pool2/impl/InterruptibleReentrantLock.java
@@ -49,8 +49,8 @@ class InterruptibleReentrantLock extends ReentrantLock {
      * @param condition the condition on which the threads are waiting.
      */
     public void interruptWaiters(Condition condition) {
-        Collection<Thread> threads = getWaitingThreads(condition);
-        for (Thread thread : threads) {
+        final Collection<Thread> threads = getWaitingThreads(condition);
+        for (final Thread thread : threads) {
             thread.interrupt();
         }
     }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5fe7dc02/src/main/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java b/src/main/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java
index dcbcc18..bee74de 100644
--- a/src/main/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java
+++ b/src/main/java/org/apache/commons/pool2/impl/LinkedBlockingDeque.java
@@ -216,7 +216,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
         this(Integer.MAX_VALUE);
         lock.lock(); // Never contended, but necessary for visibility
         try {
-            for (E e : c) {
+            for (final E e : c) {
                 if (e == null) {
                     throw new NullPointerException();
                 }
@@ -244,8 +244,8 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
         if (count >= capacity) {
             return false;
         }
-        Node<E> f = first;
-        Node<E> x = new Node<E>(e, null, f);
+        final Node<E> f = first;
+        final Node<E> x = new Node<E>(e, null, f);
         first = x;
         if (last == null) {
             last = x;
@@ -269,8 +269,8 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
         if (count >= capacity) {
             return false;
         }
-        Node<E> l = last;
-        Node<E> x = new Node<E>(e, l, null);
+        final Node<E> l = last;
+        final Node<E> x = new Node<E>(e, l, null);
         last = x;
         if (first == null) {
             first = x;
@@ -289,12 +289,12 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      */
     private E unlinkFirst() {
         // assert lock.isHeldByCurrentThread();
-        Node<E> f = first;
+        final Node<E> f = first;
         if (f == null) {
             return null;
         }
-        Node<E> n = f.next;
-        E item = f.item;
+        final Node<E> n = f.next;
+        final E item = f.item;
         f.item = null;
         f.next = f; // help GC
         first = n;
@@ -315,12 +315,12 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      */
     private E unlinkLast() {
         // assert lock.isHeldByCurrentThread();
-        Node<E> l = last;
+        final Node<E> l = last;
         if (l == null) {
             return null;
         }
-        Node<E> p = l.prev;
-        E item = l.item;
+        final Node<E> p = l.prev;
+        final E item = l.item;
         l.item = null;
         l.prev = l; // help GC
         last = p;
@@ -341,8 +341,8 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      */
     private void unlink(Node<E> x) {
         // assert lock.isHeldByCurrentThread();
-        Node<E> p = x.prev;
-        Node<E> n = x.next;
+        final Node<E> p = x.prev;
+        final Node<E> n = x.next;
         if (p == null) {
             unlinkFirst();
         } else if (n == null) {
@@ -533,7 +533,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      */
     @Override
     public E removeFirst() {
-        E x = pollFirst();
+        final E x = pollFirst();
         if (x == null) {
             throw new NoSuchElementException();
         }
@@ -545,7 +545,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      */
     @Override
     public E removeLast() {
-        E x = pollLast();
+        final E x = pollLast();
         if (x == null) {
             throw new NoSuchElementException();
         }
@@ -673,7 +673,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      */
     @Override
     public E getFirst() {
-        E x = peekFirst();
+        final E x = peekFirst();
         if (x == null) {
             throw new NoSuchElementException();
         }
@@ -685,7 +685,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
      */
     @Override
     public E getLast() {
-        E x = peekLast();
+        final E x = peekLast();
         if (x == null) {
             throw new NoSuchElementException();
         }
@@ -941,7 +941,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
         }
         lock.lock();
         try {
-            int n = Math.min(maxElements, count);
+            final int n = Math.min(maxElements, count);
             for (int i = 0; i < n; i++) {
                 c.add(first.item);   // In this order, in case add() throws.
                 unlinkFirst();
@@ -1090,7 +1090,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
     public Object[] toArray() {
         lock.lock();
         try {
-            Object[] a = new Object[count];
+            final Object[] a = new Object[count];
             int k = 0;
             for (Node<E> p = first; p != null; p = p.next) {
                 a[k++] = p.item;
@@ -1146,7 +1146,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
         try {
             for (Node<E> f = first; f != null; ) {
                 f.item = null;
-                Node<E> n = f.next;
+                final Node<E> n = f.next;
                 f.prev = null;
                 f.next = null;
                 f = n;
@@ -1249,7 +1249,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
             // Chains of deleted nodes ending in null or self-links
             // are possible if multiple interior nodes are removed.
             for (;;) {
-                Node<E> s = nextNode(n);
+                final Node<E> s = nextNode(n);
                 if (s == null)
                     return null;
                 else if (s.item != null)
@@ -1286,14 +1286,14 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
                 throw new NoSuchElementException();
             }
             lastRet = next;
-            E x = nextItem;
+            final E x = nextItem;
             advance();
             return x;
         }
 
         @Override
         public void remove() {
-            Node<E> n = lastRet;
+            final Node<E> n = lastRet;
             if (n == null) {
                 throw new IllegalStateException();
             }
@@ -1363,6 +1363,7 @@ class LinkedBlockingDeque<E> extends AbstractQueue<E>
         // Read in all elements and place in queue
         for (;;) {
             @SuppressWarnings("unchecked")
+            final
             E item = (E)s.readObject();
             if (item == null) {
                 break;


[44/50] [abbrv] commons-pool git commit: Additional fix for POOL-315. Thanks to Keiichi Fujino Also review previous fix.

Posted by ma...@apache.org.
Additional fix for POOL-315.
Thanks to Keiichi Fujino
Also review previous fix.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1769582 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/b48c9f52
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/b48c9f52
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/b48c9f52

Branch: refs/heads/master
Commit: b48c9f52be991f280bff592dd49c1fd0de2b080a
Parents: 741d1f5
Author: Mark Thomas <ma...@apache.org>
Authored: Mon Nov 14 09:44:18 2016 +0000
Committer: Mark Thomas <ma...@apache.org>
Committed: Mon Nov 14 09:44:18 2016 +0000

----------------------------------------------------------------------
 src/changes/changes.xml                                      | 2 +-
 .../org/apache/commons/pool2/impl/BaseGenericObjectPool.java | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/b48c9f52/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index ae14e69..545e1b7 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -71,7 +71,7 @@ The <action> type attribute can be add,update,fix,remove.
       Ensure that any class name used for evictionPolicyClassName represents a
       class that implements EvictionPolicy.
     </action>
-    <action dev="markt" issue="POOL-315" type="fix">
+    <action dev="markt" issue="POOL-315" type="fix" due-to="KeiichiFujino">
       Add a configurable delay (default 10 seconds) to wait when shutting down
       an Evictor to allow the associated thread time to complete and current
       evictions and to terminate.

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/b48c9f52/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
index 1f46811..816e0d6 100644
--- a/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
@@ -88,7 +88,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
     private volatile long softMinEvictableIdleTimeMillis =
             BaseObjectPoolConfig.DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS;
     private volatile EvictionPolicy<T> evictionPolicy;
-    private long evictorShutdownTimeoutMillis =
+    private volatile long evictorShutdownTimeoutMillis =
             BaseObjectPoolConfig.DEFAULT_EVICTOR_SHUTDOWN_TIMEOUT_MILLIS;
 
 
@@ -643,7 +643,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      * @return  The timeout in milliseconds that will be used while waiting for
      *          the Evictor to shut down.
      */
-    public long getEvictorShutdownTimeoutMillis() {
+    public final long getEvictorShutdownTimeoutMillis() {
         return evictorShutdownTimeoutMillis;
     }
 
@@ -656,7 +656,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
      *                                      will be used while waiting for the
      *                                      Evictor to shut down.
      */
-    public void setEvictorShutdownTimeoutMillis(
+    public final void setEvictorShutdownTimeoutMillis(
             final long evictorShutdownTimeoutMillis) {
         this.evictorShutdownTimeoutMillis = evictorShutdownTimeoutMillis;
     }
@@ -720,7 +720,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
     final void startEvictor(final long delay) {
         synchronized (evictionLock) {
             if (null != evictor) {
-                EvictionTimer.cancel(evictor, 10, TimeUnit.SECONDS);
+                EvictionTimer.cancel(evictor, evictorShutdownTimeoutMillis, TimeUnit.SECONDS);
                 evictor = null;
                 evictionIterator = null;
             }


[45/50] [abbrv] commons-pool git commit: Follow-up to r1769582 Use the correct units. Thanks to kfujino.

Posted by ma...@apache.org.
Follow-up to r1769582
Use the correct units.
Thanks to kfujino.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1769740 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/505842e0
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/505842e0
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/505842e0

Branch: refs/heads/master
Commit: 505842e08d42af70f0c957b78197b90a74c1c6af
Parents: b48c9f5
Author: Mark Thomas <ma...@apache.org>
Authored: Tue Nov 15 07:18:19 2016 +0000
Committer: Mark Thomas <ma...@apache.org>
Committed: Tue Nov 15 07:18:19 2016 +0000

----------------------------------------------------------------------
 .../java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/505842e0/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
index 816e0d6..e9aa04e 100644
--- a/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
@@ -720,7 +720,7 @@ public abstract class BaseGenericObjectPool<T> extends BaseObject {
     final void startEvictor(final long delay) {
         synchronized (evictionLock) {
             if (null != evictor) {
-                EvictionTimer.cancel(evictor, evictorShutdownTimeoutMillis, TimeUnit.SECONDS);
+                EvictionTimer.cancel(evictor, evictorShutdownTimeoutMillis, TimeUnit.MILLISECONDS);
                 evictor = null;
                 evictionIterator = null;
             }


[03/50] [abbrv] commons-pool git commit: Obsolete DOAP

Posted by ma...@apache.org.
Obsolete DOAP

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/branches/POOL_FUTURE@1719169 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/28a07d41
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/28a07d41
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/28a07d41

Branch: refs/heads/POOL_FUTURE
Commit: 28a07d414c5aaf4e2f43e5274190347cc06c305a
Parents: 49832ce
Author: Sebastian Bazley <se...@apache.org>
Authored: Thu Dec 10 18:16:44 2015 +0000
Committer: Sebastian Bazley <se...@apache.org>
Committed: Thu Dec 10 18:16:44 2015 +0000

----------------------------------------------------------------------
 doap_pool.rdf | 112 -----------------------------------------------------
 1 file changed, 112 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/28a07d41/doap_pool.rdf
----------------------------------------------------------------------
diff --git a/doap_pool.rdf b/doap_pool.rdf
deleted file mode 100644
index bd81210..0000000
--- a/doap_pool.rdf
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0"?>
-<!--
-   Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-<rdf:RDF xmlns="http://usefulinc.com/ns/doap#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:asfext="http://projects.apache.org/ns/asfext#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:doap="http://usefulinc.com/ns/doap#" xml:lang="en">
-  <Project rdf:about="http://commons.apache.org/pool/">
-    <name>Apache Commons Pool</name>
-    <homepage rdf:resource="http://commons.apache.org/pool/"/>
-    <programming-language>Java</programming-language>
-    <category rdf:resource="http://projects.apache.org/category/library"/>
-    <license rdf:resource="http://usefulinc.com/doap/licenses/asl20"/>
-    <bug-database rdf:resource="http://issues.apache.org/jira/browse/POOL"/>
-    <download-page rdf:resource="http://commons.apache.org/pool/download_pool.cgi"/>
-    <asfext:pmc rdf:resource="http://commons.apache.org/"/>
-    <shortdesc xml:lang="en">Commons Object Pooling Library</shortdesc>
-    <description xml:lang="en">Commons Object Pooling Library</description>
-    <repository>
-      <SVNRepository>
-        <browse rdf:resource="http://svn.apache.org/repos/asf/commons/proper/pool/trunk"/>
-        <location rdf:resource="http://svn.apache.org/repos/asf/commons/proper/pool"/>
-      </SVNRepository>
-    </repository>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2010-09-10</created>
-        <revision>1.5.5</revision>
-      </Version>
-      <Version>
-        <name>commons-pool</name>
-        <created>2009-11-20</created>
-        <revision>1.5.4</revision>
-      </Version>
-      <Version>
-        <name>commons-pool</name>
-        <created>2009-09-23</created>
-        <revision>1.5.3</revision>
-      </Version>
-      <Version>
-        <name>commons-pool</name>
-        <created>2009-07-12</created>
-        <revision>1.5.2</revision>
-      </Version>
-      <Version>
-        <name>commons-pool</name>
-        <created>2009-06-16</created>
-        <revision>1.5.1</revision>
-      </Version>
-      <Version>
-        <name>commons-pool</name>
-        <created>2009-06-10</created>
-        <revision>1.5</revision>
-      </Version>
-    </release>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2008-01-15</created>
-        <revision>1.4</revision>
-      </Version>
-    </release>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2006-04-06</created>
-        <revision>1.3</revision>
-      </Version>
-    </release>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2004-06-07</created>
-        <revision>1.2</revision>
-      </Version>
-    </release>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2003-10-20</created>
-        <revision>1.1</revision>
-      </Version>
-    </release>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2002-08-12</created>
-        <revision>1.0.1</revision>
-      </Version>
-    </release>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2002-05-04</created>
-        <revision>1.0</revision>
-      </Version>
-    </release>
-    <mailing-list rdf:resource="http://commons.apache.org/mail-lists.html"/>
-  </Project>
-</rdf:RDF>


[49/50] [abbrv] commons-pool git commit: Fix issue reported on users list. Ensure that a call to GKOP preparePool() takes account of other threads that might create objects concurrently, particularly the Evictor.

Posted by ma...@apache.org.
Fix issue reported on users list.
Ensure that a call to GKOP preparePool() takes account of other threads that might create objects concurrently, particularly the Evictor.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1782329 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/d00d176f
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/d00d176f
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/d00d176f

Branch: refs/heads/master
Commit: d00d176fc04d730f63b47dde9bc334b5c3a67f3c
Parents: 6a088d1
Author: Mark Thomas <ma...@apache.org>
Authored: Thu Feb 9 13:41:09 2017 +0000
Committer: Mark Thomas <ma...@apache.org>
Committed: Thu Feb 9 13:41:09 2017 +0000

----------------------------------------------------------------------
 src/changes/changes.xml                         |  4 ++++
 .../pool2/impl/GenericKeyedObjectPool.java      | 22 +++++++++++++-------
 2 files changed, 18 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/d00d176f/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index fb3a878..7409dc3 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -79,6 +79,10 @@ The <action> type attribute can be add,update,fix,remove.
       an Evictor to allow the associated thread time to complete and current
       evictions and to terminate.
     </action>
+    <action dev="markt" type="fix">
+      Ensure that a call to GKOP preparePool() takes account of other threads
+      that might create objects concurrently, particularly the Evictor.
+    </action>
   </release>
   <release version="2.4.2" date="2015-08-01" description=
  "This is a patch release, including bug fixes only.">

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/d00d176f/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
index 7fa21b5..396aaf9 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
@@ -76,7 +76,7 @@ import org.apache.commons.pool2.SwallowedExceptionListener;
  * @since 2.0
  */
 public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
-        implements KeyedObjectPool<K,T>, GenericKeyedObjectPoolMXBean<K> {
+implements KeyedObjectPool<K,T>, GenericKeyedObjectPoolMXBean<K> {
 
     /**
      * Create a new <code>GenericKeyedObjectPool</code> using defaults from
@@ -524,7 +524,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
 
             final int maxIdle = getMaxIdlePerKey();
             final LinkedBlockingDeque<PooledObject<T>> idleObjects =
-                objectDeque.getIdleObjects();
+                    objectDeque.getIdleObjects();
 
             if (isClosed() || maxIdle > -1 && maxIdle <= idleObjects.size()) {
                 try {
@@ -758,7 +758,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         // for zero
         int itemsToRemove = ((int) (map.size() * 0.15)) + 1;
         final Iterator<Map.Entry<PooledObject<T>, K>> iter =
-            map.entrySet().iterator();
+                map.entrySet().iterator();
 
         while (iter.hasNext() && itemsToRemove > 0) {
             final Map.Entry<PooledObject<T>, K> entry = iter.next();
@@ -843,7 +843,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
             final ObjectDeque<T> deque = entry.getValue();
             if (deque != null) {
                 final LinkedBlockingDeque<PooledObject<T>> pool =
-                    deque.getIdleObjects();
+                        deque.getIdleObjects();
                 if(pool.hasTakeWaiters()) {
                     return true;
                 }
@@ -1210,7 +1210,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      */
     private void ensureMinIdle(final K key) throws Exception {
         // Calculate current pool objects
-        final ObjectDeque<T> objectDeque = poolMap.get(key);
+        ObjectDeque<T> objectDeque = poolMap.get(key);
 
         // objectDeque == null is OK here. It is handled correctly by both
         // methods called below.
@@ -1224,6 +1224,12 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
 
         for (int i = 0; i < deficit && calculateDeficit(objectDeque) > 0; i++) {
             addObject(key);
+            // If objectDeque was null, it won't be any more. Obtain a reference
+            // to it so the deficit can be correctly calculated. It needs to
+            // take account of objects created in other threads.
+            if (objectDeque == null) {
+                objectDeque = poolMap.get(key);
+            }
         }
     }
 
@@ -1548,9 +1554,9 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
     private volatile int maxIdlePerKey =
             GenericKeyedObjectPoolConfig.DEFAULT_MAX_IDLE_PER_KEY;
     private volatile int minIdlePerKey =
-        GenericKeyedObjectPoolConfig.DEFAULT_MIN_IDLE_PER_KEY;
+            GenericKeyedObjectPoolConfig.DEFAULT_MIN_IDLE_PER_KEY;
     private volatile int maxTotalPerKey =
-        GenericKeyedObjectPoolConfig.DEFAULT_MAX_TOTAL_PER_KEY;
+            GenericKeyedObjectPoolConfig.DEFAULT_MAX_TOTAL_PER_KEY;
     private final KeyedPooledObjectFactory<K,T> factory;
     private final boolean fairness;
 
@@ -1584,7 +1590,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
 
     // JMX specific attributes
     private static final String ONAME_BASE =
-        "org.apache.commons.pool2:type=GenericKeyedObjectPool,name=";
+            "org.apache.commons.pool2:type=GenericKeyedObjectPool,name=";
 
     @Override
     protected void toStringAppendFields(final StringBuilder builder) {


[32/50] [abbrv] commons-pool git commit: Correct location of decrement

Posted by ma...@apache.org.
Correct location of decrement

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1735292 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/f7a0d26b
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/f7a0d26b
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/f7a0d26b

Branch: refs/heads/master
Commit: f7a0d26b803e48ce272a5bcc96c7ff1319b00f71
Parents: 55c10ec
Author: Mark Thomas <ma...@apache.org>
Authored: Wed Mar 16 20:20:11 2016 +0000
Committer: Mark Thomas <ma...@apache.org>
Committed: Wed Mar 16 20:20:11 2016 +0000

----------------------------------------------------------------------
 .../java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/f7a0d26b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
index d477cfa..200c424 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
@@ -1030,7 +1030,6 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
                 if (newCreateCount > maxTotalPerKeySave) {
                     // The key is currently at capacity or in the process of
                     // making enough new objects to take it to capacity.
-                    numTotal.decrementAndGet();
                     objectDeque.getCreateCount().decrementAndGet();
                     if (objectDeque.makeObjectCount == 0) {
                         // There are no makeObject() calls in progress for this
@@ -1054,6 +1053,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         }
 
         if (!create.booleanValue()) {
+            numTotal.decrementAndGet();
             return null;
         }
 


[48/50] [abbrv] commons-pool git commit: Update commons-parent from 40 to 42.

Posted by ma...@apache.org.
Update commons-parent from 40 to 42.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1778232 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/6a088d1b
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/6a088d1b
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/6a088d1b

Branch: refs/heads/master
Commit: 6a088d1b8a4aa343362cdf4e749b7c5fca38971b
Parents: 2561938
Author: Gary D. Gregory <gg...@apache.org>
Authored: Wed Jan 11 04:04:54 2017 +0000
Committer: Gary D. Gregory <gg...@apache.org>
Committed: Wed Jan 11 04:04:54 2017 +0000

----------------------------------------------------------------------
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/6a088d1b/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index a7e0b45..e54fd08 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-parent</artifactId>
-    <version>40</version>
+    <version>42</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>commons-pool2</artifactId>


[38/50] [abbrv] commons-pool git commit: Format: add a blank line between methods.

Posted by ma...@apache.org.
Format: add a blank line between methods.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1765926 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/dcf4d6de
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/dcf4d6de
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/dcf4d6de

Branch: refs/heads/master
Commit: dcf4d6de4875f7e35da266bcb3ec6096c0bdc6b7
Parents: 8cc1fa0
Author: Gary D. Gregory <gg...@apache.org>
Authored: Fri Oct 21 06:14:06 2016 +0000
Committer: Gary D. Gregory <gg...@apache.org>
Committed: Fri Oct 21 06:14:06 2016 +0000

----------------------------------------------------------------------
 .../commons/pool2/impl/TestGenericObjectPool.java    | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/dcf4d6de/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
index 97e07cd..75b9438 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
@@ -1704,38 +1704,49 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         public SimpleFactory() {
             this(true);
         }
+        
         public SimpleFactory(final boolean valid) {
             this(valid,valid);
         }
+        
         public SimpleFactory(final boolean evalid, final boolean ovalid) {
             evenValid = evalid;
             oddValid = ovalid;
         }
+        
         public synchronized void setValid(final boolean valid) {
             setEvenValid(valid);
             setOddValid(valid);
         }
+        
         public synchronized void setEvenValid(final boolean valid) {
             evenValid = valid;
         }
+        
         public synchronized void setOddValid(final boolean valid) {
             oddValid = valid;
         }
+        
         public synchronized void setThrowExceptionOnPassivate(final boolean bool) {
             exceptionOnPassivate = bool;
         }
+        
         public synchronized void setMaxTotal(final int maxTotal) {
             this.maxTotal = maxTotal;
         }
+        
         public synchronized void setDestroyLatency(final long destroyLatency) {
             this.destroyLatency = destroyLatency;
         }
+        
         public synchronized void setMakeLatency(final long makeLatency) {
             this.makeLatency = makeLatency;
         }
+        
         public synchronized void setValidateLatency(final long validateLatency) {
             this.validateLatency = validateLatency;
         }
+        
         @Override
         public PooledObject<String> makeObject() {
             final long waitLatency;
@@ -1756,6 +1767,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             }
             return new DefaultPooledObject<String>(String.valueOf(counter));
         }
+        
         @Override
         public void destroyObject(final PooledObject<String> obj) throws Exception {
             final long waitLatency;
@@ -1774,6 +1786,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
                 throw new Exception();
             }
         }
+        
         @Override
         public boolean validateObject(final PooledObject<String> obj) {
             final boolean validate;
@@ -1796,6 +1809,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             }
             return true;
         }
+        
         @Override
         public void activateObject(final PooledObject<String> obj) throws Exception {
             final boolean hurl;
@@ -1814,6 +1828,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
                 }
             }
         }
+        
         @Override
         public void passivateObject(final PooledObject<String> obj) throws Exception {
             final boolean hurl;


[26/50] [abbrv] commons-pool git commit: Small refactoring of borrowObject() to reduce code duplication.

Posted by ma...@apache.org.
Small refactoring of borrowObject() to reduce code duplication.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1735162 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/564334a3
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/564334a3
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/564334a3

Branch: refs/heads/master
Commit: 564334a3b2a0c9716c7ada87b9bd790fb44f747e
Parents: fa819eb
Author: Mark Thomas <ma...@apache.org>
Authored: Tue Mar 15 20:27:16 2016 +0000
Committer: Mark Thomas <ma...@apache.org>
Committed: Tue Mar 15 20:27:16 2016 +0000

----------------------------------------------------------------------
 src/changes/changes.xml                         |  3 ++
 .../pool2/impl/GenericKeyedObjectPool.java      | 30 +++++++-------------
 .../commons/pool2/impl/GenericObjectPool.java   | 30 +++++++-------------
 3 files changed, 23 insertions(+), 40 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/564334a3/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index a1293f7..30573e4 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -56,6 +56,9 @@ The <action> type attribute can be add,update,fix,remove.
       threads try to borrow an object at the same time and the factory fails to
       create any objects. 
     </action>
+    <action dev="markt" issue="POOL-280" tyoe="update" due-to="Jacopo Cappellato">
+      Small refactoring of borrowObject() to reduce code duplication.
+    </action>
   </release>
   <release version="2.4.2" date="2015-08-01" description=
  "This is a patch release, including bug fixes only.">

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/564334a3/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
index 697ae05..8e1f88f 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
@@ -350,14 +350,14 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         try {
             while (p == null) {
                 create = false;
-                if (blockWhenExhausted) {
-                    p = objectDeque.getIdleObjects().pollFirst();
-                    if (p == null) {
-                        p = create(key);
-                        if (p != null) {
-                            create = true;
-                        }
+                p = objectDeque.getIdleObjects().pollFirst();
+                if (p == null) {
+                    p = create(key);
+                    if (p != null) {
+                        create = true;
                     }
+                }
+                if (blockWhenExhausted) {
                     if (p == null) {
                         if (borrowMaxWaitMillis < 0) {
                             p = objectDeque.getIdleObjects().takeFirst();
@@ -370,23 +370,13 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
                         throw new NoSuchElementException(
                                 "Timeout waiting for idle object");
                     }
-                    if (!p.allocate()) {
-                        p = null;
-                    }
                 } else {
-                    p = objectDeque.getIdleObjects().pollFirst();
-                    if (p == null) {
-                        p = create(key);
-                        if (p != null) {
-                            create = true;
-                        }
-                    }
                     if (p == null) {
                         throw new NoSuchElementException("Pool exhausted");
                     }
-                    if (!p.allocate()) {
-                        p = null;
-                    }
+                }
+                if (!p.allocate()) {
+                    p = null;
                 }
 
                 if (p != null) {

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/564334a3/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
index b5ef9bd..7a3ee80 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
@@ -428,14 +428,14 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
 
         while (p == null) {
             create = false;
-            if (blockWhenExhausted) {
-                p = idleObjects.pollFirst();
-                if (p == null) {
-                    p = create();
-                    if (p != null) {
-                        create = true;
-                    }
+            p = idleObjects.pollFirst();
+            if (p == null) {
+                p = create();
+                if (p != null) {
+                    create = true;
                 }
+            }
+            if (blockWhenExhausted) {
                 if (p == null) {
                     if (borrowMaxWaitMillis < 0) {
                         p = idleObjects.takeFirst();
@@ -448,23 +448,13 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
                     throw new NoSuchElementException(
                             "Timeout waiting for idle object");
                 }
-                if (!p.allocate()) {
-                    p = null;
-                }
             } else {
-                p = idleObjects.pollFirst();
-                if (p == null) {
-                    p = create();
-                    if (p != null) {
-                        create = true;
-                    }
-                }
                 if (p == null) {
                     throw new NoSuchElementException("Pool exhausted");
                 }
-                if (!p.allocate()) {
-                    p = null;
-                }
+            }
+            if (!p.allocate()) {
+                p = null;
             }
 
             if (p != null) {


[30/50] [abbrv] commons-pool git commit: Re-working of fix for POOL-303

Posted by ma...@apache.org.
Re-working of fix for POOL-303

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1735269 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/a4c544a2
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/a4c544a2
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/a4c544a2

Branch: refs/heads/master
Commit: a4c544a24242701673073d32d2ddbf037fac0099
Parents: 170a509
Author: Mark Thomas <ma...@apache.org>
Authored: Wed Mar 16 17:20:41 2016 +0000
Committer: Mark Thomas <ma...@apache.org>
Committed: Wed Mar 16 17:20:41 2016 +0000

----------------------------------------------------------------------
 .../pool2/impl/GenericKeyedObjectPool.java      | 53 ++++++++++++++++----
 .../commons/pool2/impl/GenericObjectPool.java   | 51 ++++++++++++++++---
 .../pool2/impl/TestGenericObjectPool.java       |  6 ++-
 3 files changed, 93 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/a4c544a2/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
index dcfe448..d477cfa 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
@@ -1017,26 +1017,58 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
             }
         }
 
-        final long newCreateCount = objectDeque.getCreateCount().incrementAndGet();
+        // Flag that indicates if create should:
+        // - TRUE:  call the factory to create an object
+        // - FALSE: return null
+        // - null:  loop and re-test the condition that determines whether to
+        //          call the factory
+        Boolean create = null;
+        while (create == null) {
+            synchronized (objectDeque.makeObjectCountLock) {
+                final long newCreateCount = objectDeque.getCreateCount().incrementAndGet();
+                // Check against the per key limit
+                if (newCreateCount > maxTotalPerKeySave) {
+                    // The key is currently at capacity or in the process of
+                    // making enough new objects to take it to capacity.
+                    numTotal.decrementAndGet();
+                    objectDeque.getCreateCount().decrementAndGet();
+                    if (objectDeque.makeObjectCount == 0) {
+                        // There are no makeObject() calls in progress for this
+                        // key so the key is at capacity. Do not attempt to
+                        // create a new object. Return and wait for an object to
+                        // be returned.
+                        create = Boolean.FALSE;
+                    } else {
+                        // There are makeObject() calls in progress that might
+                        // bring the pool to capacity. Those calls might also
+                        // fail so wait until they complete and then re-test if
+                        // the pool is at capacity or not.
+                        objectDeque.makeObjectCountLock.wait();
+                    }
+                } else {
+                    // The pool is not at capacity. Create a new object.
+                    objectDeque.makeObjectCount++;
+                    create = Boolean.TRUE;
+                }
+            }
+        }
 
-        // Check against the per key limit
-        if (newCreateCount > maxTotalPerKeySave) {
-            numTotal.decrementAndGet();
-            objectDeque.getCreateCount().decrementAndGet();
+        if (!create.booleanValue()) {
             return null;
         }
 
-
         PooledObject<T> p = null;
         try {
             p = factory.makeObject(key);
         } catch (final Exception e) {
             numTotal.decrementAndGet();
             objectDeque.getCreateCount().decrementAndGet();
-            // POOL-303. There may be threads waiting on an object return that
-            // isn't going to happen. Unblock them.
-            objectDeque.idleObjects.interuptTakeWaiters();
             throw e;
+        } finally {
+            synchronized (objectDeque.makeObjectCountLock) {
+                objectDeque.makeObjectCount--;
+                objectDeque.makeObjectCountLock.notifyAll();
+            }
         }
 
         createdCount.incrementAndGet();
@@ -1431,6 +1463,9 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
          */
         private final AtomicInteger createCount = new AtomicInteger(0);
 
+        private long makeObjectCount = 0;
+        private final Object makeObjectCountLock = new Object();
+
         /*
          * The map is keyed on pooled instances, wrapped to ensure that
          * they work properly as keys.

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/a4c544a2/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
index 0e0c9bd..487eec2 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
@@ -842,24 +842,59 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      */
     private PooledObject<T> create() throws Exception {
         int localMaxTotal = getMaxTotal();
+        // This simplifies the code later in this method
         if (localMaxTotal < 0) {
             localMaxTotal = Integer.MAX_VALUE;
         }
-        final long newCreateCount = createCount.incrementAndGet();
-        if (newCreateCount > localMaxTotal) {
-            createCount.decrementAndGet();
+
+        // Flag that indicates if create should:
+        // - TRUE:  call the factory to create an object
+        // - FALSE: return null
+        // - null:  loop and re-test the condition that determines whether to
+        //          call the factory
+        Boolean create = null;
+        while (create == null) {
+            synchronized (makeObjectCountLock) {
+                final long newCreateCount = createCount.incrementAndGet();
+                if (newCreateCount > localMaxTotal) {
+                    // The pool is currently at capacity or in the process of
+                    // making enough new objects to take it to capacity.
+                    createCount.decrementAndGet();
+                    if (makeObjectCount == 0) {
+                        // There are no makeObject() calls in progress so the
+                        // pool is at capacity. Do not attempt to create a new
+                        // object. Return and wait for an object to be returned
+                        create = Boolean.FALSE;
+                    } else {
+                        // There are makeObject() calls in progress that might
+                        // bring the pool to capacity. Those calls might also
+                        // fail so wait until they complete and then re-test if
+                        // the pool is at capacity or not.
+                        makeObjectCountLock.wait();
+                    }
+                } else {
+                    // The pool is not at capacity. Create a new object.
+                    makeObjectCount++;
+                    create = Boolean.TRUE;
+                }
+            }
+        }
+
+        if (!create.booleanValue()) {
             return null;
         }
 
         final PooledObject<T> p;
         try {
             p = factory.makeObject();
-        } catch (final Exception e) {
+        } catch (Exception e) {
             createCount.decrementAndGet();
-            // POOL-303. There may be threads waiting on an object return that
-            // isn't going to happen. Unblock them.
-            idleObjects.interuptTakeWaiters();
             throw e;
+        } finally {
+            synchronized (makeObjectCountLock) {
+                makeObjectCount--;
+                makeObjectCountLock.notifyAll();
+            }
         }
 
         final AbandonedConfig ac = this.abandonedConfig;
@@ -1129,6 +1164,8 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      * {@link #_maxActive} objects created at any one time.
      */
     private final AtomicLong createCount = new AtomicLong(0);
+    private long makeObjectCount = 0;
+    private final Object makeObjectCountLock = new Object();
     private final LinkedBlockingDeque<PooledObject<T>> idleObjects;
 
     // JMX specific attributes

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/a4c544a2/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
index f951691..5890146 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
@@ -25,6 +25,7 @@ import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import java.lang.management.ManagementFactory;
+import java.nio.charset.UnsupportedCharsetException;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
@@ -2590,6 +2591,9 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         }
         Assert.assertFalse(thread1.isAlive());
         Assert.assertFalse(thread2.isAlive());
+
+        Assert.assertTrue(thread1._thrown instanceof UnsupportedCharsetException);
+        Assert.assertTrue(thread2._thrown instanceof UnsupportedCharsetException);
     }
 
     private static class CreateFailFactory extends BasePooledObjectFactory<String> {
@@ -2599,7 +2603,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         @Override
         public String create() throws Exception {
             semaphore.acquire();
-            throw new Exception();
+            throw new UnsupportedCharsetException("wibble");
         }
 
         @Override


[20/50] [abbrv] commons-pool git commit: [POOL-309] Fix misspellings from "destory" to "destroy".

Posted by ma...@apache.org.
[POOL-309] Fix misspellings from "destory" to "destroy".

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1733560 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/5ec116ad
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/5ec116ad
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/5ec116ad

Branch: refs/heads/master
Commit: 5ec116ad0b261b3143c24ff9a37c27bfc8182040
Parents: 14d8291
Author: Gary D. Gregory <gg...@apache.org>
Authored: Fri Mar 4 06:38:45 2016 +0000
Committer: Gary D. Gregory <gg...@apache.org>
Committed: Fri Mar 4 06:38:45 2016 +0000

----------------------------------------------------------------------
 src/changes/changes.xml                                 |  3 +++
 .../apache/commons/pool2/impl/GenericObjectPool.java    | 12 ++++++------
 .../org/apache/commons/pool2/TestKeyedObjectPool.java   |  2 +-
 3 files changed, 10 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5ec116ad/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 2260289..2503b03 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -44,6 +44,9 @@ The <action> type attribute can be add,update,fix,remove.
   </properties>
   <body>
   <release version="2.4.3" date="TBD" description="TBD">
+    <action dev="ggregory" issue="POOL-309" type="fix">
+      Fix misspellings from "destory" to "destroy".
+    </action>
   </release>
   <release version="2.4.2" date="2015-08-01" description=
  "This is a patch release, including bug fixes only.">

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5ec116ad/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
index 2e7f047..6c8dc71 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
@@ -880,17 +880,17 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
     /**
      * Destroys a wrapped pooled object.
      *
-     * @param toDestory The wrapped pooled object to destroy
+     * @param toDestroy The wrapped pooled object to destroy
      *
      * @throws Exception If the factory fails to destroy the pooled object
      *                   cleanly
      */
-    private void destroy(final PooledObject<T> toDestory) throws Exception {
-        toDestory.invalidate();
-        idleObjects.remove(toDestory);
-        allObjects.remove(new IdentityWrapper<T>(toDestory.getObject()));
+    private void destroy(final PooledObject<T> toDestroy) throws Exception {
+        toDestroy.invalidate();
+        idleObjects.remove(toDestroy);
+        allObjects.remove(new IdentityWrapper<T>(toDestroy.getObject()));
         try {
-            factory.destroyObject(toDestory);
+            factory.destroyObject(toDestroy);
         } finally {
             destroyedCount.incrementAndGet();
             createCount.decrementAndGet();

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/5ec116ad/src/test/java/org/apache/commons/pool2/TestKeyedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/TestKeyedObjectPool.java b/src/test/java/org/apache/commons/pool2/TestKeyedObjectPool.java
index 4c646cc..75653f2 100644
--- a/src/test/java/org/apache/commons/pool2/TestKeyedObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/TestKeyedObjectPool.java
@@ -379,7 +379,7 @@ public abstract class TestKeyedObjectPool {
         PoolUtils.prefill(pool, KEY, 5);
         pool.clear();
 
-        //// Test exception handling clear should swallow destory object failures
+        //// Test exception handling clear should swallow destroy object failures
         reset(pool, factory, expectedMethods);
         factory.setDestroyObjectFail(true);
         PoolUtils.prefill(pool, KEY, 5);


[28/50] [abbrv] commons-pool git commit: Simplify code a little

Posted by ma...@apache.org.
Simplify code a little

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1735259 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/9c75d18b
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/9c75d18b
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/9c75d18b

Branch: refs/heads/master
Commit: 9c75d18b8ca0c34d9a193e93b6ec435bb788c326
Parents: db15a29
Author: Mark Thomas <ma...@apache.org>
Authored: Wed Mar 16 16:35:26 2016 +0000
Committer: Mark Thomas <ma...@apache.org>
Committed: Wed Mar 16 16:35:26 2016 +0000

----------------------------------------------------------------------
 .../apache/commons/pool2/impl/GenericKeyedObjectPool.java    | 8 +++++---
 .../org/apache/commons/pool2/impl/GenericObjectPool.java     | 8 +++++---
 2 files changed, 10 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/9c75d18b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
index 20281ee..82987da 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
@@ -993,7 +993,10 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
      * @throws Exception If the objection creation fails
      */
     private PooledObject<T> create(final K key) throws Exception {
-        final int maxTotalPerKeySave = getMaxTotalPerKey(); // Per key
+        int maxTotalPerKeySave = getMaxTotalPerKey(); // Per key
+        if (maxTotalPerKeySave < 0) {
+            maxTotalPerKeySave = Integer.MAX_VALUE;
+        }
         final int maxTotal = getMaxTotal();   // All keys
 
         final ObjectDeque<T> objectDeque = poolMap.get(key);
@@ -1020,8 +1023,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         final long newCreateCount = objectDeque.getCreateCount().incrementAndGet();
 
         // Check against the per key limit
-        if (maxTotalPerKeySave > -1 && newCreateCount > maxTotalPerKeySave ||
-                newCreateCount > Integer.MAX_VALUE) {
+        if (newCreateCount > maxTotalPerKeySave) {
             numTotal.decrementAndGet();
             objectDeque.getCreateCount().decrementAndGet();
             // POOL-303. There may be threads waiting on an object return that

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/9c75d18b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
index 7a3ee80..2aadb43 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
@@ -841,10 +841,12 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
      * @throws Exception if the object factory's {@code makeObject} fails
      */
     private PooledObject<T> create() throws Exception {
-        final int localMaxTotal = getMaxTotal();
+        int localMaxTotal = getMaxTotal();
+        if (localMaxTotal < 0) {
+            localMaxTotal = Integer.MAX_VALUE;
+        }
         final long newCreateCount = createCount.incrementAndGet();
-        if (localMaxTotal > -1 && newCreateCount > localMaxTotal ||
-                newCreateCount > Integer.MAX_VALUE) {
+        if (newCreateCount > localMaxTotal) {
             createCount.decrementAndGet();
             // POOL-303. There may be threads waiting on an object return that
             // isn't going to happen. Unblock them.


[17/50] [abbrv] commons-pool git commit: Add final modifier to method parameters.

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/proxy/ProxiedKeyedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/proxy/ProxiedKeyedObjectPool.java b/src/main/java/org/apache/commons/pool2/proxy/ProxiedKeyedObjectPool.java
index 26536b0..b837300 100644
--- a/src/main/java/org/apache/commons/pool2/proxy/ProxiedKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/proxy/ProxiedKeyedObjectPool.java
@@ -44,8 +44,8 @@ public class ProxiedKeyedObjectPool<K,V> implements KeyedObjectPool<K,V> {
      * @param pool  The object pool to wrap
      * @param proxySource The source of the proxy objects
      */
-    public ProxiedKeyedObjectPool(KeyedObjectPool<K,V> pool,
-            ProxySource<V> proxySource) {
+    public ProxiedKeyedObjectPool(final KeyedObjectPool<K,V> pool,
+            final ProxySource<V> proxySource) {
         this.pool = pool;
         this.proxySource = proxySource;
     }
@@ -53,7 +53,7 @@ public class ProxiedKeyedObjectPool<K,V> implements KeyedObjectPool<K,V> {
 
     @SuppressWarnings("unchecked")
     @Override
-    public V borrowObject(K key) throws Exception, NoSuchElementException,
+    public V borrowObject(final K key) throws Exception, NoSuchElementException,
             IllegalStateException {
         UsageTracking<V> usageTracking = null;
         if (pool instanceof UsageTracking) {
@@ -65,30 +65,30 @@ public class ProxiedKeyedObjectPool<K,V> implements KeyedObjectPool<K,V> {
     }
 
     @Override
-    public void returnObject(K key, V proxy) throws Exception {
+    public void returnObject(final K key, final V proxy) throws Exception {
         final V pooledObject = proxySource.resolveProxy(proxy);
         pool.returnObject(key, pooledObject);
     }
 
     @Override
-    public void invalidateObject(K key, V proxy) throws Exception {
+    public void invalidateObject(final K key, final V proxy) throws Exception {
         final V pooledObject = proxySource.resolveProxy(proxy);
         pool.invalidateObject(key, pooledObject);
     }
 
     @Override
-    public void addObject(K key) throws Exception, IllegalStateException,
+    public void addObject(final K key) throws Exception, IllegalStateException,
             UnsupportedOperationException {
         pool.addObject(key);
     }
 
     @Override
-    public int getNumIdle(K key) {
+    public int getNumIdle(final K key) {
         return pool.getNumIdle(key);
     }
 
     @Override
-    public int getNumActive(K key) {
+    public int getNumActive(final K key) {
         return pool.getNumActive(key);
     }
 
@@ -108,7 +108,7 @@ public class ProxiedKeyedObjectPool<K,V> implements KeyedObjectPool<K,V> {
     }
 
     @Override
-    public void clear(K key) throws Exception, UnsupportedOperationException {
+    public void clear(final K key) throws Exception, UnsupportedOperationException {
         pool.clear(key);
     }
 

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/main/java/org/apache/commons/pool2/proxy/ProxiedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/proxy/ProxiedObjectPool.java b/src/main/java/org/apache/commons/pool2/proxy/ProxiedObjectPool.java
index 59c5402..5496342 100644
--- a/src/main/java/org/apache/commons/pool2/proxy/ProxiedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/proxy/ProxiedObjectPool.java
@@ -43,7 +43,7 @@ public class ProxiedObjectPool<T> implements ObjectPool<T> {
      * @param pool  The object pool to wrap
      * @param proxySource The source of the proxy objects
      */
-    public ProxiedObjectPool(ObjectPool<T> pool, ProxySource<T> proxySource) {
+    public ProxiedObjectPool(final ObjectPool<T> pool, final ProxySource<T> proxySource) {
         this.pool = pool;
         this.proxySource = proxySource;
     }
@@ -66,14 +66,14 @@ public class ProxiedObjectPool<T> implements ObjectPool<T> {
 
 
     @Override
-    public void returnObject(T proxy) throws Exception {
+    public void returnObject(final T proxy) throws Exception {
         final T pooledObject = proxySource.resolveProxy(proxy);
         pool.returnObject(pooledObject);
     }
 
 
     @Override
-    public void invalidateObject(T proxy) throws Exception {
+    public void invalidateObject(final T proxy) throws Exception {
         final T pooledObject = proxySource.resolveProxy(proxy);
         pool.invalidateObject(pooledObject);
     }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/test/java/org/apache/commons/pool2/MethodCall.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/MethodCall.java b/src/test/java/org/apache/commons/pool2/MethodCall.java
index bb8fe02..7b56c79 100644
--- a/src/test/java/org/apache/commons/pool2/MethodCall.java
+++ b/src/test/java/org/apache/commons/pool2/MethodCall.java
@@ -71,7 +71,7 @@ public class MethodCall {
         this.returned = returned;
     }
 
-    public MethodCall returned(Object obj) {
+    public MethodCall returned(final Object obj) {
         setReturned(obj);
         return this;
     }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/test/java/org/apache/commons/pool2/TestBaseKeyedPoolableObjectFactory.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/TestBaseKeyedPoolableObjectFactory.java b/src/test/java/org/apache/commons/pool2/TestBaseKeyedPoolableObjectFactory.java
index 3125993..0b71c1a 100644
--- a/src/test/java/org/apache/commons/pool2/TestBaseKeyedPoolableObjectFactory.java
+++ b/src/test/java/org/apache/commons/pool2/TestBaseKeyedPoolableObjectFactory.java
@@ -39,11 +39,11 @@ public class TestBaseKeyedPoolableObjectFactory {
     private static class TestFactory
             extends BaseKeyedPooledObjectFactory<Object,Object> {
         @Override
-        public Object create(Object key) throws Exception {
+        public Object create(final Object key) throws Exception {
             return null;
         }
         @Override
-        public PooledObject<Object> wrap(Object value) {
+        public PooledObject<Object> wrap(final Object value) {
             return new DefaultPooledObject<Object>(value);
         }
     }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/test/java/org/apache/commons/pool2/TestBaseObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/TestBaseObjectPool.java b/src/test/java/org/apache/commons/pool2/TestBaseObjectPool.java
index fc81213..12cbc93 100644
--- a/src/test/java/org/apache/commons/pool2/TestBaseObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/TestBaseObjectPool.java
@@ -34,7 +34,7 @@ public class TestBaseObjectPool extends TestObjectPool {
      *
      * @return A newly created empty pool
      */
-    protected ObjectPool<String> makeEmptyPool(int mincapacity) {
+    protected ObjectPool<String> makeEmptyPool(final int mincapacity) {
         if (this.getClass() != TestBaseObjectPool.class) {
             fail("Subclasses of TestBaseObjectPool must reimplement this method.");
         }
@@ -284,10 +284,10 @@ public class TestBaseObjectPool extends TestObjectPool {
             return null;
         }
         @Override
-        public void returnObject(Object obj) {
+        public void returnObject(final Object obj) {
         }
         @Override
-        public void invalidateObject(Object obj) {
+        public void invalidateObject(final Object obj) {
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/test/java/org/apache/commons/pool2/TestBasePoolableObjectFactory.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/TestBasePoolableObjectFactory.java b/src/test/java/org/apache/commons/pool2/TestBasePoolableObjectFactory.java
index 82eb630..00633a6 100644
--- a/src/test/java/org/apache/commons/pool2/TestBasePoolableObjectFactory.java
+++ b/src/test/java/org/apache/commons/pool2/TestBasePoolableObjectFactory.java
@@ -42,7 +42,7 @@ public class TestBasePoolableObjectFactory {
             return null;
         }
         @Override
-        public PooledObject<Object> wrap(Object value) {
+        public PooledObject<Object> wrap(final Object value) {
             return new DefaultPooledObject<Object>(value);
         }
     }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/test/java/org/apache/commons/pool2/TestKeyedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/TestKeyedObjectPool.java b/src/test/java/org/apache/commons/pool2/TestKeyedObjectPool.java
index 809ebb4..4c646cc 100644
--- a/src/test/java/org/apache/commons/pool2/TestKeyedObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/TestKeyedObjectPool.java
@@ -674,7 +674,7 @@ public abstract class TestKeyedObjectPool {
             return new Object();
         }
         @Override
-        public PooledObject<Object> wrap(Object value) {
+        public PooledObject<Object> wrap(final Object value) {
             return new DefaultPooledObject<Object>(value);
         }
     }
@@ -717,7 +717,7 @@ public abstract class TestKeyedObjectPool {
             return makeObjectFail;
         }
 
-        public void setMakeObjectFail(boolean makeObjectFail) {
+        public void setMakeObjectFail(final boolean makeObjectFail) {
             this.makeObjectFail = makeObjectFail;
         }
 
@@ -725,7 +725,7 @@ public abstract class TestKeyedObjectPool {
             return destroyObjectFail;
         }
 
-        public void setDestroyObjectFail(boolean destroyObjectFail) {
+        public void setDestroyObjectFail(final boolean destroyObjectFail) {
             this.destroyObjectFail = destroyObjectFail;
         }
 
@@ -733,7 +733,7 @@ public abstract class TestKeyedObjectPool {
             return validateObjectFail;
         }
 
-        public void setValidateObjectFail(boolean validateObjectFail) {
+        public void setValidateObjectFail(final boolean validateObjectFail) {
             this.validateObjectFail = validateObjectFail;
         }
 
@@ -741,7 +741,7 @@ public abstract class TestKeyedObjectPool {
             return activateObjectFail;
         }
 
-        public void setActivateObjectFail(boolean activateObjectFail) {
+        public void setActivateObjectFail(final boolean activateObjectFail) {
             this.activateObjectFail = activateObjectFail;
         }
 
@@ -749,7 +749,7 @@ public abstract class TestKeyedObjectPool {
             return passivateObjectFail;
         }
 
-        public void setPassivateObjectFail(boolean passivateObjectFail) {
+        public void setPassivateObjectFail(final boolean passivateObjectFail) {
             this.passivateObjectFail = passivateObjectFail;
         }
 

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/test/java/org/apache/commons/pool2/TestObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/TestObjectPool.java b/src/test/java/org/apache/commons/pool2/TestObjectPool.java
index 8a679b4..fe737af 100644
--- a/src/test/java/org/apache/commons/pool2/TestObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/TestObjectPool.java
@@ -417,7 +417,7 @@ public abstract class TestObjectPool {
         pool.close();
     }
 
-    static void removeDestroyObjectCall(List<MethodCall> calls) {
+    static void removeDestroyObjectCall(final List<MethodCall> calls) {
         final Iterator<MethodCall> iter = calls.iterator();
         while (iter.hasNext()) {
             final MethodCall call = iter.next();

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/test/java/org/apache/commons/pool2/TestPoolUtils.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/TestPoolUtils.java b/src/test/java/org/apache/commons/pool2/TestPoolUtils.java
index 0667be1..5d6da2b 100644
--- a/src/test/java/org/apache/commons/pool2/TestPoolUtils.java
+++ b/src/test/java/org/apache/commons/pool2/TestPoolUtils.java
@@ -563,7 +563,7 @@ public class TestPoolUtils {
         final
         ObjectPool<Object> internalPool = createProxy(ObjectPool.class, new InvocationHandler() {
             @Override
-            public Object invoke(Object arg0, Method arg1, Object[] arg2)
+            public Object invoke(final Object arg0, final Method arg1, final Object[] arg2)
                     throws Throwable {
                 return null;
             }
@@ -694,7 +694,7 @@ public class TestPoolUtils {
         final
         KeyedObjectPool<Object, Object> internalPool = createProxy(KeyedObjectPool.class, new InvocationHandler() {
             @Override
-            public Object invoke(Object arg0, Method arg1, Object[] arg2)
+            public Object invoke(final Object arg0, final Method arg1, final Object[] arg2)
                     throws Throwable {
                 return null;
             }
@@ -801,7 +801,7 @@ public class TestPoolUtils {
         assertNotNull(PoolUtils.TimerHolder.MIN_IDLE_TIMER);
     }
 
-    private static List<String> invokeEveryMethod(ObjectPool<Object> op) throws Exception {
+    private static List<String> invokeEveryMethod(final ObjectPool<Object> op) throws Exception {
         op.addObject();
         op.borrowObject();
         op.clear();
@@ -820,7 +820,7 @@ public class TestPoolUtils {
         return expectedMethods;
     }
 
-    private static List<String> invokeEveryMethod(KeyedObjectPool<Object,Object> kop) throws Exception {
+    private static List<String> invokeEveryMethod(final KeyedObjectPool<Object,Object> kop) throws Exception {
         kop.addObject(null);
         kop.borrowObject(null);
         kop.clear();
@@ -842,7 +842,7 @@ public class TestPoolUtils {
         return expectedMethods;
     }
 
-    private static <T> List<String> invokeEveryMethod(PooledObjectFactory<T> pof) throws Exception {
+    private static <T> List<String> invokeEveryMethod(final PooledObjectFactory<T> pof) throws Exception {
         pof.activateObject(null);
         pof.destroyObject(null);
         pof.makeObject();
@@ -857,7 +857,7 @@ public class TestPoolUtils {
         return expectedMethods;
     }
 
-    private static <K,V> List<String> invokeEveryMethod(KeyedPooledObjectFactory<K,V> kpof) throws Exception {
+    private static <K,V> List<String> invokeEveryMethod(final KeyedPooledObjectFactory<K,V> kpof) throws Exception {
         kpof.activateObject(null, null);
         kpof.destroyObject(null, null);
         kpof.makeObject(null);

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/test/java/org/apache/commons/pool2/VisitTracker.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/VisitTracker.java b/src/test/java/org/apache/commons/pool2/VisitTracker.java
index ea3617a..9fc4f58 100644
--- a/src/test/java/org/apache/commons/pool2/VisitTracker.java
+++ b/src/test/java/org/apache/commons/pool2/VisitTracker.java
@@ -34,13 +34,13 @@ public class VisitTracker<K> {
         reset();
     }
 
-    public VisitTracker(int id) {
+    public VisitTracker(final int id) {
         super();
         this.id = id;
         reset();
     }
 
-    public VisitTracker(int id, K key) {
+    public VisitTracker(final int id, final K key) {
         super();
         this.id = id;
         this.key = key;
@@ -98,7 +98,7 @@ public class VisitTracker<K> {
         return "Key: " + key + " id: " + id;
     }
 
-    private void fail(String message) {
+    private void fail(final String message) {
         throw new IllegalStateException(message);
     }
 }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/test/java/org/apache/commons/pool2/VisitTrackerFactory.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/VisitTrackerFactory.java b/src/test/java/org/apache/commons/pool2/VisitTrackerFactory.java
index 448727c..f341dea 100644
--- a/src/test/java/org/apache/commons/pool2/VisitTrackerFactory.java
+++ b/src/test/java/org/apache/commons/pool2/VisitTrackerFactory.java
@@ -37,39 +37,39 @@ public class VisitTrackerFactory<K> implements PooledObjectFactory<VisitTracker<
         return new DefaultPooledObject<VisitTracker<K>>(new VisitTracker<K>(nextId++));
     }
     @Override
-    public PooledObject<VisitTracker<K>> makeObject(K key) {
+    public PooledObject<VisitTracker<K>> makeObject(final K key) {
         return new DefaultPooledObject<VisitTracker<K>>(new VisitTracker<K>(nextId++, key));
     }
     @Override
-    public void destroyObject(PooledObject<VisitTracker<K>> ref) {
+    public void destroyObject(final PooledObject<VisitTracker<K>> ref) {
         ref.getObject().destroy();
     }
     @Override
-    public void destroyObject(K key, PooledObject<VisitTracker<K>> ref) {
+    public void destroyObject(final K key, final PooledObject<VisitTracker<K>> ref) {
         ref.getObject().destroy();
     }
     @Override
-    public boolean validateObject(PooledObject<VisitTracker<K>> ref) {
+    public boolean validateObject(final PooledObject<VisitTracker<K>> ref) {
         return ref.getObject().validate();
     }
     @Override
-    public boolean validateObject(K key, PooledObject<VisitTracker<K>> ref) {
+    public boolean validateObject(final K key, final PooledObject<VisitTracker<K>> ref) {
         return ref.getObject().validate();
     }
     @Override
-    public void activateObject(PooledObject<VisitTracker<K>> ref) throws Exception {
+    public void activateObject(final PooledObject<VisitTracker<K>> ref) throws Exception {
         ref.getObject().activate();
     }
     @Override
-    public void activateObject(K key, PooledObject<VisitTracker<K>> ref) throws Exception {
+    public void activateObject(final K key, final PooledObject<VisitTracker<K>> ref) throws Exception {
         ref.getObject().activate();
     }
     @Override
-    public void passivateObject(PooledObject<VisitTracker<K>> ref) throws Exception {
+    public void passivateObject(final PooledObject<VisitTracker<K>> ref) throws Exception {
         ref.getObject().passivate();
     }
     @Override
-    public void passivateObject(K key, PooledObject<VisitTracker<K>> ref) throws Exception {
+    public void passivateObject(final K key, final PooledObject<VisitTracker<K>> ref) throws Exception {
         ref.getObject().passivate();
     }
     public void resetId() {

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/test/java/org/apache/commons/pool2/Waiter.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/Waiter.java b/src/test/java/org/apache/commons/pool2/Waiter.java
index fe8e689..ce4fc5b 100644
--- a/src/test/java/org/apache/commons/pool2/Waiter.java
+++ b/src/test/java/org/apache/commons/pool2/Waiter.java
@@ -37,7 +37,7 @@ public class Waiter {
     private long validationCount = 0;
     private final int id = instanceCount.getAndIncrement();
 
-    public Waiter(boolean active, boolean valid, long latency) {
+    public Waiter(final boolean active, final boolean valid, final long latency) {
         this.active = active;
         this.valid = valid;
         this.latency = latency;
@@ -80,7 +80,7 @@ public class Waiter {
      *
      * @param active new active state
      */
-    public void setActive(boolean active) {
+    public void setActive(final boolean active) {
         final boolean activeState = this.active;
         if (activeState == active) {
             return;
@@ -99,7 +99,7 @@ public class Waiter {
         return latency;
     }
 
-    public void setLatency(long latency) {
+    public void setLatency(final long latency) {
         this.latency = latency;
     }
 
@@ -108,7 +108,7 @@ public class Waiter {
         return valid;
     }
 
-    public void setValid(boolean valid) {
+    public void setValid(final boolean valid) {
         this.valid = valid;
     }
 
@@ -157,7 +157,7 @@ public class Waiter {
     }
 
     @Override
-    public boolean equals(Object obj) {
+    public boolean equals(final Object obj) {
         if (!(obj instanceof Waiter)) {
             return false;
         }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/test/java/org/apache/commons/pool2/WaiterFactory.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/WaiterFactory.java b/src/test/java/org/apache/commons/pool2/WaiterFactory.java
index 7727e25..3ac1709 100644
--- a/src/test/java/org/apache/commons/pool2/WaiterFactory.java
+++ b/src/test/java/org/apache/commons/pool2/WaiterFactory.java
@@ -67,10 +67,10 @@ KeyedPooledObjectFactory<K,Waiter> {
     /** Maximum of (makes - destroys) per key */
     private final long maxActivePerKey;  // GKOP 1.x calls this maxActive
 
-    public WaiterFactory(long activateLatency, long destroyLatency,
-            long makeLatency, long passivateLatency, long validateLatency,
-            long waiterLatency,long maxActive, long maxActivePerKey,
-            double passivateInvalidationProbability) {
+    public WaiterFactory(final long activateLatency, final long destroyLatency,
+            final long makeLatency, final long passivateLatency, final long validateLatency,
+            final long waiterLatency,final long maxActive, final long maxActivePerKey,
+            final double passivateInvalidationProbability) {
         this.activateLatency = activateLatency;
         this.destroyLatency = destroyLatency;
         this.makeLatency = makeLatency;
@@ -82,28 +82,28 @@ KeyedPooledObjectFactory<K,Waiter> {
         this.passivateInvalidationProbability = passivateInvalidationProbability;
     }
 
-    public WaiterFactory(long activateLatency, long destroyLatency,
-            long makeLatency, long passivateLatency, long validateLatency,
-            long waiterLatency) {
+    public WaiterFactory(final long activateLatency, final long destroyLatency,
+            final long makeLatency, final long passivateLatency, final long validateLatency,
+            final long waiterLatency) {
         this(activateLatency, destroyLatency, makeLatency, passivateLatency,
                 validateLatency, waiterLatency, Long.MAX_VALUE, Long.MAX_VALUE, 0);
     }
 
-    public WaiterFactory(long activateLatency, long destroyLatency,
-            long makeLatency, long passivateLatency, long validateLatency,
-            long waiterLatency,long maxActive) {
+    public WaiterFactory(final long activateLatency, final long destroyLatency,
+            final long makeLatency, final long passivateLatency, final long validateLatency,
+            final long waiterLatency,final long maxActive) {
         this(activateLatency, destroyLatency, makeLatency, passivateLatency,
                 validateLatency, waiterLatency, maxActive, Long.MAX_VALUE, 0);
     }
 
     @Override
-    public void activateObject(PooledObject<Waiter> obj) throws Exception {
+    public void activateObject(final PooledObject<Waiter> obj) throws Exception {
         doWait(activateLatency);
         obj.getObject().setActive(true);
     }
 
     @Override
-    public void destroyObject(PooledObject<Waiter> obj) throws Exception {
+    public void destroyObject(final PooledObject<Waiter> obj) throws Exception {
         doWait(destroyLatency);
         obj.getObject().setValid(false);
         obj.getObject().setActive(false);
@@ -128,7 +128,7 @@ KeyedPooledObjectFactory<K,Waiter> {
     }
 
     @Override
-    public void passivateObject(PooledObject<Waiter> obj) throws Exception {
+    public void passivateObject(final PooledObject<Waiter> obj) throws Exception {
         obj.getObject().setActive(false);
         doWait(passivateLatency);
         if (Math.random() < passivateInvalidationProbability) {
@@ -137,12 +137,12 @@ KeyedPooledObjectFactory<K,Waiter> {
     }
 
     @Override
-    public boolean validateObject(PooledObject<Waiter> obj) {
+    public boolean validateObject(final PooledObject<Waiter> obj) {
         doWait(validateLatency);
         return obj.getObject().isValid();
     }
 
-    protected void doWait(long latency) {
+    protected void doWait(final long latency) {
         if (latency == 0) {
             return;
         }
@@ -175,12 +175,12 @@ KeyedPooledObjectFactory<K,Waiter> {
     // KeyedPoolableObjectFactory methods
 
     @Override
-    public void activateObject(K key, PooledObject<Waiter> obj) throws Exception {
+    public void activateObject(final K key, final PooledObject<Waiter> obj) throws Exception {
         activateObject(obj);
     }
 
     @Override
-    public void destroyObject(K key,PooledObject<Waiter> obj) throws Exception {
+    public void destroyObject(final K key,final PooledObject<Waiter> obj) throws Exception {
         destroyObject(obj);
         synchronized (this) {
             final Integer count = activeCounts.get(key);
@@ -189,7 +189,7 @@ KeyedPooledObjectFactory<K,Waiter> {
     }
 
     @Override
-    public PooledObject<Waiter> makeObject(K key) throws Exception {
+    public PooledObject<Waiter> makeObject(final K key) throws Exception {
         synchronized (this) {
             Integer count = activeCounts.get(key);
             if (count == null) {
@@ -209,12 +209,12 @@ KeyedPooledObjectFactory<K,Waiter> {
     }
 
     @Override
-    public void passivateObject(K key, PooledObject<Waiter> obj) throws Exception {
+    public void passivateObject(final K key, final PooledObject<Waiter> obj) throws Exception {
         passivateObject(obj);
     }
 
     @Override
-    public boolean validateObject(K key, PooledObject<Waiter> obj) {
+    public boolean validateObject(final K key, final PooledObject<Waiter> obj) {
         return validateObject(obj);
     }
 

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java
index 3c0ef81..b1b591b 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java
@@ -288,7 +288,7 @@ public class TestAbandonedObjectPool {
     class ConcurrentBorrower extends Thread {
         private final ArrayList<PooledTestObject> _borrowed;
 
-        public ConcurrentBorrower(ArrayList<PooledTestObject> borrowed) {
+        public ConcurrentBorrower(final ArrayList<PooledTestObject> borrowed) {
             _borrowed = borrowed;
         }
 
@@ -304,7 +304,7 @@ public class TestAbandonedObjectPool {
 
     class ConcurrentReturner extends Thread {
         private final PooledTestObject returned;
-        public ConcurrentReturner(PooledTestObject obj) {
+        public ConcurrentReturner(final PooledTestObject obj) {
             returned = obj;
         }
         @Override
@@ -328,7 +328,7 @@ public class TestAbandonedObjectPool {
             validateLatency = 0;
         }
 
-        public SimpleFactory(long destroyLatency, long validateLatency) {
+        public SimpleFactory(final long destroyLatency, final long validateLatency) {
             this.destroyLatency = destroyLatency;
             this.validateLatency = validateLatency;
         }
@@ -339,7 +339,7 @@ public class TestAbandonedObjectPool {
         }
 
         @Override
-        public boolean validateObject(PooledObject<PooledTestObject> obj) {
+        public boolean validateObject(final PooledObject<PooledTestObject> obj) {
             try {
                 Thread.sleep(validateLatency);
             } catch (final Exception ex) {
@@ -349,17 +349,17 @@ public class TestAbandonedObjectPool {
         }
 
         @Override
-        public void activateObject(PooledObject<PooledTestObject> obj) {
+        public void activateObject(final PooledObject<PooledTestObject> obj) {
             obj.getObject().setActive(true);
         }
 
         @Override
-        public void passivateObject(PooledObject<PooledTestObject> obj) {
+        public void passivateObject(final PooledObject<PooledTestObject> obj) {
             obj.getObject().setActive(false);
         }
 
         @Override
-        public void destroyObject(PooledObject<PooledTestObject> obj) throws Exception {
+        public void destroyObject(final PooledObject<PooledTestObject> obj) throws Exception {
             obj.getObject().setActive(false);
             // while destroying instances, yield control to other threads
             // helps simulate threading errors
@@ -383,7 +383,7 @@ class PooledTestObject implements TrackedUse {
         _hash = hash.incrementAndGet();
     }
 
-    public synchronized void setActive(boolean b) {
+    public synchronized void setActive(final boolean b) {
         active = b;
     }
 
@@ -404,7 +404,7 @@ class PooledTestObject implements TrackedUse {
         return _hash;
     }
 
-    public void setAbandoned(boolean b) {
+    public void setAbandoned(final boolean b) {
         _abandoned = b;
     }
 
@@ -420,7 +420,7 @@ class PooledTestObject implements TrackedUse {
     }
 
     @Override
-    public boolean equals(Object obj) {
+    public boolean equals(final Object obj) {
         if (!(obj instanceof PooledTestObject)) {
             return false;
         }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java
index 9305783..4777e55 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java
@@ -68,7 +68,7 @@ import org.junit.Test;
 public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
 
     @Override
-    protected KeyedObjectPool<Object,Object> makeEmptyPool(int mincapacity) {
+    protected KeyedObjectPool<Object,Object> makeEmptyPool(final int mincapacity) {
         final KeyedPooledObjectFactory<Object,Object> perKeyFactory =
                 new SimplePerKeyFactory();
         final GenericKeyedObjectPool<Object,Object> perKeyPool =
@@ -79,17 +79,17 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
     }
 
     @Override
-    protected KeyedObjectPool<Object,Object> makeEmptyPool(KeyedPooledObjectFactory<Object,Object> fac) {
+    protected KeyedObjectPool<Object,Object> makeEmptyPool(final KeyedPooledObjectFactory<Object,Object> fac) {
         return new GenericKeyedObjectPool<Object,Object>(fac);
     }
 
     @Override
-    protected Object getNthObject(Object key, int n) {
+    protected Object getNthObject(final Object key, final int n) {
         return String.valueOf(key) + String.valueOf(n);
     }
 
     @Override
-    protected Object makeKey(int n) {
+    protected Object makeKey(final int n) {
         return String.valueOf(n);
     }
 
@@ -543,7 +543,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
      * @param delay         Maximum delay between iterations
      * @param gkopPool      The keyed object pool to use
      */
-    public <T> void runTestThreads(int numThreads, int iterations, int delay, GenericKeyedObjectPool<String,T> gkopPool) {
+    public <T> void runTestThreads(final int numThreads, final int iterations, final int delay, final GenericKeyedObjectPool<String,T> gkopPool) {
         final ArrayList<TestThread<T>> threads = new ArrayList<TestThread<T>>();
         for(int i=0;i<numThreads;i++) {
             final TestThread<T> testThread = new TestThread<T>(gkopPool, iterations, delay);
@@ -760,7 +760,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         checkEvictionOrder(true);
     }
 
-    private void checkEvictionOrder(boolean lifo) throws Exception {
+    private void checkEvictionOrder(final boolean lifo) throws Exception {
         final SimpleFactory<Integer> intFactory = new SimpleFactory<Integer>();
         final GenericKeyedObjectPool<Integer,String> intPool =
             new GenericKeyedObjectPool<Integer,String>(intFactory);
@@ -886,7 +886,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         checkEvictorVisiting(false);
     }
 
-    private void checkEvictorVisiting(boolean lifo) throws Exception {
+    private void checkEvictorVisiting(final boolean lifo) throws Exception {
         VisitTrackerFactory<Integer> trackerFactory = new VisitTrackerFactory<Integer>();
         GenericKeyedObjectPool<Integer,VisitTracker<Integer>> intPool =
             new GenericKeyedObjectPool<Integer,VisitTracker<Integer>>(trackerFactory);
@@ -1628,7 +1628,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         private final KeyedObjectPool<String, String> pool;
         private final String key;
         private boolean done = false;
-        public InvalidateThread(KeyedObjectPool<String, String> pool, String key, String obj) {
+        public InvalidateThread(final KeyedObjectPool<String, String> pool, final String key, final String obj) {
             this.obj = obj;
             this.pool = pool;
             this.key = key;
@@ -1658,7 +1658,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         private final KeyedObjectPool<String,T> _pool;
         private final String _key;
 
-        public SimpleTestThread(KeyedObjectPool<String,T> pool, String key) {
+        public SimpleTestThread(final KeyedObjectPool<String,T> pool, final String key) {
             _pool = pool;
             _key = key;
         }
@@ -1690,7 +1690,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         private long ended;
         private String objectId;
 
-        public WaitingTestThread(KeyedObjectPool<String,String> pool, String key, long pause) {
+        public WaitingTestThread(final KeyedObjectPool<String,String> pool, final String key, final long pause) {
             _pool = pool;
             _key = key;
             _pause = pause;
@@ -1737,20 +1737,20 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         private volatile boolean _failed = false;
         private volatile Exception _exception;
 
-        public TestThread(KeyedObjectPool<String,T> pool) {
+        public TestThread(final KeyedObjectPool<String,T> pool) {
             this(pool, 100, 50, 50, true, null, null);
         }
 
-        public TestThread(KeyedObjectPool<String,T> pool, int iter) {
+        public TestThread(final KeyedObjectPool<String,T> pool, final int iter) {
             this(pool, iter, 50, 50, true, null, null);
         }
 
-        public TestThread(KeyedObjectPool<String,T> pool, int iter, int delay) {
+        public TestThread(final KeyedObjectPool<String,T> pool, final int iter, final int delay) {
             this(pool, iter, delay, delay, true, null, null);
         }
 
-        public TestThread(KeyedObjectPool<String,T> pool, int iter, int startDelay,
-            int holdTime, boolean randomDelay, T expectedObject, String key) {
+        public TestThread(final KeyedObjectPool<String,T> pool, final int iter, final int startDelay,
+            final int holdTime, final boolean randomDelay, final T expectedObject, final String key) {
             _pool = pool;
             _iter = iter;
             _startDelay = startDelay;
@@ -1817,11 +1817,11 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         public SimpleFactory() {
             this(true);
         }
-        public SimpleFactory(boolean valid) {
+        public SimpleFactory(final boolean valid) {
             this.valid = valid;
         }
         @Override
-        public PooledObject<String> makeObject(K key) throws Exception {
+        public PooledObject<String> makeObject(final K key) throws Exception {
             if (exceptionOnCreate) {
                 throw new Exception();
             }
@@ -1838,7 +1838,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
             return new DefaultPooledObject<String>(out);
         }
         @Override
-        public void destroyObject(K key, PooledObject<String> obj) throws Exception {
+        public void destroyObject(final K key, final PooledObject<String> obj) throws Exception {
             doWait(destroyLatency);
             synchronized(this) {
                 activeCount--;
@@ -1848,7 +1848,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
             }
         }
         @Override
-        public boolean validateObject(K key, PooledObject<String> obj) {
+        public boolean validateObject(final K key, final PooledObject<String> obj) {
             doWait(validateLatency);
             if (enableValidation) {
                 return validateCounter++%2 == 0 ? evenValid : oddValid;
@@ -1856,7 +1856,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
             return valid;
         }
         @Override
-        public void activateObject(K key, PooledObject<String> obj) throws Exception {
+        public void activateObject(final K key, final PooledObject<String> obj) throws Exception {
             if (exceptionOnActivate) {
                 if (!(validateCounter++%2 == 0 ? evenValid : oddValid)) {
                     throw new Exception();
@@ -1864,44 +1864,44 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
             }
         }
         @Override
-        public void passivateObject(K key, PooledObject<String> obj) throws Exception {
+        public void passivateObject(final K key, final PooledObject<String> obj) throws Exception {
             if (exceptionOnPassivate) {
                 throw new Exception();
             }
         }
 
-        public void setMaxTotalPerKey(int maxTotalPerKey) {
+        public void setMaxTotalPerKey(final int maxTotalPerKey) {
             this.maxTotalPerKey = maxTotalPerKey;
         }
-        public void setDestroyLatency(long destroyLatency) {
+        public void setDestroyLatency(final long destroyLatency) {
             this.destroyLatency = destroyLatency;
         }
-        public void setMakeLatency(long makeLatency) {
+        public void setMakeLatency(final long makeLatency) {
             this.makeLatency = makeLatency;
         }
-        public void setValidateLatency(long validateLatency) {
+        public void setValidateLatency(final long validateLatency) {
             this.validateLatency = validateLatency;
         }
-        public void setValidationEnabled(boolean b) {
+        public void setValidationEnabled(final boolean b) {
             enableValidation = b;
         }
-        void setEvenValid(boolean valid) {
+        void setEvenValid(final boolean valid) {
             evenValid = valid;
         }
-        void setValid(boolean valid) {
+        void setValid(final boolean valid) {
             evenValid = valid;
             oddValid = valid;
         }
 
-        public void setThrowExceptionOnActivate(boolean b) {
+        public void setThrowExceptionOnActivate(final boolean b) {
             exceptionOnActivate = b;
         }
 
-        public void setThrowExceptionOnDestroy(boolean b) {
+        public void setThrowExceptionOnDestroy(final boolean b) {
             exceptionOnDestroy = b;
         }
 
-        public void setThrowExceptionOnPassivate(boolean b) {
+        public void setThrowExceptionOnPassivate(final boolean b) {
             exceptionOnPassivate = b;
         }
 
@@ -1922,7 +1922,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         boolean exceptionOnDestroy = false;
         boolean exceptionOnCreate = false;
 
-        private void doWait(long latency) {
+        private void doWait(final long latency) {
             try {
                 Thread.sleep(latency);
             } catch (final InterruptedException ex) {
@@ -1941,14 +1941,14 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         return false;
     }
 
-    private String getExceptionTrace(Throwable t){
+    private String getExceptionTrace(final Throwable t){
         final StringWriter sw = new StringWriter();
         t.printStackTrace(new PrintWriter(sw));
         return sw.toString();
     }
 
-    private String formatSettings(String title, String s, int i, String s0, boolean b0, String s1, int i1, String s2, int i2, String s3, int i3,
-            String s4, int i4, String s5, int i5, String s6, int i6, int zeroLength, int oneLength, int twoLength){
+    private String formatSettings(final String title, final String s, final int i, final String s0, final boolean b0, final String s1, final int i1, final String s2, final int i2, final String s3, final int i3,
+            final String s4, final int i4, final String s5, final int i5, final String s6, final int i6, final int zeroLength, final int oneLength, final int twoLength){
         final StringBuilder sb = new StringBuilder(80);
         sb.append(title).append(' ');
         sb.append(s).append('=').append(i).append(' ');
@@ -2047,7 +2047,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
 
     private static class DaemonThreadFactory implements ThreadFactory {
         @Override
-        public Thread newThread(Runnable r) {
+        public Thread newThread(final Runnable r) {
             final Thread t = new Thread(r);
             t.setDaemon(true);
             return t;
@@ -2249,11 +2249,11 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
     private static class DummyFactory
             extends BaseKeyedPooledObjectFactory<Object,Object> {
         @Override
-        public Object create(Object key) throws Exception {
+        public Object create(final Object key) throws Exception {
             return null;
         }
         @Override
-        public PooledObject<Object> wrap(Object value) {
+        public PooledObject<Object> wrap(final Object value) {
             return new DefaultPooledObject<Object>(value);
         }
     }
@@ -2266,11 +2266,11 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
     private static final class HashSetFactory 
             extends BaseKeyedPooledObjectFactory<String, HashSet<String>> {
         @Override
-        public HashSet<String> create(String key) throws Exception {
+        public HashSet<String> create(final String key) throws Exception {
             return new HashSet<String>();
         }
         @Override
-        public PooledObject<HashSet<String>> wrap(HashSet<String> value) {
+        public PooledObject<HashSet<String>> wrap(final HashSet<String> value) {
             return new DefaultPooledObject<HashSet<String>>(value);
         }
     }
@@ -2280,7 +2280,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         ConcurrentHashMap<Object,AtomicInteger> map =
                 new ConcurrentHashMap<Object,AtomicInteger>();
         @Override
-        public Object create(Object key) throws Exception {
+        public Object create(final Object key) throws Exception {
             int counter = 0;
             final AtomicInteger Counter = map.get(key);
             if(null != Counter) {
@@ -2292,7 +2292,7 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
             return String.valueOf(key) + String.valueOf(counter);
         }
         @Override
-        public PooledObject<Object> wrap(Object value) {
+        public PooledObject<Object> wrap(final Object value) {
             return new DefaultPooledObject<Object>(value);
         }
     }
@@ -2301,13 +2301,13 @@ public class TestGenericKeyedObjectPool extends TestKeyedObjectPool {
         extends BaseKeyedPooledObjectFactory<Integer, Object> {
 
         @Override
-        public Object create(Integer key)
+        public Object create(final Integer key)
             throws Exception {
             return new Object();
         }
 
         @Override
-        public PooledObject<Object> wrap(Object value) {
+        public PooledObject<Object> wrap(final Object value) {
             return new DefaultPooledObject<Object>(value);
         }
     }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
index 0ede9b0..92fee38 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
@@ -60,7 +60,7 @@ import org.junit.Test;
 public class TestGenericObjectPool extends TestBaseObjectPool {
 
     @Override
-    protected ObjectPool<String> makeEmptyPool(int mincap) {
+    protected ObjectPool<String> makeEmptyPool(final int mincap) {
        final GenericObjectPool<String> mtPool =
                new GenericObjectPool<String>(new SimpleFactory());
        mtPool.setMaxTotal(mincap);
@@ -75,7 +75,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     }
 
     @Override
-    protected Object getNthObject(int n) {
+    protected Object getNthObject(final int n) {
         return String.valueOf(n);
     }
 
@@ -313,7 +313,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         checkEvict(false);
     }
 
-    private void checkEvict(boolean lifo) throws Exception {
+    private void checkEvict(final boolean lifo) throws Exception {
         // yea this is hairy but it tests all the code paths in GOP.evict()
         pool.setSoftMinEvictableIdleTimeMillis(10);
         pool.setMinIdle(2);
@@ -353,14 +353,14 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         checkEvictionOrder(true);
     }
 
-    private void checkEvictionOrder(boolean lifo) throws Exception {
+    private void checkEvictionOrder(final boolean lifo) throws Exception {
         checkEvictionOrderPart1(lifo);
         tearDown();
         setUp();
         checkEvictionOrderPart2(lifo);
     }
 
-    private void checkEvictionOrderPart1(boolean lifo) throws Exception {
+    private void checkEvictionOrderPart1(final boolean lifo) throws Exception {
         pool.setNumTestsPerEvictionRun(2);
         pool.setMinEvictableIdleTimeMillis(100);
         pool.setLifo(lifo);
@@ -377,7 +377,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         assertEquals("Wrong instance returned", lifo ? "4" : "2" , obj);
     }
 
-    private void checkEvictionOrderPart2(boolean lifo) throws Exception {
+    private void checkEvictionOrderPart2(final boolean lifo) throws Exception {
         // Two eviction runs in sequence
         pool.setNumTestsPerEvictionRun(2);
         pool.setMinEvictableIdleTimeMillis(100);
@@ -404,7 +404,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         checkEvictorVisiting(false);
     }
 
-    private void checkEvictorVisiting(boolean lifo) throws Exception {
+    private void checkEvictorVisiting(final boolean lifo) throws Exception {
         VisitTrackerFactory<Object> trackerFactory = new VisitTrackerFactory<Object>();
         GenericObjectPool<VisitTracker<Object>> trackerPool =
                 new GenericObjectPool<VisitTracker<Object>>(trackerFactory);
@@ -1036,8 +1036,8 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         private final AtomicInteger callCount = new AtomicInteger(0);
 
         @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 (callCount.incrementAndGet() > 1500) {
                 return true;
             }
@@ -1113,7 +1113,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
                 return new TimeTest();
             }
             @Override
-            public PooledObject<TimeTest> wrap(TimeTest value) {
+            public PooledObject<TimeTest> wrap(final TimeTest value) {
                 return new DefaultPooledObject<TimeTest>(value);
             }
             public long getCreateTime() {
@@ -1253,7 +1253,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         private final String obj;
         private final ObjectPool<String> pool;
         private boolean done = false;
-        public InvalidateThread(ObjectPool<String> pool, String obj) {
+        public InvalidateThread(final ObjectPool<String> pool, final String obj) {
             this.obj = obj;
             this.pool = pool;
         }
@@ -1363,7 +1363,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     @SuppressWarnings({
         "rawtypes", "unchecked"
     })
-    private void runTestThreads(int numThreads, int iterations, int delay, GenericObjectPool testPool) {
+    private void runTestThreads(final int numThreads, final int iterations, final int delay, final GenericObjectPool testPool) {
         final TestThread[] threads = new TestThread[numThreads];
         for(int i=0;i<numThreads;i++) {
             threads[i] = new TestThread<String>(testPool,iterations,delay);
@@ -1495,7 +1495,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         private final boolean borrow;
         public String obj;
 
-        public ConcurrentBorrowAndEvictThread(boolean borrow) {
+        public ConcurrentBorrowAndEvictThread(final boolean borrow) {
             this.borrow = borrow;
         }
 
@@ -1538,30 +1538,30 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         private volatile boolean _failed = false;
         private volatile Throwable _error;
 
-        public TestThread(ObjectPool<T> pool) {
+        public TestThread(final ObjectPool<T> pool) {
             this(pool, 100, 50, true, null);
         }
 
-        public TestThread(ObjectPool<T> pool, int iter) {
+        public TestThread(final ObjectPool<T> pool, final int iter) {
             this(pool, iter, 50, true, null);
         }
 
-        public TestThread(ObjectPool<T> pool, int iter, int delay) {
+        public TestThread(final ObjectPool<T> pool, final int iter, final int delay) {
             this(pool, iter, delay, true, null);
         }
 
-        public TestThread(ObjectPool<T> pool, int iter, int delay,
-                boolean randomDelay) {
+        public TestThread(final ObjectPool<T> pool, final int iter, final int delay,
+                final boolean randomDelay) {
             this(pool, iter, delay, randomDelay, null);
         }
 
-        public TestThread(ObjectPool<T> pool, int iter, int delay,
-                boolean randomDelay, Object obj) {
+        public TestThread(final ObjectPool<T> pool, final int iter, final int delay,
+                final boolean randomDelay, final Object obj) {
             this(pool, iter, delay, delay, randomDelay, obj);
         }
 
-        public TestThread(ObjectPool<T> pool, int iter, int startDelay,
-            int holdTime, boolean randomDelay, Object obj) {
+        public TestThread(final ObjectPool<T> pool, final int iter, final int startDelay,
+            final int holdTime, final boolean randomDelay, final Object obj) {
         _pool = pool;
         _iter = iter;
         _startDelay = startDelay;
@@ -1678,7 +1678,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
 
     private SimpleFactory factory = null;
 
-    private void assertConfiguration(GenericObjectPoolConfig expected, GenericObjectPool<?> actual) throws Exception {
+    private void assertConfiguration(final GenericObjectPoolConfig expected, final GenericObjectPool<?> actual) throws Exception {
         assertEquals("testOnCreate",Boolean.valueOf(expected.getTestOnCreate()),
                 Boolean.valueOf(actual.getTestOnCreate()));
         assertEquals("testOnBorrow",Boolean.valueOf(expected.getTestOnBorrow()),
@@ -1702,36 +1702,36 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         public SimpleFactory() {
             this(true);
         }
-        public SimpleFactory(boolean valid) {
+        public SimpleFactory(final boolean valid) {
             this(valid,valid);
         }
-        public SimpleFactory(boolean evalid, boolean ovalid) {
+        public SimpleFactory(final boolean evalid, final boolean ovalid) {
             evenValid = evalid;
             oddValid = ovalid;
         }
-        public synchronized void setValid(boolean valid) {
+        public synchronized void setValid(final boolean valid) {
             setEvenValid(valid);
             setOddValid(valid);
         }
-        public synchronized void setEvenValid(boolean valid) {
+        public synchronized void setEvenValid(final boolean valid) {
             evenValid = valid;
         }
-        public synchronized void setOddValid(boolean valid) {
+        public synchronized void setOddValid(final boolean valid) {
             oddValid = valid;
         }
-        public synchronized void setThrowExceptionOnPassivate(boolean bool) {
+        public synchronized void setThrowExceptionOnPassivate(final boolean bool) {
             exceptionOnPassivate = bool;
         }
-        public synchronized void setMaxTotal(int maxTotal) {
+        public synchronized void setMaxTotal(final int maxTotal) {
             this.maxTotal = maxTotal;
         }
-        public synchronized void setDestroyLatency(long destroyLatency) {
+        public synchronized void setDestroyLatency(final long destroyLatency) {
             this.destroyLatency = destroyLatency;
         }
-        public synchronized void setMakeLatency(long makeLatency) {
+        public synchronized void setMakeLatency(final long makeLatency) {
             this.makeLatency = makeLatency;
         }
-        public synchronized void setValidateLatency(long validateLatency) {
+        public synchronized void setValidateLatency(final long validateLatency) {
             this.validateLatency = validateLatency;
         }
         @Override
@@ -1755,7 +1755,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             return new DefaultPooledObject<String>(String.valueOf(counter));
         }
         @Override
-        public void destroyObject(PooledObject<String> obj) throws Exception {
+        public void destroyObject(final PooledObject<String> obj) throws Exception {
             final long waitLatency;
             final boolean hurl;
             synchronized(this) {
@@ -1773,7 +1773,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             }
         }
         @Override
-        public boolean validateObject(PooledObject<String> obj) {
+        public boolean validateObject(final PooledObject<String> obj) {
             final boolean validate;
             final boolean evenTest;
             final boolean oddTest;
@@ -1795,7 +1795,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             return true;
         }
         @Override
-        public void activateObject(PooledObject<String> obj) throws Exception {
+        public void activateObject(final PooledObject<String> obj) throws Exception {
             final boolean hurl;
             final boolean evenTest;
             final boolean oddTest;
@@ -1813,7 +1813,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             }
         }
         @Override
-        public void passivateObject(PooledObject<String> obj) throws Exception {
+        public void passivateObject(final PooledObject<String> obj) throws Exception {
             final boolean hurl;
             synchronized(this) {
                 hurl = exceptionOnPassivate;
@@ -1841,11 +1841,11 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             return exceptionOnActivate;
         }
 
-        public synchronized void setThrowExceptionOnActivate(boolean b) {
+        public synchronized void setThrowExceptionOnActivate(final boolean b) {
             exceptionOnActivate = b;
         }
 
-        public synchronized void setThrowExceptionOnDestroy(boolean b) {
+        public synchronized void setThrowExceptionOnDestroy(final boolean b) {
             exceptionOnDestroy = b;
         }
 
@@ -1853,7 +1853,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             return enableValidation;
         }
 
-        public synchronized void setValidationEnabled(boolean b) {
+        public synchronized void setValidationEnabled(final boolean b) {
             enableValidation = b;
         }
 
@@ -1861,7 +1861,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             return makeCounter;
         }
 
-        private void doWait(long latency) {
+        private void doWait(final long latency) {
             try {
                 Thread.sleep(latency);
             } catch (final InterruptedException ex) {
@@ -1888,12 +1888,12 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     }
 
     @Override
-    public PooledObject<AtomicInteger> wrap(AtomicInteger integer) {
+    public PooledObject<AtomicInteger> wrap(final AtomicInteger integer) {
         return new DefaultPooledObject<AtomicInteger>(integer);
     }
 
     @Override
-    public void activateObject(PooledObject<AtomicInteger> p) {
+    public void activateObject(final PooledObject<AtomicInteger> p) {
         p.getObject().incrementAndGet();
         try {
             Thread.sleep(activateLatency);
@@ -1901,7 +1901,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     }
 
     @Override
-    public void passivateObject(PooledObject<AtomicInteger> p) {
+    public void passivateObject(final PooledObject<AtomicInteger> p) {
         p.getObject().decrementAndGet();
         try {
             Thread.sleep(passivateLatency);
@@ -1909,7 +1909,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     }
 
     @Override
-    public boolean validateObject(PooledObject<AtomicInteger> instance) {
+    public boolean validateObject(final PooledObject<AtomicInteger> instance) {
         try {
             Thread.sleep(validateLatency);
         } catch (final InterruptedException ex) {}
@@ -1917,7 +1917,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     }
 
     @Override
-    public void destroyObject(PooledObject<AtomicInteger> p) {
+    public void destroyObject(final PooledObject<AtomicInteger> p) {
         try {
             Thread.sleep(destroyLatency);
         } catch (final InterruptedException ex) {}
@@ -1927,7 +1927,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     /**
      * @param activateLatency the activateLatency to set
      */
-    public void setActivateLatency(long activateLatency) {
+    public void setActivateLatency(final long activateLatency) {
         this.activateLatency = activateLatency;
     }
 
@@ -1935,7 +1935,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     /**
      * @param passivateLatency the passivateLatency to set
      */
-    public void setPassivateLatency(long passivateLatency) {
+    public void setPassivateLatency(final long passivateLatency) {
         this.passivateLatency = passivateLatency;
     }
 
@@ -1943,7 +1943,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     /**
      * @param createLatency the createLatency to set
      */
-    public void setCreateLatency(long createLatency) {
+    public void setCreateLatency(final long createLatency) {
         this.createLatency = createLatency;
     }
 
@@ -1951,7 +1951,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     /**
      * @param destroyLatency the destroyLatency to set
      */
-    public void setDestroyLatency(long destroyLatency) {
+    public void setDestroyLatency(final long destroyLatency) {
         this.destroyLatency = destroyLatency;
     }
 
@@ -1959,7 +1959,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
     /**
      * @param validateLatency the validateLatency to set
      */
-    public void setValidateLatency(long validateLatency) {
+    public void setValidateLatency(final long validateLatency) {
         this.validateLatency = validateLatency;
     }
 }
@@ -2096,7 +2096,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         private long ended;
         private String objectId;
 
-        public WaitingTestThread(GenericObjectPool<String> pool, long pause) {
+        public WaitingTestThread(final GenericObjectPool<String> pool, final long pause) {
             _pool = pool;
             _pause = pause;
             _thrown = null;
@@ -2301,7 +2301,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
          */
         final SwallowedExceptionListener listener = new SwallowedExceptionListener() {
             @Override
-            public void onSwallowException(Exception e) {
+            public void onSwallowException(final Exception e) {
                 if (swallowedExceptions.size() == 2) {
                     throw new OutOfMemoryError();
                 }
@@ -2482,7 +2482,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             return null;
         }
         @Override
-        public PooledObject<Object> wrap(Object value) {
+        public PooledObject<Object> wrap(final Object value) {
             return new DefaultPooledObject<Object>(value);
         }
     }
@@ -2499,7 +2499,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             return new HashSet<String>();
         }
         @Override
-        public PooledObject<HashSet<String>> wrap(HashSet<String> value) {
+        public PooledObject<HashSet<String>> wrap(final HashSet<String> value) {
             return new DefaultPooledObject<HashSet<String>>(value);
         }
     }
@@ -2512,12 +2512,12 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             return new Object();
         }
         @Override
-        public PooledObject<Object> wrap(Object value) {
+        public PooledObject<Object> wrap(final Object value) {
             return new DefaultPooledObject<Object>(value);
         }
 
         @Override
-        public boolean validateObject(PooledObject<Object> obj) {
+        public boolean validateObject(final PooledObject<Object> obj) {
             try {
                 Thread.sleep(1000);
             } catch (final InterruptedException e) {
@@ -2531,7 +2531,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
 
         private final GenericObjectPool<T> pool;
 
-        public EvictionThread(GenericObjectPool<T> pool) {
+        public EvictionThread(final GenericObjectPool<T> pool) {
             this.pool = pool;
         }
 

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPoolClassLoaders.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPoolClassLoaders.java b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPoolClassLoaders.java
index 7bfded0..28bc43f 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPoolClassLoaders.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPoolClassLoaders.java
@@ -88,7 +88,7 @@ public class TestGenericObjectPoolClassLoaders {
             BasePooledObjectFactory<URL> {
         private final int n;
 
-        CustomClassLoaderObjectFactory(int n) {
+        CustomClassLoaderObjectFactory(final int n) {
             this.n = n;
         }
 
@@ -103,7 +103,7 @@ public class TestGenericObjectPoolClassLoaders {
         }
 
         @Override
-        public PooledObject<URL> wrap(URL value) {
+        public PooledObject<URL> wrap(final URL value) {
             return new DefaultPooledObject<URL>(value);
         }
     }
@@ -111,13 +111,13 @@ public class TestGenericObjectPoolClassLoaders {
     private static class CustomClassLoader extends URLClassLoader {
         private final int n;
 
-        CustomClassLoader(int n) {
+        CustomClassLoader(final int n) {
             super(new URL[] { BASE_URL });
             this.n = n;
         }
 
         @Override
-        public URL findResource(String name) {
+        public URL findResource(final String name) {
             if (!name.endsWith(String.valueOf(n))) {
                 return null;
             }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/test/java/org/apache/commons/pool2/impl/TestPoolImplUtils.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestPoolImplUtils.java b/src/test/java/org/apache/commons/pool2/impl/TestPoolImplUtils.java
index 921f183..6e0b20c 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestPoolImplUtils.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestPoolImplUtils.java
@@ -42,7 +42,7 @@ public class TestPoolImplUtils {
             return null;
         }
         @Override
-        public PooledObject<String> wrap(String obj) {
+        public PooledObject<String> wrap(final String obj) {
             return null;
         }
     }
@@ -69,7 +69,7 @@ public class TestPoolImplUtils {
             return null;
         }
         @Override
-        public PooledObject<Long> wrap(Long obj) {
+        public PooledObject<Long> wrap(final Long obj) {
             return null;
         }
     }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/test/java/org/apache/commons/pool2/impl/TestSoftRefOutOfMemory.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestSoftRefOutOfMemory.java b/src/test/java/org/apache/commons/pool2/impl/TestSoftRefOutOfMemory.java
index 056060e..41fa415 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestSoftRefOutOfMemory.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestSoftRefOutOfMemory.java
@@ -216,7 +216,7 @@ public class TestSoftRefOutOfMemory {
             return new String(String.valueOf(counter));
         }
         @Override
-        public PooledObject<String> wrap(String value) {
+        public PooledObject<String> wrap(final String value) {
             return new DefaultPooledObject<String>(value);
         }
     }
@@ -225,7 +225,7 @@ public class TestSoftRefOutOfMemory {
         private final String buffer;
         private int counter = 0;
 
-        public LargePoolableObjectFactory(int size) {
+        public LargePoolableObjectFactory(final int size) {
             final char[] data = new char[size];
             Arrays.fill(data, '.');
             buffer = new String(data);
@@ -238,7 +238,7 @@ public class TestSoftRefOutOfMemory {
         }
 
         @Override
-        public PooledObject<String> wrap(String value) {
+        public PooledObject<String> wrap(final String value) {
             return new DefaultPooledObject<String>(value);
         }
     }
@@ -247,7 +247,7 @@ public class TestSoftRefOutOfMemory {
 
         private final OomeTrigger trigger;
 
-        public OomeFactory(OomeTrigger trigger) {
+        public OomeFactory(final OomeTrigger trigger) {
             this.trigger = trigger;
         }
 
@@ -265,12 +265,12 @@ public class TestSoftRefOutOfMemory {
         }
 
         @Override
-        public PooledObject<String> wrap(String value) {
+        public PooledObject<String> wrap(final String value) {
             return new DefaultPooledObject<String>(value);
         }
 
         @Override
-        public boolean validateObject(PooledObject<String> p) {
+        public boolean validateObject(final PooledObject<String> p) {
             if (trigger.equals(OomeTrigger.VALIDATE)) {
                 throw new OutOfMemoryError();
             }
@@ -281,7 +281,7 @@ public class TestSoftRefOutOfMemory {
         }
 
         @Override
-        public void destroyObject(PooledObject<String> p) throws Exception {
+        public void destroyObject(final PooledObject<String> p) throws Exception {
             if (trigger.equals(OomeTrigger.DESTROY)) {
                 throw new OutOfMemoryError();
             }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/test/java/org/apache/commons/pool2/impl/TestSoftReferenceObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestSoftReferenceObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestSoftReferenceObjectPool.java
index c9f0b40..aa4390c 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestSoftReferenceObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestSoftReferenceObjectPool.java
@@ -28,7 +28,7 @@ import org.apache.commons.pool2.TestBaseObjectPool;
 public class TestSoftReferenceObjectPool extends TestBaseObjectPool {
 
     @Override
-    protected ObjectPool<String> makeEmptyPool(int cap) {
+    protected ObjectPool<String> makeEmptyPool(final int cap) {
         return new SoftReferenceObjectPool<String>(new SimpleFactory());
     }
 
@@ -38,7 +38,7 @@ public class TestSoftReferenceObjectPool extends TestBaseObjectPool {
     }
 
     @Override
-    protected Object getNthObject(int n) {
+    protected Object getNthObject(final int n) {
         return String.valueOf(n);
     }
 
@@ -60,7 +60,7 @@ public class TestSoftReferenceObjectPool extends TestBaseObjectPool {
             return String.valueOf(counter++);
         }
         @Override
-        public PooledObject<String> wrap(String value) {
+        public PooledObject<String> wrap(final String value) {
             return new DefaultPooledObject<String>(value);
         }
     }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/test/java/org/apache/commons/pool2/performance/PerformanceTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/performance/PerformanceTest.java b/src/test/java/org/apache/commons/pool2/performance/PerformanceTest.java
index 5324f88..50479e9 100644
--- a/src/test/java/org/apache/commons/pool2/performance/PerformanceTest.java
+++ b/src/test/java/org/apache/commons/pool2/performance/PerformanceTest.java
@@ -38,7 +38,7 @@ public class PerformanceTest {
 
     private GenericObjectPool<Integer> pool;
 
-    public void setLogLevel(int i) {
+    public void setLogLevel(final int i) {
         logLevel = i;
     }
 
@@ -109,7 +109,7 @@ public class PerformanceTest {
        }
     }
 
-    private void run(int iterations, int nrThreads, int maxTotal, int maxIdle) {
+    private void run(final int iterations, final int nrThreads, final int maxTotal, final int maxIdle) {
         this.nrIterations = iterations;
 
         final SleepingObjectFactory factory = new SleepingObjectFactory();
@@ -183,7 +183,7 @@ public class PerformanceTest {
         threadPool.shutdown();
     }
 
-    public static void main(String[] args) {
+    public static void main(final String[] args) {
         final PerformanceTest test = new PerformanceTest();
         test.setLogLevel(0);
         System.out.println("Increase threads");

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/test/java/org/apache/commons/pool2/performance/SleepingObjectFactory.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/performance/SleepingObjectFactory.java b/src/test/java/org/apache/commons/pool2/performance/SleepingObjectFactory.java
index 5b46712..2205505 100644
--- a/src/test/java/org/apache/commons/pool2/performance/SleepingObjectFactory.java
+++ b/src/test/java/org/apache/commons/pool2/performance/SleepingObjectFactory.java
@@ -42,38 +42,38 @@ public class SleepingObjectFactory implements PooledObjectFactory<Integer> {
     }
 
     @Override
-    public void destroyObject(PooledObject<Integer> obj) throws Exception {
+    public void destroyObject(final PooledObject<Integer> obj) throws Exception {
         debug("destroyObject", obj);
         sleep(250);
     }
 
     @Override
-    public boolean validateObject(PooledObject<Integer> obj) {
+    public boolean validateObject(final PooledObject<Integer> obj) {
         debug("validateObject", obj);
         sleep(30);
         return true;
     }
 
     @Override
-    public void activateObject(PooledObject<Integer> obj) throws Exception {
+    public void activateObject(final PooledObject<Integer> obj) throws Exception {
         debug("activateObject", obj);
         sleep(10);
     }
 
     @Override
-    public void passivateObject(PooledObject<Integer> obj) throws Exception {
+    public void passivateObject(final PooledObject<Integer> obj) throws Exception {
         debug("passivateObject", obj);
         sleep(10);
     }
 
-    private void debug(String method, Object obj) {
+    private void debug(final String method, final Object obj) {
         if (debug) {
             final String thread = "thread" + Thread.currentThread().getName();
             System.out.println(thread + ": " + method + " " + obj);
         }
     }
 
-    private void sleep(long millis) {
+    private void sleep(final long millis) {
         try {
             Thread.sleep(millis);
         }
@@ -85,7 +85,7 @@ public class SleepingObjectFactory implements PooledObjectFactory<Integer> {
         return debug;
     }
 
-    public void setDebug(boolean b) {
+    public void setDebug(final boolean b) {
         debug = b;
     }
 }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedKeyedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedKeyedObjectPool.java b/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedKeyedObjectPool.java
index a58db99..3f7a3cc 100644
--- a/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedKeyedObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedKeyedObjectPool.java
@@ -129,11 +129,11 @@ public abstract class BaseTestProxiedKeyedObjectPool {
             BaseKeyedPooledObjectFactory<String,TestObject> {
 
         @Override
-        public TestObject create(String key) throws Exception {
+        public TestObject create(final String key) throws Exception {
             return new TestObjectImpl();
         }
         @Override
-        public PooledObject<TestObject> wrap(TestObject value) {
+        public PooledObject<TestObject> wrap(final TestObject value) {
             return new DefaultPooledObject<TestObject>(value);
         }
     }
@@ -155,7 +155,7 @@ public abstract class BaseTestProxiedKeyedObjectPool {
         }
 
         @Override
-        public void setData(String data) {
+        public void setData(final String data) {
             this.data = data;
         }
     }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/844cbd26/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedObjectPool.java b/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedObjectPool.java
index c3014ca..c684702 100644
--- a/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedObjectPool.java
@@ -168,7 +168,7 @@ public abstract class BaseTestProxiedObjectPool {
             return new TestObjectImpl();
         }
         @Override
-        public PooledObject<TestObject> wrap(TestObject value) {
+        public PooledObject<TestObject> wrap(final TestObject value) {
             return new DefaultPooledObject<TestObject>(value);
         }
     }
@@ -190,7 +190,7 @@ public abstract class BaseTestProxiedObjectPool {
         }
 
         @Override
-        public void setData(String data) {
+        public void setData(final String data) {
             this.data = data;
         }
     }


[25/50] [abbrv] commons-pool git commit: POOL-303 Ensure that threads do not block indefinitely if more than maxTotal threads try to borrow an object at the same time and the factory fails to create any objects.

Posted by ma...@apache.org.
POOL-303
 Ensure that threads do not block indefinitely if more than maxTotal threads try to borrow an object at the same time and the factory fails to create any objects. 

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1735161 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/fa819eb4
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/fa819eb4
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/fa819eb4

Branch: refs/heads/master
Commit: fa819eb4be47b7078ef973cbc37df38e7df6eb1f
Parents: a898de8
Author: Mark Thomas <ma...@apache.org>
Authored: Tue Mar 15 20:17:51 2016 +0000
Committer: Mark Thomas <ma...@apache.org>
Committed: Tue Mar 15 20:17:51 2016 +0000

----------------------------------------------------------------------
 src/changes/changes.xml                         |  5 ++
 .../pool2/impl/GenericKeyedObjectPool.java      | 18 +++-
 .../commons/pool2/impl/GenericObjectPool.java   |  6 ++
 .../pool2/impl/TestGenericObjectPool.java       | 93 +++++++++++++++++---
 4 files changed, 107 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/fa819eb4/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index f515689..a1293f7 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -51,6 +51,11 @@ The <action> type attribute can be add,update,fix,remove.
       Ensure BaseGenericObjectPool.IdentityWrapper#equals() follows the expected
       contract for equals(). 
     </action>
+    <action dev="markt" issue="POOL-303" type="fix">
+      Ensure that threads do not block indefinitely if more than maxTotal
+      threads try to borrow an object at the same time and the factory fails to
+      create any objects. 
+    </action>
   </release>
   <release version="2.4.2" date="2015-08-01" description=
  "This is a patch release, including bug fixes only.">

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/fa819eb4/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
index eb335d6..697ae05 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
@@ -476,7 +476,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
             throw new IllegalStateException(
                     "Returned object not currently part of this pool");
         }
-        
+
         synchronized(p) {
             final PooledObjectState state = p.getState();
             if (state != PooledObjectState.ALLOCATED) {
@@ -907,7 +907,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
                         if (objectDeque == null) {
                             continue;
                         }
-                        
+
                         final Deque<PooledObject<T>> idleObjects = objectDeque.getIdleObjects();
                         evictionIterator = new EvictionIterator(idleObjects);
                         if (evictionIterator.hasNext()) {
@@ -1004,6 +1004,8 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         final int maxTotalPerKeySave = getMaxTotalPerKey(); // Per key
         final int maxTotal = getMaxTotal();   // All keys
 
+        final ObjectDeque<T> objectDeque = poolMap.get(key);
+
         // Check against the overall limit
         boolean loop = true;
 
@@ -1012,6 +1014,9 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
             if (maxTotal > -1 && newNumTotal > maxTotal) {
                 numTotal.decrementAndGet();
                 if (getNumIdle() == 0) {
+                    // POOL-303. There may be threads waiting on an object
+                    // return that isn't going to happen. Unblock them.
+                    objectDeque.idleObjects.interuptTakeWaiters();
                     return null;
                 }
                 clearOldest();
@@ -1020,7 +1025,6 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
             }
         }
 
-        final ObjectDeque<T> objectDeque = poolMap.get(key);
         final long newCreateCount = objectDeque.getCreateCount().incrementAndGet();
 
         // Check against the per key limit
@@ -1028,6 +1032,9 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
                 newCreateCount > Integer.MAX_VALUE) {
             numTotal.decrementAndGet();
             objectDeque.getCreateCount().decrementAndGet();
+            // POOL-303. There may be threads waiting on an object return that
+            // isn't going to happen. Unblock them.
+            objectDeque.idleObjects.interuptTakeWaiters();
             return null;
         }
 
@@ -1038,6 +1045,9 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
         } catch (final Exception e) {
             numTotal.decrementAndGet();
             objectDeque.getCreateCount().decrementAndGet();
+            // POOL-303. There may be threads waiting on an object return that
+            // isn't going to happen. Unblock them.
+            objectDeque.idleObjects.interuptTakeWaiters();
             throw e;
         }
 
@@ -1433,7 +1443,7 @@ public class GenericKeyedObjectPool<K,T> extends BaseGenericObjectPool<T>
 
         /*
          * The map is keyed on pooled instances, wrapped to ensure that
-         * they work properly as keys.  
+         * they work properly as keys.
          */
         private final Map<IdentityWrapper<S>, PooledObject<S>> allObjects =
                 new ConcurrentHashMap<IdentityWrapper<S>, PooledObject<S>>();

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/fa819eb4/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
index 6c8dc71..b5ef9bd 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
@@ -856,6 +856,9 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
         if (localMaxTotal > -1 && newCreateCount > localMaxTotal ||
                 newCreateCount > Integer.MAX_VALUE) {
             createCount.decrementAndGet();
+            // POOL-303. There may be threads waiting on an object return that
+            // isn't going to happen. Unblock them.
+            idleObjects.interuptTakeWaiters();
             return null;
         }
 
@@ -864,6 +867,9 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
             p = factory.makeObject();
         } catch (final Exception e) {
             createCount.decrementAndGet();
+            // POOL-303. There may be threads waiting on an object return that
+            // isn't going to happen. Unblock them.
+            idleObjects.interuptTakeWaiters();
             throw e;
         }
 

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/fa819eb4/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
index a694106..f951691 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
@@ -33,6 +33,7 @@ import java.util.Random;
 import java.util.Set;
 import java.util.Timer;
 import java.util.TimerTask;
+import java.util.concurrent.Semaphore;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import javax.management.MBeanServer;
@@ -2397,11 +2398,11 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
 
         Assert.assertEquals(1, factory.validateCounter);
     }
-    
+
     /**
      * Verifies that when a factory's makeObject produces instances that are not
-     * discernible by equals, the pool can handle them.  
-     * 
+     * discernible by equals, the pool can handle them.
+     *
      * JIRA: POOL-283
      */
     @Test
@@ -2415,11 +2416,11 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         pool.returnObject(s2);
         pool.close();
     }
-    
+
     /**
      * Verifies that when a borrowed object is mutated in a way that does not
      * preserve equality and hashcode, the pool can recognized it on return.
-     * 
+     *
      * JIRA: POOL-284
      */
     @Test
@@ -2435,11 +2436,11 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         pool.returnObject(s2);
         pool.close();
     }
-    
+
     /**
      * Verifies that returning an object twice (without borrow in between) causes ISE
      * but does not re-validate or re-passivate the instance.
-     * 
+     *
      * JIRA: POOL-285
      */
     @Test
@@ -2460,7 +2461,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             Assert.assertEquals(1, waiter.getPassivationCount());
         }
     }
-    
+
     public void testPreparePool() throws Exception {
         pool.setMinIdle(1);
         pool.setMaxTotal(1);
@@ -2486,13 +2487,13 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             return new DefaultPooledObject<Object>(value);
         }
     }
-    
-    /** 
+
+    /**
      * Factory that creates HashSets.  Note that this means
      *  0) All instances are initially equal (not discernible by equals)
      *  1) Instances are mutable and mutation can cause change in identity / hashcode.
      */
-    private static final class HashSetFactory 
+    private static final class HashSetFactory
             extends BasePooledObjectFactory<HashSet<String>> {
         @Override
         public HashSet<String> create() throws Exception {
@@ -2544,4 +2545,74 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             }
         }
     }
+
+    @Test
+    public void testFailingFactoryDoesNotBlockThreads() throws Exception {
+
+        final CreateFailFactory factory = new CreateFailFactory();
+        final GenericObjectPool<String> createFailFactoryPool =
+                new GenericObjectPool<String>(factory);
+
+        createFailFactoryPool.setMaxTotal(1);
+
+        // Try and borrow the first object from the pool
+        final WaitingTestThread thread1 = new WaitingTestThread(createFailFactoryPool, 0);
+        thread1.start();
+
+        // Wait for thread to reach semaphore
+        while(!factory.hasQueuedThreads()) {
+            Thread.sleep(200);
+        }
+
+        // Try and borrow the second object from the pool
+        final WaitingTestThread thread2 = new WaitingTestThread(createFailFactoryPool, 0);
+        thread2.start();
+        // Pool will not call factory since maximum number of object creations
+        // are already queued.
+
+        // Thread 2 will wait on an object being returned to the pool
+        // Give thread 2 a chance to reach this state
+        Thread.sleep(1000);
+
+        // Release thread1
+        factory.release();
+        // Pre-release thread2
+        factory.release();
+
+        // Both threads should now complete.
+        boolean threadRunning = true;
+        int count = 0;
+        while (threadRunning && count < 15) {
+            threadRunning = thread1.isAlive();
+            threadRunning = thread2.isAlive();
+            Thread.sleep(200);
+            count++;
+        }
+        Assert.assertFalse(thread1.isAlive());
+        Assert.assertFalse(thread2.isAlive());
+    }
+
+    private static class CreateFailFactory extends BasePooledObjectFactory<String> {
+
+        private final Semaphore semaphore = new Semaphore(0);
+
+        @Override
+        public String create() throws Exception {
+            semaphore.acquire();
+            throw new Exception();
+        }
+
+        @Override
+        public PooledObject<String> wrap(String obj) {
+            return new DefaultPooledObject<String>(obj);
+        }
+
+        public void release() {
+            semaphore.release();
+        }
+
+        public boolean hasQueuedThreads() {
+            return semaphore.hasQueuedThreads();
+        }
+    }
 }


[46/50] [abbrv] commons-pool git commit: Add starter TravisCI configuration. Will pick up Travis profile from new parent module when released.

Posted by ma...@apache.org.
Add starter TravisCI configuration. Will pick up Travis profile from new parent module when released.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1770094 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/fe494538
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/fe494538
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/fe494538

Branch: refs/heads/master
Commit: fe4945387e2fbc9ba2a9ac4eb7c1fa1d50f40310
Parents: 505842e
Author: Gary D. Gregory <gg...@apache.org>
Authored: Thu Nov 17 00:02:16 2016 +0000
Committer: Gary D. Gregory <gg...@apache.org>
Committed: Thu Nov 17 00:02:16 2016 +0000

----------------------------------------------------------------------
 .travis.yml                                     | 24 ++++++
 .../java/org/apache/commons/pool2/PoolTest.java | 80 ++++++++++++++++++++
 2 files changed, 104 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/fe494538/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..fc2a03a
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,24 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+language: java
+sudo: false
+
+jdk:
+  - openjdk7
+  - oraclejdk8
+
+after_success:
+  - mvn clean cobertura:cobertura coveralls:report

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/fe494538/src/test/java/org/apache/commons/pool2/PoolTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/PoolTest.java b/src/test/java/org/apache/commons/pool2/PoolTest.java
new file mode 100644
index 0000000..e22e70b
--- /dev/null
+++ b/src/test/java/org/apache/commons/pool2/PoolTest.java
@@ -0,0 +1,80 @@
+package org.apache.commons.pool2;
+
+import static org.junit.Assert.assertFalse;
+
+import org.apache.commons.pool2.impl.DefaultPooledObject;
+import org.apache.commons.pool2.impl.GenericObjectPool;
+import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
+import org.junit.Ignore;
+import org.junit.Test;
+
+@Ignore
+public class PoolTest {
+    private static final CharSequence COMMONS_POOL_EVICTIONS_TIMER_THREAD_NAME = "commons-pool-EvictionTimer";
+    private static final long EVICTION_PERIOD_IN_MILLIS = 100;
+
+    private static class Foo {
+    }
+
+    private static class PooledFooFactory implements PooledObjectFactory<Foo> {
+        private static final long VALIDATION_WAIT_IN_MILLIS = 1000;
+
+        @Override
+        public PooledObject<Foo> makeObject() throws Exception {
+            return new DefaultPooledObject<Foo>(new Foo());
+        }
+
+        @Override
+        public void destroyObject(PooledObject<Foo> pooledObject) throws Exception {
+        }
+
+        @Override
+        public boolean validateObject(PooledObject<Foo> pooledObject) {
+            try {
+                Thread.sleep(VALIDATION_WAIT_IN_MILLIS);
+            } catch (final InterruptedException e) {
+                Thread.interrupted();
+            }
+            return false;
+        }
+
+        @Override
+        public void activateObject(PooledObject<Foo> pooledObject) throws Exception {
+        }
+
+        @Override
+        public void passivateObject(PooledObject<Foo> pooledObject) throws Exception {
+        }
+    }
+
+    @Test
+    public void testPool() throws Exception {
+        final GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
+        poolConfig.setTestWhileIdle(true /* testWhileIdle */);
+        final PooledFooFactory pooledFooFactory = new PooledFooFactory();
+        GenericObjectPool<Foo> pool = null;
+        try {
+            pool = new GenericObjectPool<Foo>(pooledFooFactory, poolConfig);
+            pool.setTimeBetweenEvictionRunsMillis(EVICTION_PERIOD_IN_MILLIS);
+            pool.addObject();
+            try {
+                Thread.sleep(EVICTION_PERIOD_IN_MILLIS);
+            } catch (final InterruptedException e) {
+                Thread.interrupted();
+            }
+        } finally {
+            if (pool != null) {
+                pool.close();
+            }
+        }
+        final Thread[] threads = new Thread[Thread.activeCount()];
+        Thread.enumerate(threads);
+        for (final Thread thread : threads) {
+            if (thread == null) {
+                continue;
+            }
+            final String name = thread.getName();
+            assertFalse(name, name.contains(COMMONS_POOL_EVICTIONS_TIMER_THREAD_NAME));
+        }
+    }
+}
\ No newline at end of file


[12/50] [abbrv] commons-pool git commit: Removed self from developers.

Posted by ma...@apache.org.
Removed self from developers.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1728845 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/4a7f18bc
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/4a7f18bc
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/4a7f18bc

Branch: refs/heads/master
Commit: 4a7f18bc2b7733bdbd65d570d3631a414291770a
Parents: 458f5e5
Author: Phil Steitz <ps...@apache.org>
Authored: Sat Feb 6 15:04:31 2016 +0000
Committer: Phil Steitz <ps...@apache.org>
Committed: Sat Feb 6 15:04:31 2016 +0000

----------------------------------------------------------------------
 pom.xml | 6 ------
 1 file changed, 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/4a7f18bc/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 72de719..10d9803 100644
--- a/pom.xml
+++ b/pom.xml
@@ -95,12 +95,6 @@
       <organization>The Apache Software Foundation</organization>
     </developer>
     <developer>
-      <name>Phil Steitz</name>
-      <id>psteitz</id>
-      <email></email>
-      <organization>The Apache Software Foundation</organization>
-    </developer>
-    <developer>
       <name>Simone Tripodi</name>
       <id>simonetripodi</id>
       <organization>The Apache Software Foundation</organization>


[35/50] [abbrv] commons-pool git commit: Standard Maven location for assemblies

Posted by ma...@apache.org.
Standard Maven location for assemblies

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1739829 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/a04dac67
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/a04dac67
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/a04dac67

Branch: refs/heads/master
Commit: a04dac67589279279c5308b99aca121ec0d61850
Parents: 7d8069f
Author: Sebastian Bazley <se...@apache.org>
Authored: Mon Apr 18 23:26:51 2016 +0000
Committer: Sebastian Bazley <se...@apache.org>
Committed: Mon Apr 18 23:26:51 2016 +0000

----------------------------------------------------------------------
 pom.xml                          |  6 +--
 src/assembly/bin.xml             | 44 +++++++++++++++++++++
 src/assembly/src-tar-gz.xml      | 74 +++++++++++++++++++++++++++++++++++
 src/assembly/src-zip.xml         | 73 ++++++++++++++++++++++++++++++++++
 src/main/assembly/bin.xml        | 44 ---------------------
 src/main/assembly/src-tar-gz.xml | 74 -----------------------------------
 src/main/assembly/src-zip.xml    | 73 ----------------------------------
 7 files changed, 194 insertions(+), 194 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/a04dac67/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 10d9803..7aca347 100644
--- a/pom.xml
+++ b/pom.xml
@@ -186,9 +186,9 @@
           <artifactId>maven-assembly-plugin</artifactId>
           <configuration>
             <descriptors>
-              <descriptor>src/main/assembly/bin.xml</descriptor>
-              <descriptor>src/main/assembly/src-tar-gz.xml</descriptor>
-              <descriptor>src/main/assembly/src-zip.xml</descriptor>
+              <descriptor>src/assembly/bin.xml</descriptor>
+              <descriptor>src/assembly/src-tar-gz.xml</descriptor>
+              <descriptor>src/assembly/src-zip.xml</descriptor>
             </descriptors>
             <tarLongFileMode>gnu</tarLongFileMode>
           </configuration>

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/a04dac67/src/assembly/bin.xml
----------------------------------------------------------------------
diff --git a/src/assembly/bin.xml b/src/assembly/bin.xml
new file mode 100644
index 0000000..5762291
--- /dev/null
+++ b/src/assembly/bin.xml
@@ -0,0 +1,44 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<assembly>
+    <id>bin</id>
+    <formats>
+        <format>tar.gz</format>
+        <format>zip</format>
+    </formats>
+    <includeSiteDirectory>false</includeSiteDirectory>
+    <fileSets>
+        <fileSet>
+            <includes>
+                <include>LICENSE.txt</include>
+                <include>NOTICE.txt</include>
+                <include>RELEASE-NOTES.txt</include>
+            </includes>
+        </fileSet>
+        <fileSet>
+            <directory>target</directory>
+            <outputDirectory></outputDirectory>
+            <includes>
+                <include>*.jar</include>
+            </includes>
+        </fileSet>
+        <fileSet>
+            <directory>target/site/apidocs</directory>
+            <outputDirectory>apidocs</outputDirectory>
+        </fileSet>
+    </fileSets>
+</assembly>

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/a04dac67/src/assembly/src-tar-gz.xml
----------------------------------------------------------------------
diff --git a/src/assembly/src-tar-gz.xml b/src/assembly/src-tar-gz.xml
new file mode 100644
index 0000000..b2b9bfc
--- /dev/null
+++ b/src/assembly/src-tar-gz.xml
@@ -0,0 +1,74 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<assembly>
+    <id>src</id>
+    <formats>
+        <format>tar.gz</format>
+    </formats>
+    <baseDirectory>${project.artifactId}-${project.version}-src</baseDirectory>
+    <fileSets>
+        <fileSet>
+            <includes>
+                <include>build.xml</include>
+                <include>checkstyle.xml</include>
+                <include>LICENSE.txt</include>
+                <include>license-header.txt</include>
+                <include>NOTICE.txt</include>
+                <include>pom.xml</include>
+                <include>README.txt</include>
+                <include>RELEASE-NOTES.txt</include>
+                <include>findbugs-exclude-filter.xml</include>
+                <include>build.properties.sample</include>
+            </includes>
+            <lineEnding>lf</lineEnding>
+        </fileSet>
+        <fileSet>
+            <directory>doc</directory>
+            <lineEnding>lf</lineEnding>
+        </fileSet>
+        <fileSet>
+            <directory>src/site/resources</directory>
+        </fileSet>
+        <fileSet>
+            <directory>src/site/xdoc</directory>
+            <lineEnding>lf</lineEnding>
+        </fileSet>
+        <fileSet>
+            <directory>src/site</directory>
+            <includes>
+              <include>site.xml</include>
+            </includes>
+            <lineEnding>lf</lineEnding>
+        </fileSet>
+        <fileSet>
+            <directory>src/changes</directory>
+            <lineEnding>lf</lineEnding>
+        </fileSet>
+        <fileSet>
+            <directory>src/main</directory>
+            <lineEnding>lf</lineEnding>
+        </fileSet>
+        <fileSet>
+            <directory>src/test/java</directory>
+            <lineEnding>lf</lineEnding>
+        </fileSet> 
+        <fileSet>
+            <directory>src/test/resources</directory>
+        </fileSet> 
+    </fileSets>
+</assembly>
+

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/a04dac67/src/assembly/src-zip.xml
----------------------------------------------------------------------
diff --git a/src/assembly/src-zip.xml b/src/assembly/src-zip.xml
new file mode 100644
index 0000000..5fafe18
--- /dev/null
+++ b/src/assembly/src-zip.xml
@@ -0,0 +1,73 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<assembly>
+    <id>src</id>
+    <formats>
+        <format>zip</format>
+    </formats>
+    <baseDirectory>${project.artifactId}-${project.version}-src</baseDirectory>
+    <fileSets>
+        <fileSet>
+            <includes>
+                <include>build.xml</include>
+                <include>checkstyle.xml</include>
+                <include>LICENSE.txt</include>
+                <include>license-header.txt</include>
+                <include>NOTICE.txt</include>
+                <include>pom.xml</include>
+                <include>README.txt</include>
+                <include>RELEASE-NOTES.txt</include>
+                <include>findbugs-exclude-filter.xml</include>
+                <include>build.properties.sample</include>
+            </includes>
+            <lineEnding>crlf</lineEnding>
+        </fileSet>
+        <fileSet>
+            <directory>doc</directory>
+            <lineEnding>crlf</lineEnding>
+        </fileSet>
+        <fileSet>
+            <directory>src/site/resources</directory>
+        </fileSet>
+        <fileSet>
+            <directory>src/site/xdoc</directory>
+            <lineEnding>crlf</lineEnding>
+        </fileSet>
+        <fileSet>
+            <directory>src/site</directory>
+            <includes>
+              <include>site.xml</include>
+            </includes>
+            <lineEnding>crlf</lineEnding>
+        </fileSet>
+        <fileSet>
+            <directory>src/changes</directory>
+            <lineEnding>crlf</lineEnding>
+        </fileSet>
+        <fileSet>
+            <directory>src/main</directory>
+            <lineEnding>crlf</lineEnding>
+        </fileSet>
+        <fileSet>
+            <directory>src/test/java</directory>
+            <lineEnding>crlf</lineEnding>
+        </fileSet> 
+        <fileSet>
+            <directory>src/test/resources</directory>
+        </fileSet> 
+    </fileSets>
+</assembly>

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/a04dac67/src/main/assembly/bin.xml
----------------------------------------------------------------------
diff --git a/src/main/assembly/bin.xml b/src/main/assembly/bin.xml
deleted file mode 100644
index 5762291..0000000
--- a/src/main/assembly/bin.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<assembly>
-    <id>bin</id>
-    <formats>
-        <format>tar.gz</format>
-        <format>zip</format>
-    </formats>
-    <includeSiteDirectory>false</includeSiteDirectory>
-    <fileSets>
-        <fileSet>
-            <includes>
-                <include>LICENSE.txt</include>
-                <include>NOTICE.txt</include>
-                <include>RELEASE-NOTES.txt</include>
-            </includes>
-        </fileSet>
-        <fileSet>
-            <directory>target</directory>
-            <outputDirectory></outputDirectory>
-            <includes>
-                <include>*.jar</include>
-            </includes>
-        </fileSet>
-        <fileSet>
-            <directory>target/site/apidocs</directory>
-            <outputDirectory>apidocs</outputDirectory>
-        </fileSet>
-    </fileSets>
-</assembly>

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/a04dac67/src/main/assembly/src-tar-gz.xml
----------------------------------------------------------------------
diff --git a/src/main/assembly/src-tar-gz.xml b/src/main/assembly/src-tar-gz.xml
deleted file mode 100644
index b2b9bfc..0000000
--- a/src/main/assembly/src-tar-gz.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<assembly>
-    <id>src</id>
-    <formats>
-        <format>tar.gz</format>
-    </formats>
-    <baseDirectory>${project.artifactId}-${project.version}-src</baseDirectory>
-    <fileSets>
-        <fileSet>
-            <includes>
-                <include>build.xml</include>
-                <include>checkstyle.xml</include>
-                <include>LICENSE.txt</include>
-                <include>license-header.txt</include>
-                <include>NOTICE.txt</include>
-                <include>pom.xml</include>
-                <include>README.txt</include>
-                <include>RELEASE-NOTES.txt</include>
-                <include>findbugs-exclude-filter.xml</include>
-                <include>build.properties.sample</include>
-            </includes>
-            <lineEnding>lf</lineEnding>
-        </fileSet>
-        <fileSet>
-            <directory>doc</directory>
-            <lineEnding>lf</lineEnding>
-        </fileSet>
-        <fileSet>
-            <directory>src/site/resources</directory>
-        </fileSet>
-        <fileSet>
-            <directory>src/site/xdoc</directory>
-            <lineEnding>lf</lineEnding>
-        </fileSet>
-        <fileSet>
-            <directory>src/site</directory>
-            <includes>
-              <include>site.xml</include>
-            </includes>
-            <lineEnding>lf</lineEnding>
-        </fileSet>
-        <fileSet>
-            <directory>src/changes</directory>
-            <lineEnding>lf</lineEnding>
-        </fileSet>
-        <fileSet>
-            <directory>src/main</directory>
-            <lineEnding>lf</lineEnding>
-        </fileSet>
-        <fileSet>
-            <directory>src/test/java</directory>
-            <lineEnding>lf</lineEnding>
-        </fileSet> 
-        <fileSet>
-            <directory>src/test/resources</directory>
-        </fileSet> 
-    </fileSets>
-</assembly>
-

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/a04dac67/src/main/assembly/src-zip.xml
----------------------------------------------------------------------
diff --git a/src/main/assembly/src-zip.xml b/src/main/assembly/src-zip.xml
deleted file mode 100644
index 5fafe18..0000000
--- a/src/main/assembly/src-zip.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<assembly>
-    <id>src</id>
-    <formats>
-        <format>zip</format>
-    </formats>
-    <baseDirectory>${project.artifactId}-${project.version}-src</baseDirectory>
-    <fileSets>
-        <fileSet>
-            <includes>
-                <include>build.xml</include>
-                <include>checkstyle.xml</include>
-                <include>LICENSE.txt</include>
-                <include>license-header.txt</include>
-                <include>NOTICE.txt</include>
-                <include>pom.xml</include>
-                <include>README.txt</include>
-                <include>RELEASE-NOTES.txt</include>
-                <include>findbugs-exclude-filter.xml</include>
-                <include>build.properties.sample</include>
-            </includes>
-            <lineEnding>crlf</lineEnding>
-        </fileSet>
-        <fileSet>
-            <directory>doc</directory>
-            <lineEnding>crlf</lineEnding>
-        </fileSet>
-        <fileSet>
-            <directory>src/site/resources</directory>
-        </fileSet>
-        <fileSet>
-            <directory>src/site/xdoc</directory>
-            <lineEnding>crlf</lineEnding>
-        </fileSet>
-        <fileSet>
-            <directory>src/site</directory>
-            <includes>
-              <include>site.xml</include>
-            </includes>
-            <lineEnding>crlf</lineEnding>
-        </fileSet>
-        <fileSet>
-            <directory>src/changes</directory>
-            <lineEnding>crlf</lineEnding>
-        </fileSet>
-        <fileSet>
-            <directory>src/main</directory>
-            <lineEnding>crlf</lineEnding>
-        </fileSet>
-        <fileSet>
-            <directory>src/test/java</directory>
-            <lineEnding>crlf</lineEnding>
-        </fileSet> 
-        <fileSet>
-            <directory>src/test/resources</directory>
-        </fileSet> 
-    </fileSets>
-</assembly>


[07/50] [abbrv] commons-pool git commit: findbugs-maven-plugin 3.0.1 -> 3.0.3.

Posted by ma...@apache.org.
findbugs-maven-plugin 3.0.1 -> 3.0.3.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1724896 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/64253220
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/64253220
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/64253220

Branch: refs/heads/master
Commit: 64253220a8c597663efffa9f716904efe54117ab
Parents: 1d288b3
Author: Gary D. Gregory <gg...@apache.org>
Authored: Fri Jan 15 23:53:17 2016 +0000
Committer: Gary D. Gregory <gg...@apache.org>
Committed: Fri Jan 15 23:53:17 2016 +0000

----------------------------------------------------------------------
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/64253220/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 08693ad..72de719 100644
--- a/pom.xml
+++ b/pom.xml
@@ -243,7 +243,7 @@
         <plugin>
           <groupId>org.codehaus.mojo</groupId>
           <artifactId>findbugs-maven-plugin</artifactId>
-          <version>3.0.1</version>
+          <version>3.0.3</version>
           <configuration>
             <threshold>Normal</threshold>
             <effort>Default</effort>


[05/50] [abbrv] commons-pool git commit: Obsolete DOAP

Posted by ma...@apache.org.
Obsolete DOAP

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/branches/performance-ideas@1719171 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/ae5838a2
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/ae5838a2
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/ae5838a2

Branch: refs/heads/performance-ideas
Commit: ae5838a2d9a1bfec10c7c63f17c4d34fc72826ce
Parents: 97261a2
Author: Sebastian Bazley <se...@apache.org>
Authored: Thu Dec 10 18:17:08 2015 +0000
Committer: Sebastian Bazley <se...@apache.org>
Committed: Thu Dec 10 18:17:08 2015 +0000

----------------------------------------------------------------------
 doap_pool.rdf | 50 --------------------------------------------------
 1 file changed, 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/ae5838a2/doap_pool.rdf
----------------------------------------------------------------------
diff --git a/doap_pool.rdf b/doap_pool.rdf
deleted file mode 100644
index dc3fc84..0000000
--- a/doap_pool.rdf
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0"?>
-<rdf:RDF xmlns="http://usefulinc.com/ns/doap#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:asfext="http://projects.apache.org/ns/asfext#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:doap="http://usefulinc.com/ns/doap#" xml:lang="en">
-  <Project rdf:about="http://jakarta.apache.org/commons/pool/">
-    <name>Apache Jakarta Commons Pool</name>
-    <homepage rdf:resource="http://jakarta.apache.org/commons/pool/"/>
-    <programming-language>Java</programming-language>
-    <category rdf:resource="http://projects.apache.org/category/library"/>
-    <license rdf:resource="http://usefulinc.com/doap/licenses/asl20"/>
-    <bug-database rdf:resource="http://issues.apache.org/bugzilla/buglist.cgi?product=Commons&amp;component=pool"/>
-    <download-page rdf:resource="http://jakarta.apache.org/site/downloads/downloads_commons-pool.cgi"/>
-    <asfext:pmc rdf:resource="http://jakarta.apache.org/"/>
-    <shortdesc xml:lang="en">Commons Object Pooling Library</shortdesc>
-    <description xml:lang="en">Commons Object Pooling Library</description>
-    <repository>
-      <SVNRepository>
-        <browse rdf:resource="http://svn.apache.org/repos/asf/jakarta/commons/proper/pool/trunk"/>
-        <location rdf:resource="http://svn.apache.org/repos/asf/jakarta/commons/proper/pool"/>
-      </SVNRepository>
-    </repository>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2004-06-07</created>
-        <revision>1.2</revision>
-      </Version>
-    </release>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2004-10-20</created>
-        <revision>1.1</revision>
-      </Version>
-    </release>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2002-08-12</created>
-        <revision>1.0.1</revision>
-      </Version>
-    </release>
-    <release>
-      <Version>
-        <name>commons-pool</name>
-        <created>2002-05-04</created>
-        <revision>1.0</revision>
-      </Version>
-    </release>
-    <mailing-list rdf:resource="http://jakarta.apache.org/site/mail2.html#Commons"/>
-  </Project>
-</rdf:RDF>


[34/50] [abbrv] commons-pool git commit: Static fields should be accessed directly.

Posted by ma...@apache.org.
Static fields should be accessed directly.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1739389 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/7d8069f3
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/7d8069f3
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/7d8069f3

Branch: refs/heads/master
Commit: 7d8069f324a523e4d29021fc4c40ab3a51d497b6
Parents: 9257fb9
Author: Gary D. Gregory <gg...@apache.org>
Authored: Sat Apr 16 00:04:10 2016 +0000
Committer: Gary D. Gregory <gg...@apache.org>
Committed: Sat Apr 16 00:04:10 2016 +0000

----------------------------------------------------------------------
 .../commons/pool2/impl/TestGenericObjectPool.java | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/7d8069f3/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
index 5890146..97e07cd 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
@@ -142,24 +142,24 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         GenericObjectPool<Object> dummyPool =
                 new GenericObjectPool<Object>(dummyFactory);
         assertEquals(GenericObjectPoolConfig.DEFAULT_MAX_IDLE, dummyPool.getMaxIdle());
-        assertEquals(GenericObjectPoolConfig.DEFAULT_MAX_WAIT_MILLIS, dummyPool.getMaxWaitMillis());
+        assertEquals(BaseObjectPoolConfig.DEFAULT_MAX_WAIT_MILLIS, dummyPool.getMaxWaitMillis());
         assertEquals(GenericObjectPoolConfig.DEFAULT_MIN_IDLE, dummyPool.getMinIdle());
         assertEquals(GenericObjectPoolConfig.DEFAULT_MAX_TOTAL, dummyPool.getMaxTotal());
-        assertEquals(GenericObjectPoolConfig.DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS,
+        assertEquals(BaseObjectPoolConfig.DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS,
                 dummyPool.getMinEvictableIdleTimeMillis());
-        assertEquals(GenericObjectPoolConfig.DEFAULT_NUM_TESTS_PER_EVICTION_RUN,
+        assertEquals(BaseObjectPoolConfig.DEFAULT_NUM_TESTS_PER_EVICTION_RUN,
                 dummyPool.getNumTestsPerEvictionRun());
-        assertEquals(Boolean.valueOf(GenericObjectPoolConfig.DEFAULT_TEST_ON_BORROW),
+        assertEquals(Boolean.valueOf(BaseObjectPoolConfig.DEFAULT_TEST_ON_BORROW),
                 Boolean.valueOf(dummyPool.getTestOnBorrow()));
-        assertEquals(Boolean.valueOf(GenericObjectPoolConfig.DEFAULT_TEST_ON_RETURN),
+        assertEquals(Boolean.valueOf(BaseObjectPoolConfig.DEFAULT_TEST_ON_RETURN),
                 Boolean.valueOf(dummyPool.getTestOnReturn()));
-        assertEquals(Boolean.valueOf(GenericObjectPoolConfig.DEFAULT_TEST_WHILE_IDLE),
+        assertEquals(Boolean.valueOf(BaseObjectPoolConfig.DEFAULT_TEST_WHILE_IDLE),
                 Boolean.valueOf(dummyPool.getTestWhileIdle()));
-        assertEquals(GenericObjectPoolConfig.DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS,
+        assertEquals(BaseObjectPoolConfig.DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS,
                 dummyPool.getTimeBetweenEvictionRunsMillis());
-        assertEquals(Boolean.valueOf(GenericObjectPoolConfig.DEFAULT_BLOCK_WHEN_EXHAUSTED),
+        assertEquals(Boolean.valueOf(BaseObjectPoolConfig.DEFAULT_BLOCK_WHEN_EXHAUSTED),
                 Boolean.valueOf(dummyPool.getBlockWhenExhausted()));
-        assertEquals(Boolean.valueOf(GenericObjectPoolConfig.DEFAULT_LIFO),
+        assertEquals(Boolean.valueOf(BaseObjectPoolConfig.DEFAULT_LIFO),
                 Boolean.valueOf(dummyPool.getLifo()));
         dummyPool.close();
 


[42/50] [abbrv] commons-pool git commit: Fix transposed digits

Posted by ma...@apache.org.
Fix transposed digits

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1767783 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/ed91f491
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/ed91f491
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/ed91f491

Branch: refs/heads/master
Commit: ed91f491249950ba19b9d81e9590ded25ca14ec0
Parents: 4a20cdc
Author: Mark Thomas <ma...@apache.org>
Authored: Wed Nov 2 20:54:06 2016 +0000
Committer: Mark Thomas <ma...@apache.org>
Committed: Wed Nov 2 20:54:06 2016 +0000

----------------------------------------------------------------------
 src/changes/changes.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/ed91f491/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index dca51b3..ae14e69 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -71,7 +71,7 @@ The <action> type attribute can be add,update,fix,remove.
       Ensure that any class name used for evictionPolicyClassName represents a
       class that implements EvictionPolicy.
     </action>
-    <action dev="markt" issue="POOL-351" type="fix">
+    <action dev="markt" issue="POOL-315" type="fix">
       Add a configurable delay (default 10 seconds) to wait when shutting down
       an Evictor to allow the associated thread time to complete and current
       evictions and to terminate.


[47/50] [abbrv] commons-pool git commit: [POOL-317] Correction of default value of softMinEvictableIdleTimeMillis in BaseObjectPoolConfig.

Posted by ma...@apache.org.
[POOL-317] Correction of default value of softMinEvictableIdleTimeMillis in BaseObjectPoolConfig.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1771859 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/25619386
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/25619386
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/25619386

Branch: refs/heads/master
Commit: 2561938620ae49ad7911d7fbaf0df3f151bdaca6
Parents: fe49453
Author: Gary D. Gregory <gg...@apache.org>
Authored: Tue Nov 29 08:47:07 2016 +0000
Committer: Gary D. Gregory <gg...@apache.org>
Committed: Tue Nov 29 08:47:07 2016 +0000

----------------------------------------------------------------------
 src/changes/changes.xml                                           | 3 +++
 .../java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java  | 2 +-
 2 files changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/25619386/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 545e1b7..fb3a878 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -44,6 +44,9 @@ The <action> type attribute can be add,update,fix,remove.
   </properties>
   <body>
   <release version="2.4.3" date="TBD" description="TBD">
+    <action dev="ggregory" issue="POOL-317" type="fix" due-to="KeiichiFujino">
+      Correction of default value of softMinEvictableIdleTimeMillis in BaseObjectPoolConfig.
+    </action>
     <action dev="ggregory" issue="POOL-309" type="fix" due-to="jolestar, Roopam Patekar">
       Fix misspellings from "destory" to "destroy".
     </action>

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/25619386/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java b/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
index d635227..dc82784 100644
--- a/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
+++ b/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
@@ -178,7 +178,7 @@ public abstract class BaseObjectPoolConfig extends BaseObject implements Cloneab
             DEFAULT_EVICTOR_SHUTDOWN_TIMEOUT_MILLIS;
 
     private long softMinEvictableIdleTimeMillis =
-            DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS;
+            DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS;
 
     private int numTestsPerEvictionRun =
             DEFAULT_NUM_TESTS_PER_EVICTION_RUN;


[40/50] [abbrv] commons-pool git commit: Keep static classes at the end of the file.

Posted by ma...@apache.org.
Keep static classes at the end of the file.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1767756 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/b15bc636
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/b15bc636
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/b15bc636

Branch: refs/heads/master
Commit: b15bc636bfd12e7f8ea19ebb5fcfae57ab4f1f16
Parents: 108f44a
Author: Mark Thomas <ma...@apache.org>
Authored: Wed Nov 2 18:29:39 2016 +0000
Committer: Mark Thomas <ma...@apache.org>
Committed: Wed Nov 2 18:29:39 2016 +0000

----------------------------------------------------------------------
 .../commons/pool2/impl/EvictionTimer.java       | 22 +++++++++++---------
 1 file changed, 12 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/b15bc636/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java b/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
index 0d74406..191dc86 100644
--- a/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
+++ b/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
@@ -49,6 +49,18 @@ class EvictionTimer {
         // Hide the default constructor
     }
 
+
+    /**
+     * @since 2.4.3
+     */
+    @Override
+    public String toString() {
+        final StringBuilder builder = new StringBuilder();
+        builder.append("EvictionTimer []");
+        return builder.toString();
+    }
+
+
     /**
      * Add the specified eviction task to the timer. Tasks that are added with a
      * call to this method *must* call {@link #cancel(TimerTask)} to cancel the
@@ -156,14 +168,4 @@ 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();
-    }
 }


[06/50] [abbrv] commons-pool git commit: commons-parent 34 -> 39.

Posted by ma...@apache.org.
commons-parent 34 -> 39.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/pool/trunk@1724895 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/1d288b3f
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/1d288b3f
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/1d288b3f

Branch: refs/heads/master
Commit: 1d288b3f0803964666b117082fdfd519cd93191f
Parents: 2cf21c4
Author: Gary D. Gregory <gg...@apache.org>
Authored: Fri Jan 15 23:52:32 2016 +0000
Committer: Gary D. Gregory <gg...@apache.org>
Committed: Fri Jan 15 23:52:32 2016 +0000

----------------------------------------------------------------------
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/1d288b3f/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index d99624c..08693ad 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-parent</artifactId>
-    <version>34</version>
+    <version>39</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>commons-pool2</artifactId>