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