Clover coverage report -
Coverage timestamp: Sa Jul 7 2007 09:11:40 CEST
file stats: LOC: 92   Methods: 6
NCLOC: 29   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
FIFOCache.java 100% 80% 83,3% 83,3%
coverage coverage
 1    /*
 2    * Copyright (c) 2002-2003 by OpenSymphony
 3    * All rights reserved.
 4    */
 5    package com.opensymphony.oscache.base.algorithm;
 6   
 7    import java.util.*;
 8   
 9    /**
 10    * FIFO (First In First Out) based queue algorithm for the cache.
 11    *
 12    * No synchronization is required in this class since the
 13    * <code>AbstractConcurrentReadCache</code> already takes care of any
 14    * synchronization requirements.
 15    *
 16    * @version $Revision: 427 $
 17    * @author <a href="mailto:mike@atlassian.com">Mike Cannon-Brookes</a>
 18    * @author <a href="mailto:abergevin@pyxis-tech.com">Alain Bergevin</a>
 19    * @author <a href="&#109;a&#105;&#108;&#116;&#111;:chris&#64;swebtec.&#99;&#111;&#109;">Chris Miller</a>
 20    */
 21    public class FIFOCache extends AbstractConcurrentReadCache {
 22   
 23    private static final long serialVersionUID = -10333778645392679L;
 24   
 25    /**
 26    * A queue containing all cache keys
 27    */
 28    private Collection list = new LinkedHashSet();
 29   
 30    /**
 31    * Constructs a FIFO Cache.
 32    */
 33  10 public FIFOCache() {
 34  10 super();
 35    }
 36   
 37    /**
 38    * Constructs a FIFO Cache of the specified capacity.
 39    *
 40    * @param capacity The maximum cache capacity.
 41    */
 42  0 public FIFOCache(int capacity) {
 43  0 this();
 44  0 maxEntries = capacity;
 45    }
 46   
 47    /**
 48    * An object was retrieved from the cache. This implementation
 49    * does noting since this event has no impact on the FIFO algorithm.
 50    *
 51    * @param key The cache key of the item that was retrieved.
 52    */
 53  30 protected void itemRetrieved(Object key) {
 54    }
 55   
 56    /**
 57    * An object was put in the cache. This implementation just adds
 58    * the key to the end of the list if it doesn't exist in the list
 59    * already.
 60    *
 61    * @param key The cache key of the item that was put.
 62    */
 63  250 protected void itemPut(Object key) {
 64  250 if (!list.contains(key)) {
 65  240 list.add(key);
 66    }
 67    }
 68   
 69    /**
 70    * An item needs to be removed from the cache. The FIFO implementation
 71    * removes the first element in the list (ie, the item that has been in
 72    * the cache for the longest time).
 73    *
 74    * @return The key of whichever item was removed.
 75    */
 76  65 protected Object removeItem() {
 77  65 Iterator it = list.iterator();
 78  65 Object toRemove = it.next();
 79  65 it.remove();
 80   
 81  65 return toRemove;
 82    }
 83   
 84    /**
 85    * Remove specified key since that object has been removed from the cache.
 86    *
 87    * @param key The cache key of the item that was removed.
 88    */
 89  165 protected void itemRemoved(Object key) {
 90  165 list.remove(key);
 91    }
 92    }