1 /* Open Source Java Caching Service
2 * Copyright (C) 2002 Frank Karlstrøm
3 * This library is free software; you can redistribute it and/or
4 * modify it under the terms of the GNU Lesser General Public
5 * License as published by the Free Software Foundation; either
6 * version 2.1 of the License, or (at your option) any later version.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public
14 * License along with this library; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 *
17 * The author can be contacted by email: fjankk@users.sourceforge.net
18 */
19 package javax.util.jcache;
20
21 import java.util.Map;
22
23 /** Interface with extra methods for special features of FKache.
24 * @author Frank Karlstrøm
25 *
26 */
27 public interface CacheMap extends Map {
28 /**
29 * Will return an attribute object describing the current attributes
30 * associated for the region for this CacheAccess.
31
32 * @return an Attributes object for the region of this CacheAccess.
33
34 */
35 Attributes getAttributes() ;
36
37 /**
38 * will return an attribute object describing the current attributes
39 * associated with the object name.
40 *@deprecated moved to MapAccess
41 * @param name the name of the object to get the attributes for.
42 *
43 * @return an Attributes object for the named object.
44 *
45 * @throws CacheException if an error occurs.
46 */
47 Attributes getAttributes(Object name) throws CacheException;
48 /**
49 * Gets the object from the cache. If the object is not currently in the
50 * cache and a loader object has been registered, the object will be
51 * loaded into the cache with the arguments specified.
52 *
53 * @param name the name of the object to get.
54 * @param arguments the arguments wich is passed to the load method of the
55 * CacheLoader, if registered.
56 *
57 * @return a reference to a shared object.
58 */
59 Object get(Object name, Object arguments);
60 /**
61 * is used to specify the attributes to associate with an object when it is
62 * loaded. This can include the loader object, cache event handlers, and
63 * spesific attributes for the object such as distribute, spool, etc.
64 * Attributes (with the exception of the CacheLoader object itself) can
65 * also be specified within the load method of the CacheLoader object
66 * using the setAttributes method, if the attributes for an object are not
67 * defined, the attributes of the region will be used.
68 *
69 * @param name the name of the object to associate the attributes with.
70 * @param attributes the attributes to associate.
71 */
72 public void defineObject(Object name, Attributes attributes);
73 /**Puts a object into the cache, and attach it to a group.
74 * If the group does not exist, this method will fail.
75 * If an object with the specified name, in the specified group
76 * already exists, this object is repleaced with the new object,
77 * and the old object is returned. Otherwise null is returned.
78 * @param key the key of the object
79 * @param group the group to put it in to.
80 * @param value the actual object to put into the cache.
81 * @return if an object already was in the cache in the specified group, this object is returned.
82 */
83 public Object put(Object key, String group, Object value);
84
85 /**Removes an object from a group.
86 * @param key The object to remove.
87 * @param group The group to remove the object from.
88 * @return The removed object if any.
89 */
90 public Object remove(Object key, String group);
91 }