package org.infinispan.lucene.cacheloader.configuration;
import org.infinispan.commons.configuration.BuiltBy;
import org.infinispan.commons.configuration.ConfigurationFor;
import org.infinispan.commons.configuration.attributes.AttributeDefinition;
import org.infinispan.commons.configuration.attributes.AttributeSet;
import org.infinispan.configuration.cache.AbstractStoreConfiguration;
import org.infinispan.configuration.cache.AsyncStoreConfiguration;
import org.infinispan.configuration.cache.SingletonStoreConfiguration;
import org.infinispan.lucene.cacheloader.LuceneCacheLoader;
/**
* Configuration bean for the {@link org.infinispan.lucene.cacheloader.LuceneCacheLoader}.
*
* @author navssurtani
* @since 6.0.0
*/
@BuiltBy(LuceneLoaderConfigurationBuilder.class)
@ConfigurationFor(LuceneCacheLoader.class)
public class LuceneLoaderConfiguration extends AbstractStoreConfiguration {
static final AttributeDefinition<Integer> AUTO_CHUNK_SIZE = AttributeDefinition.builder("autoChunkSize", Integer.MAX_VALUE / 64).immutable().build();
static final AttributeDefinition<Integer> AFFINITY_SEGMENT_ID = AttributeDefinition.builder("affinitySegmentId", Integer.valueOf(-1)).immutable().build();
static final AttributeDefinition<String> LOCATION = AttributeDefinition.builder("location", "Infinispan-IndexStore").immutable().build();
public LuceneLoaderConfiguration(AttributeSet attributes, AsyncStoreConfiguration async, SingletonStoreConfiguration singletonStore) {
super(attributes, async, singletonStore);
}
public static AttributeSet attributeDefinitionSet() {
return new AttributeSet(LuceneLoaderConfiguration.class, AbstractStoreConfiguration.attributeDefinitionSet(), AUTO_CHUNK_SIZE, LOCATION, AFFINITY_SEGMENT_ID);
}
/**
* When the segment size is larger than this number of bytes, separate segments will be created
* of this particular size.
*
* @return the segmentation size.
*/
public int autoChunkSize() {
return attributes.attribute(AUTO_CHUNK_SIZE).get();
}
/**
* The location of the root directory of the index.
*
* @return the index location root directory.
*/
public String location() {
return attributes.attribute(LOCATION).get();
}
/**
* When Index Affinity is enabled, this returns the segment id to which the current index is bound to.
*/
public int affinitySegmentId() {
return attributes.attribute(AFFINITY_SEGMENT_ID).get();
}
@Override
public String toString() {
return "LuceneLoaderConfiguration [attributes=" + attributes + ", async=" + async() + ", singletonStore=" + singletonStore() + "]";
}
}