001: /*
002: * Copyright 2002 Sun Microsystems, Inc. All
003: * rights reserved. Use of this product is subject
004: * to license terms. Federal Acquisitions:
005: * Commercial Software -- Government Users
006: * Subject to Standard License Terms and
007: * Conditions.
008: *
009: * Sun, Sun Microsystems, the Sun logo, and Sun ONE
010: * are trademarks or registered trademarks of Sun Microsystems,
011: * Inc. in the United States and other countries.
012: */
013:
014: package com.sun.portal.container.portlet;
015:
016: import com.sun.portal.container.ContainerRequest;
017: import com.sun.portal.container.portlet.PortletCacheEntry;
018:
019: /**
020: * The cache manager is responsible for managing the cache contents
021: * for the portlets. The operations on the cached portlet contents
022: * include adding, retrieving, updating, and removing the cache
023: * entries to/from the cache repository.
024: * <p>
025: * The portlet specification defines two basic portlet content
026: * caching mechanisms: EXPIRATION cache and VALIDATING cache.
027: * Regardless of which mechanism gets used, the cache (mechanism)
028: * is per portlet entity per user session. The cached data should
029: * not be shared across different users of the same portlet entity.
030: * <p>
031: * <code>CacheManager</code> is an interface that is used by the
032: * portlet container.
033: *
034: */
035:
036: public interface CacheManager {
037:
038: //Prefixes for the name using in the servlet context listeners
039: public static final String CACHE_MANAGER = "cache_manager";
040:
041: /**
042: * Returns the <code>PortletCacheEntry</code> for the portlet of i
043: * the specified portlet entity ID encapsulated in the <code>
044: * ContainerRequest</code>.
045: * <p>
046: * This method returns <code>null</code> in the following two
047: * situations:
048: * <p>
049: * <ul>
050: * <li> no cache entry is found for this portlet entity
051: * <li> if the cache type is EXPIRATION and the cached data
052: * has already expired
053: * </ul>
054: *
055: * @param request The <code>ContainerRequest</code> object that
056: * encapsulates the portlet entity ID
057: */
058: public PortletCacheEntry getCachedPortlet(ContainerRequest request);
059:
060: /**
061: * Called by the portlet container to add or update the cache
062: * entry for the protlet of the specified entity ID encapsulated
063: * in the <code>ContainerRequest</code>.
064: * <p>
065: * @param request The <code>ContainerRequest</code> object that
066: * encapsulates the portlet entity ID
067: * @param entry The <code>PortletCacheEntry</code> object
068: *
069: */
070: public void putCachedPortlet(ContainerRequest request,
071: PortletCacheEntry entry);
072:
073: /**
074: * Called by the portlet container to remove the cache entry
075: * for the protlet of the specified entity ID encapsulated
076: * in the <code>ContainerRequest</code>.
077: * <p>
078: * @param request The <code>ContainerRequest</code> object that
079: * encapsulates the portlet entity ID
080: *
081: */
082: public void removeCachedPortlet(ContainerRequest request);
083:
084: /**
085: * Called by the portlet container to remove all the cache
086: * entries in the user session.
087: * <p>
088: * @param request The <code>ContainerRequest</code> object that
089: * encapsulates the information of the cache repository
090: * in the user session.
091: *
092: */
093: public void removeAllCachedPortlets(ContainerRequest request);
094:
095: /**
096: * Return if the cached entry for the portlet with EXPIRATION
097: * cache type already expired.
098: * <P>
099: * @param request The <code>ContainerRequest</code> object that
100: * encapsulates the portlet entity ID
101: * <p>
102: * @return true, if the cached entry for the portlet with
103: * EXPIRATION cache type has already expired
104: *<p>
105: * @exception java.lang.IllegalStateException if the cache
106: * type is not EXPIRATION.
107: * @exception com.sun.portal.container.NoSuchCachedContentException
108: * if the cache entry for the portlet entity is
109: * not found.
110: *
111: **/
112: public boolean isCacheExpired(ContainerRequest request)
113: throws IllegalStateException, NoSuchCachedContentException;
114:
115: }
|