/*
* 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.jsr107;
import org.ehcache.config.Builder;
import org.ehcache.config.CacheConfiguration;
import org.ehcache.impl.config.copy.DefaultCopierConfiguration;
import java.util.Collection;
import javax.cache.configuration.CacheEntryListenerConfiguration;
import javax.cache.configuration.Configuration;
import static org.ehcache.core.spi.service.ServiceUtils.findAmongst;
Abstract Configuration
implementation that enables building a JSR-107 compatible configuration from a native Ehcache CacheConfiguration
. Type parameters:
/**
* Abstract {@link Configuration} implementation that enables building a JSR-107 compatible configuration from
* a native Ehcache {@link CacheConfiguration}.
*
* @param <K> the key type
* @param <V> the value type
*/
public abstract class Eh107Configuration<K, V> implements Configuration<K, V> {
private static final long serialVersionUID = 7324956960962454439L;
Creates a new JSR-107 Configuration
from the provided CacheConfiguration
. Params: - ehcacheConfig – the native Ehcache configuration
Type parameters: Returns: a JSR-107 configuration
/**
* Creates a new JSR-107 {@link Configuration} from the provided {@link CacheConfiguration}.
*
* @param ehcacheConfig the native Ehcache configuration
* @param <K> the key type
* @param <V> the value type
*
* @return a JSR-107 configuration
*/
public static <K, V> Configuration<K, V> fromEhcacheCacheConfiguration(CacheConfiguration<K, V> ehcacheConfig) {
return new Eh107ConfigurationWrapper<>(ehcacheConfig);
}
Creates a new JSR-107 Configuration
from the provided CacheConfiguration
obtained through a Builder
. Params: - ehcacheConfigBuilder – the native Ehcache configuration through a builder
Type parameters: Returns: a JSR-107 configuration
/**
* Creates a new JSR-107 {@link Configuration} from the provided {@link CacheConfiguration} obtained through a
* {@link Builder}.
*
* @param ehcacheConfigBuilder the native Ehcache configuration through a builder
* @param <K> the key type
* @param <V> the value type
*
* @return a JSR-107 configuration
*/
public static <K, V> Configuration<K, V> fromEhcacheCacheConfiguration(Builder<? extends CacheConfiguration<K, V>> ehcacheConfigBuilder) {
return new Eh107ConfigurationWrapper<>(ehcacheConfigBuilder.build());
}
Enables to unwrap the underlying configuration.
Params: - clazz – the unwrap target class
Type parameters: - <T> – the unwrap target type
Throws: - IllegalArgumentException – if the type cannot be unwrapped in the target type
Returns: unwrapped type
/**
* Enables to unwrap the underlying configuration.
*
* @param clazz the unwrap target class
* @param <T> the unwrap target type
*
* @return unwrapped type
*
* @throws IllegalArgumentException if the type cannot be unwrapped in the target type
*/
public abstract <T> T unwrap(Class<T> clazz);
abstract boolean isReadThrough();
abstract boolean isWriteThrough();
abstract boolean isStatisticsEnabled();
abstract void setStatisticsEnabled(boolean enabled);
abstract boolean isManagementEnabled();
abstract void setManagementEnabled(boolean enabled);
abstract void addCacheEntryListenerConfiguration(CacheEntryListenerConfiguration<K, V> cacheEntryListenerConfiguration);
abstract void removeCacheEntryListenerConfiguration(CacheEntryListenerConfiguration<K, V> cacheEntryListenerConfiguration);
static class Eh107ConfigurationWrapper<K, V> implements Configuration<K, V> {
private static final long serialVersionUID = -142083549674760400L;
private final transient CacheConfiguration<K, V> cacheConfiguration;
private Eh107ConfigurationWrapper(CacheConfiguration<K, V> cacheConfiguration) {
this.cacheConfiguration = cacheConfiguration;
}
CacheConfiguration<K, V> getCacheConfiguration() {
return cacheConfiguration;
}
@Override
public Class<K> getKeyType() {
return cacheConfiguration.getKeyType();
}
@Override
public Class<V> getValueType() {
return cacheConfiguration.getValueType();
}
@Override
public boolean isStoreByValue() {
return !findAmongst(DefaultCopierConfiguration.class, cacheConfiguration.getServiceConfigurations()).isEmpty();
}
}
}