Repository: commons-pool
Updated Branches:
  refs/heads/master 928b3e78d -> 882c7f038


Refactor duplicate code. Closes #6.

Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/882c7f03
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/882c7f03
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/882c7f03

Branch: refs/heads/master
Commit: 882c7f0384069cf8f8cda3d508fd844870a7d3cf
Parents: 928b3e7
Author: Yulin Wang <jieyeb...@gmail.com>
Authored: Mon Jun 11 10:00:14 2018 -0600
Committer: Gary Gregory <garydgreg...@gmail.com>
Committed: Mon Jun 11 10:00:14 2018 -0600

----------------------------------------------------------------------
 .../pool2/impl/BaseGenericObjectPool.java       | 16 ++++++++
 .../pool2/impl/GenericKeyedObjectPool.java      | 39 +++++++++-----------
 .../commons/pool2/impl/GenericObjectPool.java   |  9 +----
 3 files changed, 34 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/882c7f03/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java 
b/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
index 372cf87..aaaa7bc 100644
--- a/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
@@ -40,6 +40,7 @@ import javax.management.ObjectName;
 
 import org.apache.commons.pool2.BaseObject;
 import org.apache.commons.pool2.PooledObject;
+import org.apache.commons.pool2.PooledObjectState;
 import org.apache.commons.pool2.SwallowedExceptionListener;
 
 /**
@@ -967,6 +968,21 @@ public abstract class BaseGenericObjectPool<T> extends 
BaseObject {
     }
 
     /**
+     * Marks the object as returning to the pool.
+     * @param pooledObject instance to return to the keyed pool
+     */
+    protected void markReturningState(PooledObject<T> pooledObject) {
+        synchronized(pooledObject) {
+            final PooledObjectState state = pooledObject.getState();
+            if (state != PooledObjectState.ALLOCATED) {
+                throw new IllegalStateException(
+                        "Object has already been returned to this pool or is 
invalid");
+            }
+            pooledObject.markReturning(); // Keep from being marked abandoned
+        }
+    }
+
+    /**
      * Unregisters this pool's MBean.
      */
     final void jmxUnregister() {

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/882c7f03/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java 
b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
index 5d269fe..e80cd7e 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
@@ -473,14 +473,7 @@ public class GenericKeyedObjectPool<K,T> extends 
BaseGenericObjectPool<T>
                     "Returned object not currently part of this pool");
         }
 
-        synchronized(p) {
-            final PooledObjectState state = p.getState();
-            if (state != PooledObjectState.ALLOCATED) {
-                throw new IllegalStateException(
-                        "Object has already been returned to this pool or is 
invalid");
-            }
-            p.markReturning(); // Keep from being marked abandoned (once GKOP 
does this)
-        }
+        markReturningState(p);
 
         final long activeTime = p.getActiveTimeMillis();
 
@@ -492,13 +485,7 @@ public class GenericKeyedObjectPool<K,T> extends 
BaseGenericObjectPool<T>
                     } catch (final Exception e) {
                         swallowException(e);
                     }
-                    if (objectDeque.idleObjects.hasTakeWaiters()) {
-                        try {
-                            addObject(key);
-                        } catch (final Exception e) {
-                            swallowException(e);
-                        }
-                    }
+                    whenWaitersAddObject(key, objectDeque.idleObjects);
                     return;
                 }
             }
@@ -512,13 +499,7 @@ public class GenericKeyedObjectPool<K,T> extends 
BaseGenericObjectPool<T>
                 } catch (final Exception e) {
                     swallowException(e);
                 }
-                if (objectDeque.idleObjects.hasTakeWaiters()) {
-                    try {
-                        addObject(key);
-                    } catch (final Exception e) {
-                        swallowException(e);
-                    }
-                }
+                whenWaitersAddObject(key, objectDeque.idleObjects);
                 return;
             }
 
@@ -558,6 +539,20 @@ public class GenericKeyedObjectPool<K,T> extends 
BaseGenericObjectPool<T>
         }
     }
 
+    /**
+     * Whether there is at least one thread waiting on this deque, add an pool 
object.
+     * @param key
+     * @param idleObjects
+     */
+    private void whenWaitersAddObject(final K key, 
LinkedBlockingDeque<PooledObject<T>> idleObjects) {
+        if (idleObjects.hasTakeWaiters()) {
+            try {
+                addObject(key);
+            } catch (final Exception e) {
+                swallowException(e);
+            }
+        }
+    }
 
     /**
      * {@inheritDoc}

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/882c7f03/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java 
b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
index 2928c25..c41b5c2 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
@@ -536,14 +536,7 @@ public class GenericObjectPool<T> extends 
BaseGenericObjectPool<T>
             return; // Object was abandoned and removed
         }
 
-        synchronized(p) {
-            final PooledObjectState state = p.getState();
-            if (state != PooledObjectState.ALLOCATED) {
-                throw new IllegalStateException(
-                        "Object has already been returned to this pool or is 
invalid");
-            }
-            p.markReturning(); // Keep from being marked abandoned
-        }
+        markReturningState(p);
 
         final long activeTime = p.getActiveTimeMillis();
 

Reply via email to