org.apache.slide.util
Class TxLRUObjectCache

java.lang.Object
  extended byorg.apache.slide.util.TxLRUObjectCache
Direct Known Subclasses:
ByteSizeLimitedObjectCache

public class TxLRUObjectCache
extends java.lang.Object

Transactional LRU object cache. Caches objects using a least-recently-used strategy. It provides basic isolation from other transactions and atomicity of all operations. As no locking is used (which is undesirable mainly as a cache should never block and a commit must never fail) serializability needs to be guaranteed by underlying stores.

Caution: Only global caches are limited by given size. Size of temporary data inside a transaction is unlimited.

Note: This cache has no idea if the data it caches in transactions are read from or written to store. It thus handles both access types the same way. This means read accesses are cached in transactions even though they could be cached globally. Like write accesses they will be moved to global cache at commit time.

Version:
$Revision: 1.1.2.1 $
Author:
Oliver Zeigermann

Field Summary
protected  java.util.Map globalCache
           
protected  int hits
           
protected  java.lang.String logChannel
           
protected  Logger logger
           
protected  boolean loggingEnabled
           
protected  int misses
           
protected  java.lang.String name
           
protected  java.util.Map txChangeCaches
           
protected  java.util.Map txDeleteCaches
           
 
Constructor Summary
TxLRUObjectCache(int globalCacheSize)
           
TxLRUObjectCache(int globalCacheSize, java.lang.String name, Logger logger)
          Creates a new object cache.
 
Method Summary
 void clear()
           
 void commit(java.lang.Object txId)
           
 void forget(java.lang.Object txId)
           
 java.lang.Object get(java.lang.Object txId, java.lang.Object key)
           
protected  void hit(java.lang.Object txId, java.lang.Object key)
           
protected  void log(java.lang.Object txId, java.lang.Object key, boolean hit)
           
protected  void miss(java.lang.Object txId, java.lang.Object key)
           
 void put(java.lang.Object txId, java.lang.Object key, java.lang.Object value)
           
 void remove(java.lang.Object txId, java.lang.Object key)
           
 void rollback(java.lang.Object txId)
           
 void start(java.lang.Object txId)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

globalCache

protected java.util.Map globalCache

txChangeCaches

protected java.util.Map txChangeCaches

txDeleteCaches

protected java.util.Map txDeleteCaches

hits

protected int hits

misses

protected int misses

name

protected java.lang.String name

logger

protected Logger logger

logChannel

protected java.lang.String logChannel

loggingEnabled

protected final boolean loggingEnabled
Constructor Detail

TxLRUObjectCache

public TxLRUObjectCache(int globalCacheSize,
                        java.lang.String name,
                        Logger logger)
Creates a new object cache.

Parameters:
globalCacheSize - maximum size in objects of global cache
name - the name used to construct logging category / channel
logger - Slide logger to be used for logging

TxLRUObjectCache

public TxLRUObjectCache(int globalCacheSize)
Method Detail

clear

public void clear()

get

public java.lang.Object get(java.lang.Object txId,
                            java.lang.Object key)

put

public void put(java.lang.Object txId,
                java.lang.Object key,
                java.lang.Object value)

remove

public void remove(java.lang.Object txId,
                   java.lang.Object key)

start

public void start(java.lang.Object txId)

rollback

public void rollback(java.lang.Object txId)

commit

public void commit(java.lang.Object txId)

forget

public void forget(java.lang.Object txId)

hit

protected void hit(java.lang.Object txId,
                   java.lang.Object key)

miss

protected void miss(java.lang.Object txId,
                    java.lang.Object key)

log

protected void log(java.lang.Object txId,
                   java.lang.Object key,
                   boolean hit)