You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by Elifarley <el...@gmail.com> on 2007/02/06 20:15:51 UTC

PassiveTimeOutMapDecorator

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


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


Re: [collections] PassiveTimeOutMapDecorator

Posted by Stephen Colebourne <sc...@btopenworld.com>.
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