You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@commons.apache.org by gg...@apache.org on 2019/08/10 22:26:46 UTC

svn commit: r1048500 [37/39] - in /websites/production/commons/content/proper: commons-pool/ commons-pool/apidocs/ commons-pool/apidocs/org/apache/commons/pool2/ commons-pool/apidocs/org/apache/commons/pool2/class-use/ commons-pool/apidocs/org/apache/c...

Modified: websites/production/commons/content/proper/commons-pool/xref/org/apache/commons/pool2/impl/GenericKeyedObjectPool.html
==============================================================================
--- websites/production/commons/content/proper/commons-pool/xref/org/apache/commons/pool2/impl/GenericKeyedObjectPool.html (original)
+++ websites/production/commons/content/proper/commons-pool/xref/org/apache/commons/pool2/impl/GenericKeyedObjectPool.html Sat Aug 10 22:26:44 2019
@@ -391,7 +391,7 @@
 <a class="jxr_linenumber" name="L383" href="#L383">383</a>                             <strong class="jxr_keyword">throw</strong> nsee;
 <a class="jxr_linenumber" name="L384" href="#L384">384</a>                         }
 <a class="jxr_linenumber" name="L385" href="#L385">385</a>                     }
-<a class="jxr_linenumber" name="L386" href="#L386">386</a>                     <strong class="jxr_keyword">if</strong> (p != <strong class="jxr_keyword">null</strong> &amp;&amp; (getTestOnBorrow() || create &amp;&amp; getTestOnCreate())) {
+<a class="jxr_linenumber" name="L386" href="#L386">386</a>                     <strong class="jxr_keyword">if</strong> (p != <strong class="jxr_keyword">null</strong> &amp;&amp; getTestOnBorrow()) {
 <a class="jxr_linenumber" name="L387" href="#L387">387</a>                         <strong class="jxr_keyword">boolean</strong> validate = false;
 <a class="jxr_linenumber" name="L388" href="#L388">388</a>                         Throwable validationThrowable = <strong class="jxr_keyword">null</strong>;
 <a class="jxr_linenumber" name="L389" href="#L389">389</a>                         <strong class="jxr_keyword">try</strong> {
@@ -528,8 +528,8 @@
 <a class="jxr_linenumber" name="L520" href="#L520">520</a> 
 <a class="jxr_linenumber" name="L521" href="#L521">521</a>     <em class="jxr_javadoccomment">/**</em>
 <a class="jxr_linenumber" name="L522" href="#L522">522</a> <em class="jxr_javadoccomment">     * Whether there is at least one thread waiting on this deque, add an pool object.</em>
-<a class="jxr_linenumber" name="L523" href="#L523">523</a> <em class="jxr_javadoccomment">     * @param key</em>
-<a class="jxr_linenumber" name="L524" href="#L524">524</a> <em class="jxr_javadoccomment">     * @param idleObjects</em>
+<a class="jxr_linenumber" name="L523" href="#L523">523</a> <em class="jxr_javadoccomment">     * @param key pool key.</em>
+<a class="jxr_linenumber" name="L524" href="#L524">524</a> <em class="jxr_javadoccomment">     * @param idleObjects list of idle pool objects.</em>
 <a class="jxr_linenumber" name="L525" href="#L525">525</a> <em class="jxr_javadoccomment">     */</em>
 <a class="jxr_linenumber" name="L526" href="#L526">526</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> whenWaitersAddObject(<strong class="jxr_keyword">final</strong> K key, <strong class="jxr_keyword">final</strong> LinkedBlockingDeque&lt;PooledObject&lt;T&gt;&gt; idleObjects) {
 <a class="jxr_linenumber" name="L527" href="#L527">527</a>         <strong class="jxr_keyword">if</strong> (idleObjects.hasTakeWaiters()) {
@@ -696,7 +696,7 @@
 <a class="jxr_linenumber" name="L688" href="#L688">688</a> 
 <a class="jxr_linenumber" name="L689" href="#L689">689</a>             <em class="jxr_comment">// Stop the evictor before the pool is closed since evict() calls</em>
 <a class="jxr_linenumber" name="L690" href="#L690">690</a>             <em class="jxr_comment">// assertOpen()</em>
-<a class="jxr_linenumber" name="L691" href="#L691">691</a>             stopEvitor();
+<a class="jxr_linenumber" name="L691" href="#L691">691</a>             stopEvictor();
 <a class="jxr_linenumber" name="L692" href="#L692">692</a> 
 <a class="jxr_linenumber" name="L693" href="#L693">693</a>             closed = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="L694" href="#L694">694</a>             <em class="jxr_comment">// This clear removes any idle objects</em>
@@ -1047,569 +1047,574 @@
 <a class="jxr_linenumber" name="L1039" href="#L1039">1039</a>         PooledObject&lt;T&gt; p = <strong class="jxr_keyword">null</strong>;
 <a class="jxr_linenumber" name="L1040" href="#L1040">1040</a>         <strong class="jxr_keyword">try</strong> {
 <a class="jxr_linenumber" name="L1041" href="#L1041">1041</a>             p = factory.makeObject(key);
-<a class="jxr_linenumber" name="L1042" href="#L1042">1042</a>         } <strong class="jxr_keyword">catch</strong> (<strong class="jxr_keyword">final</strong> Exception e) {
-<a class="jxr_linenumber" name="L1043" href="#L1043">1043</a>             numTotal.decrementAndGet();
-<a class="jxr_linenumber" name="L1044" href="#L1044">1044</a>             objectDeque.getCreateCount().decrementAndGet();
-<a class="jxr_linenumber" name="L1045" href="#L1045">1045</a>             <strong class="jxr_keyword">throw</strong> e;
-<a class="jxr_linenumber" name="L1046" href="#L1046">1046</a>         } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="L1047" href="#L1047">1047</a>             <strong class="jxr_keyword">synchronized</strong> (objectDeque.makeObjectCountLock) {
-<a class="jxr_linenumber" name="L1048" href="#L1048">1048</a>                 objectDeque.makeObjectCount--;
-<a class="jxr_linenumber" name="L1049" href="#L1049">1049</a>                 objectDeque.makeObjectCountLock.notifyAll();
-<a class="jxr_linenumber" name="L1050" href="#L1050">1050</a>             }
-<a class="jxr_linenumber" name="L1051" href="#L1051">1051</a>         }
-<a class="jxr_linenumber" name="L1052" href="#L1052">1052</a> 
-<a class="jxr_linenumber" name="L1053" href="#L1053">1053</a>         createdCount.incrementAndGet();
-<a class="jxr_linenumber" name="L1054" href="#L1054">1054</a>         objectDeque.getAllObjects().put(<strong class="jxr_keyword">new</strong> IdentityWrapper&lt;&gt;(p.getObject()), p);
-<a class="jxr_linenumber" name="L1055" href="#L1055">1055</a>         <strong class="jxr_keyword">return</strong> p;
-<a class="jxr_linenumber" name="L1056" href="#L1056">1056</a>     }
+<a class="jxr_linenumber" name="L1042" href="#L1042">1042</a>             <strong class="jxr_keyword">if</strong> (getTestOnCreate() &amp;&amp; !factory.validateObject(key, p)) {
+<a class="jxr_linenumber" name="L1043" href="#L1043">1043</a>                 numTotal.decrementAndGet();
+<a class="jxr_linenumber" name="L1044" href="#L1044">1044</a>                 objectDeque.getCreateCount().decrementAndGet();
+<a class="jxr_linenumber" name="L1045" href="#L1045">1045</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L1046" href="#L1046">1046</a>             }
+<a class="jxr_linenumber" name="L1047" href="#L1047">1047</a>         } <strong class="jxr_keyword">catch</strong> (<strong class="jxr_keyword">final</strong> Exception e) {
+<a class="jxr_linenumber" name="L1048" href="#L1048">1048</a>             numTotal.decrementAndGet();
+<a class="jxr_linenumber" name="L1049" href="#L1049">1049</a>             objectDeque.getCreateCount().decrementAndGet();
+<a class="jxr_linenumber" name="L1050" href="#L1050">1050</a>             <strong class="jxr_keyword">throw</strong> e;
+<a class="jxr_linenumber" name="L1051" href="#L1051">1051</a>         } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="L1052" href="#L1052">1052</a>             <strong class="jxr_keyword">synchronized</strong> (objectDeque.makeObjectCountLock) {
+<a class="jxr_linenumber" name="L1053" href="#L1053">1053</a>                 objectDeque.makeObjectCount--;
+<a class="jxr_linenumber" name="L1054" href="#L1054">1054</a>                 objectDeque.makeObjectCountLock.notifyAll();
+<a class="jxr_linenumber" name="L1055" href="#L1055">1055</a>             }
+<a class="jxr_linenumber" name="L1056" href="#L1056">1056</a>         }
 <a class="jxr_linenumber" name="L1057" href="#L1057">1057</a> 
-<a class="jxr_linenumber" name="L1058" href="#L1058">1058</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1059" href="#L1059">1059</a> <em class="jxr_javadoccomment">     * Destroy the wrapped, pooled object.</em>
-<a class="jxr_linenumber" name="L1060" href="#L1060">1060</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L1061" href="#L1061">1061</a> <em class="jxr_javadoccomment">     * @param key The key associated with the object to destroy.</em>
-<a class="jxr_linenumber" name="L1062" href="#L1062">1062</a> <em class="jxr_javadoccomment">     * @param toDestroy The wrapped object to be destroyed</em>
-<a class="jxr_linenumber" name="L1063" href="#L1063">1063</a> <em class="jxr_javadoccomment">     * @param always Should the object be destroyed even if it is not currently</em>
-<a class="jxr_linenumber" name="L1064" href="#L1064">1064</a> <em class="jxr_javadoccomment">     *               in the set of idle objects for the given key</em>
-<a class="jxr_linenumber" name="L1065" href="#L1065">1065</a> <em class="jxr_javadoccomment">     * @return {@code true} if the object was destroyed, otherwise {@code false}</em>
-<a class="jxr_linenumber" name="L1066" href="#L1066">1066</a> <em class="jxr_javadoccomment">     * @throws Exception If the object destruction failed</em>
-<a class="jxr_linenumber" name="L1067" href="#L1067">1067</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L1068" href="#L1068">1068</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> destroy(<strong class="jxr_keyword">final</strong> K key, <strong class="jxr_keyword">final</strong> PooledObject&lt;T&gt; toDestroy, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> always)
-<a class="jxr_linenumber" name="L1069" href="#L1069">1069</a>             <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L1070" href="#L1070">1070</a> 
-<a class="jxr_linenumber" name="L1071" href="#L1071">1071</a>         <strong class="jxr_keyword">final</strong> ObjectDeque&lt;T&gt; objectDeque = register(key);
-<a class="jxr_linenumber" name="L1072" href="#L1072">1072</a> 
-<a class="jxr_linenumber" name="L1073" href="#L1073">1073</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L1074" href="#L1074">1074</a>             <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> isIdle = objectDeque.getIdleObjects().remove(toDestroy);
+<a class="jxr_linenumber" name="L1058" href="#L1058">1058</a>         createdCount.incrementAndGet();
+<a class="jxr_linenumber" name="L1059" href="#L1059">1059</a>         objectDeque.getAllObjects().put(<strong class="jxr_keyword">new</strong> IdentityWrapper&lt;&gt;(p.getObject()), p);
+<a class="jxr_linenumber" name="L1060" href="#L1060">1060</a>         <strong class="jxr_keyword">return</strong> p;
+<a class="jxr_linenumber" name="L1061" href="#L1061">1061</a>     }
+<a class="jxr_linenumber" name="L1062" href="#L1062">1062</a> 
+<a class="jxr_linenumber" name="L1063" href="#L1063">1063</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L1064" href="#L1064">1064</a> <em class="jxr_javadoccomment">     * Destroy the wrapped, pooled object.</em>
+<a class="jxr_linenumber" name="L1065" href="#L1065">1065</a> <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="L1066" href="#L1066">1066</a> <em class="jxr_javadoccomment">     * @param key The key associated with the object to destroy.</em>
+<a class="jxr_linenumber" name="L1067" href="#L1067">1067</a> <em class="jxr_javadoccomment">     * @param toDestroy The wrapped object to be destroyed</em>
+<a class="jxr_linenumber" name="L1068" href="#L1068">1068</a> <em class="jxr_javadoccomment">     * @param always Should the object be destroyed even if it is not currently</em>
+<a class="jxr_linenumber" name="L1069" href="#L1069">1069</a> <em class="jxr_javadoccomment">     *               in the set of idle objects for the given key</em>
+<a class="jxr_linenumber" name="L1070" href="#L1070">1070</a> <em class="jxr_javadoccomment">     * @return {@code true} if the object was destroyed, otherwise {@code false}</em>
+<a class="jxr_linenumber" name="L1071" href="#L1071">1071</a> <em class="jxr_javadoccomment">     * @throws Exception If the object destruction failed</em>
+<a class="jxr_linenumber" name="L1072" href="#L1072">1072</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L1073" href="#L1073">1073</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> destroy(<strong class="jxr_keyword">final</strong> K key, <strong class="jxr_keyword">final</strong> PooledObject&lt;T&gt; toDestroy, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> always)
+<a class="jxr_linenumber" name="L1074" href="#L1074">1074</a>             <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="L1075" href="#L1075">1075</a> 
-<a class="jxr_linenumber" name="L1076" href="#L1076">1076</a>             <strong class="jxr_keyword">if</strong> (isIdle || always) {
-<a class="jxr_linenumber" name="L1077" href="#L1077">1077</a>                 objectDeque.getAllObjects().remove(<strong class="jxr_keyword">new</strong> IdentityWrapper&lt;&gt;(toDestroy.getObject()));
-<a class="jxr_linenumber" name="L1078" href="#L1078">1078</a>                 toDestroy.invalidate();
-<a class="jxr_linenumber" name="L1079" href="#L1079">1079</a> 
-<a class="jxr_linenumber" name="L1080" href="#L1080">1080</a>                 <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L1081" href="#L1081">1081</a>                     factory.destroyObject(key, toDestroy);
-<a class="jxr_linenumber" name="L1082" href="#L1082">1082</a>                 } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="L1083" href="#L1083">1083</a>                     objectDeque.getCreateCount().decrementAndGet();
-<a class="jxr_linenumber" name="L1084" href="#L1084">1084</a>                     destroyedCount.incrementAndGet();
-<a class="jxr_linenumber" name="L1085" href="#L1085">1085</a>                     numTotal.decrementAndGet();
-<a class="jxr_linenumber" name="L1086" href="#L1086">1086</a>                 }
-<a class="jxr_linenumber" name="L1087" href="#L1087">1087</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="L1088" href="#L1088">1088</a>             }
-<a class="jxr_linenumber" name="L1089" href="#L1089">1089</a>             <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="L1090" href="#L1090">1090</a>         } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="L1091" href="#L1091">1091</a>             deregister(key);
-<a class="jxr_linenumber" name="L1092" href="#L1092">1092</a>         }
-<a class="jxr_linenumber" name="L1093" href="#L1093">1093</a>     }
-<a class="jxr_linenumber" name="L1094" href="#L1094">1094</a> 
-<a class="jxr_linenumber" name="L1095" href="#L1095">1095</a> 
-<a class="jxr_linenumber" name="L1096" href="#L1096">1096</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1097" href="#L1097">1097</a> <em class="jxr_javadoccomment">     * Register the use of a key by an object.</em>
-<a class="jxr_linenumber" name="L1098" href="#L1098">1098</a> <em class="jxr_javadoccomment">     * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L1099" href="#L1099">1099</a> <em class="jxr_javadoccomment">     * register() and deregister() must always be used as a pair.</em>
-<a class="jxr_linenumber" name="L1100" href="#L1100">1100</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L1101" href="#L1101">1101</a> <em class="jxr_javadoccomment">     * @param k The key to register</em>
-<a class="jxr_linenumber" name="L1102" href="#L1102">1102</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L1103" href="#L1103">1103</a> <em class="jxr_javadoccomment">     * @return The objects currently associated with the given key. If this</em>
-<a class="jxr_linenumber" name="L1104" href="#L1104">1104</a> <em class="jxr_javadoccomment">     *         method returns without throwing an exception then it will never</em>
-<a class="jxr_linenumber" name="L1105" href="#L1105">1105</a> <em class="jxr_javadoccomment">     *         return null.</em>
-<a class="jxr_linenumber" name="L1106" href="#L1106">1106</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L1107" href="#L1107">1107</a>     <strong class="jxr_keyword">private</strong> ObjectDeque&lt;T&gt; register(<strong class="jxr_keyword">final</strong> K k) {
-<a class="jxr_linenumber" name="L1108" href="#L1108">1108</a>         Lock lock = keyLock.readLock();
-<a class="jxr_linenumber" name="L1109" href="#L1109">1109</a>         ObjectDeque&lt;T&gt; objectDeque = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L1110" href="#L1110">1110</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L1111" href="#L1111">1111</a>             lock.lock();
-<a class="jxr_linenumber" name="L1112" href="#L1112">1112</a>             objectDeque = poolMap.get(k);
-<a class="jxr_linenumber" name="L1113" href="#L1113">1113</a>             <strong class="jxr_keyword">if</strong> (objectDeque == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L1114" href="#L1114">1114</a>                 <em class="jxr_comment">// Upgrade to write lock</em>
-<a class="jxr_linenumber" name="L1115" href="#L1115">1115</a>                 lock.unlock();
-<a class="jxr_linenumber" name="L1116" href="#L1116">1116</a>                 lock = keyLock.writeLock();
-<a class="jxr_linenumber" name="L1117" href="#L1117">1117</a>                 lock.lock();
-<a class="jxr_linenumber" name="L1118" href="#L1118">1118</a>                 objectDeque = poolMap.get(k);
-<a class="jxr_linenumber" name="L1119" href="#L1119">1119</a>                 <strong class="jxr_keyword">if</strong> (objectDeque == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L1120" href="#L1120">1120</a>                     objectDeque = <strong class="jxr_keyword">new</strong> ObjectDeque&lt;&gt;(fairness);
-<a class="jxr_linenumber" name="L1121" href="#L1121">1121</a>                     objectDeque.getNumInterested().incrementAndGet();
-<a class="jxr_linenumber" name="L1122" href="#L1122">1122</a>                     <em class="jxr_comment">// NOTE: Keys must always be added to both poolMap and</em>
-<a class="jxr_linenumber" name="L1123" href="#L1123">1123</a>                     <em class="jxr_comment">//       poolKeyList at the same time while protected by</em>
-<a class="jxr_linenumber" name="L1124" href="#L1124">1124</a>                     <em class="jxr_comment">//       keyLock.writeLock()</em>
-<a class="jxr_linenumber" name="L1125" href="#L1125">1125</a>                     poolMap.put(k, objectDeque);
-<a class="jxr_linenumber" name="L1126" href="#L1126">1126</a>                     poolKeyList.add(k);
-<a class="jxr_linenumber" name="L1127" href="#L1127">1127</a>                 } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L1128" href="#L1128">1128</a>                     objectDeque.getNumInterested().incrementAndGet();
-<a class="jxr_linenumber" name="L1129" href="#L1129">1129</a>                 }
-<a class="jxr_linenumber" name="L1130" href="#L1130">1130</a>             } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L1131" href="#L1131">1131</a>                 objectDeque.getNumInterested().incrementAndGet();
-<a class="jxr_linenumber" name="L1132" href="#L1132">1132</a>             }
-<a class="jxr_linenumber" name="L1133" href="#L1133">1133</a>         } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="L1134" href="#L1134">1134</a>             lock.unlock();
-<a class="jxr_linenumber" name="L1135" href="#L1135">1135</a>         }
-<a class="jxr_linenumber" name="L1136" href="#L1136">1136</a>         <strong class="jxr_keyword">return</strong> objectDeque;
-<a class="jxr_linenumber" name="L1137" href="#L1137">1137</a>     }
-<a class="jxr_linenumber" name="L1138" href="#L1138">1138</a> 
-<a class="jxr_linenumber" name="L1139" href="#L1139">1139</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1140" href="#L1140">1140</a> <em class="jxr_javadoccomment">     * De-register the use of a key by an object.</em>
-<a class="jxr_linenumber" name="L1141" href="#L1141">1141</a> <em class="jxr_javadoccomment">     * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L1142" href="#L1142">1142</a> <em class="jxr_javadoccomment">     * register() and deregister() must always be used as a pair.</em>
-<a class="jxr_linenumber" name="L1143" href="#L1143">1143</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L1144" href="#L1144">1144</a> <em class="jxr_javadoccomment">     * @param k The key to de-register</em>
-<a class="jxr_linenumber" name="L1145" href="#L1145">1145</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L1146" href="#L1146">1146</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> deregister(<strong class="jxr_keyword">final</strong> K k) {
-<a class="jxr_linenumber" name="L1147" href="#L1147">1147</a>         Lock lock = keyLock.readLock();
-<a class="jxr_linenumber" name="L1148" href="#L1148">1148</a>         ObjectDeque&lt;T&gt; objectDeque;
-<a class="jxr_linenumber" name="L1149" href="#L1149">1149</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L1150" href="#L1150">1150</a>             lock.lock();
-<a class="jxr_linenumber" name="L1151" href="#L1151">1151</a>             objectDeque = poolMap.get(k);
-<a class="jxr_linenumber" name="L1152" href="#L1152">1152</a>             <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> numInterested = objectDeque.getNumInterested().decrementAndGet();
-<a class="jxr_linenumber" name="L1153" href="#L1153">1153</a>             <strong class="jxr_keyword">if</strong> (numInterested == 0 &amp;&amp; objectDeque.getCreateCount().get() == 0) {
-<a class="jxr_linenumber" name="L1154" href="#L1154">1154</a>                 <em class="jxr_comment">// Potential to remove key</em>
-<a class="jxr_linenumber" name="L1155" href="#L1155">1155</a>                 <em class="jxr_comment">// Upgrade to write lock</em>
-<a class="jxr_linenumber" name="L1156" href="#L1156">1156</a>                 lock.unlock();
-<a class="jxr_linenumber" name="L1157" href="#L1157">1157</a>                 lock = keyLock.writeLock();
-<a class="jxr_linenumber" name="L1158" href="#L1158">1158</a>                 lock.lock();
-<a class="jxr_linenumber" name="L1159" href="#L1159">1159</a>                 <strong class="jxr_keyword">if</strong> (objectDeque.getCreateCount().get() == 0 &amp;&amp; objectDeque.getNumInterested().get() == 0) {
-<a class="jxr_linenumber" name="L1160" href="#L1160">1160</a>                     <em class="jxr_comment">// NOTE: Keys must always be removed from both poolMap and</em>
-<a class="jxr_linenumber" name="L1161" href="#L1161">1161</a>                     <em class="jxr_comment">// poolKeyList at the same time while protected by</em>
-<a class="jxr_linenumber" name="L1162" href="#L1162">1162</a>                     <em class="jxr_comment">// keyLock.writeLock()</em>
-<a class="jxr_linenumber" name="L1163" href="#L1163">1163</a>                     poolMap.remove(k);
-<a class="jxr_linenumber" name="L1164" href="#L1164">1164</a>                     poolKeyList.remove(k);
-<a class="jxr_linenumber" name="L1165" href="#L1165">1165</a>                 }
-<a class="jxr_linenumber" name="L1166" href="#L1166">1166</a>             }
-<a class="jxr_linenumber" name="L1167" href="#L1167">1167</a>         } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="L1168" href="#L1168">1168</a>             lock.unlock();
-<a class="jxr_linenumber" name="L1169" href="#L1169">1169</a>         }
-<a class="jxr_linenumber" name="L1170" href="#L1170">1170</a>     }
-<a class="jxr_linenumber" name="L1171" href="#L1171">1171</a> 
-<a class="jxr_linenumber" name="L1172" href="#L1172">1172</a>     @Override
-<a class="jxr_linenumber" name="L1173" href="#L1173">1173</a>     <strong class="jxr_keyword">void</strong> ensureMinIdle() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L1174" href="#L1174">1174</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> minIdlePerKeySave = getMinIdlePerKey();
-<a class="jxr_linenumber" name="L1175" href="#L1175">1175</a>         <strong class="jxr_keyword">if</strong> (minIdlePerKeySave &lt; 1) {
-<a class="jxr_linenumber" name="L1176" href="#L1176">1176</a>             <strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L1177" href="#L1177">1177</a>         }
-<a class="jxr_linenumber" name="L1178" href="#L1178">1178</a> 
-<a class="jxr_linenumber" name="L1179" href="#L1179">1179</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">final</strong> K k : poolMap.keySet()) {
-<a class="jxr_linenumber" name="L1180" href="#L1180">1180</a>             ensureMinIdle(k);
-<a class="jxr_linenumber" name="L1181" href="#L1181">1181</a>         }
-<a class="jxr_linenumber" name="L1182" href="#L1182">1182</a>     }
+<a class="jxr_linenumber" name="L1076" href="#L1076">1076</a>         <strong class="jxr_keyword">final</strong> ObjectDeque&lt;T&gt; objectDeque = register(key);
+<a class="jxr_linenumber" name="L1077" href="#L1077">1077</a> 
+<a class="jxr_linenumber" name="L1078" href="#L1078">1078</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L1079" href="#L1079">1079</a>             <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> isIdle = objectDeque.getIdleObjects().remove(toDestroy);
+<a class="jxr_linenumber" name="L1080" href="#L1080">1080</a> 
+<a class="jxr_linenumber" name="L1081" href="#L1081">1081</a>             <strong class="jxr_keyword">if</strong> (isIdle || always) {
+<a class="jxr_linenumber" name="L1082" href="#L1082">1082</a>                 objectDeque.getAllObjects().remove(<strong class="jxr_keyword">new</strong> IdentityWrapper&lt;&gt;(toDestroy.getObject()));
+<a class="jxr_linenumber" name="L1083" href="#L1083">1083</a>                 toDestroy.invalidate();
+<a class="jxr_linenumber" name="L1084" href="#L1084">1084</a> 
+<a class="jxr_linenumber" name="L1085" href="#L1085">1085</a>                 <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L1086" href="#L1086">1086</a>                     factory.destroyObject(key, toDestroy);
+<a class="jxr_linenumber" name="L1087" href="#L1087">1087</a>                 } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="L1088" href="#L1088">1088</a>                     objectDeque.getCreateCount().decrementAndGet();
+<a class="jxr_linenumber" name="L1089" href="#L1089">1089</a>                     destroyedCount.incrementAndGet();
+<a class="jxr_linenumber" name="L1090" href="#L1090">1090</a>                     numTotal.decrementAndGet();
+<a class="jxr_linenumber" name="L1091" href="#L1091">1091</a>                 }
+<a class="jxr_linenumber" name="L1092" href="#L1092">1092</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="L1093" href="#L1093">1093</a>             }
+<a class="jxr_linenumber" name="L1094" href="#L1094">1094</a>             <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="L1095" href="#L1095">1095</a>         } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="L1096" href="#L1096">1096</a>             deregister(key);
+<a class="jxr_linenumber" name="L1097" href="#L1097">1097</a>         }
+<a class="jxr_linenumber" name="L1098" href="#L1098">1098</a>     }
+<a class="jxr_linenumber" name="L1099" href="#L1099">1099</a> 
+<a class="jxr_linenumber" name="L1100" href="#L1100">1100</a> 
+<a class="jxr_linenumber" name="L1101" href="#L1101">1101</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L1102" href="#L1102">1102</a> <em class="jxr_javadoccomment">     * Register the use of a key by an object.</em>
+<a class="jxr_linenumber" name="L1103" href="#L1103">1103</a> <em class="jxr_javadoccomment">     * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L1104" href="#L1104">1104</a> <em class="jxr_javadoccomment">     * register() and deregister() must always be used as a pair.</em>
+<a class="jxr_linenumber" name="L1105" href="#L1105">1105</a> <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="L1106" href="#L1106">1106</a> <em class="jxr_javadoccomment">     * @param k The key to register</em>
+<a class="jxr_linenumber" name="L1107" href="#L1107">1107</a> <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="L1108" href="#L1108">1108</a> <em class="jxr_javadoccomment">     * @return The objects currently associated with the given key. If this</em>
+<a class="jxr_linenumber" name="L1109" href="#L1109">1109</a> <em class="jxr_javadoccomment">     *         method returns without throwing an exception then it will never</em>
+<a class="jxr_linenumber" name="L1110" href="#L1110">1110</a> <em class="jxr_javadoccomment">     *         return null.</em>
+<a class="jxr_linenumber" name="L1111" href="#L1111">1111</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L1112" href="#L1112">1112</a>     <strong class="jxr_keyword">private</strong> ObjectDeque&lt;T&gt; register(<strong class="jxr_keyword">final</strong> K k) {
+<a class="jxr_linenumber" name="L1113" href="#L1113">1113</a>         Lock lock = keyLock.readLock();
+<a class="jxr_linenumber" name="L1114" href="#L1114">1114</a>         ObjectDeque&lt;T&gt; objectDeque = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L1115" href="#L1115">1115</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L1116" href="#L1116">1116</a>             lock.lock();
+<a class="jxr_linenumber" name="L1117" href="#L1117">1117</a>             objectDeque = poolMap.get(k);
+<a class="jxr_linenumber" name="L1118" href="#L1118">1118</a>             <strong class="jxr_keyword">if</strong> (objectDeque == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L1119" href="#L1119">1119</a>                 <em class="jxr_comment">// Upgrade to write lock</em>
+<a class="jxr_linenumber" name="L1120" href="#L1120">1120</a>                 lock.unlock();
+<a class="jxr_linenumber" name="L1121" href="#L1121">1121</a>                 lock = keyLock.writeLock();
+<a class="jxr_linenumber" name="L1122" href="#L1122">1122</a>                 lock.lock();
+<a class="jxr_linenumber" name="L1123" href="#L1123">1123</a>                 objectDeque = poolMap.get(k);
+<a class="jxr_linenumber" name="L1124" href="#L1124">1124</a>                 <strong class="jxr_keyword">if</strong> (objectDeque == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L1125" href="#L1125">1125</a>                     objectDeque = <strong class="jxr_keyword">new</strong> ObjectDeque&lt;&gt;(fairness);
+<a class="jxr_linenumber" name="L1126" href="#L1126">1126</a>                     objectDeque.getNumInterested().incrementAndGet();
+<a class="jxr_linenumber" name="L1127" href="#L1127">1127</a>                     <em class="jxr_comment">// NOTE: Keys must always be added to both poolMap and</em>
+<a class="jxr_linenumber" name="L1128" href="#L1128">1128</a>                     <em class="jxr_comment">//       poolKeyList at the same time while protected by</em>
+<a class="jxr_linenumber" name="L1129" href="#L1129">1129</a>                     <em class="jxr_comment">//       keyLock.writeLock()</em>
+<a class="jxr_linenumber" name="L1130" href="#L1130">1130</a>                     poolMap.put(k, objectDeque);
+<a class="jxr_linenumber" name="L1131" href="#L1131">1131</a>                     poolKeyList.add(k);
+<a class="jxr_linenumber" name="L1132" href="#L1132">1132</a>                 } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="L1133" href="#L1133">1133</a>                     objectDeque.getNumInterested().incrementAndGet();
+<a class="jxr_linenumber" name="L1134" href="#L1134">1134</a>                 }
+<a class="jxr_linenumber" name="L1135" href="#L1135">1135</a>             } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="L1136" href="#L1136">1136</a>                 objectDeque.getNumInterested().incrementAndGet();
+<a class="jxr_linenumber" name="L1137" href="#L1137">1137</a>             }
+<a class="jxr_linenumber" name="L1138" href="#L1138">1138</a>         } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="L1139" href="#L1139">1139</a>             lock.unlock();
+<a class="jxr_linenumber" name="L1140" href="#L1140">1140</a>         }
+<a class="jxr_linenumber" name="L1141" href="#L1141">1141</a>         <strong class="jxr_keyword">return</strong> objectDeque;
+<a class="jxr_linenumber" name="L1142" href="#L1142">1142</a>     }
+<a class="jxr_linenumber" name="L1143" href="#L1143">1143</a> 
+<a class="jxr_linenumber" name="L1144" href="#L1144">1144</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L1145" href="#L1145">1145</a> <em class="jxr_javadoccomment">     * De-register the use of a key by an object.</em>
+<a class="jxr_linenumber" name="L1146" href="#L1146">1146</a> <em class="jxr_javadoccomment">     * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L1147" href="#L1147">1147</a> <em class="jxr_javadoccomment">     * register() and deregister() must always be used as a pair.</em>
+<a class="jxr_linenumber" name="L1148" href="#L1148">1148</a> <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="L1149" href="#L1149">1149</a> <em class="jxr_javadoccomment">     * @param k The key to de-register</em>
+<a class="jxr_linenumber" name="L1150" href="#L1150">1150</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L1151" href="#L1151">1151</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> deregister(<strong class="jxr_keyword">final</strong> K k) {
+<a class="jxr_linenumber" name="L1152" href="#L1152">1152</a>         Lock lock = keyLock.readLock();
+<a class="jxr_linenumber" name="L1153" href="#L1153">1153</a>         ObjectDeque&lt;T&gt; objectDeque;
+<a class="jxr_linenumber" name="L1154" href="#L1154">1154</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L1155" href="#L1155">1155</a>             lock.lock();
+<a class="jxr_linenumber" name="L1156" href="#L1156">1156</a>             objectDeque = poolMap.get(k);
+<a class="jxr_linenumber" name="L1157" href="#L1157">1157</a>             <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> numInterested = objectDeque.getNumInterested().decrementAndGet();
+<a class="jxr_linenumber" name="L1158" href="#L1158">1158</a>             <strong class="jxr_keyword">if</strong> (numInterested == 0 &amp;&amp; objectDeque.getCreateCount().get() == 0) {
+<a class="jxr_linenumber" name="L1159" href="#L1159">1159</a>                 <em class="jxr_comment">// Potential to remove key</em>
+<a class="jxr_linenumber" name="L1160" href="#L1160">1160</a>                 <em class="jxr_comment">// Upgrade to write lock</em>
+<a class="jxr_linenumber" name="L1161" href="#L1161">1161</a>                 lock.unlock();
+<a class="jxr_linenumber" name="L1162" href="#L1162">1162</a>                 lock = keyLock.writeLock();
+<a class="jxr_linenumber" name="L1163" href="#L1163">1163</a>                 lock.lock();
+<a class="jxr_linenumber" name="L1164" href="#L1164">1164</a>                 <strong class="jxr_keyword">if</strong> (objectDeque.getCreateCount().get() == 0 &amp;&amp; objectDeque.getNumInterested().get() == 0) {
+<a class="jxr_linenumber" name="L1165" href="#L1165">1165</a>                     <em class="jxr_comment">// NOTE: Keys must always be removed from both poolMap and</em>
+<a class="jxr_linenumber" name="L1166" href="#L1166">1166</a>                     <em class="jxr_comment">//       poolKeyList at the same time while protected by</em>
+<a class="jxr_linenumber" name="L1167" href="#L1167">1167</a>                     <em class="jxr_comment">//       keyLock.writeLock()</em>
+<a class="jxr_linenumber" name="L1168" href="#L1168">1168</a>                     poolMap.remove(k);
+<a class="jxr_linenumber" name="L1169" href="#L1169">1169</a>                     poolKeyList.remove(k);
+<a class="jxr_linenumber" name="L1170" href="#L1170">1170</a>                 }
+<a class="jxr_linenumber" name="L1171" href="#L1171">1171</a>             }
+<a class="jxr_linenumber" name="L1172" href="#L1172">1172</a>         } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="L1173" href="#L1173">1173</a>             lock.unlock();
+<a class="jxr_linenumber" name="L1174" href="#L1174">1174</a>         }
+<a class="jxr_linenumber" name="L1175" href="#L1175">1175</a>     }
+<a class="jxr_linenumber" name="L1176" href="#L1176">1176</a> 
+<a class="jxr_linenumber" name="L1177" href="#L1177">1177</a>     @Override
+<a class="jxr_linenumber" name="L1178" href="#L1178">1178</a>     <strong class="jxr_keyword">void</strong> ensureMinIdle() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L1179" href="#L1179">1179</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> minIdlePerKeySave = getMinIdlePerKey();
+<a class="jxr_linenumber" name="L1180" href="#L1180">1180</a>         <strong class="jxr_keyword">if</strong> (minIdlePerKeySave &lt; 1) {
+<a class="jxr_linenumber" name="L1181" href="#L1181">1181</a>             <strong class="jxr_keyword">return</strong>;
+<a class="jxr_linenumber" name="L1182" href="#L1182">1182</a>         }
 <a class="jxr_linenumber" name="L1183" href="#L1183">1183</a> 
-<a class="jxr_linenumber" name="L1184" href="#L1184">1184</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1185" href="#L1185">1185</a> <em class="jxr_javadoccomment">     * Ensure that the configured number of minimum idle objects is available in</em>
-<a class="jxr_linenumber" name="L1186" href="#L1186">1186</a> <em class="jxr_javadoccomment">     * the pool for the given key.</em>
-<a class="jxr_linenumber" name="L1187" href="#L1187">1187</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L1188" href="#L1188">1188</a> <em class="jxr_javadoccomment">     * @param key The key to check for idle objects</em>
-<a class="jxr_linenumber" name="L1189" href="#L1189">1189</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L1190" href="#L1190">1190</a> <em class="jxr_javadoccomment">     * @throws Exception If a new object is required and cannot be created</em>
-<a class="jxr_linenumber" name="L1191" href="#L1191">1191</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L1192" href="#L1192">1192</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> ensureMinIdle(<strong class="jxr_keyword">final</strong> K key) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L1193" href="#L1193">1193</a>         <em class="jxr_comment">// Calculate current pool objects</em>
-<a class="jxr_linenumber" name="L1194" href="#L1194">1194</a>         ObjectDeque&lt;T&gt; objectDeque = poolMap.get(key);
-<a class="jxr_linenumber" name="L1195" href="#L1195">1195</a> 
-<a class="jxr_linenumber" name="L1196" href="#L1196">1196</a>         <em class="jxr_comment">// objectDeque == null is OK here. It is handled correctly by both</em>
-<a class="jxr_linenumber" name="L1197" href="#L1197">1197</a>         <em class="jxr_comment">// methods called below.</em>
-<a class="jxr_linenumber" name="L1198" href="#L1198">1198</a> 
-<a class="jxr_linenumber" name="L1199" href="#L1199">1199</a>         <em class="jxr_comment">// this method isn't synchronized so the</em>
-<a class="jxr_linenumber" name="L1200" href="#L1200">1200</a>         <em class="jxr_comment">// calculateDeficit is done at the beginning</em>
-<a class="jxr_linenumber" name="L1201" href="#L1201">1201</a>         <em class="jxr_comment">// as a loop limit and a second time inside the loop</em>
-<a class="jxr_linenumber" name="L1202" href="#L1202">1202</a>         <em class="jxr_comment">// to stop when another thread already returned the</em>
-<a class="jxr_linenumber" name="L1203" href="#L1203">1203</a>         <em class="jxr_comment">// needed objects</em>
-<a class="jxr_linenumber" name="L1204" href="#L1204">1204</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> deficit = calculateDeficit(objectDeque);
-<a class="jxr_linenumber" name="L1205" href="#L1205">1205</a> 
-<a class="jxr_linenumber" name="L1206" href="#L1206">1206</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; deficit &amp;&amp; calculateDeficit(objectDeque) &gt; 0; i++) {
-<a class="jxr_linenumber" name="L1207" href="#L1207">1207</a>             addObject(key);
-<a class="jxr_linenumber" name="L1208" href="#L1208">1208</a>             <em class="jxr_comment">// If objectDeque was null, it won't be any more. Obtain a reference</em>
-<a class="jxr_linenumber" name="L1209" href="#L1209">1209</a>             <em class="jxr_comment">// to it so the deficit can be correctly calculated. It needs to</em>
-<a class="jxr_linenumber" name="L1210" href="#L1210">1210</a>             <em class="jxr_comment">// take account of objects created in other threads.</em>
-<a class="jxr_linenumber" name="L1211" href="#L1211">1211</a>             <strong class="jxr_keyword">if</strong> (objectDeque == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L1212" href="#L1212">1212</a>                 objectDeque = poolMap.get(key);
-<a class="jxr_linenumber" name="L1213" href="#L1213">1213</a>             }
-<a class="jxr_linenumber" name="L1214" href="#L1214">1214</a>         }
-<a class="jxr_linenumber" name="L1215" href="#L1215">1215</a>     }
-<a class="jxr_linenumber" name="L1216" href="#L1216">1216</a> 
-<a class="jxr_linenumber" name="L1217" href="#L1217">1217</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1218" href="#L1218">1218</a> <em class="jxr_javadoccomment">     * Create an object using the {@link KeyedPooledObjectFactory#makeObject</em>
-<a class="jxr_linenumber" name="L1219" href="#L1219">1219</a> <em class="jxr_javadoccomment">     * factory}, passivate it, and then place it in the idle object pool.</em>
-<a class="jxr_linenumber" name="L1220" href="#L1220">1220</a> <em class="jxr_javadoccomment">     * &lt;code&gt;addObject&lt;/code&gt; is useful for "pre-loading" a pool with idle</em>
-<a class="jxr_linenumber" name="L1221" href="#L1221">1221</a> <em class="jxr_javadoccomment">     * objects.</em>
-<a class="jxr_linenumber" name="L1222" href="#L1222">1222</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L1223" href="#L1223">1223</a> <em class="jxr_javadoccomment">     * @param key the key a new instance should be added to</em>
-<a class="jxr_linenumber" name="L1224" href="#L1224">1224</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L1225" href="#L1225">1225</a> <em class="jxr_javadoccomment">     * @throws Exception when {@link KeyedPooledObjectFactory#makeObject}</em>
-<a class="jxr_linenumber" name="L1226" href="#L1226">1226</a> <em class="jxr_javadoccomment">     *                   fails.</em>
-<a class="jxr_linenumber" name="L1227" href="#L1227">1227</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L1228" href="#L1228">1228</a>     @Override
-<a class="jxr_linenumber" name="L1229" href="#L1229">1229</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addObject(<strong class="jxr_keyword">final</strong> K key) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L1230" href="#L1230">1230</a>         assertOpen();
-<a class="jxr_linenumber" name="L1231" href="#L1231">1231</a>         register(key);
-<a class="jxr_linenumber" name="L1232" href="#L1232">1232</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L1233" href="#L1233">1233</a>             <strong class="jxr_keyword">final</strong> PooledObject&lt;T&gt; p = create(key);
-<a class="jxr_linenumber" name="L1234" href="#L1234">1234</a>             addIdleObject(key, p);
-<a class="jxr_linenumber" name="L1235" href="#L1235">1235</a>         } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="L1236" href="#L1236">1236</a>             deregister(key);
-<a class="jxr_linenumber" name="L1237" href="#L1237">1237</a>         }
-<a class="jxr_linenumber" name="L1238" href="#L1238">1238</a>     }
-<a class="jxr_linenumber" name="L1239" href="#L1239">1239</a> 
-<a class="jxr_linenumber" name="L1240" href="#L1240">1240</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1241" href="#L1241">1241</a> <em class="jxr_javadoccomment">     * Add an object to the set of idle objects for a given key.</em>
-<a class="jxr_linenumber" name="L1242" href="#L1242">1242</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L1243" href="#L1243">1243</a> <em class="jxr_javadoccomment">     * @param key The key to associate with the idle object</em>
-<a class="jxr_linenumber" name="L1244" href="#L1244">1244</a> <em class="jxr_javadoccomment">     * @param p The wrapped object to add.</em>
-<a class="jxr_linenumber" name="L1245" href="#L1245">1245</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L1246" href="#L1246">1246</a> <em class="jxr_javadoccomment">     * @throws Exception If the associated factory fails to passivate the object</em>
-<a class="jxr_linenumber" name="L1247" href="#L1247">1247</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L1248" href="#L1248">1248</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> addIdleObject(<strong class="jxr_keyword">final</strong> K key, <strong class="jxr_keyword">final</strong> PooledObject&lt;T&gt; p) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L1249" href="#L1249">1249</a> 
-<a class="jxr_linenumber" name="L1250" href="#L1250">1250</a>         <strong class="jxr_keyword">if</strong> (p != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L1251" href="#L1251">1251</a>             factory.passivateObject(key, p);
-<a class="jxr_linenumber" name="L1252" href="#L1252">1252</a>             <strong class="jxr_keyword">final</strong> LinkedBlockingDeque&lt;PooledObject&lt;T&gt;&gt; idleObjects =
-<a class="jxr_linenumber" name="L1253" href="#L1253">1253</a>                     poolMap.get(key).getIdleObjects();
-<a class="jxr_linenumber" name="L1254" href="#L1254">1254</a>             <strong class="jxr_keyword">if</strong> (getLifo()) {
-<a class="jxr_linenumber" name="L1255" href="#L1255">1255</a>                 idleObjects.addFirst(p);
-<a class="jxr_linenumber" name="L1256" href="#L1256">1256</a>             } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L1257" href="#L1257">1257</a>                 idleObjects.addLast(p);
-<a class="jxr_linenumber" name="L1258" href="#L1258">1258</a>             }
-<a class="jxr_linenumber" name="L1259" href="#L1259">1259</a>         }
-<a class="jxr_linenumber" name="L1260" href="#L1260">1260</a>     }
-<a class="jxr_linenumber" name="L1261" href="#L1261">1261</a> 
-<a class="jxr_linenumber" name="L1262" href="#L1262">1262</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1263" href="#L1263">1263</a> <em class="jxr_javadoccomment">     * Registers a key for pool control and ensures that</em>
-<a class="jxr_linenumber" name="L1264" href="#L1264">1264</a> <em class="jxr_javadoccomment">     * {@link #getMinIdlePerKey()} idle instances are created.</em>
-<a class="jxr_linenumber" name="L1265" href="#L1265">1265</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L1266" href="#L1266">1266</a> <em class="jxr_javadoccomment">     * @param key - The key to register for pool control.</em>
-<a class="jxr_linenumber" name="L1267" href="#L1267">1267</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L1268" href="#L1268">1268</a> <em class="jxr_javadoccomment">     * @throws Exception If the associated factory throws an exception</em>
-<a class="jxr_linenumber" name="L1269" href="#L1269">1269</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L1270" href="#L1270">1270</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> preparePool(<strong class="jxr_keyword">final</strong> K key) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L1271" href="#L1271">1271</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> minIdlePerKeySave = getMinIdlePerKey();
-<a class="jxr_linenumber" name="L1272" href="#L1272">1272</a>         <strong class="jxr_keyword">if</strong> (minIdlePerKeySave &lt; 1) {
-<a class="jxr_linenumber" name="L1273" href="#L1273">1273</a>             <strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L1274" href="#L1274">1274</a>         }
-<a class="jxr_linenumber" name="L1275" href="#L1275">1275</a>         ensureMinIdle(key);
-<a class="jxr_linenumber" name="L1276" href="#L1276">1276</a>     }
-<a class="jxr_linenumber" name="L1277" href="#L1277">1277</a> 
-<a class="jxr_linenumber" name="L1278" href="#L1278">1278</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1279" href="#L1279">1279</a> <em class="jxr_javadoccomment">     * Calculate the number of objects to test in a run of the idle object</em>
-<a class="jxr_linenumber" name="L1280" href="#L1280">1280</a> <em class="jxr_javadoccomment">     * evictor.</em>
-<a class="jxr_linenumber" name="L1281" href="#L1281">1281</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L1282" href="#L1282">1282</a> <em class="jxr_javadoccomment">     * @return The number of objects to test for validity</em>
-<a class="jxr_linenumber" name="L1283" href="#L1283">1283</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L1284" href="#L1284">1284</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> getNumTests() {
-<a class="jxr_linenumber" name="L1285" href="#L1285">1285</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> totalIdle = getNumIdle();
-<a class="jxr_linenumber" name="L1286" href="#L1286">1286</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> numTests = getNumTestsPerEvictionRun();
-<a class="jxr_linenumber" name="L1287" href="#L1287">1287</a>         <strong class="jxr_keyword">if</strong> (numTests &gt;= 0) {
-<a class="jxr_linenumber" name="L1288" href="#L1288">1288</a>             <strong class="jxr_keyword">return</strong> Math.min(numTests, totalIdle);
-<a class="jxr_linenumber" name="L1289" href="#L1289">1289</a>         }
-<a class="jxr_linenumber" name="L1290" href="#L1290">1290</a>         <strong class="jxr_keyword">return</strong>(<strong class="jxr_keyword">int</strong>)(Math.ceil(totalIdle/Math.abs((<strong class="jxr_keyword">double</strong>)numTests)));
-<a class="jxr_linenumber" name="L1291" href="#L1291">1291</a>     }
-<a class="jxr_linenumber" name="L1292" href="#L1292">1292</a> 
-<a class="jxr_linenumber" name="L1293" href="#L1293">1293</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1294" href="#L1294">1294</a> <em class="jxr_javadoccomment">     * Calculate the number of objects that need to be created to attempt to</em>
-<a class="jxr_linenumber" name="L1295" href="#L1295">1295</a> <em class="jxr_javadoccomment">     * maintain the minimum number of idle objects while not exceeded the limits</em>
-<a class="jxr_linenumber" name="L1296" href="#L1296">1296</a> <em class="jxr_javadoccomment">     * on the maximum number of objects either per key or totally.</em>
-<a class="jxr_linenumber" name="L1297" href="#L1297">1297</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L1298" href="#L1298">1298</a> <em class="jxr_javadoccomment">     * @param objectDeque   The set of objects to check</em>
-<a class="jxr_linenumber" name="L1299" href="#L1299">1299</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L1300" href="#L1300">1300</a> <em class="jxr_javadoccomment">     * @return The number of new objects to create</em>
-<a class="jxr_linenumber" name="L1301" href="#L1301">1301</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L1302" href="#L1302">1302</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> calculateDeficit(<strong class="jxr_keyword">final</strong> ObjectDeque&lt;T&gt; objectDeque) {
-<a class="jxr_linenumber" name="L1303" href="#L1303">1303</a> 
-<a class="jxr_linenumber" name="L1304" href="#L1304">1304</a>         <strong class="jxr_keyword">if</strong> (objectDeque == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L1305" href="#L1305">1305</a>             <strong class="jxr_keyword">return</strong> getMinIdlePerKey();
-<a class="jxr_linenumber" name="L1306" href="#L1306">1306</a>         }
-<a class="jxr_linenumber" name="L1307" href="#L1307">1307</a> 
-<a class="jxr_linenumber" name="L1308" href="#L1308">1308</a>         <em class="jxr_comment">// Used more than once so keep a local copy so the value is consistent</em>
-<a class="jxr_linenumber" name="L1309" href="#L1309">1309</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> maxTotal = getMaxTotal();
-<a class="jxr_linenumber" name="L1310" href="#L1310">1310</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> maxTotalPerKeySave = getMaxTotalPerKey();
-<a class="jxr_linenumber" name="L1311" href="#L1311">1311</a> 
-<a class="jxr_linenumber" name="L1312" href="#L1312">1312</a>         <strong class="jxr_keyword">int</strong> objectDefecit = 0;
-<a class="jxr_linenumber" name="L1313" href="#L1313">1313</a> 
-<a class="jxr_linenumber" name="L1314" href="#L1314">1314</a>         <em class="jxr_comment">// Calculate no of objects needed to be created, in order to have</em>
-<a class="jxr_linenumber" name="L1315" href="#L1315">1315</a>         <em class="jxr_comment">// the number of pooled objects &lt; maxTotalPerKey();</em>
-<a class="jxr_linenumber" name="L1316" href="#L1316">1316</a>         objectDefecit = getMinIdlePerKey() - objectDeque.getIdleObjects().size();
-<a class="jxr_linenumber" name="L1317" href="#L1317">1317</a>         <strong class="jxr_keyword">if</strong> (maxTotalPerKeySave &gt; 0) {
-<a class="jxr_linenumber" name="L1318" href="#L1318">1318</a>             <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> growLimit = Math.max(0,
-<a class="jxr_linenumber" name="L1319" href="#L1319">1319</a>                     maxTotalPerKeySave - objectDeque.getIdleObjects().size());
-<a class="jxr_linenumber" name="L1320" href="#L1320">1320</a>             objectDefecit = Math.min(objectDefecit, growLimit);
-<a class="jxr_linenumber" name="L1321" href="#L1321">1321</a>         }
-<a class="jxr_linenumber" name="L1322" href="#L1322">1322</a> 
-<a class="jxr_linenumber" name="L1323" href="#L1323">1323</a>         <em class="jxr_comment">// Take the maxTotal limit into account</em>
-<a class="jxr_linenumber" name="L1324" href="#L1324">1324</a>         <strong class="jxr_keyword">if</strong> (maxTotal &gt; 0) {
-<a class="jxr_linenumber" name="L1325" href="#L1325">1325</a>             <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> growLimit = Math.max(0, maxTotal - getNumActive() - getNumIdle());
-<a class="jxr_linenumber" name="L1326" href="#L1326">1326</a>             objectDefecit = Math.min(objectDefecit, growLimit);
-<a class="jxr_linenumber" name="L1327" href="#L1327">1327</a>         }
-<a class="jxr_linenumber" name="L1328" href="#L1328">1328</a> 
-<a class="jxr_linenumber" name="L1329" href="#L1329">1329</a>         <strong class="jxr_keyword">return</strong> objectDefecit;
-<a class="jxr_linenumber" name="L1330" href="#L1330">1330</a>     }
-<a class="jxr_linenumber" name="L1331" href="#L1331">1331</a> 
-<a class="jxr_linenumber" name="L1332" href="#L1332">1332</a> 
-<a class="jxr_linenumber" name="L1333" href="#L1333">1333</a>     <em class="jxr_comment">//--- JMX support ----------------------------------------------------------</em>
-<a class="jxr_linenumber" name="L1334" href="#L1334">1334</a> 
-<a class="jxr_linenumber" name="L1335" href="#L1335">1335</a>     @Override
-<a class="jxr_linenumber" name="L1336" href="#L1336">1336</a>     <strong class="jxr_keyword">public</strong> Map&lt;String,Integer&gt; getNumActivePerKey() {
-<a class="jxr_linenumber" name="L1337" href="#L1337">1337</a>         <strong class="jxr_keyword">final</strong> HashMap&lt;String,Integer&gt; result = <strong class="jxr_keyword">new</strong> HashMap&lt;&gt;();
-<a class="jxr_linenumber" name="L1338" href="#L1338">1338</a> 
-<a class="jxr_linenumber" name="L1339" href="#L1339">1339</a>         <strong class="jxr_keyword">final</strong> Iterator&lt;Entry&lt;K,ObjectDeque&lt;T&gt;&gt;&gt; iter = poolMap.entrySet().iterator();
-<a class="jxr_linenumber" name="L1340" href="#L1340">1340</a>         <strong class="jxr_keyword">while</strong> (iter.hasNext()) {
-<a class="jxr_linenumber" name="L1341" href="#L1341">1341</a>             <strong class="jxr_keyword">final</strong> Entry&lt;K,ObjectDeque&lt;T&gt;&gt; entry = iter.next();
-<a class="jxr_linenumber" name="L1342" href="#L1342">1342</a>             <strong class="jxr_keyword">if</strong> (entry != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L1343" href="#L1343">1343</a>                 <strong class="jxr_keyword">final</strong> K key = entry.getKey();
-<a class="jxr_linenumber" name="L1344" href="#L1344">1344</a>                 <strong class="jxr_keyword">final</strong> ObjectDeque&lt;T&gt; objectDequeue = entry.getValue();
-<a class="jxr_linenumber" name="L1345" href="#L1345">1345</a>                 <strong class="jxr_keyword">if</strong> (key != <strong class="jxr_keyword">null</strong> &amp;&amp; objectDequeue != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L1346" href="#L1346">1346</a>                     result.put(key.toString(), Integer.valueOf(
-<a class="jxr_linenumber" name="L1347" href="#L1347">1347</a>                             objectDequeue.getAllObjects().size() -
-<a class="jxr_linenumber" name="L1348" href="#L1348">1348</a>                             objectDequeue.getIdleObjects().size()));
-<a class="jxr_linenumber" name="L1349" href="#L1349">1349</a>                 }
-<a class="jxr_linenumber" name="L1350" href="#L1350">1350</a>             }
-<a class="jxr_linenumber" name="L1351" href="#L1351">1351</a>         }
-<a class="jxr_linenumber" name="L1352" href="#L1352">1352</a>         <strong class="jxr_keyword">return</strong> result;
-<a class="jxr_linenumber" name="L1353" href="#L1353">1353</a>     }
-<a class="jxr_linenumber" name="L1354" href="#L1354">1354</a> 
-<a class="jxr_linenumber" name="L1355" href="#L1355">1355</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1356" href="#L1356">1356</a> <em class="jxr_javadoccomment">     * Return an estimate of the number of threads currently blocked waiting for</em>
-<a class="jxr_linenumber" name="L1357" href="#L1357">1357</a> <em class="jxr_javadoccomment">     * an object from the pool. This is intended for monitoring only, not for</em>
-<a class="jxr_linenumber" name="L1358" href="#L1358">1358</a> <em class="jxr_javadoccomment">     * synchronization control.</em>
-<a class="jxr_linenumber" name="L1359" href="#L1359">1359</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L1360" href="#L1360">1360</a> <em class="jxr_javadoccomment">     * @return The estimate of the number of threads currently blocked waiting</em>
-<a class="jxr_linenumber" name="L1361" href="#L1361">1361</a> <em class="jxr_javadoccomment">     *         for an object from the pool</em>
-<a class="jxr_linenumber" name="L1362" href="#L1362">1362</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L1363" href="#L1363">1363</a>     @Override
-<a class="jxr_linenumber" name="L1364" href="#L1364">1364</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getNumWaiters() {
-<a class="jxr_linenumber" name="L1365" href="#L1365">1365</a>         <strong class="jxr_keyword">int</strong> result = 0;
-<a class="jxr_linenumber" name="L1366" href="#L1366">1366</a> 
-<a class="jxr_linenumber" name="L1367" href="#L1367">1367</a>         <strong class="jxr_keyword">if</strong> (getBlockWhenExhausted()) {
-<a class="jxr_linenumber" name="L1368" href="#L1368">1368</a>             <strong class="jxr_keyword">final</strong> Iterator&lt;ObjectDeque&lt;T&gt;&gt; iter = poolMap.values().iterator();
-<a class="jxr_linenumber" name="L1369" href="#L1369">1369</a> 
-<a class="jxr_linenumber" name="L1370" href="#L1370">1370</a>             <strong class="jxr_keyword">while</strong> (iter.hasNext()) {
-<a class="jxr_linenumber" name="L1371" href="#L1371">1371</a>                 <em class="jxr_comment">// Assume no overflow</em>
-<a class="jxr_linenumber" name="L1372" href="#L1372">1372</a>                 result += iter.next().getIdleObjects().getTakeQueueLength();
-<a class="jxr_linenumber" name="L1373" href="#L1373">1373</a>             }
-<a class="jxr_linenumber" name="L1374" href="#L1374">1374</a>         }
-<a class="jxr_linenumber" name="L1375" href="#L1375">1375</a> 
-<a class="jxr_linenumber" name="L1376" href="#L1376">1376</a>         <strong class="jxr_keyword">return</strong> result;
-<a class="jxr_linenumber" name="L1377" href="#L1377">1377</a>     }
-<a class="jxr_linenumber" name="L1378" href="#L1378">1378</a> 
-<a class="jxr_linenumber" name="L1379" href="#L1379">1379</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1380" href="#L1380">1380</a> <em class="jxr_javadoccomment">     * Return an estimate of the number of threads currently blocked waiting for</em>
-<a class="jxr_linenumber" name="L1381" href="#L1381">1381</a> <em class="jxr_javadoccomment">     * an object from the pool for each key. This is intended for</em>
-<a class="jxr_linenumber" name="L1382" href="#L1382">1382</a> <em class="jxr_javadoccomment">     * monitoring only, not for synchronization control.</em>
-<a class="jxr_linenumber" name="L1383" href="#L1383">1383</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L1384" href="#L1384">1384</a> <em class="jxr_javadoccomment">     * @return The estimate of the number of threads currently blocked waiting</em>
-<a class="jxr_linenumber" name="L1385" href="#L1385">1385</a> <em class="jxr_javadoccomment">     *         for an object from the pool for each key</em>
-<a class="jxr_linenumber" name="L1386" href="#L1386">1386</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L1387" href="#L1387">1387</a>     @Override
-<a class="jxr_linenumber" name="L1388" href="#L1388">1388</a>     <strong class="jxr_keyword">public</strong> Map&lt;String,Integer&gt; getNumWaitersByKey() {
-<a class="jxr_linenumber" name="L1389" href="#L1389">1389</a>         <strong class="jxr_keyword">final</strong> Map&lt;String,Integer&gt; result = <strong class="jxr_keyword">new</strong> HashMap&lt;&gt;();
-<a class="jxr_linenumber" name="L1390" href="#L1390">1390</a> 
-<a class="jxr_linenumber" name="L1391" href="#L1391">1391</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">final</strong> Map.Entry&lt;K, ObjectDeque&lt;T&gt;&gt; entry : poolMap.entrySet()) {
-<a class="jxr_linenumber" name="L1392" href="#L1392">1392</a>             <strong class="jxr_keyword">final</strong> K k = entry.getKey();
-<a class="jxr_linenumber" name="L1393" href="#L1393">1393</a>             <strong class="jxr_keyword">final</strong> ObjectDeque&lt;T&gt; deque = entry.getValue();
-<a class="jxr_linenumber" name="L1394" href="#L1394">1394</a>             <strong class="jxr_keyword">if</strong> (deque != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L1395" href="#L1395">1395</a>                 <strong class="jxr_keyword">if</strong> (getBlockWhenExhausted()) {
-<a class="jxr_linenumber" name="L1396" href="#L1396">1396</a>                     result.put(k.toString(), Integer.valueOf(
-<a class="jxr_linenumber" name="L1397" href="#L1397">1397</a>                             deque.getIdleObjects().getTakeQueueLength()));
-<a class="jxr_linenumber" name="L1398" href="#L1398">1398</a>                 } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L1399" href="#L1399">1399</a>                     result.put(k.toString(), Integer.valueOf(0));
-<a class="jxr_linenumber" name="L1400" href="#L1400">1400</a>                 }
-<a class="jxr_linenumber" name="L1401" href="#L1401">1401</a>             }
-<a class="jxr_linenumber" name="L1402" href="#L1402">1402</a>         }
-<a class="jxr_linenumber" name="L1403" href="#L1403">1403</a>         <strong class="jxr_keyword">return</strong> result;
-<a class="jxr_linenumber" name="L1404" href="#L1404">1404</a>     }
-<a class="jxr_linenumber" name="L1405" href="#L1405">1405</a> 
-<a class="jxr_linenumber" name="L1406" href="#L1406">1406</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1407" href="#L1407">1407</a> <em class="jxr_javadoccomment">     * Provides information on all the objects in the pool, both idle (waiting</em>
-<a class="jxr_linenumber" name="L1408" href="#L1408">1408</a> <em class="jxr_javadoccomment">     * to be borrowed) and active (currently borrowed).</em>
-<a class="jxr_linenumber" name="L1409" href="#L1409">1409</a> <em class="jxr_javadoccomment">     * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L1410" href="#L1410">1410</a> <em class="jxr_javadoccomment">     * Note: This is named listAllObjects so it is presented as an operation via</em>
-<a class="jxr_linenumber" name="L1411" href="#L1411">1411</a> <em class="jxr_javadoccomment">     * JMX. That means it won't be invoked unless the explicitly requested</em>
-<a class="jxr_linenumber" name="L1412" href="#L1412">1412</a> <em class="jxr_javadoccomment">     * whereas all attributes will be automatically requested when viewing the</em>
-<a class="jxr_linenumber" name="L1413" href="#L1413">1413</a> <em class="jxr_javadoccomment">     * attributes for an object in a tool like JConsole.</em>
-<a class="jxr_linenumber" name="L1414" href="#L1414">1414</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L1415" href="#L1415">1415</a> <em class="jxr_javadoccomment">     * @return Information grouped by key on all the objects in the pool</em>
-<a class="jxr_linenumber" name="L1416" href="#L1416">1416</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L1417" href="#L1417">1417</a>     @Override
-<a class="jxr_linenumber" name="L1418" href="#L1418">1418</a>     <strong class="jxr_keyword">public</strong> Map&lt;String,List&lt;DefaultPooledObjectInfo&gt;&gt; listAllObjects() {
-<a class="jxr_linenumber" name="L1419" href="#L1419">1419</a>         <strong class="jxr_keyword">final</strong> Map&lt;String,List&lt;DefaultPooledObjectInfo&gt;&gt; result =
-<a class="jxr_linenumber" name="L1420" href="#L1420">1420</a>                 <strong class="jxr_keyword">new</strong> HashMap&lt;&gt;();
-<a class="jxr_linenumber" name="L1421" href="#L1421">1421</a> 
-<a class="jxr_linenumber" name="L1422" href="#L1422">1422</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">final</strong> Map.Entry&lt;K, ObjectDeque&lt;T&gt;&gt; entry : poolMap.entrySet()) {
-<a class="jxr_linenumber" name="L1423" href="#L1423">1423</a>             <strong class="jxr_keyword">final</strong> K k = entry.getKey();
-<a class="jxr_linenumber" name="L1424" href="#L1424">1424</a>             <strong class="jxr_keyword">final</strong> ObjectDeque&lt;T&gt; deque = entry.getValue();
-<a class="jxr_linenumber" name="L1425" href="#L1425">1425</a>             <strong class="jxr_keyword">if</strong> (deque != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L1426" href="#L1426">1426</a>                 <strong class="jxr_keyword">final</strong> List&lt;DefaultPooledObjectInfo&gt; list =
-<a class="jxr_linenumber" name="L1427" href="#L1427">1427</a>                         <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
-<a class="jxr_linenumber" name="L1428" href="#L1428">1428</a>                 result.put(k.toString(), list);
-<a class="jxr_linenumber" name="L1429" href="#L1429">1429</a>                 <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">final</strong> PooledObject&lt;T&gt; p : deque.getAllObjects().values()) {
-<a class="jxr_linenumber" name="L1430" href="#L1430">1430</a>                     list.add(<strong class="jxr_keyword">new</strong> <a name="DefaultPooledObjectInfo" href="../../../../../org/apache/commons/pool2/impl/DefaultPooledObjectInfo.html#DefaultPooledObjectInfo">DefaultPooledObjectInfo</a>(p));
-<a class="jxr_linenumber" name="L1431" href="#L1431">1431</a>                 }
-<a class="jxr_linenumber" name="L1432" href="#L1432">1432</a>             }
-<a class="jxr_linenumber" name="L1433" href="#L1433">1433</a>         }
-<a class="jxr_linenumber" name="L1434" href="#L1434">1434</a>         <strong class="jxr_keyword">return</strong> result;
-<a class="jxr_linenumber" name="L1435" href="#L1435">1435</a>     }
-<a class="jxr_linenumber" name="L1436" href="#L1436">1436</a> 
-<a class="jxr_linenumber" name="L1437" href="#L1437">1437</a> 
-<a class="jxr_linenumber" name="L1438" href="#L1438">1438</a>     <em class="jxr_comment">//--- inner classes ----------------------------------------------</em>
-<a class="jxr_linenumber" name="L1439" href="#L1439">1439</a> 
-<a class="jxr_linenumber" name="L1440" href="#L1440">1440</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1441" href="#L1441">1441</a> <em class="jxr_javadoccomment">     * Maintains information on the per key queue for a given key.</em>
-<a class="jxr_linenumber" name="L1442" href="#L1442">1442</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L1443" href="#L1443">1443</a> <em class="jxr_javadoccomment">     * @param &lt;S&gt; type of objects in the pool</em>
-<a class="jxr_linenumber" name="L1444" href="#L1444">1444</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L1445" href="#L1445">1445</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">class</strong> ObjectDeque&lt;S&gt; {
-<a class="jxr_linenumber" name="L1446" href="#L1446">1446</a> 
-<a class="jxr_linenumber" name="L1447" href="#L1447">1447</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> LinkedBlockingDeque&lt;PooledObject&lt;S&gt;&gt; idleObjects;
-<a class="jxr_linenumber" name="L1448" href="#L1448">1448</a> 
-<a class="jxr_linenumber" name="L1449" href="#L1449">1449</a>         <em class="jxr_comment">/*</em>
-<a class="jxr_linenumber" name="L1450" href="#L1450">1450</a> <em class="jxr_comment">         * Number of instances created - number destroyed.</em>
-<a class="jxr_linenumber" name="L1451" href="#L1451">1451</a> <em class="jxr_comment">         * Invariant: createCount &lt;= maxTotalPerKey</em>
-<a class="jxr_linenumber" name="L1452" href="#L1452">1452</a> <em class="jxr_comment">         */</em>
-<a class="jxr_linenumber" name="L1453" href="#L1453">1453</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> AtomicInteger createCount = <strong class="jxr_keyword">new</strong> AtomicInteger(0);
-<a class="jxr_linenumber" name="L1454" href="#L1454">1454</a> 
-<a class="jxr_linenumber" name="L1455" href="#L1455">1455</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">long</strong> makeObjectCount = 0;
-<a class="jxr_linenumber" name="L1456" href="#L1456">1456</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Object makeObjectCountLock = <strong class="jxr_keyword">new</strong> Object();
-<a class="jxr_linenumber" name="L1457" href="#L1457">1457</a> 
-<a class="jxr_linenumber" name="L1458" href="#L1458">1458</a>         <em class="jxr_comment">/*</em>
-<a class="jxr_linenumber" name="L1459" href="#L1459">1459</a> <em class="jxr_comment">         * The map is keyed on pooled instances, wrapped to ensure that</em>
-<a class="jxr_linenumber" name="L1460" href="#L1460">1460</a> <em class="jxr_comment">         * they work properly as keys.</em>
-<a class="jxr_linenumber" name="L1461" href="#L1461">1461</a> <em class="jxr_comment">         */</em>
-<a class="jxr_linenumber" name="L1462" href="#L1462">1462</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Map&lt;IdentityWrapper&lt;S&gt;, PooledObject&lt;S&gt;&gt; allObjects =
-<a class="jxr_linenumber" name="L1463" href="#L1463">1463</a>                 <strong class="jxr_keyword">new</strong> ConcurrentHashMap&lt;&gt;();
-<a class="jxr_linenumber" name="L1464" href="#L1464">1464</a> 
-<a class="jxr_linenumber" name="L1465" href="#L1465">1465</a>         <em class="jxr_comment">/*</em>
-<a class="jxr_linenumber" name="L1466" href="#L1466">1466</a> <em class="jxr_comment">         * Number of threads with registered interest in this key.</em>
-<a class="jxr_linenumber" name="L1467" href="#L1467">1467</a> <em class="jxr_comment">         * register(K) increments this counter and deRegister(K) decrements it.</em>
-<a class="jxr_linenumber" name="L1468" href="#L1468">1468</a> <em class="jxr_comment">         * Invariant: empty keyed pool will not be dropped unless numInterested</em>
-<a class="jxr_linenumber" name="L1469" href="#L1469">1469</a> <em class="jxr_comment">         *            is 0.</em>
-<a class="jxr_linenumber" name="L1470" href="#L1470">1470</a> <em class="jxr_comment">         */</em>
-<a class="jxr_linenumber" name="L1471" href="#L1471">1471</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> AtomicLong numInterested = <strong class="jxr_keyword">new</strong> AtomicLong(0);
-<a class="jxr_linenumber" name="L1472" href="#L1472">1472</a> 
-<a class="jxr_linenumber" name="L1473" href="#L1473">1473</a>         <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1474" href="#L1474">1474</a> <em class="jxr_javadoccomment">         * Create a new ObjecDeque with the given fairness policy.</em>
-<a class="jxr_linenumber" name="L1475" href="#L1475">1475</a> <em class="jxr_javadoccomment">         * @param fairness true means client threads waiting to borrow / return instances</em>
-<a class="jxr_linenumber" name="L1476" href="#L1476">1476</a> <em class="jxr_javadoccomment">         * will be served as if waiting in a FIFO queue.</em>
-<a class="jxr_linenumber" name="L1477" href="#L1477">1477</a> <em class="jxr_javadoccomment">         */</em>
-<a class="jxr_linenumber" name="L1478" href="#L1478">1478</a>         <strong class="jxr_keyword">public</strong> ObjectDeque(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> fairness) {
-<a class="jxr_linenumber" name="L1479" href="#L1479">1479</a>             idleObjects = <strong class="jxr_keyword">new</strong> LinkedBlockingDeque&lt;&gt;(fairness);
-<a class="jxr_linenumber" name="L1480" href="#L1480">1480</a>         }
-<a class="jxr_linenumber" name="L1481" href="#L1481">1481</a> 
-<a class="jxr_linenumber" name="L1482" href="#L1482">1482</a>         <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1483" href="#L1483">1483</a> <em class="jxr_javadoccomment">         * Obtain the idle objects for the current key.</em>
-<a class="jxr_linenumber" name="L1484" href="#L1484">1484</a> <em class="jxr_javadoccomment">         *</em>
-<a class="jxr_linenumber" name="L1485" href="#L1485">1485</a> <em class="jxr_javadoccomment">         * @return The idle objects</em>
-<a class="jxr_linenumber" name="L1486" href="#L1486">1486</a> <em class="jxr_javadoccomment">         */</em>
-<a class="jxr_linenumber" name="L1487" href="#L1487">1487</a>         <strong class="jxr_keyword">public</strong> LinkedBlockingDeque&lt;PooledObject&lt;S&gt;&gt; getIdleObjects() {
-<a class="jxr_linenumber" name="L1488" href="#L1488">1488</a>             <strong class="jxr_keyword">return</strong> idleObjects;
-<a class="jxr_linenumber" name="L1489" href="#L1489">1489</a>         }
-<a class="jxr_linenumber" name="L1490" href="#L1490">1490</a> 
-<a class="jxr_linenumber" name="L1491" href="#L1491">1491</a>         <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1492" href="#L1492">1492</a> <em class="jxr_javadoccomment">         * Obtain the count of the number of objects created for the current</em>
-<a class="jxr_linenumber" name="L1493" href="#L1493">1493</a> <em class="jxr_javadoccomment">         * key.</em>
-<a class="jxr_linenumber" name="L1494" href="#L1494">1494</a> <em class="jxr_javadoccomment">         *</em>
-<a class="jxr_linenumber" name="L1495" href="#L1495">1495</a> <em class="jxr_javadoccomment">         * @return The number of objects created for this key</em>
-<a class="jxr_linenumber" name="L1496" href="#L1496">1496</a> <em class="jxr_javadoccomment">         */</em>
-<a class="jxr_linenumber" name="L1497" href="#L1497">1497</a>         <strong class="jxr_keyword">public</strong> AtomicInteger getCreateCount() {
-<a class="jxr_linenumber" name="L1498" href="#L1498">1498</a>             <strong class="jxr_keyword">return</strong> createCount;
-<a class="jxr_linenumber" name="L1499" href="#L1499">1499</a>         }
-<a class="jxr_linenumber" name="L1500" href="#L1500">1500</a> 
-<a class="jxr_linenumber" name="L1501" href="#L1501">1501</a>         <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1502" href="#L1502">1502</a> <em class="jxr_javadoccomment">         * Obtain the number of threads with an interest registered in this key.</em>
-<a class="jxr_linenumber" name="L1503" href="#L1503">1503</a> <em class="jxr_javadoccomment">         *</em>
-<a class="jxr_linenumber" name="L1504" href="#L1504">1504</a> <em class="jxr_javadoccomment">         * @return The number of threads with a registered interest in this key</em>
-<a class="jxr_linenumber" name="L1505" href="#L1505">1505</a> <em class="jxr_javadoccomment">         */</em>
-<a class="jxr_linenumber" name="L1506" href="#L1506">1506</a>         <strong class="jxr_keyword">public</strong> AtomicLong getNumInterested() {
-<a class="jxr_linenumber" name="L1507" href="#L1507">1507</a>             <strong class="jxr_keyword">return</strong> numInterested;
-<a class="jxr_linenumber" name="L1508" href="#L1508">1508</a>         }
-<a class="jxr_linenumber" name="L1509" href="#L1509">1509</a> 
-<a class="jxr_linenumber" name="L1510" href="#L1510">1510</a>         <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1511" href="#L1511">1511</a> <em class="jxr_javadoccomment">         * Obtain all the objects for the current key.</em>
-<a class="jxr_linenumber" name="L1512" href="#L1512">1512</a> <em class="jxr_javadoccomment">         *</em>
-<a class="jxr_linenumber" name="L1513" href="#L1513">1513</a> <em class="jxr_javadoccomment">         * @return All the objects</em>
-<a class="jxr_linenumber" name="L1514" href="#L1514">1514</a> <em class="jxr_javadoccomment">         */</em>
-<a class="jxr_linenumber" name="L1515" href="#L1515">1515</a>         <strong class="jxr_keyword">public</strong> Map&lt;IdentityWrapper&lt;S&gt;, PooledObject&lt;S&gt;&gt; getAllObjects() {
-<a class="jxr_linenumber" name="L1516" href="#L1516">1516</a>             <strong class="jxr_keyword">return</strong> allObjects;
-<a class="jxr_linenumber" name="L1517" href="#L1517">1517</a>         }
-<a class="jxr_linenumber" name="L1518" href="#L1518">1518</a> 
-<a class="jxr_linenumber" name="L1519" href="#L1519">1519</a>         @Override
-<a class="jxr_linenumber" name="L1520" href="#L1520">1520</a>         <strong class="jxr_keyword">public</strong> String toString() {
-<a class="jxr_linenumber" name="L1521" href="#L1521">1521</a>             <strong class="jxr_keyword">final</strong> StringBuilder builder = <strong class="jxr_keyword">new</strong> StringBuilder();
-<a class="jxr_linenumber" name="L1522" href="#L1522">1522</a>             builder.append(<span class="jxr_string">"ObjectDeque [idleObjects="</span>);
-<a class="jxr_linenumber" name="L1523" href="#L1523">1523</a>             builder.append(idleObjects);
-<a class="jxr_linenumber" name="L1524" href="#L1524">1524</a>             builder.append(<span class="jxr_string">", createCount="</span>);
-<a class="jxr_linenumber" name="L1525" href="#L1525">1525</a>             builder.append(createCount);
-<a class="jxr_linenumber" name="L1526" href="#L1526">1526</a>             builder.append(<span class="jxr_string">", allObjects="</span>);
-<a class="jxr_linenumber" name="L1527" href="#L1527">1527</a>             builder.append(allObjects);
-<a class="jxr_linenumber" name="L1528" href="#L1528">1528</a>             builder.append(<span class="jxr_string">", numInterested="</span>);
-<a class="jxr_linenumber" name="L1529" href="#L1529">1529</a>             builder.append(numInterested);
-<a class="jxr_linenumber" name="L1530" href="#L1530">1530</a>             builder.append(<span class="jxr_string">"]"</span>);
-<a class="jxr_linenumber" name="L1531" href="#L1531">1531</a>             <strong class="jxr_keyword">return</strong> builder.toString();
-<a class="jxr_linenumber" name="L1532" href="#L1532">1532</a>         }
-<a class="jxr_linenumber" name="L1533" href="#L1533">1533</a> 
-<a class="jxr_linenumber" name="L1534" href="#L1534">1534</a>     }
-<a class="jxr_linenumber" name="L1535" href="#L1535">1535</a> 
-<a class="jxr_linenumber" name="L1536" href="#L1536">1536</a>     <em class="jxr_comment">//--- configuration attributes ---------------------------------------------</em>
-<a class="jxr_linenumber" name="L1537" href="#L1537">1537</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">volatile</strong> <strong class="jxr_keyword">int</strong> maxIdlePerKey =
-<a class="jxr_linenumber" name="L1538" href="#L1538">1538</a>             GenericKeyedObjectPoolConfig.DEFAULT_MAX_IDLE_PER_KEY;
-<a class="jxr_linenumber" name="L1539" href="#L1539">1539</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">volatile</strong> <strong class="jxr_keyword">int</strong> minIdlePerKey =
-<a class="jxr_linenumber" name="L1540" href="#L1540">1540</a>             GenericKeyedObjectPoolConfig.DEFAULT_MIN_IDLE_PER_KEY;
-<a class="jxr_linenumber" name="L1541" href="#L1541">1541</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">volatile</strong> <strong class="jxr_keyword">int</strong> maxTotalPerKey =
-<a class="jxr_linenumber" name="L1542" href="#L1542">1542</a>             GenericKeyedObjectPoolConfig.DEFAULT_MAX_TOTAL_PER_KEY;
-<a class="jxr_linenumber" name="L1543" href="#L1543">1543</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> KeyedPooledObjectFactory&lt;K,T&gt; factory;
-<a class="jxr_linenumber" name="L1544" href="#L1544">1544</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> fairness;
-<a class="jxr_linenumber" name="L1545" href="#L1545">1545</a> 
-<a class="jxr_linenumber" name="L1546" href="#L1546">1546</a> 
-<a class="jxr_linenumber" name="L1547" href="#L1547">1547</a>     <em class="jxr_comment">//--- internal attributes --------------------------------------------------</em>
-<a class="jxr_linenumber" name="L1548" href="#L1548">1548</a> 
-<a class="jxr_linenumber" name="L1549" href="#L1549">1549</a>     <em class="jxr_comment">/*</em>
-<a class="jxr_linenumber" name="L1550" href="#L1550">1550</a> <em class="jxr_comment">     * My hash of sub-pools (ObjectQueue). The list of keys &lt;b&gt;must&lt;/b&gt; be kept</em>
-<a class="jxr_linenumber" name="L1551" href="#L1551">1551</a> <em class="jxr_comment">     * in step with {@link #poolKeyList} using {@link #keyLock} to ensure any</em>
-<a class="jxr_linenumber" name="L1552" href="#L1552">1552</a> <em class="jxr_comment">     * changes to the list of current keys is made in a thread-safe manner.</em>
-<a class="jxr_linenumber" name="L1553" href="#L1553">1553</a> <em class="jxr_comment">     */</em>
-<a class="jxr_linenumber" name="L1554" href="#L1554">1554</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Map&lt;K,ObjectDeque&lt;T&gt;&gt; poolMap =
-<a class="jxr_linenumber" name="L1555" href="#L1555">1555</a>             <strong class="jxr_keyword">new</strong> ConcurrentHashMap&lt;&gt;(); <em class="jxr_comment">// @GuardedBy("keyLock") for write access (and some read access)</em>
-<a class="jxr_linenumber" name="L1556" href="#L1556">1556</a>     <em class="jxr_comment">/*</em>
-<a class="jxr_linenumber" name="L1557" href="#L1557">1557</a> <em class="jxr_comment">     * List of pool keys - used to control eviction order. The list of keys</em>
-<a class="jxr_linenumber" name="L1558" href="#L1558">1558</a> <em class="jxr_comment">     * &lt;b&gt;must&lt;/b&gt; be kept in step with {@link #poolMap} using {@link #keyLock}</em>
-<a class="jxr_linenumber" name="L1559" href="#L1559">1559</a> <em class="jxr_comment">     * to ensure any changes to the list of current keys is made in a</em>
-<a class="jxr_linenumber" name="L1560" href="#L1560">1560</a> <em class="jxr_comment">     * thread-safe manner.</em>
-<a class="jxr_linenumber" name="L1561" href="#L1561">1561</a> <em class="jxr_comment">     */</em>
-<a class="jxr_linenumber" name="L1562" href="#L1562">1562</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> List&lt;K&gt; poolKeyList = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;(); <em class="jxr_comment">// @GuardedBy("keyLock")</em>
-<a class="jxr_linenumber" name="L1563" href="#L1563">1563</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> ReadWriteLock keyLock = <strong class="jxr_keyword">new</strong> ReentrantReadWriteLock(<strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="L1564" href="#L1564">1564</a>     <em class="jxr_comment">/*</em>
-<a class="jxr_linenumber" name="L1565" href="#L1565">1565</a> <em class="jxr_comment">     * The combined count of the currently active objects for all keys and those</em>
-<a class="jxr_linenumber" name="L1566" href="#L1566">1566</a> <em class="jxr_comment">     * in the process of being created. Under load, it may exceed</em>
-<a class="jxr_linenumber" name="L1567" href="#L1567">1567</a> <em class="jxr_comment">     * {@link #maxTotal} but there will never be more than {@link #maxTotal}</em>
-<a class="jxr_linenumber" name="L1568" href="#L1568">1568</a> <em class="jxr_comment">     * created at any one time.</em>
-<a class="jxr_linenumber" name="L1569" href="#L1569">1569</a> <em class="jxr_comment">     */</em>

[... 465 lines stripped ...]