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 88903bf  Use lambdas. Inline single use local variables.
88903bf is described below

commit 88903bf659ac8ff89ffefa9dd861d3f03e004dfb
Author: Gary Gregory <gardgreg...@gmail.com>
AuthorDate: Mon Jun 28 12:48:28 2021 -0400

    Use lambdas. Inline single use local variables.
---
 .../commons/pool2/impl/BaseGenericObjectPool.java  | 18 +++++++++++
 .../commons/pool2/impl/GenericKeyedObjectPool.java | 24 ++------------
 .../commons/pool2/impl/GenericObjectPool.java      | 37 +++-------------------
 .../pool2/impl/SoftReferenceObjectPool.java        | 18 ++++-------
 4 files changed, 32 insertions(+), 65 deletions(-)

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 0acb7c5..b3c7aea 100644
--- a/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
@@ -23,10 +23,13 @@ import java.lang.management.ManagementFactory;
 import java.lang.ref.WeakReference;
 import java.lang.reflect.InvocationTargetException;
 import java.time.Duration;
+import java.time.Instant;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Deque;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.TimerTask;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.atomic.AtomicLong;
@@ -1790,5 +1793,20 @@ public abstract class BaseGenericObjectPool<T> extends 
BaseObject {
         activeTimes.add(activeTime);
     }
 
+    protected ArrayList<PooledObject<T>> createRemoveList(final 
AbandonedConfig abandonedConfig, final Map<IdentityWrapper<T>, PooledObject<T>> 
allObjects) {
+        final Instant timeout = 
Instant.now().minus(abandonedConfig.getRemoveAbandonedTimeoutDuration());
+        final ArrayList<PooledObject<T>> remove = new ArrayList<>();
+        allObjects.values().forEach(pooledObject -> {
+            synchronized (pooledObject) {
+                if (pooledObject.getState() == PooledObjectState.ALLOCATED &&
+                        pooledObject.getLastUsedInstant().compareTo(timeout) 
<= 0) {
+                    pooledObject.markAbandoned();
+                    remove.add(pooledObject);
+                }
+            }
+        });
+        return remove;
+    }
+
 
 }
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 a6b8a84..b0570a1 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
@@ -17,7 +17,6 @@
 package org.apache.commons.pool2.impl;
 
 import java.time.Duration;
-import java.time.Instant;
 import java.util.ArrayList;
 import java.util.Deque;
 import java.util.HashMap;
@@ -1436,27 +1435,10 @@ public class GenericKeyedObjectPool<K, T> extends 
BaseGenericObjectPool<T>
     @SuppressWarnings("resource") // PrintWriter is managed elsewhere
     private void removeAbandoned(final AbandonedConfig abandonedConfig) {
         for (final Entry<K, GenericKeyedObjectPool<K, T>.ObjectDeque<T>> pool 
: poolMap.entrySet()) {
-            final Map<IdentityWrapper<T>, PooledObject<T>> allObjects = 
pool.getValue().getAllObjects();
-
             // Generate a list of abandoned objects to remove
-            final Instant timeout = 
Instant.now().minus(abandonedConfig.getRemoveAbandonedTimeoutDuration());
-            final ArrayList<PooledObject<T>> remove = new ArrayList<>();
-            final Iterator<PooledObject<T>> it = 
allObjects.values().iterator();
-            while (it.hasNext()) {
-                final PooledObject<T> pooledObject = it.next();
-                synchronized (pooledObject) {
-                    if (pooledObject.getState() == PooledObjectState.ALLOCATED 
&&
-                            
pooledObject.getLastUsedInstant().compareTo(timeout) <= 0) {
-                        pooledObject.markAbandoned();
-                        remove.add(pooledObject);
-                    }
-                }
-            }
-
+            final ArrayList<PooledObject<T>> remove = 
createRemoveList(abandonedConfig, pool.getValue().getAllObjects());
             // Now remove the abandoned objects
-            final Iterator<PooledObject<T>> itr = remove.iterator();
-            while (itr.hasNext()) {
-                final PooledObject<T> pooledObject = itr.next();
+            remove.forEach(pooledObject -> {
                 if (abandonedConfig.getLogAbandoned()) {
                     
pooledObject.printStackTrace(abandonedConfig.getLogWriter());
                 }
@@ -1465,7 +1447,7 @@ public class GenericKeyedObjectPool<K, T> extends 
BaseGenericObjectPool<T>
                 } catch (final Exception e) {
                     swallowException(e);
                 }
-            }
+            });
         }
     }
 
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 0014460..e6405f6 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
@@ -20,12 +20,12 @@ import java.time.Duration;
 import java.time.Instant;
 import java.util.ArrayList;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicLong;
