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())) {

Reply via email to