package org.huihoo.jfox.pool;
import org.huihoo.jfox.system.ComponentSupport;
public abstract class AbstractObjectPool extends ComponentSupport implements ObjectPool {
protected ObjectFactory factory = null;
public AbstractObjectPool(ObjectFactory factory){
if(factory == null) throw new NullPointerException("factory is null.");
this.factory = factory;
}
public AbstractObjectPool(String objectFactoryClassName, String poolableClassName) {
ClassLoader loader = Thread.currentThread().getContextClassLoader();
try {
Class factoryClass = loader.loadClass(objectFactoryClassName);
factory = (ObjectFactory)factoryClass.getConstructor(new Class[]{java.lang.String.class}).newInstance(new String[]{poolableClassName});
}
catch(ClassNotFoundException e){
logger.fatal("Class " + objectFactoryClassName + " not found!" + e);
}
catch(NoSuchMethodException e){
logger.fatal("No such constructor" + e);
}
catch(Exception e){
logger.fatal("ObjectFactory " + objectFactoryClassName + " instantiator error" + e);
}
}
public ObjectFactory getObjectFactory() {
return factory;
}
public String getObjectClass() {
return factory.getObjectClass().getName();
}
public void clear() {
throw new UnsupportedOperationException("clear");
}
protected void doInit() throws Exception {
}
protected void doDestroy() throws Exception {
}
public int getWorking() {
throw new UnsupportedOperationException("getWorking");
}
public int getRest() {
throw new UnsupportedOperationException("getRest");
}
public int getInitNum() {
throw new UnsupportedOperationException("getInitNum");
}
public int getMaxRest() {
throw new UnsupportedOperationException("getMaxRest");
}
}