KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > shiftone > cache > policy > fifo > RingFifoCache


1 package org.shiftone.cache.policy.fifo;
2
3
4
5 import org.shiftone.cache.Cache;
6
7
8 /**
9  * @version $Revision: 1.2 $
10  * @author <a HREF="mailto:jeff@shiftone.org">Jeff Drost</a>
11  */

12 public class RingFifoCache implements Cache
13 {
14
15     private final int maxSize;
16     private final int[] indexes;
17     private final Object JavaDoc[] keys;
18     private final Object JavaDoc[] values;
19     private int nextIndexIndex = 0;
20
21     public RingFifoCache(int maxSize)
22     {
23
24         this.maxSize = maxSize;
25         indexes = new int[maxSize];
26         keys = new Object JavaDoc[maxSize];
27         values = new Object JavaDoc[maxSize];
28     }
29
30
31     private int getIndex(Object JavaDoc key)
32     {
33         return (key.hashCode() % maxSize);
34     }
35
36
37     public void addObject(Object JavaDoc userKey, Object JavaDoc cacheObject)
38     {
39
40         int index = getIndex(userKey);
41
42         indexes[nextIndexIndex] = index;
43         nextIndexIndex = (nextIndexIndex + 1) % maxSize;
44         keys[index] = userKey;
45         values[index] = cacheObject;
46     }
47
48
49     public Object JavaDoc getObject(Object JavaDoc key)
50     {
51
52         int index = getIndex(key);
53         Object JavaDoc k = keys[index];
54
55         if ((k != null) && (k.equals(key)))
56         {
57             return values[index];
58         }
59
60         return null;
61     }
62
63
64     public int size()
65     {
66         return 0;
67     }
68
69
70     public void remove(Object JavaDoc key) {}
71
72
73     public void clear() {}
74 }
75
Popular Tags