package org.infinispan.persistence.rocksdb.configuration; import org.infinispan.commons.configuration.Builder; import org.infinispan.configuration.cache.AbstractStoreConfigurationBuilder; import org.infinispan.configuration.cache.PersistenceConfigurationBuilder; import static org.infinispan.persistence.rocksdb.configuration.RocksDBStoreConfiguration.BLOCK_SIZE; import static org.infinispan.persistence.rocksdb.configuration.RocksDBStoreConfiguration.CACHE_SIZE; import static org.infinispan.persistence.rocksdb.configuration.RocksDBStoreConfiguration.LOCATION; import static org.infinispan.persistence.rocksdb.configuration.RocksDBStoreConfiguration.CLEAR_THRESHOLD; import static org.infinispan.persistence.rocksdb.configuration.RocksDBStoreConfiguration.EXPIRED_LOCATION; import static org.infinispan.persistence.rocksdb.configuration.RocksDBStoreConfiguration.EXPIRY_QUEUE_SIZE; import static org.infinispan.persistence.rocksdb.configuration.RocksDBStoreConfiguration.COMPRESSION_TYPE; /** * * @author <a href="mailto:rtsang@redhat.com">Ray Tsang</a> * */ public class RocksDBStoreConfigurationBuilder extends AbstractStoreConfigurationBuilder<RocksDBStoreConfiguration, RocksDBStoreConfigurationBuilder> { public RocksDBStoreConfigurationBuilder(PersistenceConfigurationBuilder builder) { super(builder, RocksDBStoreConfiguration.attributeDefinitionSet()); } public RocksDBStoreConfigurationBuilder location(String location) { attributes.attribute(LOCATION).set(location); return self(); } public RocksDBStoreConfigurationBuilder expiredLocation(String expiredLocation) { attributes.attribute(EXPIRED_LOCATION).set(expiredLocation); return self(); } public RocksDBStoreConfigurationBuilder blockSize(int blockSize) { attributes.attribute(BLOCK_SIZE).set(blockSize); return self(); } public RocksDBStoreConfigurationBuilder cacheSize(long cacheSize) { attributes.attribute(CACHE_SIZE).set(cacheSize); return self(); } public RocksDBStoreConfigurationBuilder expiryQueueSize(int expiryQueueSize) { attributes.attribute(EXPIRY_QUEUE_SIZE).set(expiryQueueSize); return self(); } public RocksDBStoreConfigurationBuilder clearThreshold(int clearThreshold) { attributes.attribute(CLEAR_THRESHOLD).set(clearThreshold); return self(); } public RocksDBStoreConfigurationBuilder compressionType(CompressionType compressionType) { attributes.attribute(COMPRESSION_TYPE).set(compressionType); return self(); } @Override public void validate() { // how do you validate required attributes? super.validate(); } @Override public RocksDBStoreConfiguration create() { return new RocksDBStoreConfiguration(attributes.protect(), async.create(), singletonStore.create()); } @Override public Builder<?> read(RocksDBStoreConfiguration template) { super.read(template); return self(); } @Override public RocksDBStoreConfigurationBuilder self() { return this; } }