1 6 package com.nightlabs.ipanema.jdo; 7 8 import java.util.HashMap ; 9 import java.util.Map ; 10 11 import com.nightlabs.jdo.ObjectID; 12 13 18 public abstract class JDOObjectCache { 19 20 protected abstract Object 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 jdoObject; 28 public long fetchDT = System.currentTimeMillis(); 29 } 30 31 35 private Map jdoObjectCarriers = new HashMap (); 36 37 public synchronized Object 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 |