/*
* Copyright (C) 2015 Commerce Technologies, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.commercehub.dropwizard.redis;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.hibernate.validator.constraints.NotBlank;
import redis.clients.jedis.JedisPoolConfig;
public class JedisPoolConfigFactory {
private int maxTotal = JedisPoolConfig.DEFAULT_MAX_TOTAL;
private int maxIdle = JedisPoolConfig.DEFAULT_MAX_IDLE;
private int minIdle = JedisPoolConfig.DEFAULT_MIN_IDLE;
private boolean lifo = JedisPoolConfig.DEFAULT_LIFO;
private long maxWaitMillis = JedisPoolConfig.DEFAULT_MAX_WAIT_MILLIS;
private long minEvictableIdleTimeMillis = 60000;
private long softMinEvictableIdleTimeMillis = JedisPoolConfig.DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS;
private int numTestsPerEvictionRun = -1;
private boolean testOnBorrow = JedisPoolConfig.DEFAULT_TEST_ON_BORROW;
private boolean testOnReturn = JedisPoolConfig.DEFAULT_TEST_ON_RETURN;
private boolean testWhileIdle = true;
private long timeBetweenEvictionRunsMillis = 30000;
@NotBlank
private String evictionPolicyClassName = JedisPoolConfig.DEFAULT_EVICTION_POLICY_CLASS_NAME;
private boolean blockWhenExhausted = JedisPoolConfig.DEFAULT_BLOCK_WHEN_EXHAUSTED;
private boolean jmxEnabled = JedisPoolConfig.DEFAULT_JMX_ENABLE;
@NotBlank
private String jmxNamePrefix = JedisPoolConfig.DEFAULT_JMX_NAME_PREFIX;
public JedisPoolConfig build() {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(maxTotal);
config.setMaxIdle(maxIdle);
config.setMinIdle(minIdle);
config.setLifo(lifo);
config.setMaxWaitMillis(maxWaitMillis);
config.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
config.setSoftMinEvictableIdleTimeMillis(softMinEvictableIdleTimeMillis);
config.setNumTestsPerEvictionRun(numTestsPerEvictionRun);
config.setTestOnBorrow(testOnBorrow);
config.setTestOnReturn(testOnReturn);
config.setTestWhileIdle(testWhileIdle);
config.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
config.setEvictionPolicyClassName(evictionPolicyClassName);
config.setBlockWhenExhausted(blockWhenExhausted);
config.setJmxEnabled(jmxEnabled);
config.setJmxNamePrefix(jmxNamePrefix);
return config;
}
@JsonProperty
public int getMaxTotal() {
return maxTotal;
}
@JsonProperty
public void setMaxTotal(int maxTotal) {
this.maxTotal = maxTotal;
}
@JsonProperty
public int getMaxIdle() {
return maxIdle;
}
@JsonProperty
public void setMaxIdle(int maxIdle) {
this.maxIdle = maxIdle;
}
@JsonProperty
public int getMinIdle() {
return minIdle;
}
@JsonProperty
public void setMinIdle(int minIdle) {
this.minIdle = minIdle;
}
@JsonProperty
public boolean isLifo() {
return lifo;
}
@JsonProperty
public void setLifo(boolean lifo) {
this.lifo = lifo;
}
@JsonProperty
public long getMaxWaitMillis() {
return maxWaitMillis;
}
@JsonProperty
public void setMaxWaitMillis(long maxWaitMillis) {
this.maxWaitMillis = maxWaitMillis;
}
@JsonProperty
public long getMinEvictableIdleTimeMillis() {
return minEvictableIdleTimeMillis;
}
@JsonProperty
public void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) {
this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
}
@JsonProperty
public long getSoftMinEvictableIdleTimeMillis() {
return softMinEvictableIdleTimeMillis;
}
@JsonProperty
public void setSoftMinEvictableIdleTimeMillis(long softMinEvictableIdleTimeMillis) {
this.softMinEvictableIdleTimeMillis = softMinEvictableIdleTimeMillis;
}
@JsonProperty
public int getNumTestsPerEvictionRun() {
return numTestsPerEvictionRun;
}
@JsonProperty
public void setNumTestsPerEvictionRun(int numTestsPerEvictionRun) {
this.numTestsPerEvictionRun = numTestsPerEvictionRun;
}
@JsonProperty
public boolean isTestOnBorrow() {
return testOnBorrow;
}
@JsonProperty
public void setTestOnBorrow(boolean testOnBorrow) {
this.testOnBorrow = testOnBorrow;
}
@JsonProperty
public boolean isTestOnReturn() {
return testOnReturn;
}
@JsonProperty
public void setTestOnReturn(boolean testOnReturn) {
this.testOnReturn = testOnReturn;
}
@JsonProperty
public boolean isTestWhileIdle() {
return testWhileIdle;
}
@JsonProperty
public void setTestWhileIdle(boolean testWhileIdle) {
this.testWhileIdle = testWhileIdle;
}
@JsonProperty
public long getTimeBetweenEvictionRunsMillis() {
return timeBetweenEvictionRunsMillis;
}
@JsonProperty
public void setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis) {
this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
}
@JsonProperty
public String getEvictionPolicyClassName() {
return evictionPolicyClassName;
}
@JsonProperty
public void setEvictionPolicyClassName(String evictionPolicyClassName) {
this.evictionPolicyClassName = evictionPolicyClassName;
}
@JsonProperty
public boolean isBlockWhenExhausted() {
return blockWhenExhausted;
}
@JsonProperty
public void setBlockWhenExhausted(boolean blockWhenExhausted) {
this.blockWhenExhausted = blockWhenExhausted;
}
@JsonProperty
public boolean isJmxEnabled() {
return jmxEnabled;
}
@JsonProperty
public void setJmxEnabled(boolean jmxEnabled) {
this.jmxEnabled = jmxEnabled;
}
@JsonProperty
public String getJmxNamePrefix() {
return jmxNamePrefix;
}
@JsonProperty
public void setJmxNamePrefix(String jmxNamePrefix) {
this.jmxNamePrefix = jmxNamePrefix;
}
}