/* * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software * Foundation. * * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * Copyright 2008 Pentaho Corporation. All rights reserved. */ package org.pentaho.platform.api.engine; import java.util.List; import java.util.Properties; import java.util.Set; public interface ICacheManager extends ILogoutListener { public static final String SESSION ="SESSION"; //$NON-NLS-1$ public static final String GLOBAL ="GLOBAL"; //$NON-NLS-1$ /** * Stops the cache by calling the cacheProvider stop method. This method * should be called either when the VM goes away, or when the web context * goes away. This performs required cleanup in the underlying cache * implementation. In some cases, failure to stop the cache will cause * cached items saved to disk to be un-recoverable. * */ public void cacheStop(); /** * Removes any session-based data for the specified * <code>IPentahoSession</code>. * * @param session * The session whose objects needs to be removed from the cache. */ public void killSessionCache(IPentahoSession session); /** * Removes all cached items that are session-based. * */ public void killSessionCaches(); /** * Puts an object in the session-specific cache. The session specified must * have a valid session id. * <p> * Take special care that, in a TestCase, you don't have multiple * StandaloneSession objects with the same session key. Consider using * <code>UUIDUtil</code> to generate a unique sessionId for each * standalone session. * * @param session * The users IPentahoSession * @param key * The key by which you want to retrieve the data back out * @param value * The data item to place into the cache */ public void putInSessionCache(IPentahoSession session, String key, Object value); /** * Entirely clears the cache. * */ public void clearCache(); /** * Removes a data item from the user session specific cache * * @param session * The users IPentahoSession * @param key * The key that maps to the value needing removed */ public void removeFromSessionCache(IPentahoSession session, String key); /** * Gets an object from the user session specific cache. If the object * doesn't exist in the cache, null is returned. * * @param session * The users IPentahoSession * @param key * The key that maps to the data to get from the cache * @return Object that was stored in the cache */ public Object getFromSessionCache(IPentahoSession session, String key); /** * Returns the enablement state of the cache. * * @return true if the cache has been initialized and is ready for use. */ public boolean cacheEnabled(); // ~======= Support for global cache (non-session based) /** * Puts an object directly into the cache without translating the passed in * key. * <p> * Important note - most cache implementations require both the key and the * value to be serializable. * <p> * * @param key * Object by which the data is indexed * @param value * The data to store in the cache. */ public void putInGlobalCache(Object key, Object value); /** * Gets an object from the cache without translating the passed in key. * * @param key * The key that the data object was stored with * @return The corresponding data object */ public Object getFromGlobalCache(Object key); /** * Removes an object from the cache * * @param key * The key that the data object was stored with */ public void removeFromGlobalCache(Object key); /** * Returns the enablement state of the cache. * * @return true if the cache has been initialized and is ready for use. */ public boolean cacheEnabled(String region); public void onLogout(IPentahoSession session); public boolean addCacheRegion(String region); public boolean addCacheRegion(String region, Properties cacheProperties); /** * Clears any data for the specified for a specific region(For example region could be session, global etc) * * @param region The region whose objects needs to be removed from the cache. */ public void clearRegionCache(String region); /** * Clears any data for the specified for a specific region(For example region could be session, global etc) and * removed the region from the map * * @param region The region whose objects needs to be removed from the cache. */ public void removeRegionCache(String region); /** * Puts an object directly into the cache of a specific region * <p> * Important note - most cache implementations require both the key and the * value to be serializable. * <p> * @param region * the region where the object will be put in the cache * @param key * Object by which the data is indexed * @param value * The data to store in the cache. * */ public void putInRegionCache(String reqion, Object key, Object value); /** * Gets an object from the cache within a specific region * @param region * the region where the object was put in the cache * @param key * The key that the data object was stored with * @return The corresponding data object */ public Object getFromRegionCache(String region, Object key); /** * Get a Set of Map.Entry objects from the cache within a specific region * @param region * the region where the object was put in the cache * @return The corresponding list of objects */ @SuppressWarnings("unchecked") public Set getAllEntriesFromRegionCache(String region); /** * Get a Set of Key objects from the cache within a specific region * @param region * the region where the object was put in the cache * @return The corresponding list of objects */ @SuppressWarnings("unchecked") public Set getAllKeysFromRegionCache(String region); /** * Get a list of values from the cache within a specific region * @param region * the region where the object was put in the cache * @return The corresponding list of objects */ @SuppressWarnings("unchecked") public List getAllValuesFromRegionCache(String region); /** * Removes an object from the cache within a specific region * @param region * the region where the object was put in the cache * @param key * The key that the data object was stored with **/ public void removeFromRegionCache(String region, Object key); }