pool.returnObject(obj);
}
}
public void testBorrowReturnWithSometimesInvalidObjects() throws Exception {
ObjectPool pool = new StackObjectPool(20);
pool.setFactory(
new PoolableObjectFactory() {
int counter = 0;
public Object makeObject() { return new Integer(counter++); }
public void destroyObject(Object obj) { }
public boolean validateObject(Object obj) {
if(obj instanceof Integer) {
return ((((Integer)obj).intValue() % 2) == 1);
} else {
return false;
}
}
public void activateObject(Object obj) { }
public void passivateObject(Object obj) {
if(obj instanceof Integer) {
if((((Integer)obj).intValue() % 3) == 0) {
throw new RuntimeException("Couldn't passivate");
}
} else {
throw new RuntimeException("Couldn't passivate");
}
}
}
);
Object[] obj = new Object[10];
for(int i=0;i<10;i++) {
obj[i] = pool.borrowObject();
}
for(int i=0;i<10;i++) {
pool.returnObject(obj[i]);
}
assertEquals(3,pool.getNumIdle());
}