You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by Stephen Colebourne <sc...@btopenworld.com> on 2007/02/07 23:33:29 UTC

Re: [collections] PassiveTimeOutMapDecorator

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: commons-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-dev-help@jakarta.apache.org
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Re: [collections] PassiveTimeOutMapDecorator

Posted by James Carman <ja...@carmanconsulting.com>.
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 <sc...@btopenworld.com> 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: commons-dev-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: commons-dev-help@jakarta.apache.org
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-dev-help@jakarta.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org