package org.infinispan.persistence.rest.configuration; import org.infinispan.commons.configuration.BuiltBy; import org.infinispan.commons.configuration.ConfigurationFor; import org.infinispan.commons.configuration.attributes.Attribute; 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.configuration.serializing.SerializedWith; import org.infinispan.persistence.keymappers.WrappedByteArrayOrPrimitiveMapper; import org.infinispan.persistence.rest.RestStore; import org.infinispan.persistence.rest.metadata.EmbeddedMetadataHelper; /** * RestStoreConfiguration. * * @author Tristan Tarrant * @since 6.0 */ @BuiltBy(RestStoreConfigurationBuilder.class) @ConfigurationFor(RestStore.class) @SerializedWith(RestStoreConfigurationSerializer.class) public class RestStoreConfiguration extends AbstractStoreConfiguration { static final AttributeDefinition<String> KEY2STRING_MAPPER = AttributeDefinition.builder("key2StringMapper", WrappedByteArrayOrPrimitiveMapper.class.getName()).immutable().xmlName("key-to-string-mapper").build(); static final AttributeDefinition<String> METADATA_HELPER = AttributeDefinition.builder("metadataHelper", EmbeddedMetadataHelper.class.getName()).immutable().build(); static final AttributeDefinition<String> HOST = AttributeDefinition.builder("host", null, String.class).immutable().autoPersist(false).build(); static final AttributeDefinition<Integer> PORT = AttributeDefinition.builder("port", 80).immutable().autoPersist(false).build(); static final AttributeDefinition<String> PATH = AttributeDefinition.builder("path", "/").immutable().build(); static final AttributeDefinition<Boolean> APPEND_CACHE_NAME_TO_PATH = AttributeDefinition.builder("appendCacheNameToPath", false).immutable().build(); static final AttributeDefinition<Boolean> RAW_VALUES = AttributeDefinition.builder("rawValues", false).immutable().build(); public static AttributeSet attributeDefinitionSet() { return new AttributeSet(RestStoreConfiguration.class, AbstractStoreConfiguration.attributeDefinitionSet(), KEY2STRING_MAPPER, METADATA_HELPER, HOST, PORT, PATH, APPEND_CACHE_NAME_TO_PATH, RAW_VALUES); } private final Attribute<String> key2StringMapper; private final Attribute<String> metadataHelper; private final Attribute<String> host; private final Attribute<Integer> port; private final Attribute<String> path; private final Attribute<Boolean> appendCacheNameToPath; private final Attribute<Boolean> rawValues; private final ConnectionPoolConfiguration connectionPool; public RestStoreConfiguration(AttributeSet attributes, AsyncStoreConfiguration async, SingletonStoreConfiguration singletonStore, ConnectionPoolConfiguration connectionPool) { super(attributes, async, singletonStore); key2StringMapper = attributes.attribute(KEY2STRING_MAPPER); metadataHelper = attributes.attribute(METADATA_HELPER); host = attributes.attribute(HOST); port = attributes.attribute(PORT); path = attributes.attribute(PATH); appendCacheNameToPath = attributes.attribute(APPEND_CACHE_NAME_TO_PATH); rawValues = attributes.attribute(RAW_VALUES); this.connectionPool = connectionPool; } public ConnectionPoolConfiguration connectionPool() { return connectionPool; } public String key2StringMapper() { return key2StringMapper.get(); } public String metadataHelper() { return metadataHelper.get(); } public String host() { return host.get(); } public int port() { return port.get(); } public String path() { return path.get(); } public boolean appendCacheNameToPath() { return appendCacheNameToPath.get(); } public boolean rawValues() { return rawValues.get(); } @Override public String toString() { return "RestStoreConfiguration [connectionPool=" + connectionPool + ", attributes=" + attributes + "]"; } }