On 8/26/19 3:23 PM, ggreg...@apache.org wrote:
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-pool.git


The following commit(s) were added to refs/heads/master by this push:
      new 41f4e41  [POOL-374] 
org.apache.commons.pool2.impl.GenericKeyedObjectPool.returnObject(K, T) should 
throw IllegalStateException instead of NullPointerException when a key is not 
found in the pool map.
41f4e41 is described below

commit 41f4e410b3e7dc34b294ac9941721073bf5e5271
Author: Gary Gregory <gardgreg...@gmail.com>
AuthorDate: Mon Aug 26 18:23:20 2019 -0400

     [POOL-374]
     org.apache.commons.pool2.impl.GenericKeyedObjectPool.returnObject(K, T)
     should throw IllegalStateException instead of NullPointerException when
     a key is not found in the pool map.
---
  src/changes/changes.xml                                      |  7 ++++++-
  .../apache/commons/pool2/impl/GenericKeyedObjectPool.java    |  5 +++++
  .../commons/pool2/impl/TestGenericKeyedObjectPool.java       | 12 ++++++++++--
  3 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 929d1d9..89b89a5 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -43,7 +43,12 @@ The <action> type attribute can be add,update,fix,remove.
      <title>Apache Commons Pool Release Notes</title>
    </properties>
    <body>
-  <release version="2.7.0" date="2019-MM-DD" description="This is a feature release 
(Java 8).">
+  <release version="2.7.1" date="2019-MM-DD" description="This is a maintenance 
release (Java 8).">
+    <action dev="ggregory" issue="POOL-374" type="fix" due-to="Gary Gregory, Phil 
Steitz">
+       org.apache.commons.pool2.impl.GenericKeyedObjectPool.returnObject(K, T) 
should throw IllegalStateException instead of NullPointerException when a key 
is not found in the pool map.
+    </action>
+  </release>
+  <release version="2.7.0" date="2019-07-25" description="This is a feature release 
(Java 8).">
      <action dev="ggregory" issue="POOL-364" type="update" due-to="Gary 
Gregory">
         Update from Java 7 to Java 8.
      </action>
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 b3fc96f..7a282f1 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
@@ -447,6 +447,11 @@ public class GenericKeyedObjectPool<K, T> extends 
BaseGenericObjectPool<T>
final ObjectDeque<T> objectDeque = poolMap.get(key); + if (objectDeque == null) {
+            throw new IllegalStateException(
+                    "Returned object not currently part of this pool");

Might be better to say it is the key that is not found, e.g.

"Key not found" or "No keyed pool found under the given key" or something like that.  The problem is with the key, not the returning object identity.

Phil
+        }
+
          final PooledObject<T> p = objectDeque.getAllObjects().get(new 
IdentityWrapper<>(obj));
if (p == null) {
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 7b5b5ac..f148bc0 100644
--- 
a/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java
+++ 
b/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java
@@ -195,6 +195,13 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
          assertEquals(2,gkoPool.getNumIdle("B"));
      }
+ @Test(expected = IllegalStateException.class)
+    public void testReturnObjectThrowsIllegalStateException() {
+        try (final GenericKeyedObjectPool<String, String> pool = new 
GenericKeyedObjectPool<>(new SimpleFactory<String>())) {
+            pool.returnObject("Foo", "Bar");
+        }
+    }
+
      @Test(timeout=60000)
      public void testMaxIdle() throws Exception {
          gkoPool.setMaxTotalPerKey(100);
@@ -1069,7 +1076,7 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
          final int numThreads = 40;
          final int maxTotal = 40;
- final GenericKeyedObjectPoolConfig config = new GenericKeyedObjectPoolConfig();
+        final GenericKeyedObjectPoolConfig<String> config = new 
GenericKeyedObjectPoolConfig<String>();
          config.setMaxTotalPerKey(maxTotal);
          config.setFairness(true);
          config.setLifo(false);
@@ -1086,7 +1093,7 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
          // 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(gkoPool, 1, 0, 2000, false, "0" + 
String.valueOf(i % maxTotal), "0");
+            threads[i] = new TestThread<String>(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
@@ -2371,6 +2378,7 @@ public class TestGenericKeyedObjectPool extends 
TestKeyedObjectPool {
              return new DefaultPooledObject<>(value);
          }
      }
+
  }


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

Reply via email to