1 /*
2 * Copyright (c) 2002-2003 by OpenSymphony
3 * All rights reserved.
4 */
5 package com.opensymphony.oscache.base.persistence;
6
7 import com.opensymphony.oscache.base.Config;
8
9 import java.util.Set;
10
11 /**
12 * Defines the methods that are required to persist cache data.
13 * To provide a custom persistence mechanism you should implement this
14 * interface and supply the fully-qualified classname to the cache via
15 * the <code>cache.persistence.class</code> configuration property.
16 *
17 * @version $Revision: 254 $
18 * @author <a href="mailto:fbeauregard@pyxis-tech.com">Francois Beauregard</a>
19 */
20 public interface PersistenceListener {
21 /**
22 * Verify if an object is currently stored in the persistent cache.
23 *
24 * @param key The cache key of the object to check.
25 */
26 public boolean isStored(String key) throws CachePersistenceException;
27
28 /**
29 * Verify if a group is currently stored in the persistent cache.
30 *
31 * @param groupName The name of the group to check.
32 */
33 public boolean isGroupStored(String groupName) throws CachePersistenceException;
34
35 /**
36 * Clear the entire persistent cache (including the root)
37 */
38 public void clear() throws CachePersistenceException;
39
40 /**
41 * Allow the persistence code to initialize itself based on the supplied
42 * cache configuration.
43 */
44 public PersistenceListener configure(Config config);
45
46 /**
47 * Removes an object from the persistent cache
48 */
49 public void remove(String key) throws CachePersistenceException;
50
51 /**
52 * Removes a group from the persistent cache.
53 *
54 * @param groupName The name of the cache group to remove.
55 */
56 public void removeGroup(String groupName) throws CachePersistenceException;
57
58 /**
59 * Retrieves an object from the persistent cache.
60 *
61 * @param key The unique cache key that maps to the object
62 * being retrieved.
63 * @return The object, or <code>null</code> if no object was found
64 * matching the supplied key.
65 */
66 public Object retrieve(String key) throws CachePersistenceException;
67
68 /**
69 * Stores an object in the persistent cache.
70 *
71 * @param key The key to uniquely identify this object.
72 * @param obj The object to persist. Most implementations
73 * of this interface will require this object implements
74 * <code>Serializable</code>.
75 */
76 public void store(String key, Object obj) throws CachePersistenceException;
77
78 /**
79 * Stores a group in the persistent cache.
80 *
81 * @param groupName The name of the group to persist.
82 * @param group A set containing the keys of all the <code>CacheEntry</code>
83 * objects that belong to this group.
84 */
85 public void storeGroup(String groupName, Set group) throws CachePersistenceException;
86
87 /**
88 * Retrieves a group from the persistent cache.
89 *
90 * @param groupName The name of the group to retrieve.
91 * @return The returned set should contain the keys
92 * of all the <code>CacheEntry</code> objects that belong
93 * to this group.
94 */
95 Set retrieveGroup(String groupName) throws CachePersistenceException;
96 }