Clover coverage report -
Coverage timestamp: Sat Feb 28 2004 21:40:56 EST
file stats: LOC: 116   Methods: 7
NCLOC: 40   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
ServletCache.java - 0% 0% 0%
coverage
 1   
 /*
 2   
  * Copyright (c) 2002-2003 by OpenSymphony
 3   
  * All rights reserved.
 4   
  */
 5   
 package com.opensymphony.oscache.web;
 6   
 
 7   
 import com.opensymphony.oscache.base.Cache;
 8   
 import com.opensymphony.oscache.base.CacheEntry;
 9   
 
 10   
 import org.apache.commons.logging.Log;
 11   
 import org.apache.commons.logging.LogFactory;
 12   
 
 13   
 import java.io.Serializable;
 14   
 
 15   
 import javax.servlet.http.HttpSessionBindingEvent;
 16   
 import javax.servlet.http.HttpSessionBindingListener;
 17   
 import javax.servlet.jsp.PageContext;
 18   
 
 19   
 /**
 20   
  * A simple extension of Cache that implements a session binding listener,
 21   
  * and deletes it's entries when unbound
 22   
  *
 23   
  * @author        <a href="mailto:mike@atlassian.com">Mike Cannon-Brookes</a>
 24   
  * @author        <a href="mailto:tgochenour@peregrine.com">Todd Gochenour</a>
 25   
  * @author <a href="mailto:fbeauregard@pyxis-tech.com">Francois Beauregard</a>
 26   
  * @version        $Revision: 1.2 $
 27   
  */
 28   
 public final class ServletCache extends Cache implements HttpSessionBindingListener, Serializable {
 29   
     private static transient final Log log = LogFactory.getLog(ServletCache.class);
 30   
 
 31   
     /**
 32   
      * The admin for this cache
 33   
      */
 34   
     private ServletCacheAdministrator admin;
 35   
 
 36   
     /**
 37   
      * The scope of that cache.
 38   
      */
 39   
     private int scope;
 40   
 
 41   
     /**
 42   
      * Create a new ServletCache
 43   
      *
 44   
      * @param admin The ServletCacheAdministrator to administer this ServletCache.
 45   
      * @param scope The scope of all entries in this hashmap
 46   
      */
 47  0
     public ServletCache(ServletCacheAdministrator admin, int scope) {
 48  0
         super(admin.isMemoryCaching(), admin.isUnlimitedDiskCache());
 49  0
         setScope(scope);
 50  0
         this.admin = admin;
 51   
     }
 52   
 
 53   
     /**
 54   
      * Create a new Cache
 55   
      *
 56   
      * @param admin The CacheAdministrator to administer this Cache.
 57   
      * @param algorithmClass The class that implement an algorithm
 58   
      * @param limit The maximum cache size in number of entries
 59   
      * @param scope The cache scope
 60   
      */
 61  0
     public ServletCache(ServletCacheAdministrator admin, String algorithmClass, int limit, int scope) {
 62  0
         super(admin.isMemoryCaching(), admin.isUnlimitedDiskCache(), admin.isBlocking(), algorithmClass, limit);
 63  0
         setScope(scope);
 64  0
         this.admin = admin;
 65   
     }
 66   
 
 67   
     /**
 68   
      * Get the cache scope
 69   
      *
 70   
      * @return The cache scope
 71   
      */
 72  0
     public int getScope() {
 73  0
         return scope;
 74   
     }
 75   
 
 76  0
     private void setScope(int scope) {
 77  0
         this.scope = scope;
 78   
     }
 79   
 
 80   
     /**
 81   
      * When this Cache is bound to the session, do nothing.
 82   
      *
 83   
      * @param event The SessionBindingEvent.
 84   
      */
 85  0
     public void valueBound(HttpSessionBindingEvent event) {
 86   
     }
 87   
 
 88   
     /**
 89   
      * When the users's session ends, all listeners are finalized and the
 90   
      * session cache directory is deleted from disk.
 91   
      *
 92   
      * @param event The event that triggered this unbinding.
 93   
      */
 94  0
     public void valueUnbound(HttpSessionBindingEvent event) {
 95  0
         log.info("[Cache] Unbound from session " + event.getSession().getId() + " using name " + event.getName());
 96  0
         admin.finalizeListeners(this);
 97  0
         clear();
 98   
     }
 99   
 
 100   
     /**
 101   
      * Indicates whether or not the cache entry is stale. This overrides the
 102   
      * {@link Cache#isStale(CacheEntry, int, String)} method to take into account any
 103   
      * flushing that may have been applied to the scope that this cache belongs to.
 104   
      *
 105   
      * @param cacheEntry     The cache entry to test the freshness of.
 106   
      * @param refreshPeriod  The maximum allowable age of the entry, in seconds.
 107   
      * @param cronExpiry     A cron expression that defines fixed expiry dates and/or
 108   
      * times for this cache entry.
 109   
      *
 110   
      * @return <code>true</code> if the entry is stale, <code>false</code> otherwise.
 111   
      */
 112  0
     protected boolean isStale(CacheEntry cacheEntry, int refreshPeriod, String cronExpiry) {
 113  0
         return super.isStale(cacheEntry, refreshPeriod, cronExpiry) || admin.isScopeFlushed(cacheEntry, scope);
 114   
     }
 115   
 }
 116