use the new session manager interface
[java-idp.git] / src / edu / internet2 / middleware / shibboleth / common / Cache.java
1 /*
2  * Copyright [2005] [University Corporation for Advanced Internet Development, Inc.]
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package edu.internet2.middleware.shibboleth.common;
18
19 /**
20  * Defines an IdP-wide caching mechanism.
21  * 
22  * @author Walter Hoehn
23  */
24 public interface Cache {
25
26         public enum CacheType {
27                 CLIENT_SIDE, SERVER_SIDE, CLIENT_SERVER_SHARED
28         }
29
30         /**
31          * Returns the identifier for the cache. This will commonly be a string name for the subsytem that is accessing the
32          * cache. Effectively acts as a namespace for the caching mechanisms.
33          */
34         public String getName();
35
36         /**
37          * Returns an indication of how the cache stores its data. Subsystems may enforce storage requirements on caches via
38          * this mechanism.
39          */
40         public CacheType getCacheType();
41
42         /**
43          * Causes the cache to return a value associated with a given key.
44          * 
45          * @throws CacheException
46          *             if an error was encountered while reading the cache
47          */
48         public String retrieve(String key) throws CacheException;
49
50         /**
51          * Causes the cache to remove a value associated with a given key.
52          * 
53          * @throws CacheException
54          *             if an error was encountered while removing the value from the cache
55          */
56         public void remove(String key) throws CacheException;
57
58         /**
59          * Boolean indication of whether or not the cache contains a value tied to a specified key.
60          * 
61          * @throws CacheException
62          *             if an error was encountered while reading the cache
63          */
64         public boolean contains(String key) throws CacheException;
65
66         /**
67          * Causes the cache to associate a value with a given key for a specified number of seconds.
68          * 
69          * @throws CacheException
70          *             if the value could not be written to the cache
71          */
72         public void store(String key, String value, long duration) throws CacheException;
73 }