1 /*
2 * Copyright (c) 2002-2006 by OpenSymphony
3 * All rights reserved.
4 */
5 package com.opensymphony.oscache.base.algorithm;
6
7 import org.apache.commons.logging.Log;
8 import org.apache.commons.logging.LogFactory;
9
10
11 /**
12 * A simple unlimited cache that has no upper bound to the number of
13 * cache entries it can contain.
14 *
15 * @version $Revision: 427 $
16 * @author <a href="mailto:fbeauregard@pyxis-tech.com">Francois Beauregard</a>
17 * @author <a href="mailto:abergevin@pyxis-tech.com">Alain Bergevin</a>
18 */
19 public final class UnlimitedCache extends AbstractConcurrentReadCache {
20
21 private static final long serialVersionUID = 7615611393249532285L;
22
23 private final Log log = LogFactory.getLog(this.getClass());
24
25 /**
26 * Creates an unlimited cache by calling the super class's constructor
27 * with an <code>UNLIMITED</code> maximum number of entries.
28 */
29 public UnlimitedCache() {
30 super();
31 maxEntries = UNLIMITED;
32 }
33
34 /**
35 * Overrides the <code>setMaxEntries</code> with an empty implementation.
36 * This property cannot be modified and is ignored for an
37 * <code>UnlimitedCache</code>.
38 */
39 public void setMaxEntries(int maxEntries) {
40 log.warn("Cache max entries can't be set in " + this.getClass().getName() + ", ignoring value " + maxEntries + ".");
41 }
42
43 /**
44 * Implements <code>itemRetrieved</code> with an empty implementation.
45 * The unlimited cache doesn't care that an item was retrieved.
46 */
47 protected void itemRetrieved(Object key) {
48 }
49
50 /**
51 * Implements <code>itemPut</code> with an empty implementation.
52 * The unlimited cache doesn't care that an item was put in the cache.
53 */
54 protected void itemPut(Object key) {
55 }
56
57 /**
58 * This method just returns <code>null</code> since items should
59 * never end up being removed from an unlimited cache!
60 */
61 protected Object removeItem() {
62 return null;
63 }
64
65 /**
66 * An empty implementation. The unlimited cache doesn't care that an
67 * item was removed.
68 */
69 protected void itemRemoved(Object key) {
70 }
71 }