KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > ipanema > jdo > JDOObjectCache


1 /*
2  * Created on May 27, 2005
3  * by alex
4  *
5  */

6 package com.nightlabs.ipanema.jdo;
7
8 import java.util.HashMap JavaDoc;
9 import java.util.Map JavaDoc;
10
11 import com.nightlabs.jdo.ObjectID;
12
13 /**
14  * @author Alexander Bieber <alex[AT]nightlabs[DOT]de>
15  *
16  * @deprecated Extend {@link com.nightlabs.ipanema.jdo.JDOObjectProvider} instead!
17  */

18 public abstract class JDOObjectCache {
19     
20     protected abstract Object JavaDoc fetchJDOObject(ObjectID jdoObjectID);
21
22     public static final long EXPIRE_MSEC = 1000 * 60 * 15;
23
24     protected static class JDOObjectCarrier
25     {
26         public ObjectID jdoObjectID;
27         public Object JavaDoc jdoObject;
28         public long fetchDT = System.currentTimeMillis();
29     }
30
31     /**
32      * key: ProductTypeID productTypeID<br/>
33      * value: ProductType productType
34      */

35     private Map JavaDoc jdoObjectCarriers = new HashMap JavaDoc();
36
37     public synchronized Object JavaDoc getJDOObject(ObjectID jdoObjectID)
38     {
39         JDOObjectCarrier joc = (JDOObjectCarrier) jdoObjectCarriers.get(jdoObjectID);
40
41         if (joc == null || System.currentTimeMillis() - joc.fetchDT > EXPIRE_MSEC) {
42             joc = new JDOObjectCarrier();
43             joc.jdoObjectID = jdoObjectID;
44             joc.jdoObject = fetchJDOObject(jdoObjectID);
45             jdoObjectCarriers.put(jdoObjectID, joc);
46         }
47
48         return joc.jdoObject;
49     }
50 }
51
Popular Tags