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