You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2022/07/17 13:31:36 UTC

[commons-pool] branch master updated: Use forEach()

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 2e7c3490 Use forEach()
2e7c3490 is described below

commit 2e7c3490cd463be71ba4d23801375a1a541a4170
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Jul 17 09:31:31 2022 -0400

    Use forEach()
---
 .../java/org/apache/commons/pool2/PoolUtils.java   |  9 +++------
 .../apache/commons/pool2/impl/EvictionTimer.java   | 22 +++++++++-------------
 .../commons/pool2/impl/GenericKeyedObjectPool.java | 10 ++++------
 3 files changed, 16 insertions(+), 25 deletions(-)

diff --git a/src/main/java/org/apache/commons/pool2/PoolUtils.java b/src/main/java/org/apache/commons/pool2/PoolUtils.java
index d94e4849..cc7d4321 100644
--- a/src/main/java/org/apache/commons/pool2/PoolUtils.java
+++ b/src/main/java/org/apache/commons/pool2/PoolUtils.java
@@ -27,6 +27,8 @@ import java.util.TimerTask;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
  * This class consists exclusively of static methods that operate on or return
@@ -1365,12 +1367,7 @@ public final class PoolUtils {
         if (keys == null) {
             throw new IllegalArgumentException(MSG_NULL_KEYS);
         }
-        final Map<K, TimerTask> tasks = new HashMap<>(keys.size());
-        for (final K key : keys) {
-            final TimerTask task = checkMinIdle(keyedPool, key, minIdle, periodMillis);
-            tasks.put(key, task);
-        }
-        return tasks;
+        return keys.stream().collect(Collectors.toMap(Function.identity(), key -> checkMinIdle(keyedPool, key, minIdle, periodMillis)));
     }
 
     /**
diff --git a/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java b/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
index b99e47e7..c49a5682 100644
--- a/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
+++ b/src/main/java/org/apache/commons/pool2/impl/EvictionTimer.java
@@ -74,13 +74,12 @@ class EvictionTimer {
         @Override
         public void run() {
             synchronized (EvictionTimer.class) {
-                for (final Entry<WeakReference<BaseGenericObjectPool<?, ?>.Evictor>, WeakRunner<BaseGenericObjectPool<?, ?>.Evictor>> entry : TASK_MAP
-                        .entrySet()) {
-                    if (entry.getKey().get() == null) {
-                        executor.remove(entry.getValue());
-                        TASK_MAP.remove(entry.getKey());
+                TASK_MAP.forEach((k, v) -> {
+                    if (k.get() == null) {
+                        executor.remove(v);
+                        TASK_MAP.remove(k);
                     }
-                }
+                });
                 if (TASK_MAP.isEmpty() && executor != null) {
                     executor.shutdown();
                     executor.setCorePoolSize(0);
@@ -189,13 +188,10 @@ class EvictionTimer {
      * @param evictor Eviction task to remove
      */
     private static void remove(final BaseGenericObjectPool<?, ?>.Evictor evictor) {
-        for (final Entry<WeakReference<BaseGenericObjectPool<?, ?>.Evictor>, WeakRunner<BaseGenericObjectPool<?, ?>.Evictor>> entry : TASK_MAP.entrySet()) {
-            if (entry.getKey().get() == evictor) {
-                executor.remove(entry.getValue());
-                TASK_MAP.remove(entry.getKey());
-                break;
-            }
-        }
+        TASK_MAP.entrySet().stream().filter(entry -> entry.getKey().get() == evictor).findFirst().ifPresent(entry -> {
+            executor.remove(entry.getValue());
+            TASK_MAP.remove(entry.getKey());
+        });
     }
 
     /**
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 55ad8881..12fca9b9 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
@@ -1269,13 +1269,11 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener
     public Map<String, Integer> getNumWaitersByKey() {
         final Map<String, Integer> result = new HashMap<>();
 
-        for (final Entry<K, ObjectDeque<T>> entry : poolMap.entrySet()) {
-            final K k = entry.getKey();
-            final ObjectDeque<T> deque = entry.getValue();
-            if (deque != null) {
-                result.put(k.toString(), getBlockWhenExhausted() ? Integer.valueOf(deque.getIdleObjects().getTakeQueueLength()) : ZERO);
+        poolMap.forEach((k, v) -> {
+            if (v != null) {
+                result.put(k.toString(), getBlockWhenExhausted() ? Integer.valueOf(v.getIdleObjects().getTakeQueueLength()) : ZERO);
             }
-        }
+        });
         return result;
     }