Clover coverage report - Coverage timestamp: Sa Jul 7 2007 09:11:40 CEST FRAMES NO FRAMES |
file stats: | LOC: | 92 |  | Methods: | 6
| NCLOC: | 29 |  | Classes: | 1
Source file | Conditionals | Statements | Methods | TOTAL
FIFOCache.java | 100% | 80% | 83,3% | 83,3% |

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 |  | }