package org.infinispan.configuration.cache;
import static org.infinispan.configuration.cache.ExpirationConfiguration.LIFESPAN;
import static org.infinispan.configuration.cache.ExpirationConfiguration.MAX_IDLE;
import static org.infinispan.configuration.cache.ExpirationConfiguration.REAPER_ENABLED;
import static org.infinispan.configuration.cache.ExpirationConfiguration.WAKEUP_INTERVAL;
import java.util.concurrent.TimeUnit;
import org.infinispan.commons.configuration.Builder;
import org.infinispan.commons.configuration.attributes.AttributeSet;
import org.infinispan.configuration.global.GlobalConfiguration;
/**
* Controls the default expiration settings for entries in the cache.
*/
public class ExpirationConfigurationBuilder extends AbstractConfigurationChildBuilder implements Builder<ExpirationConfiguration> {
private final AttributeSet attributes;
ExpirationConfigurationBuilder(ConfigurationBuilder builder) {
super(builder);
attributes = ExpirationConfiguration.attributeDefinitionSet();
}
/**
* Maximum lifespan of a cache entry, after which the entry is expired cluster-wide, in
* milliseconds. -1 means the entries never expire.
*
* Note that this can be overridden on a per-entry basis by using the Cache API.
*/
public ExpirationConfigurationBuilder lifespan(long l) {
attributes.attribute(LIFESPAN).set(l);
return this;
}
/**
* Maximum lifespan of a cache entry, after which the entry is expired cluster-wide, in
* milliseconds. -1 means the entries never expire.
*
* Note that this can be overridden on a per-entry basis by using the Cache API.
*/
public ExpirationConfigurationBuilder lifespan(long l, TimeUnit unit) {
return lifespan(unit.toMillis(l));
}
/**
* Maximum idle time a cache entry will be maintained in the cache, in milliseconds. If the idle
* time is exceeded, the entry will be expired cluster-wide. -1 means the entries never expire.
*
* Note that this can be overridden on a per-entry basis by using the Cache API.
*/
public ExpirationConfigurationBuilder maxIdle(long l) {
attributes.attribute(MAX_IDLE).set(l);
return this;
}
/**
* Maximum idle time a cache entry will be maintained in the cache, in milliseconds. If the idle
* time is exceeded, the entry will be expired cluster-wide. -1 means the entries never expire.
*
* Note that this can be overridden on a per-entry basis by using the Cache API.
*/
public ExpirationConfigurationBuilder maxIdle(long l, TimeUnit unit) {
return maxIdle(unit.toMillis(l));
}
/**
* Enable the background reaper to test entries for expiration.
* Regardless of whether a reaper is used, entries are tested for expiration lazily when they are
* touched.
*/
public ExpirationConfigurationBuilder enableReaper() {
attributes.attribute(REAPER_ENABLED).set(true);
return this;
}
/**
* Enable the background reaper to test entries for expiration.
* Regardless of whether a reaper is used, entries are tested for expiration lazily when they are
* touched.
*/
public ExpirationConfigurationBuilder reaperEnabled(boolean enabled) {
attributes.attribute(REAPER_ENABLED).set(enabled);
return this;
}
/**
* Disable the background reaper to test entries for expiration. to test entries for expiration.
* Regardless of whether a reaper is used, entries are tested for expiration lazily when they are
* touched.
*/
public ExpirationConfigurationBuilder disableReaper() {
attributes.attribute(REAPER_ENABLED).set(false);
return this;
}
public boolean reaperEnabled() {
return attributes.attribute(REAPER_ENABLED).get();
}
/**
* Interval (in milliseconds) between subsequent runs to purge expired entries from memory and
* any cache stores. If you wish to disable the periodic eviction process altogether, set
* wakeupInterval to -1.
*/
public ExpirationConfigurationBuilder wakeUpInterval(long l) {
attributes.attribute(WAKEUP_INTERVAL).set(l);
return this;
}
public long wakeupInterval() {
return attributes.attribute(WAKEUP_INTERVAL).get();
}
/**
* Interval (in milliseconds) between subsequent runs to purge expired entries from memory and
* any cache stores. If you wish to disable the periodic eviction process altogether, set
* wakeupInterval to -1.
*/
public ExpirationConfigurationBuilder wakeUpInterval(long l, TimeUnit unit) {
return wakeUpInterval(unit.toMillis(l));
}
@Override
public void validate() {
}
@Override
public void validate(GlobalConfiguration globalConfig) {
}
@Override
public ExpirationConfiguration create() {
return new ExpirationConfiguration(attributes.protect());
}
@Override
public ExpirationConfigurationBuilder read(ExpirationConfiguration template) {
this.attributes.read(template.attributes());
return this;
}
@Override
public String toString() {
return this.getClass().getSimpleName() + attributes;
}
}