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 79f493bf Add 
org.apache.commons.pool2.PooledObject.nonNull(PooledObject)
79f493bf is described below

commit 79f493bf6957a1be509e71f874b278441b1e01a9
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Tue Jun 10 13:55:58 2025 -0400

    Add org.apache.commons.pool2.PooledObject.nonNull(PooledObject)
---
 .../org/apache/commons/pool3/PooledObject.java     | 11 ++++++++
 .../commons/pool3/impl/GenericKeyedObjectPool.java |  4 +--
 .../commons/pool3/impl/GenericObjectPool.java      |  4 +--
 .../pool3/impl/ResilientPooledObjectFactory.java   |  2 +-
 ...edPool407Factory.java => PooledObjectTest.java} | 30 ++++++++++++++--------
 .../pool3/pool407/AbstractKeyedPool407Factory.java |  2 +-
 .../pool3/pool407/AbstractPool407Factory.java      |  2 +-
 7 files changed, 37 insertions(+), 18 deletions(-)

diff --git a/src/main/java/org/apache/commons/pool3/PooledObject.java 
b/src/main/java/org/apache/commons/pool3/PooledObject.java
index aeeaa1cd..e3b89cc5 100644
--- a/src/main/java/org/apache/commons/pool3/PooledObject.java
+++ b/src/main/java/org/apache/commons/pool3/PooledObject.java
@@ -44,6 +44,17 @@ public interface PooledObject<T> extends 
Comparable<PooledObject<T>> {
         return pooledObject == null || pooledObject.getObject() == null;
     }
 
