package com.octo.android.robospice.persistence; import java.util.Date; import java.util.List; import com.octo.android.robospice.persistence.exception.CacheCreationException; import com.octo.android.robospice.persistence.exception.CacheLoadingException; import com.octo.android.robospice.persistence.exception.CacheSavingException; /** * This interface is mainly used for mocking/testing. Developpers should use * directly the class {@link CacheManager} and should not have to implement this * interface. Defines the behavior of a cache manager, a bus of * {@link ObjectPersister}. * @author sni * @deprecated since version 1.4.6 of RS, easymock 3.2 makes this interface * obsolete. */ @Deprecated public interface ICacheManager { void addPersister(Persister persister); void removePersister(Persister persister); /** * Get all cache keys associated to a given class. * @param clazz * the class for which to get all cache keys. * @return all cache keys associated to a given class. The empty list is * nothing is found in cache. */ <T> List<Object> getAllCacheKeys(Class<T> clazz); /** * Loads an instance of a class clazz, that is stored in cache under the key * cacheKey. * @param clazz * the class of the object that is supposed to be stored in * cache. * @param cacheKey * the key used to identify this item in cache. * @param maxTimeInCacheBeforeExpiry * the maximum time (in ms) an item can be stored in cache before * being considered expired. * @return an instance of a class clazz, that is stored in cache under the * key cacheKey. If the item is not found in cache or is older than * maxTimeInCacheBeforeExpiry, then this method will return null. */ <T> T loadDataFromCache(Class<T> clazz, Object cacheKey, long maxTimeInCacheBeforeExpiry) throws CacheLoadingException, CacheCreationException; /** * Loads all data stored in cache for a given class. * @param clazz * the class for which to get all data stored in cache. * @return all data stored in cache for a given class. */ <T> List<T> loadAllDataFromCache(Class<T> clazz) throws CacheLoadingException, CacheCreationException; /** * Save an instance of a given class, into the cache identified by cacheKey. * Some {@link ObjectPersister} can modify the data they receive before * saving it. Most {@link ObjectPersister} instances will just save the data * as-is, in this case, they can even return it and save it asynchronously * in a background thread for a better efficiency. * @param data * the data to be saved in cache. * @param cacheKey * the key used to identify this item in cache. * @return the data that was saved. */ <T> T saveDataToCacheAndReturnData(T data, Object cacheKey) throws CacheCreationException, CacheSavingException; /** * Test whether or not some data is in cache. * @param clazz * the class of the object that is supposed to be stored in * cache. * @param cacheKey * the key used to identify this item in cache. * @param maxTimeInCacheBeforeExpiry * the maximum time (in ms) an item can be stored in cache before * being considered expired. * @return a boolean indicating whether or not the given data is in the * cache. * @throws CacheCreationException */ boolean isDataInCache(Class<?> clazz, Object cacheKey, long maxTimeInCacheBeforeExpiry) throws CacheCreationException; /** * The date at which given data has been stored last in cache. * @param clazz * the class of the object that is supposed to be stored in * cache. * @param cacheKey * the key used to identify this item in cache. * @return the date at which data has been stored last in cache. Null if no * such data exists. * @throws CacheCreationException * @throws CacheLoadingException */ Date getDateOfDataInCache(Class<?> clazz, Object cacheKey) throws CacheCreationException, CacheLoadingException; /** * Removes a given data in the cache that is an instance of class clazz. * @param clazz * the class of the data to be removed. * @param cacheKey * the identifier of the data to be removed from cache. * @return a boolean indicating whether or not this data could be removed. */ boolean removeDataFromCache(Class<?> clazz, Object cacheKey); /** * Removes all data in the cache that are instances of class clazz. * @param clazz * the class of the data to be removed. */ void removeAllDataFromCache(Class<?> clazz); /** * Removes all data in the cache. */ void removeAllDataFromCache(); }