org.infinispan.configuration.cache.SingletonStoreConfigurationBuilder Maven / Gradle / Ivy
package org.infinispan.configuration.cache;
import static org.infinispan.configuration.cache.SingletonStoreConfiguration.ENABLED;
import static org.infinispan.configuration.cache.SingletonStoreConfiguration.PUSH_STATE_TIMEOUT;
import static org.infinispan.configuration.cache.SingletonStoreConfiguration.PUSH_STATE_WHEN_COORDINATOR;
import java.util.concurrent.TimeUnit;
import org.infinispan.commons.CacheConfigurationException;
import org.infinispan.commons.configuration.Builder;
import org.infinispan.commons.configuration.attributes.AttributeSet;
import org.infinispan.configuration.global.GlobalConfiguration;
/**
* @deprecated Singleton writers will be removed in 10.0. If it is desirable that all nodes don't write to the underlying store
* then a shared store should be used instead, as this only performs store writes at a key's primary owner.
*/
@Deprecated
public class SingletonStoreConfigurationBuilder extends AbstractStoreConfigurationChildBuilder implements Builder {
private final AttributeSet attributes;
SingletonStoreConfigurationBuilder(AbstractStoreConfigurationBuilder extends AbstractStoreConfiguration, ?> builder) {
super(builder);
attributes = SingletonStoreConfiguration.attributeDefinitionSet();
}
/**
* Enable the singleton store cache store
*/
public SingletonStoreConfigurationBuilder enable() {
attributes.attribute(ENABLED).set(true);
return this;
}
/**
* If true, the singleton store cache store is enabled.
*/
public SingletonStoreConfigurationBuilder enabled(boolean enabled) {
attributes.attribute(ENABLED).set(enabled);
return this;
}
/**
* Enable the singleton store cache store
*/
public SingletonStoreConfigurationBuilder disable() {
attributes.attribute(ENABLED).set(false);
return this;
}
/**
* If pushStateWhenCoordinator is true, this property sets the maximum number of milliseconds
* that the process of pushing the in-memory state to the underlying cache loader should take.
*/
public SingletonStoreConfigurationBuilder pushStateTimeout(long l) {
attributes.attribute(PUSH_STATE_TIMEOUT).set(l);
return this;
}
/**
* If pushStateWhenCoordinator is true, this property sets the maximum number of milliseconds
* that the process of pushing the in-memory state to the underlying cache loader should take.
*/
public SingletonStoreConfigurationBuilder pushStateTimeout(long l, TimeUnit unit) {
return pushStateTimeout(unit.toMillis(l));
}
/**
* If true, when a node becomes the coordinator, it will transfer in-memory state to the
* underlying cache store. This can be very useful in situations where the coordinator crashes
* and there's a gap in time until the new coordinator is elected.
*/
public SingletonStoreConfigurationBuilder pushStateWhenCoordinator(boolean b) {
attributes.attribute(PUSH_STATE_WHEN_COORDINATOR).set(b);
return this;
}
@Override
public void validate() {
}
@Override
public void validate(GlobalConfiguration globalConfig) {
if (globalConfig.transport().transport() == null) {
throw new CacheConfigurationException("Must have a transport set in the global configuration in " +
"order to configure a singleton store");
}
}
@Override
public SingletonStoreConfiguration create() {
return new SingletonStoreConfiguration(attributes.protect());
}
@Override
public SingletonStoreConfigurationBuilder read(SingletonStoreConfiguration template) {
attributes.read(template.attributes());
return this;
}
@Override
public String toString() {
return "SingletonStoreConfigurationBuilder [attributes=" + attributes + "]";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy