In my experience, you wouldn't want the map to return null if the time has expired. You would want it to return a "refreshed" value. So, you would want to have the user provide a RefreshProvider (or whatever you want to call it):
public interface RefreshProvider { public Object getValueForKey( Object key ); } That way, if the value is expired, it could check with the provider to get a fresh copy of the value. On 2/7/07, Stephen Colebourne <[EMAIL PROTECTED]> wrote:
This sounds a little too specific for me. I suspect that most people that want an expiring map will want it to be active not passive. Stephen Elifarley wrote: > I've developed a Map decorator which passively evicts expired entries once their > expiry time has been reached. > > When putting an item in the map, the decorator calls the 'expiryTime' method, > passing the key and the value as parameters, and uses the returned value as the > expiry time for that entry. > > The default implementation of 'expiryTime' just assigns a time 60 seconds in the > future for every entry, but subclasses can provide their own policy. > > When getting the value for an entry, its expiry time is checked, and if its > greater than the current time, the value is returned. Otherwise, the entry is > removed from the decorated map, and null is returned. > Doing so, there's no need to have a separate, active thread (hence the name > 'passive') to check expiry times - the check is performed on demand. > > I've developed it for my own use, but maybe this could be useful to others too. > > Any thoughts ? > > Regards, > Elifarley > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]