+import java.util.stream.Collectors;
 
 import org.apache.commons.pool2.DestroyMode;
 import org.apache.commons.pool2.ObjectPool;
@@ -896,13 +896,6 @@ public class GenericObjectPool<T> extends 
BaseGenericObjectPool<T>
         return 0;
     }
 
-    //--- Usage tracking support 
-----------------------------------------------
-
-    
-
-
-    //--- JMX support 
----------------------------------------------------------
-
     /**
      * {@inheritDoc}
      * <p>
@@ -963,12 +956,7 @@ public class GenericObjectPool<T> extends 
BaseGenericObjectPool<T>
      */
     @Override
     public Set<DefaultPooledObjectInfo> listAllObjects() {
-        final Set<DefaultPooledObjectInfo> result =
-                new HashSet<>(allObjects.size());
-        for (final PooledObject<T> p : allObjects.values()) {
-            result.add(new DefaultPooledObjectInfo(p));
-        }
-        return result;
+        return 
allObjects.values().stream().map(DefaultPooledObjectInfo::new).collect(Collectors.toSet());
     }
     /**
      * Tries to ensure that {@link #getMinIdle()} idle instances are available
@@ -993,24 +981,9 @@ public class GenericObjectPool<T> extends 
BaseGenericObjectPool<T>
     @SuppressWarnings("resource") // PrintWriter is managed elsewhere
     private void removeAbandoned(final AbandonedConfig abandonedConfig) {
         // Generate a list of abandoned objects to remove
-        final Instant timeout = 
Instant.now().minus(abandonedConfig.getRemoveAbandonedTimeoutDuration());
-        final ArrayList<PooledObject<T>> remove = new ArrayList<>();
-        final Iterator<PooledObject<T>> it = allObjects.values().iterator();
-        while (it.hasNext()) {
-            final PooledObject<T> pooledObject = it.next();
-            synchronized (pooledObject) {
-                if (pooledObject.getState() == PooledObjectState.ALLOCATED &&
-                        pooledObject.getLastUsedInstant().compareTo(timeout) 
<= 0) {
-                    pooledObject.markAbandoned();
-                    remove.add(pooledObject);
-                }
-            }
-        }
-
+        final ArrayList<PooledObject<T>> remove = 
createRemoveList(abandonedConfig, allObjects);
         // Now remove the abandoned objects
-        final Iterator<PooledObject<T>> itr = remove.iterator();
-        while (itr.hasNext()) {
-            final PooledObject<T> pooledObject = itr.next();
+        remove.forEach(pooledObject -> {
             if (abandonedConfig.getLogAbandoned()) {
                 pooledObject.printStackTrace(abandonedConfig.getLogWriter());
             }
@@ -1019,7 +992,7 @@ public class GenericObjectPool<T> extends 
BaseGenericObjectPool<T>
             } catch (final Exception e) {
                 swallowException(e);
             }
-        }
+        });
     }
 
     /**
diff --git 
a/src/main/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java 
b/src/main/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java
index f7c271c..5a3b526 100644
--- a/src/main/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java
@@ -22,6 +22,7 @@ import java.lang.ref.SoftReference;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
+import java.util.Optional;
 
 import org.apache.commons.pool2.BaseObjectPool;
 import org.apache.commons.pool2.ObjectPool;
@@ -232,17 +233,15 @@ public class SoftReferenceObjectPool<T> extends 
BaseObjectPool<T> {
     @Override
     public synchronized void clear() {
         if (null != factory) {
-            final Iterator<PooledSoftReference<T>> iter = 
idleReferences.iterator();
-            while (iter.hasNext()) {
+            idleReferences.forEach(ref -> {
                 try {
-                    final PooledSoftReference<T> ref = iter.next();
                     if (null != ref.getObject()) {
                         factory.destroyObject(ref);
                     }
                 } catch (final Exception e) {
                     // ignore error, keep destroying the rest
                 }
-            }
+            });
         }
         idleReferences.clear();
         pruneClearedReferences();
@@ -290,14 +289,9 @@ public class SoftReferenceObjectPool<T> extends 
BaseObjectPool<T> {
      * @return PooledSoftReference wrapping a soft reference to obj
      */
     private PooledSoftReference<T> findReference(final T obj) {
-        final Iterator<PooledSoftReference<T>> iterator = 
allReferences.iterator();
-        while (iterator.hasNext()) {
-            final PooledSoftReference<T> reference = iterator.next();
-            if (reference.getObject() != null && 
reference.getObject().equals(obj)) {
-                return reference;
-            }
-        }
-        return null;
+        final Optional<PooledSoftReference<T>> first = allReferences.stream()
+                .filter(reference -> reference.getObject() != null && 
reference.getObject().equals(obj)).findFirst();
+        return first.isPresent() ? first.get() : null;
     }
 
     /**

Reply via email to