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/08/07 13:37:30 UTC
[commons-pool] 02/03: Use forEach and streams
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
commit f370532e9c30b6574e6e31a2c0cc063aec4306da
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Aug 7 09:37:11 2022 -0400
Use forEach and streams
- Be more specific with local and private types for IDEs and static
analysis.
---
.../commons/pool2/impl/GenericKeyedObjectPool.java | 36 ++++++++--------------
.../commons/pool2/impl/GenericObjectPool.java | 4 +--
2 files changed, 13 insertions(+), 27 deletions(-)
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 aece8351..7e03146c 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
@@ -193,7 +193,6 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener
private static final String ONAME_BASE =
"org.apache.commons.pool2:type=GenericKeyedObjectPool,name=";
- //--- configuration attributes ---------------------------------------------
private volatile int maxIdlePerKey =
GenericKeyedObjectPoolConfig.DEFAULT_MAX_IDLE_PER_KEY;
@@ -637,7 +636,7 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener
public void clearOldest() {
// build sorted map of idle objects
- final Map<PooledObject<T>, K> map = new TreeMap<>();
+ final TreeMap<PooledObject<T>, K> map = new TreeMap<>();
poolMap.forEach((key, value) -> {
// Each item into the map using the PooledObject object as the
@@ -1189,14 +1188,10 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener
@Override
public Map<String, Integer> getNumActivePerKey() {
- final HashMap<String, Integer> result = new HashMap<>();
-
- poolMap.forEach((key, objectDequeue) -> {
- result.put(key.toString(), Integer.valueOf(
- objectDequeue.getAllObjects().size() -
- objectDequeue.getIdleObjects().size()));
- });
- return result;
+ return poolMap.entrySet().stream().collect(Collectors.toMap(
+ e -> e.getKey().toString(),
+ e -> Integer.valueOf(e.getValue().getAllObjects().size() - e.getValue().getIdleObjects().size()),
+ (t, u) -> u));
}
@Override
@@ -1204,9 +1199,6 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener
return poolMap.values().stream().mapToInt(e -> e.getIdleObjects().size()).sum();
}
-
- //--- JMX support ----------------------------------------------------------
-
@Override
public int getNumIdle(final K key) {
final ObjectDeque<T> objectDeque = poolMap.get(key);
@@ -1214,7 +1206,7 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener
}
/**
- * Calculate the number of objects to test in a run of the idle object
+ * Gets the number of objects to test in a run of the idle object
* evictor.
*
* @return The number of objects to test for validity
@@ -1229,7 +1221,7 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener
}
/**
- * Return an estimate of the number of threads currently blocked waiting for
+ * Gets an estimate of the number of threads currently blocked waiting for
* an object from the pool. This is intended for monitoring only, not for
* synchronization control.
*
@@ -1246,7 +1238,7 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener
}
/**
- * Return an estimate of the number of threads currently blocked waiting for
+ * Gets an estimate of the number of threads currently blocked waiting for
* an object from the pool for each key. This is intended for
* monitoring only, not for synchronization control.
*
@@ -1256,12 +1248,9 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener
@Override
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();
- result.put(k.toString(), getBlockWhenExhausted() ? Integer.valueOf(deque.getIdleObjects().getTakeQueueLength()) : ZERO);
- }
+ poolMap.forEach((k, deque) -> result.put(k.toString(), getBlockWhenExhausted() ?
+ Integer.valueOf(deque.getIdleObjects().getTakeQueueLength()) :
+ ZERO));
return result;
}
@@ -1274,7 +1263,7 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener
}
/**
- * Checks to see if there are any threads currently waiting to borrow
+ * Tests to see if there are any threads currently waiting to borrow
* objects but are blocked waiting for more objects to become available.
*
* @return {@code true} if there is at least one thread waiting otherwise
@@ -1351,7 +1340,6 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener
@Override
public Map<String, List<DefaultPooledObjectInfo>> listAllObjects() {
final Map<String, List<DefaultPooledObjectInfo>> result = new HashMap<>();
-
poolMap.forEach((k, v) -> result.put(k.toString(), v.getAllObjects().values().stream().map(DefaultPooledObjectInfo::new).collect(Collectors.toList())));
return result;
}
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 1e105cc2..006aeccf 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
@@ -18,7 +18,6 @@ package org.apache.commons.pool2.impl;
import java.time.Duration;
import java.util.ArrayList;
-import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@@ -102,8 +101,7 @@ public class GenericObjectPool<T, E extends Exception> extends BaseGenericObject
* #_maxActive}. Map keys are pooled objects, values are the PooledObject
* wrappers used internally by the pool.
*/
- private final Map<IdentityWrapper<T>, PooledObject<T>> allObjects =
- new ConcurrentHashMap<>();
+ private final ConcurrentHashMap<IdentityWrapper<T>, PooledObject<T>> allObjects = new ConcurrentHashMap<>();
/*
* The combined count of the currently created objects and those in the