package org.cache2k;
/*
* #%L
* cache2k API
* %%
* Copyright (C) 2000 - 2017 headissue GmbH, Munich
* %%
* 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.
* #L%
*/
import org.cache2k.processor.EntryProcessingResult;
import org.cache2k.processor.EntryProcessor;
import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentMap;
/**
* Wrapper class that forwards all method calls to a delegate. Can be used to implement extensions that
* need to intercept calls to the cache.
*
* @author Jens Wilke
*/
public abstract class ForwardingCache<K, V> implements Cache<K, V> {
/**
* Subclasses need to implement this method which specifies the delegation
* target.
*/
protected abstract Cache<K, V> delegate();
@Override
public String getName() {
return delegate().getName();
}
@Override
public V get(final K key) {
return delegate().get(key);
}
@Override
public CacheEntry<K, V> getEntry(final K key) {
return delegate().getEntry(key);
}
@Override
public void prefetch(final K key) {
delegate().prefetch(key);
}
@Override
public void prefetchAll(final Iterable<? extends K> keys, final CacheOperationCompletionListener listener) {
delegate().prefetchAll(keys, listener);
}
@Override
public V peek(final K key) {
return delegate().peek(key);
}
@Override
public CacheEntry<K, V> peekEntry(final K key) {
return delegate().peekEntry(key);
}
@Override
public boolean containsKey(final K key) {
return delegate().containsKey(key);
}
@Override
public void put(final K key, final V value) {
delegate().put(key, value);
}
@Override
public V computeIfAbsent(final K key, final Callable<V> callable) {
return delegate().computeIfAbsent(key, callable);
}
@Override
public boolean putIfAbsent(final K key, final V value) {
return delegate().putIfAbsent(key, value);
}
@Override
public V peekAndReplace(final K key, final V value) {
return delegate().peekAndReplace(key, value);
}
@Override
public boolean replace(final K key, final V value) {
return delegate().replace(key, value);
}
@Override
public boolean replaceIfEquals(final K key, final V oldValue, final V newValue) {
return delegate().replaceIfEquals(key, oldValue, newValue);
}
@Override
public V peekAndRemove(final K key) {
return delegate().peekAndRemove(key);
}
@Override
public boolean containsAndRemove(final K key) {
return delegate().containsAndRemove(key);
}
@Override
public void remove(final K key) {
delegate().remove(key);
}
@Override
public boolean removeIfEquals(final K key, final V expectedValue) {
return delegate().removeIfEquals(key, expectedValue);
}
@Override
public void removeAll(final Iterable<? extends K> keys) {
delegate().removeAll(keys);
}
@Override
public V peekAndPut(final K key, final V value) {
return delegate().peekAndPut(key, value);
}
@Override
public void expireAt(final K key, final long millis) {
delegate().expireAt(key, millis);
}
@Override
public void loadAll(final Iterable<? extends K> keys, final CacheOperationCompletionListener listener) {
delegate().loadAll(keys, listener);
}
@Override
public void reloadAll(final Iterable<? extends K> keys, final CacheOperationCompletionListener listener) {
delegate().reloadAll(keys, listener);
}
@Override
public <R> R invoke(final K key, final EntryProcessor<K, V, R> entryProcessor) {
return delegate().invoke(key, entryProcessor);
}
@Override
public <R> Map<K, EntryProcessingResult<R>> invokeAll(final Iterable<? extends K> keys, final EntryProcessor<K, V, R> entryProcessor) {
return delegate().invokeAll(keys, entryProcessor);
}
@Override
public Map<K, V> getAll(final Iterable<? extends K> keys) {
return delegate().getAll(keys);
}
@Override
public Map<K, V> peekAll(final Iterable<? extends K> keys) {
return delegate().peekAll(keys);
}
@Override
public void putAll(final Map<? extends K, ? extends V> valueMap) {
delegate().putAll(valueMap);
}
@Override
public Iterable<K> keys() {
return delegate().keys();
}
@Override
public Iterable<CacheEntry<K, V>> entries() {
return delegate().entries();
}
@Override
public void removeAll() {
delegate().removeAll();
}
@Override
public void clear() {
delegate().clear();
}
@Override
public void clearAndClose() {
delegate().clearAndClose();
}
@Override
public void close() {
delegate().close();
}
@Override
public CacheManager getCacheManager() {
return delegate().getCacheManager();
}
@Override
public boolean isClosed() {
return delegate().isClosed();
}
@Override
public String toString() {
return delegate().toString();
}
@Override
public <X> X requestInterface(final Class<X> _type) {
return delegate().requestInterface(_type);
}
@Override
public ConcurrentMap<K, V> asMap() {
return delegate().asMap();
}
}