/[Apache-SVN]/jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/StackObjectPool.java
ViewVC logotype

Diff of /jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/StackObjectPool.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

--- jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/StackObjectPool.java	2005/10/29 09:26:21	329381
+++ jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/StackObjectPool.java	2005/10/29 09:45:10	329382
@@ -122,17 +122,23 @@ public class StackObjectPool extends Bas
     public synchronized Object borrowObject() throws Exception {
         assertOpen();
         Object obj = null;
-        if (!_pool.empty()) {
-            obj = _pool.pop();
-        } else {
-            if(null == _factory) {
-                throw new NoSuchElementException();
+        while (null == obj) {
+            if (!_pool.empty()) {
+                obj = _pool.pop();
             } else {
-                obj = _factory.makeObject();
+                if(null == _factory) {
+                    throw new NoSuchElementException();
+                } else {
+                    obj = _factory.makeObject();
+                }
+            }
+            if(null != _factory && null != obj) {
+                _factory.activateObject(obj);
+            }
+            if (null != _factory && null != obj && !_factory.validateObject(obj)) {
+                _factory.destroyObject(obj);
+                obj = null;
             }
-        }
-        if(null != _factory && null != obj) {
-            _factory.activateObject(obj);
         }
         _numActive++;
         return obj;

 

infrastructure at apache.org
ViewVC Help
Powered by ViewVC 1.1.26