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]>

Reply via email to