You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by rw...@apache.org on 2002/11/30 10:14:01 UTC

cvs commit: jakarta-commons/pool/src/test/org/apache/commons/pool/impl TestStackKeyedObjectPool.java TestStackObjectPool.java

rwaldhoff    2002/11/30 01:14:01

  Modified:    pool/src/java/org/apache/commons/pool/impl
                        StackKeyedObjectPool.java StackObjectPool.java
               pool/src/test/org/apache/commons/pool/impl
                        TestStackKeyedObjectPool.java
                        TestStackObjectPool.java
  Log:
  allow null factories (once again) in Stack[Keyed]ObjectPool
  add tests that demonstrate
  
  Revision  Changes    Path
  1.7       +15 -11    jakarta-commons/pool/src/java/org/apache/commons/pool/impl/StackKeyedObjectPool.java
  
  Index: StackKeyedObjectPool.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/pool/src/java/org/apache/commons/pool/impl/StackKeyedObjectPool.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- StackKeyedObjectPool.java	30 Oct 2002 22:54:42 -0000	1.6
  +++ StackKeyedObjectPool.java	30 Nov 2002 09:14:00 -0000	1.7
  @@ -223,7 +223,9 @@
           _totActive--;
           Integer old = (Integer)(_activeCount.get(key));
           _activeCount.put(key,new Integer(old.intValue() - 1));
  -        _factory.destroyObject(key,obj);
  +        if(null != _factory) {
  +            _factory.destroyObject(key,obj);
  +        }
           notifyAll(); // _totalActive has changed
       }
   
  @@ -274,12 +276,14 @@
           if(null == stack) {
               return;
           } else {
  -            Enumeration enum = stack.elements();
  -            while(enum.hasMoreElements()) {
  -                try {
  -                    _factory.destroyObject(key,enum.nextElement());
  -                } catch(Exception e) {
  -                    // ignore error, keep destroying the rest
  +            if(null != _factory) {
  +                Enumeration enum = stack.elements();
  +                while(enum.hasMoreElements()) {
  +                    try {
  +                        _factory.destroyObject(key,enum.nextElement());
  +                    } catch(Exception e) {
  +                        // ignore error, keep destroying the rest
  +                    }
                   }
               }
               _totIdle -= stack.size();
  
  
  
  1.7       +17 -13    jakarta-commons/pool/src/java/org/apache/commons/pool/impl/StackObjectPool.java
  
  Index: StackObjectPool.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/pool/src/java/org/apache/commons/pool/impl/StackObjectPool.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- StackObjectPool.java	30 Oct 2002 22:54:42 -0000	1.6
  +++ StackObjectPool.java	30 Nov 2002 09:14:01 -0000	1.7
  @@ -174,16 +174,18 @@
   
       public void returnObject(Object obj) throws Exception {
           boolean success = true;
  -        if(!(_factory.validateObject(obj))) {
  -            success = false;
  -        } else {
  -            try {
  -                _factory.passivateObject(obj);
  -            } catch(Exception e) {
  +        if(null != _factory) {
  +            if(!(_factory.validateObject(obj))) {
                   success = false;
  +            } else {
  +                try {
  +                    _factory.passivateObject(obj);
  +                } catch(Exception e) {
  +                    success = false;
  +                }
               }
           }
  -
  +        
           boolean shouldDestroy = !success;
   
           synchronized(this) {
  @@ -196,7 +198,7 @@
               notifyAll(); // _numActive has changed
           }
   
  -        if(shouldDestroy) {
  +        if(shouldDestroy) { // by constructor, shouldDestroy is false when _factory is null
               try {
                   _factory.destroyObject(obj);
               } catch(Exception e) {
  @@ -207,7 +209,9 @@
   
       public synchronized void invalidateObject(Object obj) throws Exception {
           _numActive--;
  -        _factory.destroyObject(obj);
  +        if(null != _factory ) {
  +            _factory.destroyObject(obj);
  +        }
           notifyAll(); // _numActive has changed
       }
   
  
  
  
  1.7       +30 -4     jakarta-commons/pool/src/test/org/apache/commons/pool/impl/TestStackKeyedObjectPool.java
  
  Index: TestStackKeyedObjectPool.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/pool/src/test/org/apache/commons/pool/impl/TestStackKeyedObjectPool.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- TestStackKeyedObjectPool.java	31 Oct 2002 15:04:24 -0000	1.6
  +++ TestStackKeyedObjectPool.java	30 Nov 2002 09:14:01 -0000	1.7
  @@ -61,6 +61,7 @@
   
   package org.apache.commons.pool.impl;
   
  +import java.util.BitSet;
   import java.util.HashMap;
   
   import junit.framework.Test;
  @@ -171,4 +172,29 @@
               assertEquals((i < 8 ? i+1 : 8),pool.getNumIdle(""));
           }
       }
  +    
  +    public void testPoolWithNullFactory() throws Exception {
  +        KeyedObjectPool pool = new StackKeyedObjectPool(10);
  +        for(int i=0;i<10;i++) {
  +            pool.returnObject("X",new Integer(i));
  +        }
  +        for(int j=0;j<3;j++) {
  +            Integer[] borrowed = new Integer[10];
  +            BitSet found = new BitSet();
  +            for(int i=0;i<10;i++) {
  +                borrowed[i] = (Integer)(pool.borrowObject("X"));
  +                assertNotNull(borrowed);
  +                assertTrue(!found.get(borrowed[i].intValue()));
  +                found.set(borrowed[i].intValue());
  +            }
  +            for(int i=0;i<10;i++) {
  +                pool.returnObject("X",borrowed[i]);
  +            }
  +        }
  +        pool.invalidateObject("X",pool.borrowObject("X"));
  +        pool.invalidateObject("X",pool.borrowObject("X"));
  +        pool.clear("X");        
  +        pool.clear();        
  +    }
  +    
   }
  
  
  
  1.6       +29 -4     jakarta-commons/pool/src/test/org/apache/commons/pool/impl/TestStackObjectPool.java
  
  Index: TestStackObjectPool.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/pool/src/test/org/apache/commons/pool/impl/TestStackObjectPool.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- TestStackObjectPool.java	31 Oct 2002 00:06:19 -0000	1.5
  +++ TestStackObjectPool.java	30 Nov 2002 09:14:01 -0000	1.6
  @@ -61,6 +61,8 @@
   
   package org.apache.commons.pool.impl;
   
  +import java.util.BitSet;
  +
   import junit.framework.Test;
   import junit.framework.TestSuite;
   
  @@ -112,5 +114,28 @@
               assertEquals(99 - i,pool.getNumActive());
               assertEquals((i < 8 ? i+1 : 8),pool.getNumIdle());
           }
  +    }
  +
  +    public void testPoolWithNullFactory() throws Exception {
  +        ObjectPool pool = new StackObjectPool(10);
  +        for(int i=0;i<10;i++) {
  +            pool.returnObject(new Integer(i));
  +        }
  +        for(int j=0;j<3;j++) {
  +            Integer[] borrowed = new Integer[10];
  +            BitSet found = new BitSet();
  +            for(int i=0;i<10;i++) {
  +                borrowed[i] = (Integer)(pool.borrowObject());
  +                assertNotNull(borrowed);
  +                assertTrue(!found.get(borrowed[i].intValue()));
  +                found.set(borrowed[i].intValue());
  +            }
  +            for(int i=0;i<10;i++) {
  +                pool.returnObject(borrowed[i]);
  +            }
  +        }
  +        pool.invalidateObject(pool.borrowObject());
  +        pool.invalidateObject(pool.borrowObject());
  +        pool.clear();        
       }
   }
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>