/* Cache.java Purpose: Description: History: Thu Sep 6 15:35:06 2007, Created by tomyeh Copyright (C) 2007 Potix Corporation. All Rights Reserved. {{IS_RIGHT This program is distributed under LGPL Version 2.1 in the hope that it will be useful, but WITHOUT ANY WARRANTY. }}IS_RIGHT */ package org.zkoss.util; /** * Represents a cache. * The interface is similar to java.util.Map but simpler to implement. * * @author tomyeh * @since 3.0.0 */ public interface Cache<K,V> { /** Returns whether the specified key is stored. */ public boolean containsKey(Object key); /** Returns the object of the specified key, or null if not found. */ public V get(Object key); /** Stores an object to the cache. * @return the previous value of the same, or null if no such value */ public V put(K key, V value); /** Removes an object from the cache. * @return the object if found. */ public V remove(Object key); /** Clears all objects being cached. */ public void clear(); //Control// /** The default minimal lifetime, unit=milliseconds. It is 30 minutes. */ public static final int DEFAULT_LIFETIME = 30 * 60 * 1000; /** The default maximal allowed size. It is 512. */ public static final int DEFAULT_MAX_SIZE = 512; /** * Returns the minimal lifetime, unit=milliseconds. * An mapping won't be removed by GC unless the minimal lifetime * or the maximal allowed size exceeds. * @see #getMaxSize */ public int getLifetime(); /** * Sets the minimal lifetime. Default: {@link #DEFAULT_LIFETIME}. * * @param lifetime the lifetime, unit=milliseconds; * if non-positive, they will be removed immediately. * @see #getLifetime */ public void setLifetime(int lifetime); /** * Returns the maximal allowed size. Default: {@link #DEFAULT_MAX_SIZE}. * An mapping won't be removed by GC unless the minimal lifetime * or the maximal allowed size exceeds. * @see #getLifetime */ public int getMaxSize(); /** * Sets the maximal allowed size. * @see #getMaxSize */ public void setMaxSize(int maxsize); }