package com.meidusa.amoeba.aladdin.poolable; import java.util.HashMap; import java.util.Map; import org.apache.commons.pool.PoolableObjectFactory; import com.meidusa.amoeba.aladdin.handler.MessageHandlerRunner; import com.meidusa.amoeba.config.ParameterMapping; import com.meidusa.amoeba.util.Initialisable; import com.meidusa.amoeba.util.InitialisationException; public class QueryResponseObjectFactory implements PoolableObjectFactory,Initialisable{ private Class<MessageHandlerRunner> messageHandlerRunner; private Map<String,Object> runnerParameters = new HashMap<String,Object>(); public Map<String, Object> getRunnerParameters() { return runnerParameters; } public void setRunnerParameters(Map<String, Object> parameters) { this.runnerParameters = parameters; } public void setMessageHandlerRunner(Class<MessageHandlerRunner> messageHandlerRunner) { this.messageHandlerRunner = messageHandlerRunner; } public void activateObject(Object obj) throws Exception { } public void destroyObject(Object obj) throws Exception { } public Object makeObject() throws Exception { QueryResponse object = new QueryResponse(); MessageHandlerRunner runner = messageHandlerRunner.newInstance(); ParameterMapping.mappingObject(runner, runnerParameters,null); if(runner instanceof Initialisable){ ((Initialisable)runner).init(); } object.setMessageHandlerRunner(runner); if(object instanceof Initialisable){ ((Initialisable)object).init(); } return object; } public void passivateObject(Object obj) throws Exception { QueryResponse object = (QueryResponse)obj; object.getRunner().reset(); } public boolean validateObject(Object obj) { return true; } public void init() throws InitialisationException { } }