This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch POOL_2_X in repository https://gitbox.apache.org/repos/asf/commons-pool.git
The following commit(s) were added to refs/heads/POOL_2_X by this push: new 729645c5 Add org.apache.commons.pool2.PooledObject.getObject(PooledObject) 729645c5 is described below commit 729645c52959260f03d693f30f68be037258eefb Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Wed Jun 11 09:13:43 2025 -0400 Add org.apache.commons.pool2.PooledObject.getObject(PooledObject) --- src/changes/changes.xml | 1 + .../java/org/apache/commons/pool2/PooledObject.java | 20 ++++++++++++++++---- .../org/apache/commons/pool2/PooledObjectTest.java | 9 +++++++++ 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 0a68f635..1ec06f67 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -63,6 +63,7 @@ The <action> type attribute can be add,update,fix,remove. <action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.commons.pool2.impl.GenericObjectPool.create(Duration) should normalize a negative duration to zero.</action> <!-- ADD --> <action type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.commons.pool2.PooledObject.nonNull(PooledObject).</action> + <action type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.commons.pool2.PooledObject.getObject(PooledObject).</action> <!-- UPDATE --> <action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.apache.commons:commons-parent from 79 to 81.</action> </release> diff --git a/src/main/java/org/apache/commons/pool2/PooledObject.java b/src/main/java/org/apache/commons/pool2/PooledObject.java index c76871e1..e68fe085 100644 --- a/src/main/java/org/apache/commons/pool2/PooledObject.java +++ b/src/main/java/org/apache/commons/pool2/PooledObject.java @@ -33,26 +33,38 @@ import java.util.Deque; */ public interface PooledObject<T> extends Comparable<PooledObject<T>> { + /** + * Gets the wrapped object or null. + * + * @param <T> the type of object in the pool. + * @param pooledObject the PooledObject to unwrap, may be null. + * @return the wrapped object or null. + * @since 2.13.0 + */ + static <T> T getObject(final PooledObject<T> pooledObject) { + return pooledObject != null ? pooledObject.getObject() : null; + } + /** * Tests whether the given PooledObject is null <em>or</em> wraps a null. * - * @param pooledObject the PooledObject to test. + * @param pooledObject the PooledObject to test, may be null. * @return whether the given PooledObject is null <em>or</em> wraps a null. * @since 2.12.0 */ static boolean isNull(final PooledObject<?> pooledObject) { - return pooledObject == null || pooledObject.getObject() == null; + return getObject(pooledObject) == null; } /** * Tests whether the given PooledObject isn't null <em>and</em> doesn't wraps a null. * - * @param pooledObject the PooledObject to test. + * @param pooledObject the PooledObject to test, may be null. * @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; + return getObject(pooledObject) != null; } /** diff --git a/src/test/java/org/apache/commons/pool2/PooledObjectTest.java b/src/test/java/org/apache/commons/pool2/PooledObjectTest.java index 634bfa45..237eb8e2 100644 --- a/src/test/java/org/apache/commons/pool2/PooledObjectTest.java +++ b/src/test/java/org/apache/commons/pool2/PooledObjectTest.java @@ -17,6 +17,8 @@ package org.apache.commons.pool2; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -28,6 +30,13 @@ import org.junit.jupiter.api.Test; */ public class PooledObjectTest { + @Test + void testGetObject() { + assertNull(PooledObject.getObject(null)); + assertNull(PooledObject.getObject(new DefaultPooledObject<>(null))); + assertNotNull(PooledObject.getObject(new DefaultPooledObject<>("a"))); + } + @Test void testIsNull() { assertTrue(PooledObject.isNull(null));