This patch, with some additional fixes and enhancements, has been posted
on turbine-dev as "[PATCH] Fixes and enhancements to Caching services"
Paul Spencer
Paul Spencer wrote:
> Below is a patch that allows the Expires field on the CachedObject to be
> set. I also moved the "created" calculation in
> RefreshableCachedObject.refresh() before the r.refresh(). This allows
> the r.refresh() to change Expires (expiration time) without adversely
> affecting when the object becomes stale. I change the calculation for
> "created" to "System.currentTimeMillis()" since the "created +
> getExpires()" will slip up to cacheCheckFrequency Millis per cycle.
>
> Paul Spencer
>
> Index: CachedObject.java
> ===================================================================
> RCS file:
>
>/home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/services/cache/CachedObject.java,v
>
>
> retrieving revision 1.1.1.1
> diff -c -r1.1.1.1 CachedObject.java
> *** CachedObject.java 16 Aug 2001 05:08:49 -0000 1.1.1.1
> --- CachedObject.java 4 Jan 2002 05:22:40 -0000
> ***************
> *** 156,161 ****
> --- 156,179 ----
> }
>
> /**
> + * Set the expiration interval for the object.
> + *
> + * @param expires Expiration interval in millis ( 1 second = 1000
> millis)
> + */
> + public void setExpires( long expires ) {
> + if ( expires == DEFAULT ) {
> + this.expires = defaultage;
> + } else {
> + this.expires = expires;
> + }
> + if(expires == FOREVER){
> + setStale(false);
> + } else {
> + setStale( (System.currentTimeMillis() - created) > expires );
> + }
> + }
> +
> + /**
> * Set the stale status for the object.
> *
> * @param stale Whether the object is stale or not.
> Index: RefreshableCachedObject.java
> ===================================================================
> RCS file:
>
>/home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/services/cache/RefreshableCachedObject.java,v
>
>
> retrieving revision 1.1.1.1
> diff -c -r1.1.1.1 RefreshableCachedObject.java
> *** RefreshableCachedObject.java 16 Aug 2001 05:08:50 -0000 1.1.1.1
> --- RefreshableCachedObject.java 4 Jan 2002 05:22:45 -0000
> ***************
> *** 147,154 ****
> Refreshable r = (Refreshable)getContents();
> synchronized (this)
> {
> r.refresh();
> - created = created + getExpires();
> }
> }
> }
> --- 147,154 ----
> Refreshable r = (Refreshable)getContents();
> synchronized (this)
> {
> + created = System.currentTimeMillis();
> r.refresh();
> }
> }
> }
>
>
> Paul Spencer wrote:
>
>> I am using the RefreshableCachedObject to store a web page generated
>> by a remote server. During refresh(), I will re-retrieve the page and
>> update the cache. In addition to the page, I need to use the lifetime
>> returned by the server to set the next cache refresh. To do this, I
>> need to change the value of CachedObject.expires to reflect the new
>> expiration interval, i.e. from 600000( 10 minutes) to 300000( 5
>> minutes). The field is private, this not accessible from my class.
>>
>> The easiest way would be to add setExpire() to RefrshableCachedObject
>> or CachedObject. I can supply a patch.
>>
>> Is their a better way?
>>
>> Paul Spencer
>>
>>
>> --
>> To unsubscribe, e-mail:
>> <mailto:[EMAIL PROTECTED]>
>> For additional commands, e-mail:
>> <mailto:[EMAIL PROTECTED]>
>>
>>
>
>
>
> --
> To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
>
>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>