/*
* Copyright Terracotta, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.ehcache.core.internal.store;
import org.ehcache.config.CacheConfiguration;
import org.ehcache.config.EvictionAdvisor;
import org.ehcache.config.ResourcePools;
import org.ehcache.expiry.Expiry;
import org.ehcache.core.spi.store.Store;
import org.ehcache.spi.serialization.Serializer;
/**
* Implementation of the {@link org.ehcache.core.spi.store.Store.Configuration store configuration interface} as used by
* {@link org.ehcache.core.EhcacheManager EhcacheManager} in order to prepare {@link Store} creation.
*/
public class StoreConfigurationImpl<K, V> implements Store.Configuration<K, V> {
private final Class<K> keyType;
private final Class<V> valueType;
private final EvictionAdvisor<? super K, ? super V> evictionAdvisor;
private final ClassLoader classLoader;
private final Expiry<? super K, ? super V> expiry;
private final ResourcePools resourcePools;
private final Serializer<K> keySerializer;
private final Serializer<V> valueSerializer;
private final int dispatcherConcurrency;
/**
* Creates a new {@code StoreConfigurationImpl} based on the provided parameters.
*
* @param cacheConfig the cache configuration
* @param dispatcherConcurrency the level of concurrency for ordered events
* @param keySerializer the key serializer
* @param valueSerializer the value serializer
*/
public StoreConfigurationImpl(CacheConfiguration<K, V> cacheConfig, int dispatcherConcurrency,
Serializer<K> keySerializer, Serializer<V> valueSerializer) {
this(cacheConfig.getKeyType(), cacheConfig.getValueType(), cacheConfig.getEvictionAdvisor(),
cacheConfig.getClassLoader(), cacheConfig.getExpiry(), cacheConfig.getResourcePools(),
dispatcherConcurrency, keySerializer, valueSerializer);
}
/**
* Creates a new {@code StoreConfigurationImpl} based on the provided parameters.
*
* @param keyType the key type
* @param valueType the value type
* @param evictionAdvisor the eviction advisor
* @param classLoader the class loader
* @param expiry the expiry policy
* @param resourcePools the resource pools
* @param dispatcherConcurrency the level of concurrency for ordered events
* @param keySerializer the key serializer
* @param valueSerializer the value serializer
*/
public StoreConfigurationImpl(Class<K> keyType, Class<V> valueType,
EvictionAdvisor<? super K, ? super V> evictionAdvisor,
ClassLoader classLoader, Expiry<? super K, ? super V> expiry,
ResourcePools resourcePools, int dispatcherConcurrency,
Serializer<K> keySerializer, Serializer<V> valueSerializer) {
this.keyType = keyType;
this.valueType = valueType;
this.evictionAdvisor = evictionAdvisor;
this.classLoader = classLoader;
this.expiry = expiry;
this.resourcePools = resourcePools;
this.keySerializer = keySerializer;
this.valueSerializer = valueSerializer;
this.dispatcherConcurrency = dispatcherConcurrency;
}
/**
* {@inheritDoc}
*/
@Override
public Class<K> getKeyType() {
return keyType;
}
/**
* {@inheritDoc}
*/
@Override
public Class<V> getValueType() {
return valueType;
}
/**
* {@inheritDoc}
*/
@Override
public EvictionAdvisor<? super K, ? super V> getEvictionAdvisor() {
return evictionAdvisor;
}
/**
* {@inheritDoc}
*/
@Override
public ClassLoader getClassLoader() {
return this.classLoader;
}
/**
* {@inheritDoc}
*/
@Override
public Expiry<? super K, ? super V> getExpiry() {
return expiry;
}
/**
* {@inheritDoc}
*/
@Override
public ResourcePools getResourcePools() {
return resourcePools;
}
/**
* {@inheritDoc}
*/
@Override
public Serializer<K> getKeySerializer() {
return keySerializer;
}
/**
* {@inheritDoc}
*/
@Override
public Serializer<V> getValueSerializer() {
return valueSerializer;
}
/**
* {@inheritDoc}
*/
@Override
public int getDispatcherConcurrency() {
return dispatcherConcurrency;
}
}