Class CacheManager
- java.lang.Object
-
- org.pentaho.platform.plugin.services.cache.CacheManager
-
- All Implemented Interfaces:
org.pentaho.platform.api.engine.ICacheManager
,org.pentaho.platform.api.engine.ILogoutListener
public class CacheManager extends Object implements org.pentaho.platform.api.engine.ICacheManager
This class provides an access point for pluggable caching mechanisms. Right now, it only supports the caching mechanisms implemented inorg.hibernate.cache
.To use the cache manager, you need to include the following information in your
pentaho.xml
.<cache-provider> <class>org.hibernate.cache.xxxxxxxx</class> <region>pentahoCache</region> <properties> <property name="someProperty">someValue</property> </properties> </cache-provider>
The specified class must implement the
org.hibernate.cache.CacheProvider
interface.Each implementation of the
org.hibernate.cache.CacheProvider
has slightly different requirements with respect to the required input parameters - so, please see the classes in that package for more information (available from the Sourceforge Hibernate project). Also, some cache providers (notably theorg.hibernate.cache.EhCacheProvider
) completely ignore the passed in properties, and only configure themselves by locating a configuration file (e.g. ehcache.xml) on the classpath.The cache manager supports session-based caching (that is, caching of data that is user-specific) as well as global-based caching (that is, caching of data that is system-wide). To differentiate between session-based and global-based caching, there are different methods that get called depending upon the storage type.
Data that is cached for user sessions require an
IPentahoSession
object to be passed in. The cache manager uses theIPentahoSession.getId()
to classify saved objects underneath a specific user session. No information is actually stored in the user session object. For an example of this, see
putInSessionCache(IPentahoSession session, String key, Object value)Data that is server-wide (i.e. global) uses different methods for storage/retrieval/management. For an example of this, see
getFromGlobalCache(Object key)Example Usage:
String globalCachable = "String to cache"; String globalCacheKey = "StringKey"; CacheManager cacheManager = PentahoSystem.getCacheManager(); cacheManager.putInGlobalCache( globalCacheKey, globalCachable );
Important Considerations
- Most caches require objects that go into the cache as well as their respective object key implement Serializable. It is a safe assumption that both the Key and the Value should implement Serializable.
- Some caches are read-only. Other caches are read-write. What does this mean? It means that once you put an object in the cache, you can't put an object into the cache with the same key. You'd need to remove it first
- Author:
- mbatchel
- See Also:
CacheProvider
,Cache
-
-
Field Summary
Fields Modifier and Type Field Description protected static org.apache.commons.logging.Log
logger
-
Constructor Summary
Constructors Constructor Description CacheManager()
The constructor performs the following tasks:
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
addCacheRegion(String region)
boolean
addCacheRegion(String region, Properties cacheProperties)
boolean
addCacheRegion(String region, org.hibernate.cache.Cache cache)
boolean
cacheEnabled()
boolean
cacheEnabled(String region)
void
cacheStop()
void
clearCache()
void
clearRegionCache(String region)
Set
getAllEntriesFromRegionCache(String region)
Set
getAllKeysFromRegionCache(String region)
List
getAllValuesFromRegionCache(String region)
protected org.hibernate.cache.CacheProvider
getCacheProvider()
Returns the underlying cache provider (implementsorg.hibernate.cache.CacheProvider
long
getElementCountInGlobalCache()
long
getElementCountInRegionCache(String region)
long
getElementCountInSessionCache()
Object
getFromGlobalCache(Object key)
Object
getFromRegionCache(String region, Object key)
Object
getFromSessionCache(org.pentaho.platform.api.engine.IPentahoSession session, String key)
void
killSessionCache(org.pentaho.platform.api.engine.IPentahoSession session)
void
killSessionCaches()
void
onLogout(org.pentaho.platform.api.engine.IPentahoSession session)
void
putInGlobalCache(Object key, Object value)
void
putInRegionCache(String region, Object key, Object value)
void
putInSessionCache(org.pentaho.platform.api.engine.IPentahoSession session, String key, Object value)
void
removeFromGlobalCache(Object key)
void
removeFromRegionCache(String region, Object key)
void
removeFromSessionCache(org.pentaho.platform.api.engine.IPentahoSession session, String key)
void
removeRegionCache(String region)
protected void
setupCacheProvider(Properties cacheProperties)
-
-
-
Constructor Detail
-
CacheManager
public CacheManager()
The constructor performs the following tasks:- Gets the Hitachi Vantara System Settings
- Reads the
cache-provider/class
element. - Reads the
cache-provider/region
element. - Reads in any properties under
cache-provider/properties/*
- Attempts to instance the cache provider classes specified
- Starts the cache (see the
org.hibernate.cache.CacheProvider
interface) - Calls the buildCache method (see the
org.hibernate.cache.CacheProvider
interface)
-
-
Method Detail
-
setupCacheProvider
protected void setupCacheProvider(Properties cacheProperties)
-
cacheStop
public void cacheStop()
- Specified by:
cacheStop
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
getCacheProvider
protected org.hibernate.cache.CacheProvider getCacheProvider()
Returns the underlying cache provider (implementsorg.hibernate.cache.CacheProvider
- Returns:
- cacheProvider.
-
cacheEnabled
public boolean cacheEnabled(String region)
- Specified by:
cacheEnabled
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
onLogout
public void onLogout(org.pentaho.platform.api.engine.IPentahoSession session)
- Specified by:
onLogout
in interfaceorg.pentaho.platform.api.engine.ICacheManager
- Specified by:
onLogout
in interfaceorg.pentaho.platform.api.engine.ILogoutListener
-
addCacheRegion
public boolean addCacheRegion(String region, Properties cacheProperties)
- Specified by:
addCacheRegion
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
addCacheRegion
public boolean addCacheRegion(String region)
- Specified by:
addCacheRegion
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
addCacheRegion
public boolean addCacheRegion(String region, org.hibernate.cache.Cache cache)
-
clearRegionCache
public void clearRegionCache(String region)
- Specified by:
clearRegionCache
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
removeRegionCache
public void removeRegionCache(String region)
- Specified by:
removeRegionCache
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
putInRegionCache
public void putInRegionCache(String region, Object key, Object value)
- Specified by:
putInRegionCache
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
getFromRegionCache
public Object getFromRegionCache(String region, Object key)
- Specified by:
getFromRegionCache
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
getAllValuesFromRegionCache
public List getAllValuesFromRegionCache(String region)
- Specified by:
getAllValuesFromRegionCache
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
getAllKeysFromRegionCache
public Set getAllKeysFromRegionCache(String region)
- Specified by:
getAllKeysFromRegionCache
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
getAllEntriesFromRegionCache
public Set getAllEntriesFromRegionCache(String region)
- Specified by:
getAllEntriesFromRegionCache
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
removeFromRegionCache
public void removeFromRegionCache(String region, Object key)
- Specified by:
removeFromRegionCache
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
cacheEnabled
public boolean cacheEnabled()
- Specified by:
cacheEnabled
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
clearCache
public void clearCache()
- Specified by:
clearCache
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
getFromGlobalCache
public Object getFromGlobalCache(Object key)
- Specified by:
getFromGlobalCache
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
getFromSessionCache
public Object getFromSessionCache(org.pentaho.platform.api.engine.IPentahoSession session, String key)
- Specified by:
getFromSessionCache
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
killSessionCache
public void killSessionCache(org.pentaho.platform.api.engine.IPentahoSession session)
- Specified by:
killSessionCache
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
killSessionCaches
public void killSessionCaches()
- Specified by:
killSessionCaches
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
putInGlobalCache
public void putInGlobalCache(Object key, Object value)
- Specified by:
putInGlobalCache
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
putInSessionCache
public void putInSessionCache(org.pentaho.platform.api.engine.IPentahoSession session, String key, Object value)
- Specified by:
putInSessionCache
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
removeFromGlobalCache
public void removeFromGlobalCache(Object key)
- Specified by:
removeFromGlobalCache
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
removeFromSessionCache
public void removeFromSessionCache(org.pentaho.platform.api.engine.IPentahoSession session, String key)
- Specified by:
removeFromSessionCache
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
getElementCountInRegionCache
public long getElementCountInRegionCache(String region)
- Specified by:
getElementCountInRegionCache
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
getElementCountInSessionCache
public long getElementCountInSessionCache()
- Specified by:
getElementCountInSessionCache
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
getElementCountInGlobalCache
public long getElementCountInGlobalCache()
- Specified by:
getElementCountInGlobalCache
in interfaceorg.pentaho.platform.api.engine.ICacheManager
-
-