+    /**
+     * Tests whether the given PooledObject isn't null <em>and</em> doesn't 
wraps a null.
+     *
+     * @param pooledObject the PooledObject to test.
+     * @return whether the given PooledObject isn't null <em>and</em> doesn't 
wraps a null.
+     * @since 2.13.0
+     */
+    static boolean nonNull(final PooledObject<?> pooledObject) {
+        return pooledObject != null && pooledObject.getObject() != null;
+    }
+
     /**
      * Allocates the object.
      *
diff --git 
a/src/main/java/org/apache/commons/pool3/impl/GenericKeyedObjectPool.java 
b/src/main/java/org/apache/commons/pool3/impl/GenericKeyedObjectPool.java
index 62a6f1a1..eae0930d 100644
--- a/src/main/java/org/apache/commons/pool3/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool3/impl/GenericKeyedObjectPool.java
@@ -299,7 +299,7 @@ public class GenericKeyedObjectPool<K, T, E extends 
Exception> extends BaseGener
      * @throws E If the associated factory fails to passivate the object
      */
     private void addIdleObject(final K key, final PooledObject<T> p) throws E {
-        if (!PooledObject.isNull(p)) {
+        if (PooledObject.nonNull(p)) {
             factory.passivateObject(key, p);
             final LinkedBlockingDeque<PooledObject<T>> idleObjects = 
poolMap.get(key).getIdleObjects();
             if (getLifo()) {
@@ -436,7 +436,7 @@ public class GenericKeyedObjectPool<K, T, E extends 
Exception> extends BaseGener
                 p = objectDeque.getIdleObjects().pollFirst();
                 if (p == null) {
                     p = create(key);
-                    if (!PooledObject.isNull(p)) {
+                    if (PooledObject.nonNull(p)) {
                         create = true;
                     }
                 }
diff --git a/src/main/java/org/apache/commons/pool3/impl/GenericObjectPool.java 
b/src/main/java/org/apache/commons/pool3/impl/GenericObjectPool.java
index 12d9decd..e444df06 100644
--- a/src/main/java/org/apache/commons/pool3/impl/GenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool3/impl/GenericObjectPool.java
@@ -193,7 +193,7 @@ public class GenericObjectPool<T, E extends Exception> 
extends BaseGenericObject
      * @throws E If the factory fails to passivate the object
      */
     private void addIdleObject(final PooledObject<T> p) throws E {
-        if (!PooledObject.isNull(p)) {
+        if (PooledObject.nonNull(p)) {
             factory.passivateObject(p);
             if (getLifo()) {
                 idleObjects.addFirst(p);
@@ -303,7 +303,7 @@ public class GenericObjectPool<T, E extends Exception> 
extends BaseGenericObject
             p = idleObjects.pollFirst();
             if (p == null) {
                 p = create(remainingWaitDuration);
-                if (!PooledObject.isNull(p)) {
+                if (PooledObject.nonNull(p)) {
                     create = true;
                 }
             }
diff --git 
a/src/main/java/org/apache/commons/pool3/impl/ResilientPooledObjectFactory.java 
b/src/main/java/org/apache/commons/pool3/impl/ResilientPooledObjectFactory.java
index c64219c3..e7d0190d 100644
--- 
a/src/main/java/org/apache/commons/pool3/impl/ResilientPooledObjectFactory.java
+++ 
b/src/main/java/org/apache/commons/pool3/impl/ResilientPooledObjectFactory.java
@@ -413,7 +413,7 @@ public class ResilientPooledObjectFactory<T, E extends 
Exception> implements Poo
         final MakeEvent makeEvent = new MakeEvent();
         try {
             final PooledObject<T> obj = factory.makeObject();
-            makeEvent.setSuccess(!PooledObject.isNull(obj));
+            makeEvent.setSuccess(PooledObject.nonNull(obj));
             return obj;
         } catch (final Throwable t) {
             makeEvent.setSuccess(false);
diff --git 
a/src/test/java/org/apache/commons/pool3/pool407/AbstractKeyedPool407Factory.java
 b/src/test/java/org/apache/commons/pool3/PooledObjectTest.java
similarity index 51%
copy from 
src/test/java/org/apache/commons/pool3/pool407/AbstractKeyedPool407Factory.java
copy to src/test/java/org/apache/commons/pool3/PooledObjectTest.java
index 3e1c7120..81720119 100644
--- 
a/src/test/java/org/apache/commons/pool3/pool407/AbstractKeyedPool407Factory.java
+++ b/src/test/java/org/apache/commons/pool3/PooledObjectTest.java
@@ -15,22 +15,30 @@
  * limitations under the License.
  */
 
-package org.apache.commons.pool3.pool407;
+package org.apache.commons.pool3;
 
-import org.apache.commons.pool3.BaseKeyedPooledObjectFactory;
-import org.apache.commons.pool3.PooledObject;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.apache.commons.pool3.impl.DefaultPooledObject;
+import org.junit.jupiter.api.Test;
 
 /**
- * Tests POOL-407.
+ * Tests {@link PooledObject}.
  */
-public abstract class AbstractKeyedPool407Factory extends 
BaseKeyedPooledObjectFactory<String, KeyedPool407Fixture, RuntimeException> {
-
-    abstract boolean isDefaultMakeObject();
+public class PooledObjectTest {
 
-    @Override
-    public boolean validateObject(final String key, final 
PooledObject<KeyedPool407Fixture> p) {
-        // TODO Should this be enough even if wrap() does throw and returns a 
DefaultPooledObject wrapping a null?
-        return !PooledObject.isNull(p);
+    @Test
+    void testIsNull() {
+        assertTrue(PooledObject.isNull(null));
+        assertTrue(PooledObject.isNull(new DefaultPooledObject<>(null)));
+        assertFalse(PooledObject.isNull(new DefaultPooledObject<>("a")));
     }
 
+    @Test
+    void testNonNull() {
+        assertFalse(PooledObject.nonNull(null));
+        assertFalse(PooledObject.nonNull(new DefaultPooledObject<>(null)));
+        assertTrue(PooledObject.nonNull(new DefaultPooledObject<>("a")));
+    }
 }
diff --git 
a/src/test/java/org/apache/commons/pool3/pool407/AbstractKeyedPool407Factory.java
 
b/src/test/java/org/apache/commons/pool3/pool407/AbstractKeyedPool407Factory.java
index 3e1c7120..766d4ca2 100644
--- 
a/src/test/java/org/apache/commons/pool3/pool407/AbstractKeyedPool407Factory.java
+++ 
b/src/test/java/org/apache/commons/pool3/pool407/AbstractKeyedPool407Factory.java
@@ -30,7 +30,7 @@ public abstract class AbstractKeyedPool407Factory extends 
BaseKeyedPooledObjectF
     @Override
     public boolean validateObject(final String key, final 
PooledObject<KeyedPool407Fixture> p) {
         // TODO Should this be enough even if wrap() does throw and returns a 
DefaultPooledObject wrapping a null?
-        return !PooledObject.isNull(p);
+        return PooledObject.nonNull(p);
     }
 
 }
diff --git 
a/src/test/java/org/apache/commons/pool3/pool407/AbstractPool407Factory.java 
b/src/test/java/org/apache/commons/pool3/pool407/AbstractPool407Factory.java
index d3987fdc..60d83fe7 100644
--- a/src/test/java/org/apache/commons/pool3/pool407/AbstractPool407Factory.java
+++ b/src/test/java/org/apache/commons/pool3/pool407/AbstractPool407Factory.java
@@ -43,7 +43,7 @@ public abstract class AbstractPool407Factory extends 
BasePooledObjectFactory<Poo
     @Override
     public boolean validateObject(final PooledObject<Pool407Fixture> p) {
         // TODO Should this be enough even if wrap() does throw and returns a 
DefaultPooledObject wrapping a null?
-        return !PooledObject.isNull(p);
+        return PooledObject.isNull(p);
     }
 
 }

Reply via email to