Author: markt
Date: Tue Mar 15 20:37:58 2016
New Revision: 1735165

URL: http://svn.apache.org/viewvc?rev=1735165&view=rev
Log:
Fix POOL-307
Replace inefficient use of keySet with entrySet in GKOP.

Modified:
    commons/proper/pool/trunk/src/changes/changes.xml
    
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java

Modified: commons/proper/pool/trunk/src/changes/changes.xml
URL: 
http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/changes/changes.xml?rev=1735165&r1=1735164&r2=1735165&view=diff
==============================================================================
--- commons/proper/pool/trunk/src/changes/changes.xml (original)
+++ commons/proper/pool/trunk/src/changes/changes.xml Tue Mar 15 20:37:58 2016
@@ -56,9 +56,12 @@ The <action> type attribute can be add,u
       threads try to borrow an object at the same time and the factory fails to
       create any objects. 
     </action>
-    <action dev="markt" issue="POOL-280" tyoe="update" due-to="Jacopo 
Cappellato">
+    <action dev="markt" issue="POOL-280" type="update" due-to="Jacopo 
Cappellato">
       Small refactoring of borrowObject() to reduce code duplication.
     </action>
+    <action dev="markt" issue="POOL-307" type="update" due-to="Anthony 
Whitford">
+      Replace inefficient use of keySet with entrySet in GKOP.
+    </action>
   </release>
   <release version="2.4.2" date="2015-08-01" description=
  "This is a patch release, including bug fixes only.">

Modified: 
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
URL: 
http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java?rev=1735165&r1=1735164&r2=1735165&view=diff
==============================================================================
--- 
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
 (original)
+++ 
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
 Tue Mar 15 20:37:58 2016
@@ -738,13 +738,14 @@ public class GenericKeyedObjectPool<K,T>
         // build sorted map of idle objects
         final Map<PooledObject<T>, K> map = new TreeMap<PooledObject<T>, K>();
 
-        for (final K k : poolMap.keySet()) {
-            final ObjectDeque<T> queue = poolMap.get(k);
+        for (Map.Entry<K, ObjectDeque<T>> entry : poolMap.entrySet()) {
+            final K k = entry.getKey();
+            final ObjectDeque<T> deque = entry.getValue();
             // Protect against possible NPE if key has been removed in another
             // thread. Not worth locking the keys while this loop completes.
-            if (queue != null) {
+            if (deque != null) {
                 final LinkedBlockingDeque<PooledObject<T>> idleObjects =
-                    queue.getIdleObjects();
+                        deque.getIdleObjects();
                 for (final PooledObject<T> p : idleObjects) {
                     // each item into the map using the PooledObject object as 
the
                     // key. It then gets sorted based on the idle time
@@ -800,8 +801,9 @@ public class GenericKeyedObjectPool<K,T>
         int maxQueueLength = 0;
         LinkedBlockingDeque<PooledObject<T>> mostLoaded = null;
         K loadedKey = null;
-        for (final K k : poolMap.keySet()) {
-            final ObjectDeque<T> deque = poolMap.get(k);
+        for (Map.Entry<K, 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();
@@ -837,8 +839,8 @@ public class GenericKeyedObjectPool<K,T>
      *         {@code false}
      */
     private boolean hasBorrowWaiters() {
-        for (final K k : poolMap.keySet()) {
-            final ObjectDeque<T> deque = poolMap.get(k);
+        for (Map.Entry<K, ObjectDeque<T>> entry : poolMap.entrySet()) {
+            final ObjectDeque<T> deque = entry.getValue();
             if (deque != null) {
                 final LinkedBlockingDeque<PooledObject<T>> pool =
                     deque.getIdleObjects();
@@ -1371,14 +1373,15 @@ public class GenericKeyedObjectPool<K,T>
     public Map<String,Integer> getNumWaitersByKey() {
         final Map<String,Integer> result = new HashMap<String,Integer>();
 
-        for (final K key : poolMap.keySet()) {
-            final ObjectDeque<T> queue = poolMap.get(key);
-            if (queue != null) {
+        for (Map.Entry<K, ObjectDeque<T>> entry : poolMap.entrySet()) {
+            final K k = entry.getKey();
+            final ObjectDeque<T> deque = entry.getValue();
+            if (deque != null) {
                 if (getBlockWhenExhausted()) {
-                    result.put(key.toString(), Integer.valueOf(
-                            queue.getIdleObjects().getTakeQueueLength()));
+                    result.put(k.toString(), Integer.valueOf(
+                            deque.getIdleObjects().getTakeQueueLength()));
                 } else {
-                    result.put(key.toString(), Integer.valueOf(0));
+                    result.put(k.toString(), Integer.valueOf(0));
                 }
             }
         }
@@ -1401,13 +1404,14 @@ public class GenericKeyedObjectPool<K,T>
         final Map<String,List<DefaultPooledObjectInfo>> result =
                 new HashMap<String,List<DefaultPooledObjectInfo>>();
 
-        for (final K key : poolMap.keySet()) {
-            final ObjectDeque<T> queue = poolMap.get(key);
-            if (queue != null) {
+        for (Map.Entry<K, ObjectDeque<T>> entry : poolMap.entrySet()) {
+            final K k = entry.getKey();
+            final ObjectDeque<T> deque = entry.getValue();
+            if (deque != null) {
                 final List<DefaultPooledObjectInfo> list =
                         new ArrayList<DefaultPooledObjectInfo>();
-                result.put(key.toString(), list);
-                for (final PooledObject<T> p : queue.getAllObjects().values()) 
{
+                result.put(k.toString(), list);
+                for (final PooledObject<T> p : deque.getAllObjects().values()) 
{
                     list.add(new DefaultPooledObjectInfo(p));
                 }
             }


Reply via email to