All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.redisson.jcache.configuration.JCacheConfiguration Maven / Gradle / Ivy

Go to download

Easy Redis Java client and Real-Time Data Platform. Valkey compatible. Sync/Async/RxJava3/Reactive API. Client side caching. Over 50 Redis based Java objects and services: JCache API, Apache Tomcat, Hibernate, Spring, Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Bloom filter, Scheduler, RPC

The newest version!
/**
 * Copyright (c) 2013-2024 Nikita Koksharov
 *
 * 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.redisson.jcache.configuration;

import javax.cache.configuration.CacheEntryListenerConfiguration;
import javax.cache.configuration.CompleteConfiguration;
import javax.cache.configuration.Configuration;
import javax.cache.configuration.Factory;
import javax.cache.configuration.MutableConfiguration;
import javax.cache.expiry.ExpiryPolicy;
import javax.cache.integration.CacheLoader;
import javax.cache.integration.CacheWriter;

/**
 * Configuration object for JCache {@link javax.cache.Cache}
 * 
 * @author Nikita Koksharov
 *
 * @param  key type
 * @param  value type
 */
public class JCacheConfiguration implements CompleteConfiguration {

    private static final long serialVersionUID = -7861479608049089078L;
    
    private final ExpiryPolicy expiryPolicy;
    private final MutableConfiguration delegate;
    
    public JCacheConfiguration(Configuration configuration) {
        if (configuration != null) {
            if (configuration instanceof RedissonConfiguration) {
                configuration = ((RedissonConfiguration) configuration).getJcacheConfig();
            }
            
            if (configuration instanceof CompleteConfiguration) {
                delegate = new MutableConfiguration((CompleteConfiguration) configuration);
            } else {
                delegate = new MutableConfiguration();
                delegate.setStoreByValue(configuration.isStoreByValue());
                delegate.setTypes(configuration.getKeyType(), configuration.getValueType());
            }
        } else {
            delegate = new MutableConfiguration();
        }
        
        this.expiryPolicy = delegate.getExpiryPolicyFactory().create();
    }
    
    @Override
    public Class getKeyType() {
        if (delegate.getKeyType() == null) {
            return (Class) Object.class; 
        }
        return delegate.getKeyType();
    }

    @Override
    public Class getValueType() {
        if (delegate.getValueType() == null) {
            return (Class) Object.class;
        }
        return delegate.getValueType();
    }

    @Override
    public boolean isStoreByValue() {
        return delegate.isStoreByValue();
    }

    @Override
    public boolean isReadThrough() {
        return delegate.isReadThrough();
    }

    @Override
    public boolean isWriteThrough() {
        return delegate.isWriteThrough();
    }

    @Override
    public boolean isStatisticsEnabled() {
        return delegate.isStatisticsEnabled();
    }
    
    public void setStatisticsEnabled(boolean enabled) {
        delegate.setStatisticsEnabled(enabled);
    }
    
    public void setManagementEnabled(boolean enabled) {
        delegate.setManagementEnabled(enabled);
    }

    @Override
    public boolean isManagementEnabled() {
        return delegate.isManagementEnabled();
    }

    @Override
    public Iterable> getCacheEntryListenerConfigurations() {
        return delegate.getCacheEntryListenerConfigurations();
    }
    
    public void addCacheEntryListenerConfiguration(
            CacheEntryListenerConfiguration cacheEntryListenerConfiguration) {
        delegate.addCacheEntryListenerConfiguration(cacheEntryListenerConfiguration);
    }
    
    public void removeCacheEntryListenerConfiguration(
            CacheEntryListenerConfiguration cacheEntryListenerConfiguration) {
        delegate.removeCacheEntryListenerConfiguration(cacheEntryListenerConfiguration);
    }

    @Override
    public Factory> getCacheLoaderFactory() {
        return delegate.getCacheLoaderFactory();
    }

    @Override
    public Factory> getCacheWriterFactory() {
        return delegate.getCacheWriterFactory();
    }

    @Override
    public Factory getExpiryPolicyFactory() {
        return delegate.getExpiryPolicyFactory();
    }
    
    public ExpiryPolicy getExpiryPolicy() {
        return expiryPolicy;
    }

    
    
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy