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 d2d4ef8442a337e5f039731884901d350d90b359 Author: Gary Gregory <gardgreg...@gmail.com> AuthorDate: Sun Aug 7 08:06:22 2022 -0400 Simplify: Keys and values cannot be null inside a ConcurrentHashMap. Javadoc: "Like Hashtable but unlike HashMap, this classdoes not allow null to be used as a key or value." --- .../commons/pool2/impl/GenericKeyedObjectPool.java | 44 ++++++++-------------- 1 file changed, 15 insertions(+), 29 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 3b56daa7..aece8351 100644 --- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java +++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java @@ -640,13 +640,9 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener final Map<PooledObject<T>, K> map = new TreeMap<>(); poolMap.forEach((key, value) -> { - // Protect against possible NPE if key has been removed in another - // thread. Not worth locking the keys while this loop completes. - if (value != null) { - // Each item into the map using the PooledObject object as the - // key. It then gets sorted based on the idle time - value.getIdleObjects().forEach(p -> map.put(p, key)); - } + // Each item into the map using the PooledObject object as the + // key. It then gets sorted based on the idle time + value.getIdleObjects().forEach(p -> map.put(p, key)); }); // Now iterate created map and kill the first 15% plus one to account @@ -1196,11 +1192,9 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener final HashMap<String, Integer> result = new HashMap<>(); poolMap.forEach((key, objectDequeue) -> { - if (key != null && objectDequeue != null) { - result.put(key.toString(), Integer.valueOf( - objectDequeue.getAllObjects().size() - - objectDequeue.getIdleObjects().size())); - } + result.put(key.toString(), Integer.valueOf( + objectDequeue.getAllObjects().size() - + objectDequeue.getIdleObjects().size())); }); return result; } @@ -1266,9 +1260,7 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener 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); - } + result.put(k.toString(), getBlockWhenExhausted() ? Integer.valueOf(deque.getIdleObjects().getTakeQueueLength()) : ZERO); } return result; } @@ -1289,7 +1281,7 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener * {@code false} */ private boolean hasBorrowWaiters() { - return getBlockWhenExhausted() && poolMap.values().stream().anyMatch(deque -> deque != null && deque.getIdleObjects().hasTakeWaiters()); + return getBlockWhenExhausted() && poolMap.values().stream().anyMatch(deque -> deque.getIdleObjects().hasTakeWaiters()); } /** @@ -1360,11 +1352,7 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener public Map<String, List<DefaultPooledObjectInfo>> listAllObjects() { final Map<String, List<DefaultPooledObjectInfo>> result = new HashMap<>(); - poolMap.forEach((k, value) -> { - if (value != null) { - result.put(k.toString(), value.getAllObjects().values().stream().map(DefaultPooledObjectInfo::new).collect(Collectors.toList())); - } - }); + poolMap.forEach((k, v) -> result.put(k.toString(), v.getAllObjects().values().stream().map(DefaultPooledObjectInfo::new).collect(Collectors.toList()))); return result; } @@ -1579,14 +1567,12 @@ public class GenericKeyedObjectPool<K, T, E extends Exception> extends BaseGener for (final Entry<K, GenericKeyedObjectPool<K, T, E>.ObjectDeque<T>> entry : poolMap.entrySet()) { final K k = entry.getKey(); final ObjectDeque<T> deque = entry.getValue(); - if (deque != null) { - final LinkedBlockingDeque<PooledObject<T>> pool = deque.getIdleObjects(); - final int queueLength = pool.getTakeQueueLength(); - if (getNumActive(k) < maxTotalPerKeySave && queueLength > maxQueueLength) { - maxQueueLength = queueLength; - mostLoaded = pool; - loadedKey = k; - } + final LinkedBlockingDeque<PooledObject<T>> pool = deque.getIdleObjects(); + final int queueLength = pool.getTakeQueueLength(); + if (getNumActive(k) < maxTotalPerKeySave && queueLength > maxQueueLength) { + maxQueueLength = queueLength; + mostLoaded = pool; + loadedKey = k; } }