Package mondrian.rolap.cache
Class MemorySegmentCache
- java.lang.Object
-
- mondrian.rolap.cache.MemorySegmentCache
-
- All Implemented Interfaces:
SegmentCache
public class MemorySegmentCache extends Object implements SegmentCache
Implementation ofSegmentCache
that stores segments in memory.Segments are held via soft references, so the garbage collector can remove them if it sees fit.
- Author:
- Julian Hyde
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface mondrian.spi.SegmentCache
SegmentCache.SegmentCacheInjector, SegmentCache.SegmentCacheListener
-
-
Constructor Summary
Constructors Constructor Description MemorySegmentCache()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addListener(SegmentCache.SegmentCacheListener listener)
Adds a listener to this segment cache implementation.boolean
contains(SegmentHeader header)
void
fireSegmentCacheEvent(SegmentCache.SegmentCacheListener.SegmentCacheEvent evt)
SegmentBody
get(SegmentHeader header)
Returns a SegmentBody once the cache has returned any results, or null if no segment corresponding to the header could be found.List<SegmentHeader>
getSegmentHeaders()
Returns a list of all segments present in the cache.boolean
put(SegmentHeader header, SegmentBody body)
Stores a segment data in the cache.boolean
remove(SegmentHeader header)
Removes a segment from the cache.void
removeListener(SegmentCache.SegmentCacheListener listener)
Unregisters a listener from this segment cache implementation.boolean
supportsRichIndex()
Tells Mondrian whether this segment cache uses theSegmentHeader
objects as an index, thus preserving them in a serialized state, or if it uses its identification number only.void
tearDown()
Tear down and clean up the cache.
-
-
-
Method Detail
-
get
public SegmentBody get(SegmentHeader header)
Description copied from interface:SegmentCache
Returns a SegmentBody once the cache has returned any results, or null if no segment corresponding to the header could be found.Cache implementations are at liberty to 'forget' segments. Therefore it is allowable for this method to return null at any time
- Specified by:
get
in interfaceSegmentCache
- Parameters:
header
- The header of the segment to find. Consider this as a key.- Returns:
- A SegmentBody, or
null
if no corresponding segment could be found in cache.
-
contains
public boolean contains(SegmentHeader header)
-
getSegmentHeaders
public List<SegmentHeader> getSegmentHeaders()
Description copied from interface:SegmentCache
Returns a list of all segments present in the cache.- Specified by:
getSegmentHeaders
in interfaceSegmentCache
- Returns:
- A List of segment headers describing the contents of the cache.
-
put
public boolean put(SegmentHeader header, SegmentBody body)
Description copied from interface:SegmentCache
Stores a segment data in the cache.- Specified by:
put
in interfaceSegmentCache
- Parameters:
header
- The header of the segment.body
- The segment body to cache.- Returns:
- Whether the cache write succeeded
-
remove
public boolean remove(SegmentHeader header)
Description copied from interface:SegmentCache
Removes a segment from the cache.- Specified by:
remove
in interfaceSegmentCache
- Parameters:
header
- The header of the segment we want to remove.- Returns:
- True if the segment was found and removed, false otherwise.
-
tearDown
public void tearDown()
Description copied from interface:SegmentCache
Tear down and clean up the cache.- Specified by:
tearDown
in interfaceSegmentCache
-
addListener
public void addListener(SegmentCache.SegmentCacheListener listener)
Description copied from interface:SegmentCache
Adds a listener to this segment cache implementation. The listener will get notified viaSegmentCache.SegmentCacheListener.SegmentCacheEvent
instances.- Specified by:
addListener
in interfaceSegmentCache
- Parameters:
listener
- The listener to attach to this cache.
-
removeListener
public void removeListener(SegmentCache.SegmentCacheListener listener)
Description copied from interface:SegmentCache
Unregisters a listener from this segment cache implementation.- Specified by:
removeListener
in interfaceSegmentCache
- Parameters:
listener
- The listener to remove.
-
supportsRichIndex
public boolean supportsRichIndex()
Description copied from interface:SegmentCache
Tells Mondrian whether this segment cache uses theSegmentHeader
objects as an index, thus preserving them in a serialized state, or if it uses its identification number only.Not using a rich index prevents Mondrian from doing partial cache invalidation.
It is assumed that this method returns fairly quickly, and for a given cache always returns the same value.
- Specified by:
supportsRichIndex
in interfaceSegmentCache
- Returns:
- Whether this segment cache preserves headers in serialized state
-
fireSegmentCacheEvent
public void fireSegmentCacheEvent(SegmentCache.SegmentCacheListener.SegmentCacheEvent evt)
-
-