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 Mircea.Markus@jboss.com * @since 4.1 */ public class PropsKeyedObjectPoolFactory<K, V> extends GenericKeyedObjectPoolFactory<K, V> { public PropsKeyedObjectPoolFactory(KeyedPoolableObjectFactory<K, V> 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; } } }