org.dspace.providers.CacheProvider Maven / Gradle / Ivy
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.providers;
import java.util.List;
import org.dspace.services.model.Cache;
import org.dspace.services.model.CacheConfig;
/**
* This is a provider (pluggable functionality) for DSpace.
*
* This allows an external system to define how caches are handled in
* DSpace by implementing this interface and registering it with the
* service manager.
*
*
* @author Aaron Zeckoski (azeckoski @ gmail.com)
*/
public interface CacheProvider {
/**
* Gets all the caches that this provider knows about.
*
* @return a list of all the caches which the caching service knows about
*/
public List getCaches();
/**
* Construct a {@link Cache} with the given name (must be unique) OR
* retrieve the one that already exists with this name.
*
* NOTE: providers will never be asked to provide request caches
* (e.g. {@link org.dspace.services.model.CacheConfig.CacheScope#REQUEST})
*
* @param cacheName the unique name for this cache (e.g. org.dspace.user.UserCache)
* @param config (optional) a configuration object. The cache
* should adhere to the settings in it. If it is null then just use
* defaults.
* @return a cache which can be used to store serializable objects
* @throws IllegalArgumentException if the cache name is already in use or the config is invalid
*/
public Cache getCache(String cacheName, CacheConfig config);
/**
* Flush and destroy the cache with this name.
* If the cache does not exist then this does nothing (should not
* fail if the cache does not exist).
*
* @param cacheName the unique name for this cache (e.g. org.dspace.user.UserCache)
*/
public void destroyCache(String cacheName);
/**
* Clears the contents of all caches managed by this provider
*/
public void resetCaches();
}