001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. 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: package org.apache.jetspeed.cache;
018:
019: import org.apache.jetspeed.request.RequestContext;
020:
021: /**
022: * <p>
023: * Provides interface to Jetspeed for cache related activities
024: * Abstraction around actual cache implementation
025: * </p>
026: *
027: * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
028: * @version $Id: $
029: */
030: public interface JetspeedCache {
031: /**
032: * Retrieve an object from the cache
033: *
034: * @param key The key used to find the object
035: * @return the found object or null
036: */
037: CacheElement get(Object key);
038:
039: /**
040: * clear all content in the cache
041: *
042: */
043: void clear();
044:
045: /**
046: * Put an object into the cache, adding it, or replacing if exists
047: * @param object
048: */
049: void put(CacheElement object);
050:
051: /**
052: * Create a cached element
053: *
054: * @param key
055: * @param content
056: * @return
057: */
058: CacheElement createElement(Object key, Object content);
059:
060: boolean isKeyInCache(Object key);
061:
062: /**
063: * Remove an object from the cache
064: * @param key
065: * @return true if the object was removed, false otherwise
066: */
067: boolean remove(Object key);
068:
069: /**
070: * Remove object from cache, do not notify listeners
071: *
072: * @param key
073: * @return trie if the object was removed, false otherwise
074: */
075: boolean removeQuiet(Object key);
076:
077: /**
078: *
079: * @return the default idle time in seconds for this cache
080: */
081: int getTimeToIdleSeconds();
082:
083: /**
084: *
085: * @return the default idle time in seconds for this cache
086: */
087: int getTimeToLiveSeconds();
088:
089: /**
090: * Evict all cached content for the given username
091: *
092: * @param username unique user identifier
093: */
094: void evictContentForUser(String username);
095:
096: /**
097: * Evict all cached content for the given session identifier
098: *
099: * @param sessionid unique session identifier
100: */
101: void evictContentForSession(String sessionId);
102:
103: /**
104: * Create a portlet content cache key based on dynamic request context information and a window id
105: *
106: * @param rc
107: * @param windowId
108: * @since 2.1.2
109: * @return
110: */
111: ContentCacheKey createCacheKey(RequestContext rc, String windowId);
112:
113: /**
114: * Add a cache listener for supported cache events, either for local or remote cache events
115: *
116: * @param listener
117: * @param local if true, listen to local events, if false, listen to remote
118: */
119: void addEventListener(JetspeedCacheEventListener listener,
120: boolean local);
121:
122: void removeEventListener(JetspeedCacheEventListener listener,
123: boolean local);
124: }
|