Package net.sf.ehcache.store
Class LegacyStoreWrapper
- java.lang.Object
-
- net.sf.ehcache.store.AbstractStore
-
- net.sf.ehcache.store.LegacyStoreWrapper
-
- All Implemented Interfaces:
Store
public class LegacyStoreWrapper extends AbstractStore
A wrapper to convert a legacy pair of stores into a new style compound store.- Author:
- Chris Dennis
-
-
Field Summary
-
Fields inherited from class net.sf.ehcache.store.AbstractStore
attributeExtractors, searchManager
-
Fields inherited from interface net.sf.ehcache.store.Store
CLUSTER_COHERENT, NODE_COHERENT
-
-
Constructor Summary
Constructors Constructor Description LegacyStoreWrapper(Store memory, Store disk, RegisteredEventListeners eventListeners, CacheConfiguration config)Create a correctly locked store wrapper around the supplied in-memory and on disk stores.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanbufferFull()Some store types, such as the disk stores can fill their write buffers if puts come in too fast.booleancontainsKey(java.lang.Object key)A check to see if a key is in the Store.booleancontainsKeyInMemory(java.lang.Object key)A check to see if a key is in the Store and is currently held in memory.booleancontainsKeyOffHeap(java.lang.Object key)A check to see if a key is in the Store and is currently held off-heap.booleancontainsKeyOnDisk(java.lang.Object key)A check to see if a key is in the Store and is currently held on disk.voiddispose()Prepares for shutdown.voidexpireElements()Expire all elements.voidflush()Flush elements to persistent store.Elementget(java.lang.Object key)Gets an item from the cache.PolicygetInMemoryEvictionPolicy()intgetInMemorySize()Returns the current local in-memory store sizelonggetInMemorySizeInBytes()Gets the size of the in-memory portion of the store, in bytes.java.lang.ObjectgetInternalContext()This should not be used, and will generally return nulljava.util.ListgetKeys()Gets an Array of the keys for all elements in the disk store.java.lang.ObjectgetMBean()Optional implementation specific MBean exposed by the store.StoregetMemoryStore()Returns the underlying memory store for this legacy wrapper.intgetOffHeapSize()Returns the current local off-heap store sizelonggetOffHeapSizeInBytes()Gets the size of the off-heap portion of the store, in bytes.intgetOnDiskSize()Returns the current local on-disk store sizelonggetOnDiskSizeInBytes()Gets the size of the on-disk portion of the store, in bytes.ElementgetQuiet(java.lang.Object key)Gets anElementfrom the Store, without updating statisticsintgetSize()Returns the current local store sizeStatusgetStatus()Returns the cache status.intgetTerracottaClusteredSize()Returns the current Terracotta clustered store sizebooleanput(Element element)Puts an item into the store.ElementputIfAbsent(Element element)Put an element in the store if no element is currently mapped to the elements key.booleanputWithWriter(Element element, CacheWriterManager writerManager)Puts an item into the store and the cache writer manager in an atomic operationElementremove(java.lang.Object key)Removes an item from the cache.voidremoveAll()Remove all of the elements from the store.ElementremoveElement(Element element, ElementValueComparator comparator)Remove the Element mapped to the key for the supplied element if the value of the supplied Element is equal to the value of the cached Element.ElementremoveWithWriter(java.lang.Object key, CacheWriterManager writerManager)Removes an item from the store and the cache writer manager in an atomic operation.Elementreplace(Element element)Replace the cached element only if an Element is currently cached for this keybooleanreplace(Element old, Element element, ElementValueComparator comparator)Replace the cached element only if the value of the current Element is equal to the value of the supplied old Element.voidsetInMemoryEvictionPolicy(Policy policy)Sets the eviction policy strategy.-
Methods inherited from class net.sf.ehcache.store.AbstractStore
addStoreListener, executeQuery, getAll, getAllQuiet, getEventListenerList, getSearchAttribute, getSearchAttributes, hasAbortedSizeOf, isCacheCoherent, isClusterCoherent, isNodeCoherent, putAll, recalculateSize, removeAll, removeStoreListener, setAttributeExtractors, setNodeCoherent, waitUntilClusterCoherent
-
-
-
-
Constructor Detail
-
LegacyStoreWrapper
public LegacyStoreWrapper(Store memory, Store disk, RegisteredEventListeners eventListeners, CacheConfiguration config)
Create a correctly locked store wrapper around the supplied in-memory and on disk stores.- Parameters:
memory- in-memory storedisk- on disk storeeventListeners- event listener to fire onconfig- cache configuration
-
-
Method Detail
-
bufferFull
public boolean bufferFull()
Some store types, such as the disk stores can fill their write buffers if puts come in too fast. The thread will wait for a short time before checking again.- Returns:
- true if the store write buffer is backed up.
-
containsKey
public boolean containsKey(java.lang.Object key)
A check to see if a key is in the Store.- Parameters:
key- The Element key- Returns:
- true if found. No check is made to see if the Element is expired. 1.2
-
containsKeyInMemory
public boolean containsKeyInMemory(java.lang.Object key)
A check to see if a key is in the Store and is currently held in memory.- Parameters:
key- The Element key- Returns:
- true if found. No check is made to see if the Element is expired.
-
containsKeyOffHeap
public boolean containsKeyOffHeap(java.lang.Object key)
A check to see if a key is in the Store and is currently held off-heap.- Parameters:
key- The Element key- Returns:
- true if found. No check is made to see if the Element is expired.
-
containsKeyOnDisk
public boolean containsKeyOnDisk(java.lang.Object key)
A check to see if a key is in the Store and is currently held on disk.- Parameters:
key- The Element key- Returns:
- true if found. No check is made to see if the Element is expired.
-
dispose
public void dispose()
Prepares for shutdown.
-
expireElements
public void expireElements()
Expire all elements.
-
flush
public void flush() throws java.io.IOExceptionFlush elements to persistent store.- Throws:
java.io.IOException- if any IO error occurs
-
get
public Element get(java.lang.Object key)
Gets an item from the cache.
-
getInMemoryEvictionPolicy
public Policy getInMemoryEvictionPolicy()
- Returns:
- the current eviction policy. This may not be the configured policy, if it has been dynamically set.
- See Also:
Store.setInMemoryEvictionPolicy(Policy)
-
getInMemorySize
public int getInMemorySize()
Returns the current local in-memory store size- Returns:
- the count of the Elements in the Store and in-memory on the local machine
-
getInMemorySizeInBytes
public long getInMemorySizeInBytes()
Gets the size of the in-memory portion of the store, in bytes.This method may be expensive to run, depending on implementation. Implementers may choose to return an approximate size.
- Returns:
- the approximate in-memory size of the store in bytes
-
getInternalContext
public java.lang.Object getInternalContext()
This should not be used, and will generally return null- Returns:
- some internal context (probably null)
-
getKeys
public java.util.List getKeys()
Gets an Array of the keys for all elements in the disk store.- Returns:
- An List of
Serializablekeys
-
getOffHeapSize
public int getOffHeapSize()
Returns the current local off-heap store size- Returns:
- the count of the Elements in the Store and off-heap on the local machine
-
getOffHeapSizeInBytes
public long getOffHeapSizeInBytes()
Gets the size of the off-heap portion of the store, in bytes.- Returns:
- the approximate off-heap size of the store in bytes
-
getOnDiskSize
public int getOnDiskSize()
Returns the current local on-disk store size- Returns:
- the count of the Elements in the Store and on-disk on the local machine
-
getOnDiskSizeInBytes
public long getOnDiskSizeInBytes()
Gets the size of the on-disk portion of the store, in bytes.- Returns:
- the on-disk size of the store in bytes
-
getQuiet
public Element getQuiet(java.lang.Object key)
Gets anElementfrom the Store, without updating statistics- Returns:
- The element
-
getSize
public int getSize()
Returns the current local store sizeThe size is the number of
Elements in the memory store plus the number ofElements in the disk store.- Returns:
- the count of the Elements in the Store on the local machine
-
getStatus
public Status getStatus()
Returns the cache status.
-
getTerracottaClusteredSize
public int getTerracottaClusteredSize()
Returns the current Terracotta clustered store size- Returns:
- the count of the Elements in the Store across the cluster
-
put
public boolean put(Element element) throws CacheException
Puts an item into the store.- Returns:
- true if this is a new put for the key or element is null. Returns false if it was an update.
- Throws:
CacheException
-
putWithWriter
public boolean putWithWriter(Element element, CacheWriterManager writerManager) throws CacheException
Puts an item into the store and the cache writer manager in an atomic operation- Returns:
- true if this is a new put for the key or element is null. Returns false if it was an update.
- Throws:
CacheException
-
remove
public Element remove(java.lang.Object key)
Removes an item from the cache.
-
removeAll
public void removeAll() throws CacheExceptionRemove all of the elements from the store.If there are registered
CacheEventListeners they are notified of the expiry or removal of theElementas each is removed.- Throws:
CacheException
-
removeWithWriter
public Element removeWithWriter(java.lang.Object key, CacheWriterManager writerManager) throws CacheException
Removes an item from the store and the cache writer manager in an atomic operation.- Throws:
CacheException
-
setInMemoryEvictionPolicy
public void setInMemoryEvictionPolicy(Policy policy)
Sets the eviction policy strategy. The Store will use a policy at startup. The store may allow changing the eviction policy strategy dynamically. Otherwise implementations will throw an exception if this method is called.- Parameters:
policy- the new policy
-
getMemoryStore
public Store getMemoryStore()
Returns the underlying memory store for this legacy wrapper.
-
putIfAbsent
public Element putIfAbsent(Element element) throws java.lang.NullPointerException
Put an element in the store if no element is currently mapped to the elements key.- Parameters:
element- element to be added- Returns:
- the element previously cached for this key, or null if none.
- Throws:
java.lang.NullPointerException- if the element is null, or has a null key
-
removeElement
public Element removeElement(Element element, ElementValueComparator comparator) throws java.lang.NullPointerException
Remove the Element mapped to the key for the supplied element if the value of the supplied Element is equal to the value of the cached Element. This is a CAS operation. It is consistent even against a distributed cache that is not coherent. If the old value is stale when this operation is attempted the remove does not take place.- Parameters:
element- Element to be removedcomparator- ElementValueComparator to use to compare elements- Returns:
- the Element removed or null if no Element was removed
- Throws:
java.lang.NullPointerException- if the element is null, or has a null key
-
replace
public boolean replace(Element old, Element element, ElementValueComparator comparator) throws java.lang.NullPointerException, java.lang.IllegalArgumentException
Replace the cached element only if the value of the current Element is equal to the value of the supplied old Element.- Parameters:
old- Element to be test againstelement- Element to be cachedcomparator- ElementValueComparator to use to compare elements- Returns:
- true is the Element was replaced
- Throws:
java.lang.NullPointerException- if the either Element is null or has a null keyjava.lang.IllegalArgumentException- if the two Element keys are non-null but not equal
-
replace
public Element replace(Element element) throws java.lang.NullPointerException
Replace the cached element only if an Element is currently cached for this key- Parameters:
element- Element to be cached- Returns:
- the Element previously cached for this key, or null if no Element was cached
- Throws:
java.lang.NullPointerException- if the Element is null or has a null key
-
getMBean
public java.lang.Object getMBean()
Optional implementation specific MBean exposed by the store.- Returns:
- implementation specific management bean
-
-