Repository: commons-pool
Updated Branches:
  refs/heads/master 5736b0ad1 -> 46f4ab707


[POOL-332] ObjectPool and KeyedObject pool should extend Closeable.
Cleaning up tests by managing pools with try-with-resource blocks.
More to do.

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

Branch: refs/heads/master
Commit: 46f4ab70772a872772672d93200cf80650cb97fa
Parents: 5736b0a
Author: Gary Gregory <ggreg...@apache.org>
Authored: Wed Nov 1 13:20:01 2017 -0600
Committer: Gary Gregory <ggreg...@apache.org>
Committed: Wed Nov 1 13:20:01 2017 -0600

----------------------------------------------------------------------
 .../java/org/apache/commons/pool2/PoolTest.java |   8 +-
 .../commons/pool2/TestBaseObjectPool.java       |  30 +-
 .../commons/pool2/TestKeyedObjectPool.java      |  15 +-
 .../org/apache/commons/pool2/TestPoolUtils.java |  74 +-
 .../pool2/impl/TestGenericKeyedObjectPool.java  | 904 +++++++++----------
 5 files changed, 513 insertions(+), 518 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/46f4ab70/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
index 837a7d9..87638f4 100644
--- a/src/test/java/org/apache/commons/pool2/PoolTest.java
+++ b/src/test/java/org/apache/commons/pool2/PoolTest.java
@@ -69,9 +69,7 @@ public class PoolTest {
         final GenericObjectPoolConfig poolConfig = new 
GenericObjectPoolConfig();
         poolConfig.setTestWhileIdle(true /* testWhileIdle */);
         final PooledFooFactory pooledFooFactory = new PooledFooFactory();
-        GenericObjectPool<Foo> pool = null;
-        try {
-            pool = new GenericObjectPool<>(pooledFooFactory, poolConfig);
+        try (GenericObjectPool<Foo> pool = new 
GenericObjectPool<>(pooledFooFactory, poolConfig)) {
             pool.setTimeBetweenEvictionRunsMillis(EVICTION_PERIOD_IN_MILLIS);
             pool.addObject();
             try {
@@ -79,10 +77,6 @@ public class PoolTest {
             } catch (final InterruptedException e) {
                 Thread.interrupted();
             }
-        } finally {
-            if (pool != null) {
-                pool.close();
-            }
         }
         final Thread[] threads = new Thread[Thread.activeCount()];
         Thread.enumerate(threads);

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/46f4ab70/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 fc156e5..0e11de5 100644
--- a/src/test/java/org/apache/commons/pool2/TestBaseObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/TestBaseObjectPool.java
@@ -80,28 +80,30 @@ public class TestBaseObjectPool extends TestObjectPool {
         if (!getClass().equals(TestBaseObjectPool.class)) {
             return; // skip redundant tests
         }
-        final ObjectPool<Object> pool = new TestObjectPool();
+        try (final ObjectPool<Object> pool = new TestObjectPool()) {
 
-        assertTrue("Negative expected.", pool.getNumIdle() < 0);
-        assertTrue("Negative expected.", pool.getNumActive() < 0);
+            assertTrue("Negative expected.", pool.getNumIdle() < 0);
+            assertTrue("Negative expected.", pool.getNumActive() < 0);
 
-        try {
-            pool.clear();
-            fail("Expected UnsupportedOperationException");
-        } catch(final UnsupportedOperationException e) {
-            // expected
-        }
+            try {
+                pool.clear();
+                fail("Expected UnsupportedOperationException");
+            } catch (final UnsupportedOperationException e) {
+                // expected
+            }
 
-        try {
-            pool.addObject();
-            fail("Expected UnsupportedOperationException");
-        } catch(final UnsupportedOperationException e) {
-            // expected
+            try {
+                pool.addObject();
+                fail("Expected UnsupportedOperationException");
+            } catch (final UnsupportedOperationException e) {
+                // expected
+            }
         }
     }
 
     @Test
     public void testClose() throws Exception {
+        @SuppressWarnings("resource")
         final ObjectPool<Object> pool = new TestObjectPool();
 
         pool.close();

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/46f4ab70/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 ad95fac..222b895 100644
--- a/src/test/java/org/apache/commons/pool2/TestKeyedObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/TestKeyedObjectPool.java
@@ -389,10 +389,10 @@ public abstract class TestKeyedObjectPool {
     @Test
     public void testKPOFCloseUsages() throws Exception {
         final FailingKeyedPooledObjectFactory factory = new 
FailingKeyedPooledObjectFactory();
-        KeyedObjectPool<Object,Object> pool;
+        KeyedObjectPool<Object, Object> pool;
         try {
             pool = makeEmptyPool(factory);
-        } catch(final UnsupportedOperationException uoe) {
+        } catch (final UnsupportedOperationException uoe) {
             return; // test not supported
         }
         final List<MethodCall> expectedMethods = new ArrayList<>();
@@ -401,13 +401,12 @@ public abstract class TestKeyedObjectPool {
         PoolUtils.prefill(pool, KEY, 5);
         pool.close();
 
-
         //// Test exception handling close should swallow failures
-        pool = makeEmptyPool(factory);
-        reset(pool, factory, expectedMethods);
-        factory.setDestroyObjectFail(true);
-        PoolUtils.prefill(pool, KEY, 5);
-        pool.close();
+        try (final KeyedObjectPool<Object, Object> pool2 = 
makeEmptyPool(factory)) {
+            reset(pool2, factory, expectedMethods);
+            factory.setDestroyObjectFail(true);
+            PoolUtils.prefill(pool2, KEY, 5);
+        }
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/46f4ab70/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 1316a32..fb63911 100644
--- a/src/test/java/org/apache/commons/pool2/TestPoolUtils.java
+++ b/src/test/java/org/apache/commons/pool2/TestPoolUtils.java
@@ -704,23 +704,23 @@ public class TestPoolUtils {
     @Test
     public void testErodingPerKeyKeyedObjectPool() throws Exception {
         try {
-            PoolUtils.erodingPool((KeyedObjectPool<Object,Object>)null, 1f, 
true);
+            PoolUtils.erodingPool((KeyedObjectPool<Object, Object>) null, 1f, 
true);
             fail("PoolUtils.erodingPool(KeyedObjectPool) must not allow a null 
pool.");
-        } catch(final IllegalArgumentException iae) {
+        } catch (final IllegalArgumentException iae) {
             // expected
         }
 
         try {
-            PoolUtils.erodingPool((KeyedObjectPool<Object,Object>)null, 0f, 
true);
+            PoolUtils.erodingPool((KeyedObjectPool<Object, Object>) null, 0f, 
true);
             fail("PoolUtils.erodingPool(ObjectPool, float, boolean) must not 
allow a non-positive factor.");
-        } catch(final IllegalArgumentException iae) {
+        } catch (final IllegalArgumentException iae) {
             // expected
         }
 
         try {
-            PoolUtils.erodingPool((KeyedObjectPool<Object,Object>)null, 1f, 
true);
+            PoolUtils.erodingPool((KeyedObjectPool<Object, Object>) null, 1f, 
true);
             fail("PoolUtils.erodingPool(KeyedObjectPool, float, boolean) must 
not allow a null pool.");
-        } catch(final IllegalArgumentException iae) {
+        } catch (final IllegalArgumentException iae) {
             // expected
         }
 
@@ -739,51 +739,51 @@ public class TestPoolUtils {
 
         // If the logic behind PoolUtils.erodingPool changes then this will 
need to be tweaked.
         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);
-
-        final List<String> expectedMethods = new ArrayList<>();
-        assertEquals(expectedMethods, calledMethods);
-
-        final Object key = "key";
-
-        Object o = pool.borrowObject(key);
-        expectedMethods.add("borrowObject");
+        try (@SuppressWarnings("unchecked")
+        final KeyedObjectPool<Object, Object> pool = 
PoolUtils.erodingPool(createProxy(KeyedObjectPool.class, handler),
+                factor, true)) {
 
-        assertEquals(expectedMethods, calledMethods);
+            final List<String> expectedMethods = new ArrayList<>();
+            assertEquals(expectedMethods, calledMethods);
 
-        pool.returnObject(key, o);
-        expectedMethods.add("returnObject");
-        assertEquals(expectedMethods, calledMethods);
+            final Object key = "key";
 
-        for (int i=0; i < 5; i ++) {
-            o = pool.borrowObject(key);
+            Object o = pool.borrowObject(key);
             expectedMethods.add("borrowObject");
 
-            Thread.sleep(50);
+            assertEquals(expectedMethods, calledMethods);
 
             pool.returnObject(key, o);
             expectedMethods.add("returnObject");
-
             assertEquals(expectedMethods, calledMethods);
 
-            expectedMethods.clear();
-            calledMethods.clear();
-        }
+            for (int i = 0; i < 5; i++) {
+                o = pool.borrowObject(key);
+                expectedMethods.add("borrowObject");
 
-        Thread.sleep(10000); // 10 seconds
+                Thread.sleep(50);
 
+                pool.returnObject(key, o);
+                expectedMethods.add("returnObject");
 
-        o = pool.borrowObject(key);
-        expectedMethods.add("borrowObject");
-        pool.returnObject(key, o);
-        expectedMethods.add("getNumIdle");
-        expectedMethods.add("invalidateObject");
-        assertEquals(expectedMethods, calledMethods);
+                assertEquals(expectedMethods, calledMethods);
 
-        final String expectedToString = 
"ErodingPerKeyKeyedObjectPool{factor="+factor+", keyedPool=null}";
-        assertEquals(expectedToString, pool.toString());
+                expectedMethods.clear();
+                calledMethods.clear();
+            }
+
+            Thread.sleep(10000); // 10 seconds
+
+            o = pool.borrowObject(key);
+            expectedMethods.add("borrowObject");
+            pool.returnObject(key, o);
+            expectedMethods.add("getNumIdle");
+            expectedMethods.add("invalidateObject");
+            assertEquals(expectedMethods, calledMethods);
+
+            final String expectedToString = 
"ErodingPerKeyKeyedObjectPool{factor=" + factor + ", keyedPool=null}";
+            assertEquals(expectedToString, pool.toString());
+        }
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/46f4ab70/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 97e9587..60e2244 100644
--- 
a/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java
+++ 
b/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java
@@ -93,28 +93,28 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
     }
 
     /** setUp(): {@code new GenericKeyedObjectPool<String,String>(factory)} */
-    private GenericKeyedObjectPool<String,String> pool = null;
+    private GenericKeyedObjectPool<String,String> gkoPool = null;
     /** setUp(): {@code new SimpleFactory<String>()} */
-    private SimpleFactory<String> factory = null;
+    private SimpleFactory<String> simpleFactory = null;
     private static final Integer KEY_ZERO = Integer.valueOf(0);
     private static final Integer KEY_ONE = Integer.valueOf(1);
     private static final Integer KEY_TWO = Integer.valueOf(2);
 
     @Before
     public void setUp() throws Exception {
-        factory = new SimpleFactory<>();
-        pool = new GenericKeyedObjectPool<>(factory);
+        simpleFactory = new SimpleFactory<>();
+        gkoPool = new GenericKeyedObjectPool<>(simpleFactory);
     }
 
     @Override
     @After
     public void tearDown() throws Exception {
         super.tearDown();
-        final String poolName = pool.getJmxName().toString();
-        pool.clear();
-        pool.close();
-        pool = null;
-        factory = null;
+        final String poolName = gkoPool.getJmxName().toString();
+        gkoPool.clear();
+        gkoPool.close();
+        gkoPool = null;
+        simpleFactory = null;
 
         final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
         final Set<ObjectName> result = mbs.queryNames(new ObjectName(
@@ -138,108 +138,108 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
 
     @Test(timeout=60000)
     public void testNegativeMaxTotalPerKey() throws Exception {
-        pool.setMaxTotalPerKey(-1);
-        pool.setBlockWhenExhausted(false);
-        final String obj = pool.borrowObject("");
+        gkoPool.setMaxTotalPerKey(-1);
+        gkoPool.setBlockWhenExhausted(false);
+        final String obj = gkoPool.borrowObject("");
         assertEquals("0",obj);
-        pool.returnObject("",obj);
+        gkoPool.returnObject("",obj);
     }
 
     @Test(timeout=60000)
     public void testNumActiveNumIdle2() throws Exception {
-        assertEquals(0,pool.getNumActive());
-        assertEquals(0,pool.getNumIdle());
-        assertEquals(0,pool.getNumActive("A"));
-        assertEquals(0,pool.getNumIdle("A"));
-        assertEquals(0,pool.getNumActive("B"));
-        assertEquals(0,pool.getNumIdle("B"));
-
-        final String objA0 = pool.borrowObject("A");
-        final String objB0 = pool.borrowObject("B");
-
-        assertEquals(2,pool.getNumActive());
-        assertEquals(0,pool.getNumIdle());
-        assertEquals(1,pool.getNumActive("A"));
-        assertEquals(0,pool.getNumIdle("A"));
-        assertEquals(1,pool.getNumActive("B"));
-        assertEquals(0,pool.getNumIdle("B"));
-
-        final String objA1 = pool.borrowObject("A");
-        final String objB1 = pool.borrowObject("B");
-
-        assertEquals(4,pool.getNumActive());
-        assertEquals(0,pool.getNumIdle());
-        assertEquals(2,pool.getNumActive("A"));
-        assertEquals(0,pool.getNumIdle("A"));
-        assertEquals(2,pool.getNumActive("B"));
-        assertEquals(0,pool.getNumIdle("B"));
-
-        pool.returnObject("A",objA0);
-        pool.returnObject("B",objB0);
-
-        assertEquals(2,pool.getNumActive());
-        assertEquals(2,pool.getNumIdle());
-        assertEquals(1,pool.getNumActive("A"));
-        assertEquals(1,pool.getNumIdle("A"));
-        assertEquals(1,pool.getNumActive("B"));
-        assertEquals(1,pool.getNumIdle("B"));
-
-        pool.returnObject("A",objA1);
-        pool.returnObject("B",objB1);
-
-        assertEquals(0,pool.getNumActive());
-        assertEquals(4,pool.getNumIdle());
-        assertEquals(0,pool.getNumActive("A"));
-        assertEquals(2,pool.getNumIdle("A"));
-        assertEquals(0,pool.getNumActive("B"));
-        assertEquals(2,pool.getNumIdle("B"));
+        assertEquals(0,gkoPool.getNumActive());
+        assertEquals(0,gkoPool.getNumIdle());
+        assertEquals(0,gkoPool.getNumActive("A"));
+        assertEquals(0,gkoPool.getNumIdle("A"));
+        assertEquals(0,gkoPool.getNumActive("B"));
+        assertEquals(0,gkoPool.getNumIdle("B"));
+
+        final String objA0 = gkoPool.borrowObject("A");
+        final String objB0 = gkoPool.borrowObject("B");
+
+        assertEquals(2,gkoPool.getNumActive());
+        assertEquals(0,gkoPool.getNumIdle());
+        assertEquals(1,gkoPool.getNumActive("A"));
+        assertEquals(0,gkoPool.getNumIdle("A"));
+        assertEquals(1,gkoPool.getNumActive("B"));
+        assertEquals(0,gkoPool.getNumIdle("B"));
+
+        final String objA1 = gkoPool.borrowObject("A");
+        final String objB1 = gkoPool.borrowObject("B");
+
+        assertEquals(4,gkoPool.getNumActive());
+        assertEquals(0,gkoPool.getNumIdle());
+        assertEquals(2,gkoPool.getNumActive("A"));
+        assertEquals(0,gkoPool.getNumIdle("A"));
+        assertEquals(2,gkoPool.getNumActive("B"));
+        assertEquals(0,gkoPool.getNumIdle("B"));
+
+        gkoPool.returnObject("A",objA0);
+        gkoPool.returnObject("B",objB0);
+
+        assertEquals(2,gkoPool.getNumActive());
+        assertEquals(2,gkoPool.getNumIdle());
+        assertEquals(1,gkoPool.getNumActive("A"));
+        assertEquals(1,gkoPool.getNumIdle("A"));
+        assertEquals(1,gkoPool.getNumActive("B"));
+        assertEquals(1,gkoPool.getNumIdle("B"));
+
+        gkoPool.returnObject("A",objA1);
+        gkoPool.returnObject("B",objB1);
+
+        assertEquals(0,gkoPool.getNumActive());
+        assertEquals(4,gkoPool.getNumIdle());
+        assertEquals(0,gkoPool.getNumActive("A"));
+        assertEquals(2,gkoPool.getNumIdle("A"));
+        assertEquals(0,gkoPool.getNumActive("B"));
+        assertEquals(2,gkoPool.getNumIdle("B"));
     }
 
     @Test(timeout=60000)
     public void testMaxIdle() throws Exception {
-        pool.setMaxTotalPerKey(100);
-        pool.setMaxIdlePerKey(8);
+        gkoPool.setMaxTotalPerKey(100);
+        gkoPool.setMaxIdlePerKey(8);
         final String[] active = new String[100];
         for(int i=0;i<100;i++) {
-            active[i] = pool.borrowObject("");
+            active[i] = gkoPool.borrowObject("");
         }
-        assertEquals(100,pool.getNumActive(""));
-        assertEquals(0,pool.getNumIdle(""));
+        assertEquals(100,gkoPool.getNumActive(""));
+        assertEquals(0,gkoPool.getNumIdle(""));
         for(int i=0;i<100;i++) {
-            pool.returnObject("",active[i]);
-            assertEquals(99 - i,pool.getNumActive(""));
-            assertEquals((i < 8 ? i+1 : 8),pool.getNumIdle(""));
+            gkoPool.returnObject("",active[i]);
+            assertEquals(99 - i,gkoPool.getNumActive(""));
+            assertEquals((i < 8 ? i+1 : 8),gkoPool.getNumIdle(""));
         }
 
         for(int i=0;i<100;i++) {
-            active[i] = pool.borrowObject("a");
+            active[i] = gkoPool.borrowObject("a");
         }
-        assertEquals(100,pool.getNumActive("a"));
-        assertEquals(0,pool.getNumIdle("a"));
+        assertEquals(100,gkoPool.getNumActive("a"));
+        assertEquals(0,gkoPool.getNumIdle("a"));
         for(int i=0;i<100;i++) {
-            pool.returnObject("a",active[i]);
-            assertEquals(99 - i,pool.getNumActive("a"));
-            assertEquals((i < 8 ? i+1 : 8),pool.getNumIdle("a"));
+            gkoPool.returnObject("a",active[i]);
+            assertEquals(99 - i,gkoPool.getNumActive("a"));
+            assertEquals((i < 8 ? i+1 : 8),gkoPool.getNumIdle("a"));
         }
 
         // total number of idle instances is twice maxIdle
-        assertEquals(16, pool.getNumIdle());
+        assertEquals(16, gkoPool.getNumIdle());
         // Each pool is at the sup
-        assertEquals(8, pool.getNumIdle(""));
-        assertEquals(8, pool.getNumIdle("a"));
+        assertEquals(8, gkoPool.getNumIdle(""));
+        assertEquals(8, gkoPool.getNumIdle("a"));
 
     }
 
     @Test(timeout=60000)
     public void testMaxTotalPerKey() throws Exception {
-        pool.setMaxTotalPerKey(3);
-        pool.setBlockWhenExhausted(false);
+        gkoPool.setMaxTotalPerKey(3);
+        gkoPool.setBlockWhenExhausted(false);
 
-        pool.borrowObject("");
-        pool.borrowObject("");
-        pool.borrowObject("");
+        gkoPool.borrowObject("");
+        gkoPool.borrowObject("");
+        gkoPool.borrowObject("");
         try {
-            pool.borrowObject("");
+            gkoPool.borrowObject("");
             fail("Expected NoSuchElementException");
         } catch(final NoSuchElementException e) {
             // expected
@@ -248,11 +248,11 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
 
     @Test(timeout=60000)
     public void testMaxTotalPerKeyZero() throws Exception {
-        pool.setMaxTotalPerKey(0);
-        pool.setBlockWhenExhausted(false);
+        gkoPool.setMaxTotalPerKey(0);
+        gkoPool.setBlockWhenExhausted(false);
 
         try {
-            pool.borrowObject("a");
+            gkoPool.borrowObject("a");
             fail("Expected NoSuchElementException");
         } catch(final NoSuchElementException e) {
             // expected
@@ -261,53 +261,53 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
 
     @Test(timeout=60000)
     public void testMaxTotal() throws Exception {
-        pool.setMaxTotalPerKey(2);
-        pool.setMaxTotal(3);
-        pool.setBlockWhenExhausted(false);
+        gkoPool.setMaxTotalPerKey(2);
+        gkoPool.setMaxTotal(3);
+        gkoPool.setBlockWhenExhausted(false);
 
-        final String o1 = pool.borrowObject("a");
+        final String o1 = gkoPool.borrowObject("a");
         assertNotNull(o1);
-        final String o2 = pool.borrowObject("a");
+        final String o2 = gkoPool.borrowObject("a");
         assertNotNull(o2);
-        final String o3 = pool.borrowObject("b");
+        final String o3 = gkoPool.borrowObject("b");
         assertNotNull(o3);
         try {
-            pool.borrowObject("c");
+            gkoPool.borrowObject("c");
             fail("Expected NoSuchElementException");
         } catch(final NoSuchElementException e) {
             // expected
         }
 
-        assertEquals(0, pool.getNumIdle());
+        assertEquals(0, gkoPool.getNumIdle());
 
-        pool.returnObject("b", o3);
-        assertEquals(1, pool.getNumIdle());
-        assertEquals(1, pool.getNumIdle("b"));
+        gkoPool.returnObject("b", o3);
+        assertEquals(1, gkoPool.getNumIdle());
+        assertEquals(1, gkoPool.getNumIdle("b"));
 
-        final Object o4 = pool.borrowObject("b");
+        final Object o4 = gkoPool.borrowObject("b");
         assertNotNull(o4);
-        assertEquals(0, pool.getNumIdle());
-        assertEquals(0, pool.getNumIdle("b"));
+        assertEquals(0, gkoPool.getNumIdle());
+        assertEquals(0, gkoPool.getNumIdle("b"));
 
-        pool.setMaxTotal(4);
-        final Object o5 = pool.borrowObject("b");
+        gkoPool.setMaxTotal(4);
+        final Object o5 = gkoPool.borrowObject("b");
         assertNotNull(o5);
 
-        assertEquals(2, pool.getNumActive("a"));
-        assertEquals(2, pool.getNumActive("b"));
-        assertEquals(pool.getMaxTotal(),
-                pool.getNumActive("b") + pool.getNumActive("b"));
-        assertEquals(pool.getNumActive(),
-                pool.getMaxTotal());
+        assertEquals(2, gkoPool.getNumActive("a"));
+        assertEquals(2, gkoPool.getNumActive("b"));
+        assertEquals(gkoPool.getMaxTotal(),
+                gkoPool.getNumActive("b") + gkoPool.getNumActive("b"));
+        assertEquals(gkoPool.getNumActive(),
+                gkoPool.getMaxTotal());
     }
 
     @Test(timeout=60000)
     public void testMaxTotalZero() throws Exception {
-        pool.setMaxTotal(0);
-        pool.setBlockWhenExhausted(false);
+        gkoPool.setMaxTotal(0);
+        gkoPool.setBlockWhenExhausted(false);
 
         try {
-            pool.borrowObject("a");
+            gkoPool.borrowObject("a");
             fail("Expected NoSuchElementException");
         } catch(final NoSuchElementException e) {
             // expected
@@ -316,50 +316,50 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
 
     @Test(timeout=60000)
     public void testMaxTotalLRU() throws Exception {
-        pool.setMaxTotalPerKey(2);
-        pool.setMaxTotal(3);
+        gkoPool.setMaxTotalPerKey(2);
+        gkoPool.setMaxTotal(3);
 
-        final String o1 = pool.borrowObject("a");
+        final String o1 = gkoPool.borrowObject("a");
         assertNotNull(o1);
-        pool.returnObject("a", o1);
+        gkoPool.returnObject("a", o1);
         Thread.sleep(25);
 
-        final String o2 = pool.borrowObject("b");
+        final String o2 = gkoPool.borrowObject("b");
         assertNotNull(o2);
-        pool.returnObject("b", o2);
+        gkoPool.returnObject("b", o2);
         Thread.sleep(25);
 
-        final String o3 = pool.borrowObject("c");
+        final String o3 = gkoPool.borrowObject("c");
         assertNotNull(o3);
-        pool.returnObject("c", o3);
+        gkoPool.returnObject("c", o3);
         Thread.sleep(25);
 
-        final String o4 = pool.borrowObject("a");
+        final String o4 = gkoPool.borrowObject("a");
         assertNotNull(o4);
-        pool.returnObject("a", o4);
+        gkoPool.returnObject("a", o4);
         Thread.sleep(25);
 
         assertSame(o1, o4);
 
         // this should cause b to be bumped out of the pool
-        final String o5 = pool.borrowObject("d");
+        final String o5 = gkoPool.borrowObject("d");
         assertNotNull(o5);
-        pool.returnObject("d", o5);
+        gkoPool.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)
-        final String o6 = pool.borrowObject("b");
+        final String o6 = gkoPool.borrowObject("b");
         assertNotNull(o6);
-        pool.returnObject("b", o6);
+        gkoPool.returnObject("b", o6);
 
         assertNotSame(o1, o6);
         assertNotSame(o2, o6);
 
         // second a is still in there
-        final String o7 = pool.borrowObject("a");
+        final String o7 = gkoPool.borrowObject("a");
         assertNotNull(o7);
-        pool.returnObject("a", o7);
+        gkoPool.returnObject("a", o7);
 
         assertSame(o4, o7);
     }
@@ -367,52 +367,52 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
     @Test(timeout=60000)
     public void testSettersAndGetters() throws Exception {
         {
-            pool.setMaxTotalPerKey(123);
-            assertEquals(123,pool.getMaxTotalPerKey());
+            gkoPool.setMaxTotalPerKey(123);
+            assertEquals(123,gkoPool.getMaxTotalPerKey());
         }
         {
-            pool.setMaxIdlePerKey(12);
-            assertEquals(12,pool.getMaxIdlePerKey());
+            gkoPool.setMaxIdlePerKey(12);
+            assertEquals(12,gkoPool.getMaxIdlePerKey());
         }
         {
-            pool.setMaxWaitMillis(1234L);
-            assertEquals(1234L,pool.getMaxWaitMillis());
+            gkoPool.setMaxWaitMillis(1234L);
+            assertEquals(1234L,gkoPool.getMaxWaitMillis());
         }
         {
-            pool.setMinEvictableIdleTimeMillis(12345L);
-            assertEquals(12345L,pool.getMinEvictableIdleTimeMillis());
+            gkoPool.setMinEvictableIdleTimeMillis(12345L);
+            assertEquals(12345L,gkoPool.getMinEvictableIdleTimeMillis());
         }
         {
-            pool.setNumTestsPerEvictionRun(11);
-            assertEquals(11,pool.getNumTestsPerEvictionRun());
+            gkoPool.setNumTestsPerEvictionRun(11);
+            assertEquals(11,gkoPool.getNumTestsPerEvictionRun());
         }
         {
-            pool.setTestOnBorrow(true);
-            assertTrue(pool.getTestOnBorrow());
-            pool.setTestOnBorrow(false);
-            assertTrue(!pool.getTestOnBorrow());
+            gkoPool.setTestOnBorrow(true);
+            assertTrue(gkoPool.getTestOnBorrow());
+            gkoPool.setTestOnBorrow(false);
+            assertTrue(!gkoPool.getTestOnBorrow());
         }
         {
-            pool.setTestOnReturn(true);
-            assertTrue(pool.getTestOnReturn());
-            pool.setTestOnReturn(false);
-            assertTrue(!pool.getTestOnReturn());
+            gkoPool.setTestOnReturn(true);
+            assertTrue(gkoPool.getTestOnReturn());
+            gkoPool.setTestOnReturn(false);
+            assertTrue(!gkoPool.getTestOnReturn());
         }
         {
-            pool.setTestWhileIdle(true);
-            assertTrue(pool.getTestWhileIdle());
-            pool.setTestWhileIdle(false);
-            assertTrue(!pool.getTestWhileIdle());
+            gkoPool.setTestWhileIdle(true);
+            assertTrue(gkoPool.getTestWhileIdle());
+            gkoPool.setTestWhileIdle(false);
+            assertTrue(!gkoPool.getTestWhileIdle());
         }
         {
-            pool.setTimeBetweenEvictionRunsMillis(11235L);
-            assertEquals(11235L,pool.getTimeBetweenEvictionRunsMillis());
+            gkoPool.setTimeBetweenEvictionRunsMillis(11235L);
+            assertEquals(11235L,gkoPool.getTimeBetweenEvictionRunsMillis());
         }
         {
-            pool.setBlockWhenExhausted(true);
-            assertTrue(pool.getBlockWhenExhausted());
-            pool.setBlockWhenExhausted(false);
-            assertFalse(pool.getBlockWhenExhausted());
+            gkoPool.setBlockWhenExhausted(true);
+            assertTrue(gkoPool.getBlockWhenExhausted());
+            gkoPool.setBlockWhenExhausted(false);
+            assertFalse(gkoPool.getBlockWhenExhausted());
         }
     }
 
@@ -426,7 +426,7 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
         config.setTimeBetweenEvictionRunsMillis(500);
         config.setMinEvictableIdleTimeMillis(50);
         config.setNumTestsPerEvictionRun(5);
-        try (final GenericKeyedObjectPool<String, String> p = new 
GenericKeyedObjectPool<>(factory, config)) {
+        try (final GenericKeyedObjectPool<String, String> p = new 
GenericKeyedObjectPool<>(simpleFactory, config)) {
             for (int i = 0; i < 5; i++) {
                 p.addObject("one");
             }
@@ -446,95 +446,95 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
 
     @Test(timeout=60000)
     public void testEviction() throws Exception {
-        pool.setMaxIdlePerKey(500);
-        pool.setMaxTotalPerKey(500);
-        pool.setNumTestsPerEvictionRun(100);
-        pool.setMinEvictableIdleTimeMillis(250L);
-        pool.setTimeBetweenEvictionRunsMillis(500L);
+        gkoPool.setMaxIdlePerKey(500);
+        gkoPool.setMaxTotalPerKey(500);
+        gkoPool.setNumTestsPerEvictionRun(100);
+        gkoPool.setMinEvictableIdleTimeMillis(250L);
+        gkoPool.setTimeBetweenEvictionRunsMillis(500L);
 
         final String[] active = new String[500];
         for(int i=0;i<500;i++) {
-            active[i] = pool.borrowObject("");
+            active[i] = gkoPool.borrowObject("");
         }
         for(int i=0;i<500;i++) {
-            pool.returnObject("",active[i]);
+            gkoPool.returnObject("",active[i]);
         }
 
         try { Thread.sleep(1000L); } catch(final InterruptedException e) { }
-        assertTrue("Should be less than 500 idle, found " + 
pool.getNumIdle(""),pool.getNumIdle("") < 500);
+        assertTrue("Should be less than 500 idle, found " + 
gkoPool.getNumIdle(""),gkoPool.getNumIdle("") < 500);
         try { Thread.sleep(600L); } catch(final InterruptedException e) { }
-        assertTrue("Should be less than 400 idle, found " + 
pool.getNumIdle(""),pool.getNumIdle("") < 400);
+        assertTrue("Should be less than 400 idle, found " + 
gkoPool.getNumIdle(""),gkoPool.getNumIdle("") < 400);
         try { Thread.sleep(600L); } catch(final InterruptedException e) { }
-        assertTrue("Should be less than 300 idle, found " + 
pool.getNumIdle(""),pool.getNumIdle("") < 300);
+        assertTrue("Should be less than 300 idle, found " + 
gkoPool.getNumIdle(""),gkoPool.getNumIdle("") < 300);
         try { Thread.sleep(600L); } catch(final InterruptedException e) { }
-        assertTrue("Should be less than 200 idle, found " + 
pool.getNumIdle(""),pool.getNumIdle("") < 200);
+        assertTrue("Should be less than 200 idle, found " + 
gkoPool.getNumIdle(""),gkoPool.getNumIdle("") < 200);
         try { Thread.sleep(600L); } catch(final InterruptedException e) { }
-        assertTrue("Should be less than 100 idle, found " + 
pool.getNumIdle(""),pool.getNumIdle("") < 100);
+        assertTrue("Should be less than 100 idle, found " + 
gkoPool.getNumIdle(""),gkoPool.getNumIdle("") < 100);
         try { Thread.sleep(600L); } catch(final InterruptedException e) { }
-        assertEquals("Should be zero idle, found " + 
pool.getNumIdle(""),0,pool.getNumIdle(""));
+        assertEquals("Should be zero idle, found " + 
gkoPool.getNumIdle(""),0,gkoPool.getNumIdle(""));
 
         for(int i=0;i<500;i++) {
-            active[i] = pool.borrowObject("");
+            active[i] = gkoPool.borrowObject("");
         }
         for(int i=0;i<500;i++) {
-            pool.returnObject("",active[i]);
+            gkoPool.returnObject("",active[i]);
         }
 
         try { Thread.sleep(1000L); } catch(final InterruptedException e) { }
-        assertTrue("Should be less than 500 idle, found " + 
pool.getNumIdle(""),pool.getNumIdle("") < 500);
+        assertTrue("Should be less than 500 idle, found " + 
gkoPool.getNumIdle(""),gkoPool.getNumIdle("") < 500);
         try { Thread.sleep(600L); } catch(final InterruptedException e) { }
-        assertTrue("Should be less than 400 idle, found " + 
pool.getNumIdle(""),pool.getNumIdle("") < 400);
+        assertTrue("Should be less than 400 idle, found " + 
gkoPool.getNumIdle(""),gkoPool.getNumIdle("") < 400);
         try { Thread.sleep(600L); } catch(final InterruptedException e) { }
-        assertTrue("Should be less than 300 idle, found " + 
pool.getNumIdle(""),pool.getNumIdle("") < 300);
+        assertTrue("Should be less than 300 idle, found " + 
gkoPool.getNumIdle(""),gkoPool.getNumIdle("") < 300);
         try { Thread.sleep(600L); } catch(final InterruptedException e) { }
-        assertTrue("Should be less than 200 idle, found " + 
pool.getNumIdle(""),pool.getNumIdle("") < 200);
+        assertTrue("Should be less than 200 idle, found " + 
gkoPool.getNumIdle(""),gkoPool.getNumIdle("") < 200);
         try { Thread.sleep(600L); } catch(final InterruptedException e) { }
-        assertTrue("Should be less than 100 idle, found " + 
pool.getNumIdle(""),pool.getNumIdle("") < 100);
+        assertTrue("Should be less than 100 idle, found " + 
gkoPool.getNumIdle(""),gkoPool.getNumIdle("") < 100);
         try { Thread.sleep(600L); } catch(final InterruptedException e) { }
-        assertEquals("Should be zero idle, found " + 
pool.getNumIdle(""),0,pool.getNumIdle(""));
+        assertEquals("Should be zero idle, found " + 
gkoPool.getNumIdle(""),0,gkoPool.getNumIdle(""));
     }
 
     @Test(timeout=60000)
     public void testEviction2() throws Exception {
-        pool.setMaxIdlePerKey(500);
-        pool.setMaxTotalPerKey(500);
-        pool.setNumTestsPerEvictionRun(100);
-        pool.setMinEvictableIdleTimeMillis(500L);
-        pool.setTimeBetweenEvictionRunsMillis(500L);
+        gkoPool.setMaxIdlePerKey(500);
+        gkoPool.setMaxTotalPerKey(500);
+        gkoPool.setNumTestsPerEvictionRun(100);
+        gkoPool.setMinEvictableIdleTimeMillis(500L);
+        gkoPool.setTimeBetweenEvictionRunsMillis(500L);
 
         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");
+            active[i] = gkoPool.borrowObject("");
+            active2[i] = gkoPool.borrowObject("2");
         }
         for(int i=0;i<500;i++) {
-            pool.returnObject("",active[i]);
-            pool.returnObject("2",active2[i]);
+            gkoPool.returnObject("",active[i]);
+            gkoPool.returnObject("2",active2[i]);
         }
 
         try { Thread.sleep(1100L); } catch(final InterruptedException e) { }
-        assertTrue("Should be less than 1000 idle, found " + 
pool.getNumIdle(),pool.getNumIdle() < 1000);
+        assertTrue("Should be less than 1000 idle, found " + 
gkoPool.getNumIdle(),gkoPool.getNumIdle() < 1000);
         try { Thread.sleep(600L); } catch(final InterruptedException e) { }
-        assertTrue("Should be less than 900 idle, found " + 
pool.getNumIdle(),pool.getNumIdle() < 900);
+        assertTrue("Should be less than 900 idle, found " + 
gkoPool.getNumIdle(),gkoPool.getNumIdle() < 900);
         try { Thread.sleep(600L); } catch(final InterruptedException e) { }
-        assertTrue("Should be less than 800 idle, found " + 
pool.getNumIdle(),pool.getNumIdle() < 800);
+        assertTrue("Should be less than 800 idle, found " + 
gkoPool.getNumIdle(),gkoPool.getNumIdle() < 800);
         try { Thread.sleep(600L); } catch(final InterruptedException e) { }
-        assertTrue("Should be less than 700 idle, found " + 
pool.getNumIdle(),pool.getNumIdle() < 700);
+        assertTrue("Should be less than 700 idle, found " + 
gkoPool.getNumIdle(),gkoPool.getNumIdle() < 700);
         try { Thread.sleep(600L); } catch(final InterruptedException e) { }
-        assertTrue("Should be less than 600 idle, found " + 
pool.getNumIdle(),pool.getNumIdle() < 600);
+        assertTrue("Should be less than 600 idle, found " + 
gkoPool.getNumIdle(),gkoPool.getNumIdle() < 600);
         try { Thread.sleep(600L); } catch(final InterruptedException e) { }
-        assertTrue("Should be less than 500 idle, found " + 
pool.getNumIdle(),pool.getNumIdle() < 500);
+        assertTrue("Should be less than 500 idle, found " + 
gkoPool.getNumIdle(),gkoPool.getNumIdle() < 500);
         try { Thread.sleep(600L); } catch(final InterruptedException e) { }
-        assertTrue("Should be less than 400 idle, found " + 
pool.getNumIdle(),pool.getNumIdle() < 400);
+        assertTrue("Should be less than 400 idle, found " + 
gkoPool.getNumIdle(),gkoPool.getNumIdle() < 400);
         try { Thread.sleep(600L); } catch(final InterruptedException e) { }
-        assertTrue("Should be less than 300 idle, found " + 
pool.getNumIdle(),pool.getNumIdle() < 300);
+        assertTrue("Should be less than 300 idle, found " + 
gkoPool.getNumIdle(),gkoPool.getNumIdle() < 300);
         try { Thread.sleep(600L); } catch(final InterruptedException e) { }
-        assertTrue("Should be less than 200 idle, found " + 
pool.getNumIdle(),pool.getNumIdle() < 200);
+        assertTrue("Should be less than 200 idle, found " + 
gkoPool.getNumIdle(),gkoPool.getNumIdle() < 200);
         try { Thread.sleep(600L); } catch(final InterruptedException e) { }
-        assertTrue("Should be less than 100 idle, found " + 
pool.getNumIdle(),pool.getNumIdle() < 100);
+        assertTrue("Should be less than 100 idle, found " + 
gkoPool.getNumIdle(),gkoPool.getNumIdle() < 100);
         try { Thread.sleep(600L); } catch(final InterruptedException e) { }
-        assertEquals("Should be zero idle, found " + 
pool.getNumIdle(),0,pool.getNumIdle());
+        assertEquals("Should be zero idle, found " + 
gkoPool.getNumIdle(),0,gkoPool.getNumIdle());
     }
 
     /**
@@ -573,10 +573,10 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
 
     @Test(timeout=60000)
     public void testThreaded1() throws Exception {
-        pool.setMaxTotalPerKey(15);
-        pool.setMaxIdlePerKey(15);
-        pool.setMaxWaitMillis(1000L);
-        runTestThreads(20, 100, 50, pool);
+        gkoPool.setMaxTotalPerKey(15);
+        gkoPool.setMaxIdlePerKey(15);
+        gkoPool.setMaxWaitMillis(1000L);
+        runTestThreads(20, 100, 50, gkoPool);
     }
 
     /**
@@ -589,166 +589,166 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
     @Test(timeout=60000)
     public void testMaxTotalInvariant() throws Exception {
         final int maxTotal = 15;
-        factory.setEvenValid(false);     // Every other validation fails
-        factory.setDestroyLatency(100);  // Destroy takes 100 ms
-        factory.setMaxTotalPerKey(maxTotal);  // (makes - destroys) bound
-        factory.setValidationEnabled(true);
-        pool.setMaxTotal(maxTotal);
-        pool.setMaxIdlePerKey(-1);
-        pool.setTestOnReturn(true);
-        pool.setMaxWaitMillis(10000L);
-        runTestThreads(5, 10, 50, pool);
+        simpleFactory.setEvenValid(false);     // Every other validation fails
+        simpleFactory.setDestroyLatency(100);  // Destroy takes 100 ms
+        simpleFactory.setMaxTotalPerKey(maxTotal);  // (makes - destroys) bound
+        simpleFactory.setValidationEnabled(true);
+        gkoPool.setMaxTotal(maxTotal);
+        gkoPool.setMaxIdlePerKey(-1);
+        gkoPool.setTestOnReturn(true);
+        gkoPool.setMaxWaitMillis(10000L);
+        runTestThreads(5, 10, 50, gkoPool);
     }
 
     @Test(timeout=60000)
     public void testMinIdle() throws Exception {
-        pool.setMaxIdlePerKey(500);
-        pool.setMinIdlePerKey(5);
-        pool.setMaxTotalPerKey(10);
-        pool.setNumTestsPerEvictionRun(0);
-        pool.setMinEvictableIdleTimeMillis(50L);
-        pool.setTimeBetweenEvictionRunsMillis(100L);
-        pool.setTestWhileIdle(true);
+        gkoPool.setMaxIdlePerKey(500);
+        gkoPool.setMinIdlePerKey(5);
+        gkoPool.setMaxTotalPerKey(10);
+        gkoPool.setNumTestsPerEvictionRun(0);
+        gkoPool.setMinEvictableIdleTimeMillis(50L);
+        gkoPool.setTimeBetweenEvictionRunsMillis(100L);
+        gkoPool.setTestWhileIdle(true);
 
 
         //Generate a random key
         final String key = "A";
 
-        pool.preparePool(key);
+        gkoPool.preparePool(key);
 
         try { Thread.sleep(150L); } catch(final InterruptedException e) { }
-        assertTrue("Should be 5 idle, found " + 
pool.getNumIdle(),pool.getNumIdle() == 5);
+        assertTrue("Should be 5 idle, found " + 
gkoPool.getNumIdle(),gkoPool.getNumIdle() == 5);
 
         final String[] active = new String[5];
-        active[0] = pool.borrowObject(key);
+        active[0] = gkoPool.borrowObject(key);
 
         try { Thread.sleep(150L); } catch(final InterruptedException e) { }
-        assertTrue("Should be 5 idle, found " + 
pool.getNumIdle(),pool.getNumIdle() == 5);
+        assertTrue("Should be 5 idle, found " + 
gkoPool.getNumIdle(),gkoPool.getNumIdle() == 5);
 
         for(int i=1 ; i<5 ; i++) {
-            active[i] = pool.borrowObject(key);
+            active[i] = gkoPool.borrowObject(key);
         }
 
         try { Thread.sleep(150L); } catch(final InterruptedException e) { }
-        assertTrue("Should be 5 idle, found " + 
pool.getNumIdle(),pool.getNumIdle() == 5);
+        assertTrue("Should be 5 idle, found " + 
gkoPool.getNumIdle(),gkoPool.getNumIdle() == 5);
 
         for(int i=0 ; i<5 ; i++) {
-            pool.returnObject(key, active[i]);
+            gkoPool.returnObject(key, active[i]);
         }
 
         try { Thread.sleep(150L); } catch(final InterruptedException e) { }
-        assertTrue("Should be 10 idle, found " + 
pool.getNumIdle(),pool.getNumIdle() == 10);
+        assertTrue("Should be 10 idle, found " + 
gkoPool.getNumIdle(),gkoPool.getNumIdle() == 10);
     }
 
     @Test(timeout=60000)
     public void testMinIdleMaxTotalPerKey() throws Exception {
-        pool.setMaxIdlePerKey(500);
-        pool.setMinIdlePerKey(5);
-        pool.setMaxTotalPerKey(10);
-        pool.setNumTestsPerEvictionRun(0);
-        pool.setMinEvictableIdleTimeMillis(50L);
-        pool.setTimeBetweenEvictionRunsMillis(100L);
-        pool.setTestWhileIdle(true);
+        gkoPool.setMaxIdlePerKey(500);
+        gkoPool.setMinIdlePerKey(5);
+        gkoPool.setMaxTotalPerKey(10);
+        gkoPool.setNumTestsPerEvictionRun(0);
+        gkoPool.setMinEvictableIdleTimeMillis(50L);
+        gkoPool.setTimeBetweenEvictionRunsMillis(100L);
+        gkoPool.setTestWhileIdle(true);
 
         final String key = "A";
 
-        pool.preparePool(key);
+        gkoPool.preparePool(key);
         assertTrue("Should be 5 idle, found " +
-                pool.getNumIdle(),pool.getNumIdle() == 5);
+                gkoPool.getNumIdle(),gkoPool.getNumIdle() == 5);
 
         try { Thread.sleep(150L); } catch(final InterruptedException e) { }
-        assertTrue("Should be 5 idle, found " + 
pool.getNumIdle(),pool.getNumIdle() == 5);
+        assertTrue("Should be 5 idle, found " + 
gkoPool.getNumIdle(),gkoPool.getNumIdle() == 5);
 
         final String[] active = new String[10];
 
         try { Thread.sleep(150L); } catch(final InterruptedException e) { }
-        assertTrue("Should be 5 idle, found " + 
pool.getNumIdle(),pool.getNumIdle() == 5);
+        assertTrue("Should be 5 idle, found " + 
gkoPool.getNumIdle(),gkoPool.getNumIdle() == 5);
 
         for(int i=0 ; i<5 ; i++) {
-            active[i] = pool.borrowObject(key);
+            active[i] = gkoPool.borrowObject(key);
         }
 
         try { Thread.sleep(150L); } catch(final InterruptedException e) { }
-        assertTrue("Should be 5 idle, found " + 
pool.getNumIdle(),pool.getNumIdle() == 5);
+        assertTrue("Should be 5 idle, found " + 
gkoPool.getNumIdle(),gkoPool.getNumIdle() == 5);
 
         for(int i=0 ; i<5 ; i++) {
-            pool.returnObject(key, active[i]);
+            gkoPool.returnObject(key, active[i]);
         }
 
         try { Thread.sleep(150L); } catch(final InterruptedException e) { }
-        assertTrue("Should be 10 idle, found " + 
pool.getNumIdle(),pool.getNumIdle() == 10);
+        assertTrue("Should be 10 idle, found " + 
gkoPool.getNumIdle(),gkoPool.getNumIdle() == 10);
 
         for(int i=0 ; i<10 ; i++) {
-            active[i] = pool.borrowObject(key);
+            active[i] = gkoPool.borrowObject(key);
         }
 
         try { Thread.sleep(150L); } catch(final InterruptedException e) { }
-        assertTrue("Should be 0 idle, found " + 
pool.getNumIdle(),pool.getNumIdle() == 0);
+        assertTrue("Should be 0 idle, found " + 
gkoPool.getNumIdle(),gkoPool.getNumIdle() == 0);
 
         for(int i=0 ; i<10 ; i++) {
-            pool.returnObject(key, active[i]);
+            gkoPool.returnObject(key, active[i]);
         }
 
         try { Thread.sleep(150L); } catch(final InterruptedException e) { }
-        assertTrue("Should be 10 idle, found " + 
pool.getNumIdle(),pool.getNumIdle() == 10);
+        assertTrue("Should be 10 idle, found " + 
gkoPool.getNumIdle(),gkoPool.getNumIdle() == 10);
     }
 
     @Test(timeout=60000)
     public void testMinIdleNoPreparePool() throws Exception {
-        pool.setMaxIdlePerKey(500);
-        pool.setMinIdlePerKey(5);
-        pool.setMaxTotalPerKey(10);
-        pool.setNumTestsPerEvictionRun(0);
-        pool.setMinEvictableIdleTimeMillis(50L);
-        pool.setTimeBetweenEvictionRunsMillis(100L);
-        pool.setTestWhileIdle(true);
+        gkoPool.setMaxIdlePerKey(500);
+        gkoPool.setMinIdlePerKey(5);
+        gkoPool.setMaxTotalPerKey(10);
+        gkoPool.setNumTestsPerEvictionRun(0);
+        gkoPool.setMinEvictableIdleTimeMillis(50L);
+        gkoPool.setTimeBetweenEvictionRunsMillis(100L);
+        gkoPool.setTestWhileIdle(true);
 
 
         //Generate a random key
         final String key = "A";
 
         try { Thread.sleep(150L); } catch(final InterruptedException e) { }
-        assertTrue("Should be 0 idle, found " + 
pool.getNumIdle(),pool.getNumIdle() == 0);
+        assertTrue("Should be 0 idle, found " + 
gkoPool.getNumIdle(),gkoPool.getNumIdle() == 0);
 
-        final Object active = pool.borrowObject(key);
+        final Object active = gkoPool.borrowObject(key);
         assertNotNull(active);
 
         try { Thread.sleep(150L); } catch(final InterruptedException e) { }
-        assertTrue("Should be 5 idle, found " + 
pool.getNumIdle(),pool.getNumIdle() == 5);
+        assertTrue("Should be 5 idle, found " + 
gkoPool.getNumIdle(),gkoPool.getNumIdle() == 5);
     }
 
     @Test(timeout=60000)
     public void testFIFO() throws Exception {
-        pool.setLifo(false);
+        gkoPool.setLifo(false);
         final String key = "key";
-        pool.addObject(key); // "key0"
-        pool.addObject(key); // "key1"
-        pool.addObject(key); // "key2"
-        assertEquals("Oldest", "key0", pool.borrowObject(key));
-        assertEquals("Middle", "key1", pool.borrowObject(key));
-        assertEquals("Youngest", "key2", pool.borrowObject(key));
-        final String s = pool.borrowObject(key);
+        gkoPool.addObject(key); // "key0"
+        gkoPool.addObject(key); // "key1"
+        gkoPool.addObject(key); // "key2"
+        assertEquals("Oldest", "key0", gkoPool.borrowObject(key));
+        assertEquals("Middle", "key1", gkoPool.borrowObject(key));
+        assertEquals("Youngest", "key2", gkoPool.borrowObject(key));
+        final String s = gkoPool.borrowObject(key);
         assertEquals("new-3", "key3", s);
-        pool.returnObject(key, s);
-        assertEquals("returned", s, pool.borrowObject(key));
-        assertEquals("new-4", "key4", pool.borrowObject(key));
+        gkoPool.returnObject(key, s);
+        assertEquals("returned", s, gkoPool.borrowObject(key));
+        assertEquals("new-4", "key4", gkoPool.borrowObject(key));
     }
 
     @Test(timeout=60000)
     public void testLIFO() throws Exception {
-        pool.setLifo(true);
+        gkoPool.setLifo(true);
         final String key = "key";
-        pool.addObject(key); // "key0"
-        pool.addObject(key); // "key1"
-        pool.addObject(key); // "key2"
-        assertEquals("Youngest", "key2", pool.borrowObject(key));
-        assertEquals("Middle", "key1", pool.borrowObject(key));
-        assertEquals("Oldest", "key0", pool.borrowObject(key));
-        final String s = pool.borrowObject(key);
+        gkoPool.addObject(key); // "key0"
+        gkoPool.addObject(key); // "key1"
+        gkoPool.addObject(key); // "key2"
+        assertEquals("Youngest", "key2", gkoPool.borrowObject(key));
+        assertEquals("Middle", "key1", gkoPool.borrowObject(key));
+        assertEquals("Oldest", "key0", gkoPool.borrowObject(key));
+        final String s = gkoPool.borrowObject(key);
         assertEquals("new-3", "key3", s);
-        pool.returnObject(key, s);
-        assertEquals("returned", s, pool.borrowObject(key));
-        assertEquals("new-4", "key4", pool.borrowObject(key));
+        gkoPool.returnObject(key, s);
+        assertEquals("returned", s, gkoPool.borrowObject(key));
+        assertEquals("new-4", "key4", gkoPool.borrowObject(key));
     }
 
     /**
@@ -1073,18 +1073,18 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
         config.setLifo(false);
         config.setMaxIdlePerKey(maxTotal);
 
-        pool = new GenericKeyedObjectPool<>(factory, config);
+        gkoPool = new GenericKeyedObjectPool<>(simpleFactory, config);
 
         // Exhaust the pool
         final String[] objects = new String[maxTotal];
         for (int i = 0; i < maxTotal; i++) {
-            objects[i] = pool.borrowObject("0");
+            objects[i] = gkoPool.borrowObject("0");
         }
 
         // Start and park threads waiting to borrow objects
         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");
+            threads[i] = new TestThread(gkoPool, 1, 0, 2000, false, "0" + 
String.valueOf(i % maxTotal), "0");
             final Thread t = new Thread(threads[i]);
             t.start();
             // Short delay to ensure threads start in correct order
@@ -1097,7 +1097,7 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
 
         // Return objects, other threads should get served in order
         for (int i = 0; i < maxTotal; i++) {
-            pool.returnObject("0", objects[i]);
+            gkoPool.returnObject("0", objects[i]);
         }
 
         // Wait for threads to finish
@@ -1197,95 +1197,95 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
 
     @Test(timeout=60000)
     public void testExceptionOnPassivateDuringReturn() throws Exception {
-        final String obj = pool.borrowObject("one");
-        factory.setThrowExceptionOnPassivate(true);
-        pool.returnObject("one", obj);
-        assertEquals(0,pool.getNumIdle());
-        pool.close();
+        final String obj = gkoPool.borrowObject("one");
+        simpleFactory.setThrowExceptionOnPassivate(true);
+        gkoPool.returnObject("one", obj);
+        assertEquals(0,gkoPool.getNumIdle());
+        gkoPool.close();
     }
 
     @Test(timeout=60000)
     public void testExceptionOnDestroyDuringBorrow() throws Exception {
-        factory.setThrowExceptionOnDestroy(true);
-        factory.setValidationEnabled(true);
-        pool.setTestOnBorrow(true);
-        pool.borrowObject("one");
-        factory.setValid(false); // Make validation fail on next borrow attempt
+        simpleFactory.setThrowExceptionOnDestroy(true);
+        simpleFactory.setValidationEnabled(true);
+        gkoPool.setTestOnBorrow(true);
+        gkoPool.borrowObject("one");
+        simpleFactory.setValid(false); // Make validation fail on next borrow 
attempt
         try {
-            pool.borrowObject("one");
+            gkoPool.borrowObject("one");
             fail("Expecting NoSuchElementException");
         } catch (final NoSuchElementException ex) {
             // expected
         }
-        assertEquals(1, pool.getNumActive("one"));
-        assertEquals(0, pool.getNumIdle("one"));
-        assertEquals(1, pool.getNumActive());
-        assertEquals(0, pool.getNumIdle());
+        assertEquals(1, gkoPool.getNumActive("one"));
+        assertEquals(0, gkoPool.getNumIdle("one"));
+        assertEquals(1, gkoPool.getNumActive());
+        assertEquals(0, gkoPool.getNumIdle());
     }
 
     @Test(timeout=60000)
     public void testExceptionOnDestroyDuringReturn() throws Exception {
-        factory.setThrowExceptionOnDestroy(true);
-        factory.setValidationEnabled(true);
-        pool.setTestOnReturn(true);
-        final String obj1 = pool.borrowObject("one");
-        pool.borrowObject("one");
-        factory.setValid(false); // Make validation fail
-        pool.returnObject("one", obj1);
-        assertEquals(1, pool.getNumActive("one"));
-        assertEquals(0, pool.getNumIdle("one"));
-        assertEquals(1, pool.getNumActive());
-        assertEquals(0, pool.getNumIdle());
+        simpleFactory.setThrowExceptionOnDestroy(true);
+        simpleFactory.setValidationEnabled(true);
+        gkoPool.setTestOnReturn(true);
+        final String obj1 = gkoPool.borrowObject("one");
+        gkoPool.borrowObject("one");
+        simpleFactory.setValid(false); // Make validation fail
+        gkoPool.returnObject("one", obj1);
+        assertEquals(1, gkoPool.getNumActive("one"));
+        assertEquals(0, gkoPool.getNumIdle("one"));
+        assertEquals(1, gkoPool.getNumActive());
+        assertEquals(0, gkoPool.getNumIdle());
     }
 
     @Test(timeout=60000)
     public void testExceptionOnActivateDuringBorrow() throws Exception {
-        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);
+        final String obj1 = gkoPool.borrowObject("one");
+        final String obj2 = gkoPool.borrowObject("one");
+        gkoPool.returnObject("one", obj1);
+        gkoPool.returnObject("one", obj2);
+        simpleFactory.setThrowExceptionOnActivate(true);
+        simpleFactory.setEvenValid(false);
         // Activation will now throw every other time
         // First attempt throws, but loop continues and second succeeds
-        final String obj = pool.borrowObject("one");
-        assertEquals(1, pool.getNumActive("one"));
-        assertEquals(0, pool.getNumIdle("one"));
-        assertEquals(1, pool.getNumActive());
-        assertEquals(0, pool.getNumIdle());
-
-        pool.returnObject("one", obj);
-        factory.setValid(false);
+        final String obj = gkoPool.borrowObject("one");
+        assertEquals(1, gkoPool.getNumActive("one"));
+        assertEquals(0, gkoPool.getNumIdle("one"));
+        assertEquals(1, gkoPool.getNumActive());
+        assertEquals(0, gkoPool.getNumIdle());
+
+        gkoPool.returnObject("one", obj);
+        simpleFactory.setValid(false);
         // Validation will now fail on activation when borrowObject returns
         // an idle instance, and then when attempting to create a new instance
         try {
-            pool.borrowObject("one");
+            gkoPool.borrowObject("one");
             fail("Expecting NoSuchElementException");
         } catch (final NoSuchElementException ex) {
             // expected
         }
-        assertEquals(0, pool.getNumActive("one"));
-        assertEquals(0, pool.getNumIdle("one"));
-        assertEquals(0, pool.getNumActive());
-        assertEquals(0, pool.getNumIdle());
+        assertEquals(0, gkoPool.getNumActive("one"));
+        assertEquals(0, gkoPool.getNumIdle("one"));
+        assertEquals(0, gkoPool.getNumActive());
+        assertEquals(0, gkoPool.getNumIdle());
     }
 
     @Test(timeout=60000)
     public void testBlockedKeyDoesNotBlockPool() throws Exception {
-        pool.setBlockWhenExhausted(true);
-        pool.setMaxWaitMillis(5000);
-        pool.setMaxTotalPerKey(1);
-        pool.setMaxTotal(-1);
-        pool.borrowObject("one");
+        gkoPool.setBlockWhenExhausted(true);
+        gkoPool.setMaxWaitMillis(5000);
+        gkoPool.setMaxTotalPerKey(1);
+        gkoPool.setMaxTotal(-1);
+        gkoPool.borrowObject("one");
         final long start = System.currentTimeMillis();
         // Needs to be in a separate thread as this will block
-        final Runnable simple = new SimpleTestThread<>(pool, "one");
+        final Runnable simple = new SimpleTestThread<>(gkoPool, "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");
+        gkoPool.borrowObject("two");
         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
@@ -1315,13 +1315,13 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
         final long holdTime = 4 * maxWait; // how long to hold connection
         final int keyCount = 4; // number of different keys
         final int threadsPerKey = 5; // number of threads to grab the key 
initially
-        pool.setBlockWhenExhausted(true);
-        pool.setMaxWaitMillis(maxWait);
-        pool.setMaxTotalPerKey(threadsPerKey);
+        gkoPool.setBlockWhenExhausted(true);
+        gkoPool.setMaxWaitMillis(maxWait);
+        gkoPool.setMaxTotalPerKey(threadsPerKey);
         // Create enough threads so half the threads will have to wait
         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);
+            wtt[i] = new WaitingTestThread(gkoPool,Integer.toString(i % 
keyCount),holdTime);
         }
         final long origin = System.currentTimeMillis()-1000;
         for (final WaitingTestThread element : wtt) {
@@ -1422,22 +1422,22 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
      */
     @Test(timeout=60000)
     public void testLivenessPerKey() throws Exception {
-        pool.setMaxIdlePerKey(3);
-        pool.setMaxTotal(3);
-        pool.setMaxTotalPerKey(3);
-        pool.setMaxWaitMillis(3000);  // Really a timeout for the test
+        gkoPool.setMaxIdlePerKey(3);
+        gkoPool.setMaxTotal(3);
+        gkoPool.setMaxTotalPerKey(3);
+        gkoPool.setMaxWaitMillis(3000);  // Really a timeout for the test
 
         // Check out and briefly hold 3 "1"s
-        final WaitingTestThread t1 = new WaitingTestThread(pool, "1", 100);
-        final WaitingTestThread t2 = new WaitingTestThread(pool, "1", 100);
-        final WaitingTestThread t3 = new WaitingTestThread(pool, "1", 100);
+        final WaitingTestThread t1 = new WaitingTestThread(gkoPool, "1", 100);
+        final WaitingTestThread t2 = new WaitingTestThread(gkoPool, "1", 100);
+        final WaitingTestThread t3 = new WaitingTestThread(gkoPool, "1", 100);
         t1.start();
         t2.start();
         t3.start();
 
         // Try to get a "2" while all capacity is in use.
         // Thread will park waiting on empty queue. Verify it gets served.
-        pool.borrowObject("2");
+        gkoPool.borrowObject("2");
     }
 
     /**
@@ -1448,25 +1448,25 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
      */
     @Test(timeout=60000)
     public void testClear() throws Exception {
-        pool.setMaxTotal(2);
-        pool.setMaxTotalPerKey(2);
-        pool.setBlockWhenExhausted(false);
-        pool.addObject("one");
-        pool.addObject("one");
-        assertEquals(2, pool.getNumIdle());
-        pool.clear("one");
-        assertEquals(0, pool.getNumIdle());
-        assertEquals(0, pool.getNumIdle("one"));
-        final String obj1 = pool.borrowObject("one");
-        final String obj2 = pool.borrowObject("one");
-        pool.returnObject("one", obj1);
-        pool.returnObject("one", obj2);
-        pool.clear();
-        assertEquals(0, pool.getNumIdle());
-        assertEquals(0, pool.getNumIdle("one"));
-        pool.borrowObject("one");
-        pool.borrowObject("one");
-        pool.close();
+        gkoPool.setMaxTotal(2);
+        gkoPool.setMaxTotalPerKey(2);
+        gkoPool.setBlockWhenExhausted(false);
+        gkoPool.addObject("one");
+        gkoPool.addObject("one");
+        assertEquals(2, gkoPool.getNumIdle());
+        gkoPool.clear("one");
+        assertEquals(0, gkoPool.getNumIdle());
+        assertEquals(0, gkoPool.getNumIdle("one"));
+        final String obj1 = gkoPool.borrowObject("one");
+        final String obj2 = gkoPool.borrowObject("one");
+        gkoPool.returnObject("one", obj1);
+        gkoPool.returnObject("one", obj2);
+        gkoPool.clear();
+        assertEquals(0, gkoPool.getNumIdle());
+        assertEquals(0, gkoPool.getNumIdle("one"));
+        gkoPool.borrowObject("one");
+        gkoPool.borrowObject("one");
+        gkoPool.close();
     }
 
     /**
@@ -1476,22 +1476,22 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
      */
     @Test(timeout=60000)
     public void testWhenExhaustedBlockClosePool() throws Exception {
-        pool.setMaxTotalPerKey(1);
-        pool.setBlockWhenExhausted(true);
-        pool.setMaxWaitMillis(-1);
-        final String obj1 = pool.borrowObject("a");
+        gkoPool.setMaxTotalPerKey(1);
+        gkoPool.setBlockWhenExhausted(true);
+        gkoPool.setMaxWaitMillis(-1);
+        final String obj1 = gkoPool.borrowObject("a");
 
         // Make sure an object was obtained
         assertNotNull(obj1);
 
         // Create a separate thread to try and borrow another object
-        final WaitingTestThread wtt = new WaitingTestThread(pool, "a", 200);
+        final WaitingTestThread wtt = new WaitingTestThread(gkoPool, "a", 200);
         wtt.start();
         // Give wtt time to start
         Thread.sleep(200);
 
         // close the pool (Bug POOL-189)
-        pool.close();
+        gkoPool.close();
 
         // Give interrupt time to take effect
         Thread.sleep(200);
@@ -1511,16 +1511,16 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
         // Get allObjects and idleObjects loaded with some instances
         final int nObjects = 1000;
         final String key = "one";
-        pool.setMaxTotal(nObjects);
-        pool.setMaxTotalPerKey(nObjects);
-        pool.setMaxIdlePerKey(nObjects);
+        gkoPool.setMaxTotal(nObjects);
+        gkoPool.setMaxTotalPerKey(nObjects);
+        gkoPool.setMaxIdlePerKey(nObjects);
         final String [] obj = new String[nObjects];
         for (int i = 0; i < nObjects; i++) {
-            obj[i] = pool.borrowObject(key);
+            obj[i] = gkoPool.borrowObject(key);
         }
         for (int i = 0; i < nObjects; i++) {
             if (i % 2 == 0) {
-                pool.returnObject(key, obj[i]);
+                gkoPool.returnObject(key, obj[i]);
             }
         }
         final int nThreads = 20;
@@ -1539,7 +1539,7 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
             // Launch nThreads threads all trying to invalidate the target
             for (int i = 0; i < nThreads; i++) {
                 threads[i] =
-                        new InvalidateThread(pool,key, obj[targ.intValue()]);
+                        new InvalidateThread(gkoPool,key, 
obj[targ.intValue()]);
             }
             for (int i = 0; i < nThreads; i++) {
                 new Thread(threads[i]).start();
@@ -1553,7 +1553,7 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
                 Thread.sleep(100);
             }
         }
-        Assert.assertEquals(nIterations, pool.getDestroyedCount());
+        Assert.assertEquals(nIterations, gkoPool.getDestroyedCount());
     }
 
     // POOL-259
@@ -1562,47 +1562,48 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
         final SimpleFactory<String> factory = new SimpleFactory<>();
         // Give makeObject a little latency
         factory.setMakeLatency(200);
-        final GenericKeyedObjectPool<String, String> pool = new 
GenericKeyedObjectPool<>(
-                factory, new GenericKeyedObjectPoolConfig());
-        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);
-        Assert.assertTrue(pool.getMeanBorrowWaitTimeMillis() >= 100);
-        pool.returnObject("one", s);
-        pool.borrowObject("one");
-        // Second borrow does not have to wait on create, average should be 
about 100
-        Assert.assertTrue(pool.getMaxBorrowWaitTimeMillis() > 100);
-        Assert.assertTrue(pool.getMeanBorrowWaitTimeMillis() < 200);
-        Assert.assertTrue(pool.getMeanBorrowWaitTimeMillis() > 20);
+        try (final GenericKeyedObjectPool<String, String> pool = new 
GenericKeyedObjectPool<>(factory,
+                new GenericKeyedObjectPoolConfig())) {
+            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);
+            Assert.assertTrue(pool.getMeanBorrowWaitTimeMillis() >= 100);
+            pool.returnObject("one", s);
+            pool.borrowObject("one");
+            // Second borrow does not have to wait on create, average should 
be about 100
+            Assert.assertTrue(pool.getMaxBorrowWaitTimeMillis() > 100);
+            Assert.assertTrue(pool.getMeanBorrowWaitTimeMillis() < 200);
+            Assert.assertTrue(pool.getMeanBorrowWaitTimeMillis() > 20);
+        }
     }
 
     // POOL-276
     @Test
     public void testValidationOnCreateOnly() throws Exception {
-        factory.enableValidation = true;
+        simpleFactory.enableValidation = true;
 
-        pool.setMaxTotal(1);
-        pool.setTestOnCreate(true);
-        pool.setTestOnBorrow(false);
-        pool.setTestOnReturn(false);
-        pool.setTestWhileIdle(false);
+        gkoPool.setMaxTotal(1);
+        gkoPool.setTestOnCreate(true);
+        gkoPool.setTestOnBorrow(false);
+        gkoPool.setTestOnReturn(false);
+        gkoPool.setTestWhileIdle(false);
 
-        final String o1 = pool.borrowObject("KEY");
+        final String o1 = gkoPool.borrowObject("KEY");
         Assert.assertEquals("KEY0", o1);
         final Timer t = new Timer();
         t.schedule(
                 new TimerTask() {
                     @Override
                     public void run() {
-                        pool.returnObject("KEY", o1);
+                        gkoPool.returnObject("KEY", o1);
                     }
                 }, 3000);
 
-        final String o2 = pool.borrowObject("KEY");
+        final String o2 = gkoPool.borrowObject("KEY");
         Assert.assertEquals("KEY0", o2);
 
-        Assert.assertEquals(1, factory.validateCounter);
+        Assert.assertEquals(1, simpleFactory.validateCounter);
     }
 
     /**
@@ -1953,7 +1954,7 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
      */
     @Test(timeout=60000)
     public void testJmxRegistration() {
-        final ObjectName oname = pool.getJmxName();
+        final ObjectName oname = gkoPool.getJmxName();
         final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
         final Set<ObjectName> result = mbs.queryNames(oname, null);
         Assert.assertEquals(1, result.size());
@@ -1969,7 +1970,7 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
      */
     @Test
     public void testInvalidateWaiting()
-        throws Exception {
+            throws Exception {
 
         final GenericKeyedObjectPoolConfig config = new 
GenericKeyedObjectPoolConfig();
         config.setMaxTotal(2);
@@ -1982,50 +1983,49 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
         config.setTestWhileIdle(true);
         config.setTimeBetweenEvictionRunsMillis(-1);
 
-        final GenericKeyedObjectPool<Integer, Object> pool =
-                new GenericKeyedObjectPool<>(
-                        new ObjectFactory(), config);
-
-        // Allocate both objects with this thread
-        pool.borrowObject(Integer.valueOf(1)); // object1
-        final Object object2 = pool.borrowObject(Integer.valueOf(1));
-
-        // Cause a thread to block waiting for an object
-        final ExecutorService executorService =
-                Executors.newSingleThreadExecutor(new DaemonThreadFactory());
-        final Semaphore signal = new Semaphore(0);
-        final Future<Exception> result = executorService.submit(new 
Callable<Exception>() {
+        try (final GenericKeyedObjectPool<Integer, Object> pool = new 
GenericKeyedObjectPool<>(new ObjectFactory(),
+                config)) {
+
+            // Allocate both objects with this thread
+            pool.borrowObject(Integer.valueOf(1)); // object1
+            final Object object2 = pool.borrowObject(Integer.valueOf(1));
+
+            // Cause a thread to block waiting for an object
+            final ExecutorService executorService = 
Executors.newSingleThreadExecutor(new DaemonThreadFactory());
+            final Semaphore signal = new Semaphore(0);
+            final Future<Exception> result = executorService.submit(new 
Callable<Exception>() {
+
+                @Override
+                public Exception call() {
+                    try {
+                        signal.release();
+                        final Object object3 = 
pool.borrowObject(Integer.valueOf(1));
+                        pool.returnObject(Integer.valueOf(1), object3);
+                        signal.release();
+                    } catch (final Exception e) {
+                        return e;
+                    } catch (final Throwable e) {
+                        return new Exception(e);
+                    }
 
-            @Override
-            public Exception call() {
-                try {
-                    signal.release();
-                    final Object object3 = 
pool.borrowObject(Integer.valueOf(1));
-                    pool.returnObject(Integer.valueOf(1), object3);
-                    signal.release();
-                } catch (final Exception e) {
-                    return e;
-                } catch (final Throwable e) {
-                    return new Exception(e);
+                    return null;
                 }
+            });
 
-                return null;
-            }
-        });
+            // Wait for the thread to start
+            assertTrue(signal.tryAcquire(5, TimeUnit.SECONDS));
 
-        // Wait for the thread to start
-        assertTrue(signal.tryAcquire(5, TimeUnit.SECONDS));
+            // Attempt to ensure that test thread is blocked waiting for an 
object
+            Thread.sleep(500);
 
-        // Attempt to ensure that test thread is blocked waiting for an object
-        Thread.sleep(500);
+            pool.invalidateObject(Integer.valueOf(1), object2);
 
-        pool.invalidateObject(Integer.valueOf(1), object2);
+            assertTrue("Call to invalidateObject did not unblock pool 
waiters.",
+                    signal.tryAcquire(2, TimeUnit.SECONDS));
 
-        assertTrue("Call to invalidateObject did not unblock pool waiters.",
-                   signal.tryAcquire(2, TimeUnit.SECONDS));
-
-        if (result.get() != null) {
-            throw new AssertionError(result.get());
+            if (result.get() != null) {
+                throw new AssertionError(result.get());
+            }
         }
     }
 
@@ -2112,20 +2112,20 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
      * @throws Exception May occur in some failure modes
      */
     @Test
-    public void testMakeObjectException()
-        throws Exception {
+    public void testMakeObjectException() throws Exception {
         final SimpleFactory<String> factory = new SimpleFactory<>();
-        final GenericKeyedObjectPool<String, String> pool = new 
GenericKeyedObjectPool<>(factory);
-        pool.setMaxTotalPerKey(1);
-        pool.setBlockWhenExhausted(false);
-        factory.exceptionOnCreate = true;
-        try {
+        try (final GenericKeyedObjectPool<String, String> pool = new 
GenericKeyedObjectPool<>(factory)) {
+            pool.setMaxTotalPerKey(1);
+            pool.setBlockWhenExhausted(false);
+            factory.exceptionOnCreate = true;
+            try {
+                pool.borrowObject("One");
+            } catch (final Exception ex) {
+                // expected
+            }
+            factory.exceptionOnCreate = false;
             pool.borrowObject("One");
-        } catch (final Exception ex) {
-            // expected
         }
-        factory.exceptionOnCreate = false;
-        pool.borrowObject("One");
     }
 
     /**
@@ -2239,13 +2239,13 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
     @Test
     public void testMaxTotalWithThreads() throws Exception {
 
-        pool.setMaxTotalPerKey(2);
-        pool.setMaxTotal(1);
+        gkoPool.setMaxTotalPerKey(2);
+        gkoPool.setMaxTotal(1);
 
         final int holdTime = 2000;
 
-        final TestThread<String> testA = new TestThread<>(pool, 1, 0, 
holdTime, false, null, "a");
-        final TestThread<String> testB = new TestThread<>(pool, 1, 0, 
holdTime, false, null, "b");
+        final TestThread<String> testA = new TestThread<>(gkoPool, 1, 0, 
holdTime, false, null, "a");
+        final TestThread<String> testB = new TestThread<>(gkoPool, 1, 0, 
holdTime, false, null, "b");
 
         final Thread threadA = new Thread(testA);
         final Thread threadB = new Thread(testB);

Reply via email to