001: /*
002: * Copyright (c) 2002-2003 by OpenSymphony
003: * All rights reserved.
004: */
005: package com.opensymphony.oscache.base.persistence;
006:
007: import com.opensymphony.oscache.base.Config;
008:
009: import java.util.Set;
010:
011: /**
012: * Defines the methods that are required to persist cache data.
013: * To provide a custom persistence mechanism you should implement this
014: * interface and supply the fully-qualified classname to the cache via
015: * the <code>cache.persistence.class</code> configuration property.
016: *
017: * @version $Revision: 254 $
018: * @author <a href="mailto:fbeauregard@pyxis-tech.com">Francois Beauregard</a>
019: */
020: public interface PersistenceListener {
021: /**
022: * Verify if an object is currently stored in the persistent cache.
023: *
024: * @param key The cache key of the object to check.
025: */
026: public boolean isStored(String key)
027: throws CachePersistenceException;
028:
029: /**
030: * Verify if a group is currently stored in the persistent cache.
031: *
032: * @param groupName The name of the group to check.
033: */
034: public boolean isGroupStored(String groupName)
035: throws CachePersistenceException;
036:
037: /**
038: * Clear the entire persistent cache (including the root)
039: */
040: public void clear() throws CachePersistenceException;
041:
042: /**
043: * Allow the persistence code to initialize itself based on the supplied
044: * cache configuration.
045: */
046: public PersistenceListener configure(Config config);
047:
048: /**
049: * Removes an object from the persistent cache
050: */
051: public void remove(String key) throws CachePersistenceException;
052:
053: /**
054: * Removes a group from the persistent cache.
055: *
056: * @param groupName The name of the cache group to remove.
057: */
058: public void removeGroup(String groupName)
059: throws CachePersistenceException;
060:
061: /**
062: * Retrieves an object from the persistent cache.
063: *
064: * @param key The unique cache key that maps to the object
065: * being retrieved.
066: * @return The object, or <code>null</code> if no object was found
067: * matching the supplied key.
068: */
069: public Object retrieve(String key) throws CachePersistenceException;
070:
071: /**
072: * Stores an object in the persistent cache.
073: *
074: * @param key The key to uniquely identify this object.
075: * @param obj The object to persist. Most implementations
076: * of this interface will require this object implements
077: * <code>Serializable</code>.
078: */
079: public void store(String key, Object obj)
080: throws CachePersistenceException;
081:
082: /**
083: * Stores a group in the persistent cache.
084: *
085: * @param groupName The name of the group to persist.
086: * @param group A set containing the keys of all the <code>CacheEntry</code>
087: * objects that belong to this group.
088: */
089: public void storeGroup(String groupName, Set group)
090: throws CachePersistenceException;
091:
092: /**
093: * Retrieves a group from the persistent cache.
094: *
095: * @param groupName The name of the group to retrieve.
096: * @return The returned set should contain the keys
097: * of all the <code>CacheEntry</code> objects that belong
098: * to this group.
099: */
100: Set retrieveGroup(String groupName)
101: throws CachePersistenceException;
102: }
|