freemarker.cache
Class MruCacheStorage

java.lang.Object
  extended byfreemarker.cache.MruCacheStorage
All Implemented Interfaces:
CacheStorage

public class MruCacheStorage
extends java.lang.Object
implements CacheStorage

A cache storage that implements a two-level Most Recently Used cache. In the first level, items are strongly referenced up to the specified maximum. When the maximum is exceeded, the least recently used item is moved into the second level cache, where they are softly referenced, up to another specified maximum. When the second level maximum is also exceeded, the least recently used item is discarded altogether. This cache storage is a generalization of both StrongCacheStorage and SoftCacheStorage - the effect of both of them can be achieved by setting one maximum to zero and the other to the largest positive integer. This class is NOT thread-safe. If it is accessed from multiple threads concurrently, proper synchronization must be provided by the callers. Note that TemplateCache, the natural user of this class provides the necessary synchronizations when it uses the class.

Version:
$Id: MruCacheStorage.java,v 1.7 2003/12/18 16:20:07 ddekany Exp $
Author:
Attila Szegedi

Constructor Summary
MruCacheStorage(int maxStrongSize, int maxSoftSize)
          Creates a new MRU cache storage with specified maximum cache sizes.
 
Method Summary
 void clear()
           
 java.lang.Object get(java.lang.Object key)
           
 void put(java.lang.Object key, java.lang.Object value)
           
 void remove(java.lang.Object key)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MruCacheStorage

public MruCacheStorage(int maxStrongSize,
                       int maxSoftSize)
Creates a new MRU cache storage with specified maximum cache sizes. Each cache size can vary between 0 and Integer.MAX_VALUE.

Parameters:
maxStrongSize - the maximum number of strongly referenced templates
maxSoftSize - the maximum number of softly referenced templates
Method Detail

get

public java.lang.Object get(java.lang.Object key)
Specified by:
get in interface CacheStorage

put

public void put(java.lang.Object key,
                java.lang.Object value)
Specified by:
put in interface CacheStorage

remove

public void remove(java.lang.Object key)
Specified by:
remove in interface CacheStorage

clear

public void clear()
Specified by:
clear in interface CacheStorage