KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > caucho > util > TimedItem


1 /*
2  * Copyright (c) 1998-2006 Caucho Technology -- all rights reserved
3  *
4  * This file is part of Resin(R) Open Source
5  *
6  * Each copy or derived work must preserve the copyright notice and this
7  * notice unmodified.
8  *
9  * Resin Open Source is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * Resin Open Source is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
17  * of NON-INFRINGEMENT. See the GNU General Public License for more
18  * details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with Resin Open Source; if not, write to the
22  * Free SoftwareFoundation, Inc.
23  * 59 Temple Place, Suite 330
24  * Boston, MA 02111-1307 USA
25  *
26  * @author Scott Ferguson
27  */

28
29 package com.caucho.util;
30
31 /**
32  * A single item timed cache. The item will remain valid until it expires.
33  * TimedItem can simplify database caching.
34  *
35  * <pre><code>
36  * TimedItem currentStories = new TimedItem(60000);
37  *
38  * public ArrayList getCurrentStories()
39  * {
40  * ArrayList storyList = (ArrayList) currentStories.get();
41  *
42  * if (storyList == null) {
43  * storyList = DB.queryStoryDatabase();
44  * currentStories.put(storyList);
45  * }
46  *
47  * return storyList;
48  * }
49  * </code></pre>
50  */

51 public class TimedItem {
52   private long expireInterval;
53
54   private long createTime;
55   private Object JavaDoc value;
56
57   /**
58    * Create a new timed item with a specified update time
59    *
60    * @param expireInterval the time in milliseconds the item remains valid.
61    */

62   public TimedItem(long expireInterval)
63   {
64     this.expireInterval = expireInterval;
65   }
66
67   /**
68    * Returns the expire time for this TimedItem.
69    */

70   public long getExpireInterval()
71   {
72     return expireInterval;
73   }
74
75   /**
76    * Sets the expire time for this timedItem.
77    */

78   public void setExpireInterval(long expireInterval)
79   {
80     this.expireInterval = expireInterval;
81   }
82
83   /**
84    * Sets the value.
85    */

86   public void put(Object JavaDoc value)
87   {
88     createTime = Alarm.getCurrentTime();
89     this.value = value;
90   }
91
92   /**
93    * Gets the cached value, returning null if expires.
94    */

95   public Object JavaDoc get()
96   {
97     if (Alarm.getCurrentTime() < createTime + expireInterval)
98       return value;
99     else {
100       Object JavaDoc v = value;
101       value = null;
102
103       if (v instanceof CacheListener)
104         ((CacheListener) v).removeEvent();
105
106       return null;
107     }
108   }
109 }
110
111
112
Popular Tags