org.infinispan.configuration.cache.BackupForBuilder Maven / Gradle / Ivy
package org.infinispan.configuration.cache;
import static org.infinispan.configuration.cache.BackupForConfiguration.REMOTE_CACHE;
import static org.infinispan.configuration.cache.BackupForConfiguration.REMOTE_SITE;
import java.lang.invoke.MethodHandles;
import org.infinispan.commons.api.BasicCacheContainer;
import org.infinispan.commons.configuration.Builder;
import org.infinispan.commons.configuration.attributes.AttributeSet;
import org.infinispan.configuration.global.GlobalConfiguration;
import org.infinispan.util.logging.Log;
import org.infinispan.util.logging.LogFactory;
/**
* @author Mircea Markus
* @since 5.2
*/
public class BackupForBuilder extends AbstractConfigurationChildBuilder implements Builder {
private static final Log log = LogFactory.getLog(MethodHandles.lookup().lookupClass(), Log.class);
private final AttributeSet attributes;
public BackupForBuilder(ConfigurationBuilder builder) {
super(builder);
attributes = BackupForConfiguration.attributeDefinitionSet();
}
/**
* @param siteName the name of the remote site that backups data into this cache.
*/
public BackupForBuilder remoteSite(String siteName) {
attributes.attribute(REMOTE_SITE).set(siteName);
return this;
}
/**
* @param name the name of the remote cache that backups data into this cache.
*/
public BackupForBuilder remoteCache(String name) {
if (name == null) {
throw log.backupForNullCache();
}
attributes.attribute(REMOTE_CACHE).set(name);
return this;
}
/**
* Use this method if the remote cache that backups in this cache is the default cache.
*/
public BackupForBuilder defaultRemoteCache() {
attributes.attribute(REMOTE_CACHE).set(BasicCacheContainer.DEFAULT_CACHE_NAME);
return this;
}
@Override
public void validate() {
//if both remote cache and remote site are not specified then this is not a backup
if (attributes.attribute(REMOTE_CACHE).get() == null && attributes.attribute(REMOTE_SITE).get() == null)
return;
if (attributes.attribute(REMOTE_SITE).get() == null || attributes.attribute(REMOTE_CACHE).get() == null) {
throw log.backupForMissingParameters();
}
}
@Override
public void validate(GlobalConfiguration globalConfig) {
}
@Override
public BackupForConfiguration create() {
return new BackupForConfiguration(attributes.protect());
}
@Override
public BackupForBuilder read(BackupForConfiguration template) {
attributes.read(template.attributes());
return this;
}
@Override
public String toString() {
return "BackupForBuilder [attributes=" + attributes + "]";
}
public void reset() {
attributes.reset();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy