001package com.nimbusds.infinispan.persistence.sql;
002
003
004import java.util.Properties;
005
006import org.infinispan.configuration.cache.AbstractStoreConfiguration;
007import org.infinispan.configuration.cache.AbstractStoreConfigurationBuilder;
008import org.infinispan.configuration.cache.PersistenceConfigurationBuilder;
009
010
011/**
012 * SQL store configuration builder.
013 *
014 * <p>Used by the Infinispan ConfigurationBuilder to implement fluent
015 * configuration for the SQL CacheLoader / CacheWriter. Methods should use
016 * the fluent style, rather than the setter/getter style and should return an
017 * instance of this object.
018 */
019public class SQLStoreConfigurationBuilder extends AbstractStoreConfigurationBuilder<SQLStoreConfiguration, SQLStoreConfigurationBuilder> {
020
021
022        public SQLStoreConfigurationBuilder(final PersistenceConfigurationBuilder builder) {
023                super(builder, AbstractStoreConfiguration.attributeDefinitionSet());
024        }
025
026
027        @Override
028        public SQLStoreConfiguration create() {
029                // This method should construct a new instance of a
030                // SQLStoreConfiguration object. There will be one instance
031                // per cache.
032                return new SQLStoreConfiguration(
033                        purgeOnStartup,
034                        fetchPersistentState,
035                        ignoreModifications,
036                        async.create(),
037                        singletonStore.create(),
038                        preload,
039                        shared,
040                        properties);
041        }
042
043
044        @Override
045        public SQLStoreConfigurationBuilder withProperties(final Properties properties) {
046                return properties(properties);
047        }
048
049
050        @Override
051        public SQLStoreConfigurationBuilder self() {
052                return this;
053        }
054}