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;
}