Author: agilliland
Date: Fri Mar 3 13:44:03 2006
New Revision: 382938
URL: http://svn.apache.org/viewcvs?rev=382938&view=rev
Log:
changing last expired date to use a real Cache rather than just a hashtable.
in truth, i think a better long term solution will be to add a lastModified
field to the WebsiteData object and just use that.
Modified:
incubator/roller/trunk/src/org/roller/presentation/cache/CacheManager.java
Modified:
incubator/roller/trunk/src/org/roller/presentation/cache/CacheManager.java
URL:
http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/presentation/cache/CacheManager.java?rev=382938&r1=382937&r2=382938&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/presentation/cache/CacheManager.java
(original)
+++ incubator/roller/trunk/src/org/roller/presentation/cache/CacheManager.java
Fri Mar 3 13:44:03 2006
@@ -55,7 +55,7 @@
private static CacheFactory mCacheFactory = null;
// maintain a cache of the last expired time for each weblog
- private static Hashtable lastExpiredCache = null;
+ private static Cache lastExpiredCache = null;
// a list of all cache handlers who have obtained a cache
private static Set cacheHandlers = new HashSet();
@@ -91,8 +91,18 @@
mLogger.info("Cache Manager Initialized.");
mLogger.info("Default cache factory =
"+mCacheFactory.getClass().getName());
+
// setup our cache for expiration dates
- lastExpiredCache = new Hashtable();
+ // TODO: this really should not be something that is cached here
+ // a better approach would be to add a weblog.lastChanged field
+ // and track this along with the WebsiteData object
+ String lastExpCacheFactory =
RollerConfig.getProperty("cache.lastExpired.factory");
+ Map lastExpProps = new HashMap();
+ if(lastExpCacheFactory != null) {
+ lastExpProps.put("factory", lastExpCacheFactory);
+ }
+ lastExpiredCache = CacheManager.constructCache(null, lastExpProps);
+
// add custom handlers
String customHandlers =
RollerConfig.getProperty("cache.customHandlers");
@@ -199,7 +209,9 @@
}
// register the handler for this new cache
- cacheHandlers.add(handler);
+ if(handler != null) {
+ cacheHandlers.add(handler);
+ }
return cache;
}
@@ -220,7 +232,9 @@
mLogger.debug("Registering handler "+handler);
- cacheHandlers.add(handler);
+ if(handler != null) {
+ cacheHandlers.add(handler);
+ }
}
@@ -228,7 +242,7 @@
mLogger.debug("invalidating entry = "+entry.getAnchor());
- lastExpiredCache.put(entry.getWebsite().getHandle(), new Date());
+ setLastExpiredDate(entry.getWebsite().getHandle());
Iterator handlers = cacheHandlers.iterator();
while(handlers.hasNext()) {
@@ -241,7 +255,7 @@
mLogger.debug("invalidating website = "+website.getHandle());
- lastExpiredCache.put(website.getHandle(), new Date());
+ setLastExpiredDate(website.getHandle());
Iterator handlers = cacheHandlers.iterator();
while(handlers.hasNext()) {
@@ -254,7 +268,7 @@
mLogger.debug("invalidating bookmark = "+bookmark.getId());
- lastExpiredCache.put(bookmark.getWebsite().getHandle(), new Date());
+ setLastExpiredDate(bookmark.getWebsite().getHandle());
Iterator handlers = cacheHandlers.iterator();
while(handlers.hasNext()) {
@@ -267,7 +281,7 @@
mLogger.debug("invalidating folder = "+folder.getId());
- lastExpiredCache.put(folder.getWebsite().getHandle(), new Date());
+ setLastExpiredDate(folder.getWebsite().getHandle());
Iterator handlers = cacheHandlers.iterator();
while(handlers.hasNext()) {
@@ -280,7 +294,7 @@
mLogger.debug("invalidating comment = "+comment.getId());
-
lastExpiredCache.put(comment.getWeblogEntry().getWebsite().getHandle(), new
Date());
+ setLastExpiredDate(comment.getWeblogEntry().getWebsite().getHandle());
Iterator handlers = cacheHandlers.iterator();
while(handlers.hasNext()) {
@@ -319,7 +333,7 @@
mLogger.debug("invalidating category = "+category.getId());
- lastExpiredCache.put(category.getWebsite().getHandle(), new Date());
+ setLastExpiredDate(category.getWebsite().getHandle());
Iterator handlers = cacheHandlers.iterator();
while(handlers.hasNext()) {
@@ -332,7 +346,7 @@
mLogger.debug("invalidating template = "+template.getId());
- lastExpiredCache.put(template.getWebsite().getHandle(), new Date());
+ setLastExpiredDate(template.getWebsite().getHandle());
Iterator handlers = cacheHandlers.iterator();
while(handlers.hasNext()) {
@@ -347,12 +361,7 @@
public static void clear() {
// update all expired dates
- Iterator it = lastExpiredCache.keySet().iterator();
- String key = null;
- while(it.hasNext()) {
- key = (String) it.next();
- lastExpiredCache.put(key, new Date());
- }
+ lastExpiredCache.clear();
// loop through all handlers and trigger a clear
CacheHandler handler = null;
@@ -371,12 +380,7 @@
public static void clear(String handlerClass) {
// update all expired dates
- Iterator it = lastExpiredCache.keySet().iterator();
- String key = null;
- while(it.hasNext()) {
- key = (String) it.next();
- lastExpiredCache.put(key, new Date());
- }
+ lastExpiredCache.clear();
// loop through all handlers to find the one we want
CacheHandler handler = null;
@@ -388,6 +392,11 @@
handler.clear();
}
}
+ }
+
+
+ public static void setLastExpiredDate(String weblogHandle) {
+ lastExpiredCache.put("lastExpired:"+weblogHandle, new Date());
}