
org.dspace.services.CachingService 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.services;
import java.util.List;
import org.dspace.services.model.Cache;
import org.dspace.services.model.CacheConfig;
/**
* A service to manage creation and retrieval of caches.
*
* @author Aaron Zeckoski (azeckoski @ gmail.com)
*/
public interface CachingService {
/**
* This is the cache key used to stored requests in a request cache,
* typically handled by a servlet filter but can be handled by
* anything.
* This is here to ensure we use the right name.
*/
public static final String REQUEST_CACHE = "dsRequestCache";
/**
* Gets all the caches that the service knows about.
* This will include caches of all scopes but only includes request
* caches for the current thread.
*
* @return a list of all the caches which the caching service knows about
*/
public List getCaches();
/**
* Construct a Cache with the given name OR retrieve the one that
* already exists with this name. Often the name is the fully
* qualified classpath of the API for the service that is being
* cached, or of the class if there is no API.
* This will operate on system defaults (probably a distributed
* cache without replication) OR it will use the defaults which are
* configured for this cacheName (part of the underlying
* implementation) if the cacheConfig is null.
*
* This can only retrieve request caches for the current request.
*
* If the cache already exists then the cacheConfig is ignored.
*
* @param cacheName the unique name for this cache (e.g. org.dspace.user.UserCache)
* @param cacheConfig defines the configuration for this cache
* @return a cache which can be used to store objects
*/
public Cache getCache(String cacheName, CacheConfig cacheConfig);
/**
* Flushes and destroys the cache with this name.
* Generally there is no reason to call this.
*
* @param cacheName the unique name for this cache (e.g. org.dspace.user.UserCache)
*/
public void destroyCache(String cacheName);
/**
* Get a status report of cache usage which is suitable for log or
* screen output.
*
* @param cacheName (optional) the unique name for this cache (e.g. org.dspace.user.UserCache)
* OR null for status of all caches
* @return a string representing the current status of the specified cache or all caches
*/
public String getStatus(String cacheName);
/**
* Clears all caches.
* Generally there is no reason to call this.
*
* @throws SecurityException if the current user does not have super user permissions
*/
public void resetCaches();
/**
* Unbinds all request caches. Destroys the caches completely.
* You should not call this unless you know what you are doing;
* it is handled automatically by the system.
*/
public void unbindRequestCaches();
}