package org.mobicents.slee.runtime.sbb;
import org.apache.commons.pool.ObjectPool;
import org.apache.log4j.Logger;
/**
* Wrapper for apache commons objectpool, allows better logging and future exposure of jmx stats.
*
* @author martins
*
*/
public class SbbObjectPool {
private static final Logger logger = Logger.getLogger(SbbObjectPool.class);
private final ObjectPool pool;
public SbbObjectPool(ObjectPool pool) {
this.pool = pool;
}
public Object borrowObject() throws java.lang.Exception, java.util.NoSuchElementException, java.lang.IllegalStateException {
Object obj = pool.borrowObject();
if (logger.isDebugEnabled()) {
logger.debug("borrowed object "+obj + " from " + this);
}
return obj;
}
public void returnObject(SbbObject obj) throws java.lang.Exception {
pool.returnObject(obj);
if (logger.isDebugEnabled()) {
logger.debug("returned object "+obj + " to " + this);
}
}
@Override
public String toString() {
return "Sbb Object Pool : active objects = "+this.pool.getNumActive() + ", idle objects "+this.pool.getNumIdle();
}
public void close() throws Exception {
if (logger.isDebugEnabled()) {
logger.debug("close() " + this);
}
pool.close();
}
public void invalidateObject(SbbObject obj) throws Exception {
pool.invalidateObject(obj);
if (logger.isDebugEnabled()) {
logger.debug("invalidated object "+obj + " to " + this);
}
}
}