001: /*
002: Copyright 2004 Philip Jacob <phil@whirlycott.com>
003: Seth Fitzsimmons <seth@note.amherst.edu>
004:
005: Licensed under the Apache License, Version 2.0 (the "License");
006: you may not use this file except in compliance with the License.
007: You may obtain a copy of the License at
008:
009: http://www.apache.org/licenses/LICENSE-2.0
010:
011: Unless required by applicable law or agreed to in writing, software
012: distributed under the License is distributed on an "AS IS" BASIS,
013: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: See the License for the specific language governing permissions and
015: limitations under the License.
016: */
017:
018: package com.whirlycott.cache;
019:
020: /**
021: * Defines a simple interface that all caches should implement.
022: *
023: * @author phil
024: */
025: public interface Cache<K, V> {
026:
027: /**
028: * Retrieve an object from the cache.
029: *
030: * @param key key associated with desired object.
031: *
032: * @return object identified by provided key.
033: */
034: public V retrieve(K key);
035:
036: /**
037: * Retrieve an object whose key implements Cacheable. The onRetrieve() method will
038: * be executed here.
039: * @param key
040: * @return the object retrieved from the cache.
041: */
042: //TODO public Object retrieve(Cacheable key);
043: /**
044: * Store an object in the cache.
045: *
046: * @param key key associated with object to store.
047: * @param value object identified by provided key.
048: */
049: public void store(K key, V value);
050:
051: /**
052: * Store an object in the cache with a Cacheable key.
053: * The onStore() method will be executed here.
054: * @param key
055: * @param value
056: */
057: //TODO public void store(Cacheable key, Object value);
058: /**
059: * Store an object in the cache.
060: *
061: * @param key - the key to retrieve the object later.
062: * @param value - the object to be cached.
063: * @param expireTime - milliseconds that this item should be kept in the cache (accurate to
064: * <code>tuner-sleeptime</code> seconds, as specified in <code>whirlycache.xml</code>.
065: */
066: public void store(K key, V value, long expireTime);
067:
068: /**
069: * Store an object in the cache with a Cacheable key. The onStore() method is
070: * execute here.
071: * @param key - the key to retrieve the object later.
072: * @param value - the object to be cached.
073: * @param expireTime - milliseconds that this item should be kept in the cache
074: * (accurate to <code>tuner-sleeptime</code> seconds, as specified in <code>whirlycache.xml</code>.
075: */
076: //TODO public void store(Cacheable key, Object value, long expireTime);
077: /**
078: * Remove an object from the cache.
079: *
080: * @param key key associated with object to remove.
081: *
082: * @return object that was removed.
083: */
084: public V remove(K key);
085:
086: /**
087: * Removes an object from the cache and executes the onRemove() method.
088: * @param key
089: * @return object that was removed
090: */
091: //TODO public Object remove(Cacheable key);
092: /**
093: * Clear the cache.
094: */
095: public void clear();
096:
097: /**
098: * Get the current size of the cache.
099: */
100: public int size();
101: }
|