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); } }