|
|||||||||||||||||||
Source file | Conditionals | Statements | Methods | TOTAL | |||||||||||||||
ExpiresRefreshPolicy.java | 0% | 0% | 0% | 0% |
|
1 | /* | |
2 | * Copyright (c) 2002-2003 by OpenSymphony | |
3 | * All rights reserved. | |
4 | */ | |
5 | package com.opensymphony.oscache.web.filter; | |
6 | ||
7 | import com.opensymphony.oscache.base.CacheEntry; | |
8 | import com.opensymphony.oscache.base.EntryRefreshPolicy; | |
9 | import com.opensymphony.oscache.base.NeedsRefreshException; | |
10 | ||
11 | /** | |
12 | * Checks if a cache filter entry has expired. | |
13 | * This is useful when expires header are used in the response. | |
14 | * | |
15 | * @version $Revision: 1.1 $ | |
16 | * @author <a href="mailto:ltorunski@t-online.de">Lars Torunski</a> | |
17 | */ | |
18 | public class ExpiresRefreshPolicy implements EntryRefreshPolicy { | |
19 | ||
20 | /** the refresh period (in milliseconds) of a certain cache filter*/ | |
21 | private long refreshPeriod; | |
22 | ||
23 | /** | |
24 | * Constructor ExpiresRefreshPolicy. | |
25 | * | |
26 | * @param refreshPeriod the refresh period in seconds | |
27 | */ | |
28 | 0 | public ExpiresRefreshPolicy(int refreshPeriod) { |
29 | 0 | this.refreshPeriod = refreshPeriod * 1000L; |
30 | } | |
31 | ||
32 | /** | |
33 | * Indicates whether the supplied <code>CacheEntry</code> needs to be refreshed. | |
34 | * This will be called when retrieving an entry from the cache - if this method | |
35 | * returns <code>true</code> then a <code>NeedsRefreshException</code> will be | |
36 | * thrown. | |
37 | * | |
38 | * @param entry The cache entry which is ignored. | |
39 | * @return <code>true</code> if the content needs refreshing, <code>false</code> otherwise. | |
40 | * | |
41 | * @see NeedsRefreshException | |
42 | * @see CacheEntry | |
43 | */ | |
44 | 0 | public boolean needsRefresh(CacheEntry entry) { |
45 | ||
46 | 0 | long currentTimeMillis = System.currentTimeMillis(); |
47 | ||
48 | 0 | if ((refreshPeriod >= 0) && (currentTimeMillis >= (entry.getLastUpdate() + refreshPeriod))) { |
49 | 0 | return true; |
50 | 0 | } else if (entry.getContent() instanceof ResponseContent) { |
51 | 0 | ResponseContent responseContent = (ResponseContent) entry.getContent(); |
52 | 0 | return currentTimeMillis >= responseContent.getExpires(); |
53 | } else { | |
54 | 0 | return false; |
55 | } | |
56 | ||
57 | } | |
58 | ||
59 | } |
|