Class ProcedureCache

java.lang.Object
net.sourceforge.jtds.jdbc.cache.ProcedureCache
All Implemented Interfaces:
StatementCache

public class ProcedureCache extends Object implements StatementCache
LRU cache for procedures and statement handles.
Version:
$Id: ProcedureCache.java,v 1.5 2005-07-05 16:44:25 alin_sinpalean Exp $
  • Field Details

  • Constructor Details

    • ProcedureCache

      public ProcedureCache(int cacheSize)
      Constructs a new statement cache.
      Parameters:
      cacheSize - maximum cache size or 0 to disable caching
  • Method Details

    • get

      public Object get(String key)
      Retrieves a ProcEntry object from the cache.

      If the entry exists it is moved to the front of the linked list to keep it alive as long as possible.

      Specified by:
      get in interface StatementCache
      Parameters:
      key - the key value identifying the required entry
      Returns:
      the keyed entry as an Object or null if the entry does not exist
    • put

      public void put(String key, Object handle)
      Inserts a new entry, identified by a key, into the cache.

      If the cache is full then one or more entries are removed and transferred to a list for later destruction.

      Specified by:
      put in interface StatementCache
      Parameters:
      key - value used to identify the entry
      handle - proc entry to be inserted into the cache
    • remove

      public void remove(String key)
      Removes a redundant entry from the cache.
      Specified by:
      remove in interface StatementCache
      Parameters:
      key - value that identifies the cache entry
    • getObsoleteHandles

      public Collection getObsoleteHandles(Collection handles)
      Obtains a list of statement handles or procedures that can now be dropped.
      Specified by:
      getObsoleteHandles in interface StatementCache
      Parameters:
      handles - a collection of single use statements that will be returned for dropping if the cache is disabled
      Returns:
      the collection of redundant statments for dropping
    • scavengeCache

      private void scavengeCache()
      Removes unused entries trying to bring down the cache to the requested size. The removed entries are placed in the free list.

      Note: entries that are in use will not be removed so it is possible for the cache to still be larger than cacheSize after the call finishes.