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
commit 864bf0c47982ec2aea32827d7e17da7302b7f0bb Author: Gary Gregory <[email protected]> AuthorDate: Tue Jan 20 22:04:10 2026 +0000 Add DefaultPooledObjectInfo.getPooledObject(). --- src/changes/changes.xml | 1 + .../apache/commons/pool2/impl/DefaultPooledObjectInfo.java | 11 +++++++++++ .../commons/pool2/impl/TestDefaultPooledObjectInfo.java | 11 +++++++++++ 3 files changed, 23 insertions(+) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index efae18a5..5b049fad 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -51,6 +51,7 @@ The <action> type attribute can be add,update,fix,remove. <!-- ADD --> <action type="add" dev="ggregory" due-to="Philip Helger, Gary Gregory" issue="POOL-430">Make AbandonedConfig.DEFAULT_REMOVE_ABANDONED_TIMEOUT_DURATION public.</action> <action type="add" dev="ggregory" due-to="Gary Gregory">Add EvictionConfig.isEvictionThread().</action> + <action type="add" dev="ggregory" due-to="Gary Gregory">Add DefaultPooledObjectInfo.getPooledObject().</action> <!-- UPDATE --> <action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.apache.commons:commons-parent from 93 to 95.</action> </release> diff --git a/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObjectInfo.java b/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObjectInfo.java index 9251b4b2..c4dae41d 100644 --- a/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObjectInfo.java +++ b/src/main/java/org/apache/commons/pool2/impl/DefaultPooledObjectInfo.java @@ -87,6 +87,16 @@ public class DefaultPooledObjectInfo implements DefaultPooledObjectInfoMBean { return getTimeMillisFormatted(getLastReturnTime()); } + /** + * Gets the pooled object for debugging, use at your own risk, changing the state of this object may have unintended consequences for the pool. + * + * @return the pooled object for debugging, use at your own risk, changing the state of this object may have unintended consequences for the pool. + * @since 2.14.0 + */ + public PooledObject<?> getPooledObject() { + return pooledObject; + } + @Override public String getPooledObjectToString() { return Objects.toString(pooledObject.getObject(), null); @@ -102,6 +112,7 @@ public class DefaultPooledObjectInfo implements DefaultPooledObjectInfoMBean { return new SimpleDateFormat(PATTERN).format(Long.valueOf(millis)); } + /** * @since 2.4.3 */ diff --git a/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObjectInfo.java b/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObjectInfo.java index f8342200..7ff31b24 100644 --- a/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObjectInfo.java +++ b/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObjectInfo.java @@ -44,6 +44,17 @@ class TestDefaultPooledObjectInfo { } } + @Test + void testGetPooledObject() throws Exception { + try (GenericObjectPool<String> pool = new GenericObjectPool<>(new SimpleFactory())) { + pool.borrowObject(); + final Set<DefaultPooledObjectInfo> strings = pool.listAllObjects(); + assertEquals(1, strings.size()); + final DefaultPooledObjectInfo s1Info = strings.iterator().next(); + assertEquals("0", s1Info.getPooledObject().getObject()); + } + } + @Test void testGetPooledObjectToString() throws Exception { try (GenericObjectPool<String> pool = new GenericObjectPool<>(new SimpleFactory())) {
