blob: a14c69f3b3c1e3c770fc8f05851a9d07d297a990 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.logging.log4j.redis.appender;
import org.apache.logging.log4j.core.Core;
import org.apache.logging.log4j.plugins.Plugin;
import org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute;
import org.apache.logging.log4j.plugins.PluginFactory;
import redis.clients.jedis.JedisPoolConfig;
/**
* Plugin configuration for {@link redis.clients.jedis.JedisPool} objects, allowing end users to set pool configuration
* if desired. If not set, will default to JedisPool defaults.
*/
@Plugin(name = "RedisPoolConfiguration", category = Core.CATEGORY_NAME, printObject = true)
class LoggingRedisPoolConfiguration extends JedisPoolConfig {
private LoggingRedisPoolConfiguration() {
super();
}
static LoggingRedisPoolConfiguration defaultConfiguration() {
return LoggingRedisPoolConfiguration.newBuilder().build();
}
/**
* Creates a LoggingRedisPoolConfiguration from standard pool parameters.
*/
@PluginFactory
public static Builder newBuilder() {
return new LoggingRedisPoolConfiguration.Builder();
}
private static class Builder implements org.apache.logging.log4j.plugins.util.Builder<LoggingRedisPoolConfiguration> {
@PluginBuilderAttribute("minIdle")
private int minIdle = JedisPoolConfig.DEFAULT_MIN_IDLE;
@PluginBuilderAttribute("maxIdle")
private int maxIdle = JedisPoolConfig.DEFAULT_MAX_IDLE;
@PluginBuilderAttribute("testOnBorrow")
private boolean testOnBorrow = JedisPoolConfig.DEFAULT_TEST_ON_BORROW;
@PluginBuilderAttribute("testOnReturn")
boolean testOnReturn = JedisPoolConfig.DEFAULT_TEST_ON_RETURN;
@PluginBuilderAttribute("testWhileIdle")
boolean testWhileIdle = JedisPoolConfig.DEFAULT_TEST_WHILE_IDLE;
@PluginBuilderAttribute("testsPerEvictionRun")
int testsPerEvictionRun = JedisPoolConfig.DEFAULT_NUM_TESTS_PER_EVICTION_RUN;
@PluginBuilderAttribute("timeBetweenEvictionRunsMillis")
long timeBetweenEvicationRunsMillis = JedisPoolConfig.DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS;
@Override
public LoggingRedisPoolConfiguration build() {
LoggingRedisPoolConfiguration poolConfig = new LoggingRedisPoolConfiguration();
poolConfig.setMaxIdle(maxIdle);
poolConfig.setMinIdle(minIdle);
poolConfig.setTestOnBorrow(testOnBorrow);
poolConfig.setTestOnReturn(testOnReturn);
poolConfig.setTestWhileIdle(testWhileIdle);
poolConfig.setNumTestsPerEvictionRun(testsPerEvictionRun);
poolConfig.setTimeBetweenEvictionRunsMillis(timeBetweenEvicationRunsMillis);
return poolConfig;
}
public int getMinIdle() {
return minIdle;
}
public Builder setMinIdle(int minIdle) {
this.minIdle = minIdle;
return this;
}
public int getMaxIdle() {
return maxIdle;
}
public Builder setMaxIdle(int maxIdle) {
this.maxIdle = maxIdle;
return this;
}
public boolean isTestOnBorrow() {
return testOnBorrow;
}
public Builder setTestOnBorrow(boolean testOnBorrow) {
this.testOnBorrow = testOnBorrow;
return this;
}
public boolean isTestOnReturn() {
return testOnReturn;
}
public Builder setTestOnReturn(boolean testOnReturn) {
this.testOnReturn = testOnReturn;
return this;
}
public boolean isTestWhileIdle() {
return testWhileIdle;
}
public Builder setTestWhileIdle(boolean testWhileIdle) {
this.testWhileIdle = testWhileIdle;
return this;
}
public int getTestsPerEvictionRun() {
return testsPerEvictionRun;
}
public Builder setTestsPerEvictionRun(int testsPerEvictionRun) {
this.testsPerEvictionRun = testsPerEvictionRun;
return this;
}
public long getTimeBetweenEvicationRunsMillis() {
return timeBetweenEvicationRunsMillis;
}
public Builder setTimeBetweenEvicationRunsMillis(long timeBetweenEvicationRunsMillis) {
this.timeBetweenEvicationRunsMillis = timeBetweenEvicationRunsMillis;
return this;
}
}
}