01: /*
02: * Licensed under the X license (see http://www.x.org/terms.htm)
03: */
04: package org.ofbiz.minerva.pool.cache;
05:
06: /**
07: * A caching map. This associates one or more values with a
08: * key. When a value is requested for a key, a cached value
09: * will be returned if available, and a new value will be
10: * generated and cached otherwise. Instances of this interface
11: * require a CachedObjectFactory to generate new values, and
12: * control the caching in custom ways.
13: * @see org.ofbiz.minerva.pool.cache.CachedObjectFactory
14: * @author Aaron Mulder ammulder@alumni.princeton.edu
15: */
16: public interface ObjectCache {
17:
18: /**
19: * When setting the size, this constant means there should
20: * be no limit on the size of the cache. This is not
21: * recommended under ordinary circumstances.
22: */
23: public final static int UNLIMITED_SIZE = 0;
24:
25: /**
26: * Gets a cached object with the specified key. This is not
27: * an exclusive function - any number of clients may get the
28: * same object at the same time.
29: * @see #useObject
30: */
31: public Object getObject(Object key);
32:
33: /**
34: * Gets a cached object with the specified key. This is an
35: * exclusive function - no other client may get the same
36: * object at the same time. You must return the object using
37: * returnObject before another client may reuse this object.
38: * @see #getObject
39: * @see #returnObject
40: */
41: public Object useObject(Object key);
42:
43: /**
44: * Returns an object to the cache that is currently in use
45: * (checked out via useObject). No other client can use
46: * the same object until this method is called. The original
47: * client may not continue to use the object after this
48: * method is called.
49: * @see #useObject
50: */
51: public void returnObject(Object key, Object value);
52:
53: /**
54: * Removes all objects from the cache that have this key.
55: * There will only be more than one object with the same
56: * key if clients are using useObject and returnObject
57: * instead of getObject.
58: */
59: public void removeObjects(Object key);
60:
61: /**
62: * Sets the maximum number of objects in the cache. If the
63: * number of objects is at the limit and a new object is
64: * requested, other objects will be dropped from the cache.
65: */
66: public void setSize(int size);
67:
68: /**
69: * Removes all cached objects and stops the cache.
70: */
71: public void close();
72: }
|