org.infinispan.client.hotrod.impl.transport.tcp.PropsKeyedObjectPoolFactory Maven / Gradle / Ivy
package org.infinispan.client.hotrod.impl.transport.tcp;
import org.apache.commons.pool.KeyedPoolableObjectFactory;
import org.apache.commons.pool.impl.GenericKeyedObjectPool;
import org.apache.commons.pool.impl.GenericKeyedObjectPoolFactory;
import org.infinispan.client.hotrod.configuration.ConnectionPoolConfiguration;
import org.infinispan.client.hotrod.configuration.ExhaustedAction;
/**
* @author [email protected]
* @since 4.1
*/
public class PropsKeyedObjectPoolFactory extends GenericKeyedObjectPoolFactory {
public PropsKeyedObjectPoolFactory(KeyedPoolableObjectFactory factory, ConnectionPoolConfiguration configuration) {
super(factory,
configuration.maxActive(),
mapExhaustedAction(configuration.exhaustedAction()),
configuration.maxWait(),
configuration.maxIdle(),
configuration.maxTotal(),
configuration.minIdle(),
configuration.testOnBorrow(),
configuration.testOnReturn(),
configuration.timeBetweenEvictionRuns(),
configuration.numTestsPerEvictionRun(),
configuration.minEvictableIdleTime(),
configuration.testWhileIdle(),
configuration.lifo());
}
private static byte mapExhaustedAction(ExhaustedAction action) {
switch (action) {
case CREATE_NEW:
return GenericKeyedObjectPool.WHEN_EXHAUSTED_GROW;
case EXCEPTION:
return GenericKeyedObjectPool.WHEN_EXHAUSTED_FAIL;
case WAIT:
default:
return GenericKeyedObjectPool.WHEN_EXHAUSTED_BLOCK;
}
}
}