Revision: 4539
http://openutils.svn.sourceforge.net/openutils/?rev=4539&view=rev
Author: fgiust
Date: 2013-12-10 16:12:05 +0000 (Tue, 10 Dec 2013)
Log Message:
-----------
hash filenames, patch from trunk
Modified Paths:
--------------
magnoliamodules/branches/magnolia44/openutils-mgnlcache/src/main/java/net/sourceforge/openutils/mgnlsimplecache/filesystem/FSCacheManager.java
Modified: magnoliamodules/branches/magnolia44/openutils-mgnlcache/src/main/java/net/sourceforge/openutils/mgnlsimplecache/filesystem/FSCacheManager.java
===================================================================
--- magnoliamodules/branches/magnolia44/openutils-mgnlcache/src/main/java/net/sourceforge/openutils/mgnlsimplecache/filesystem/FSCacheManager.java 2013-12-08 22:06:28 UTC (rev 4538)
+++ magnoliamodules/branches/magnolia44/openutils-mgnlcache/src/main/java/net/sourceforge/openutils/mgnlsimplecache/filesystem/FSCacheManager.java 2013-12-10 16:12:05 UTC (rev 4539)
@@ -1,7 +1,7 @@
/**
*
* Simplecache module for Magnolia CMS (http://www.openmindlab.com/lab/products/simplecache.html)
- * Copyright(C) 2010-2012, Openmind S.r.l. http://www.openmindonline.it
+ * Copyright(C) 2010-2013, Openmind S.r.l. http://www.openmindonline.it
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -29,6 +29,8 @@
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -42,6 +44,7 @@
import net.sourceforge.openutils.mgnlsimplecache.managers.CacheManager;
import net.sourceforge.openutils.mgnlsimplecache.managers.CachedItem;
+import org.apache.commons.codec.binary.Hex;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.IOFileFilter;
import org.apache.commons.io.filefilter.TrueFileFilter;
@@ -82,6 +85,8 @@
private volatile boolean active = true;
+ private MessageDigest hashDigest;
+
/**
* Logger.
*/
@@ -110,6 +115,16 @@
{
log.error("Error registering cache MBean: " + e.getClass().getName() + " " + e.getMessage());
}
+
+ try
+ {
+ hashDigest = MessageDigest.getInstance("MD5");
+ }
+ catch (NoSuchAlgorithmException e)
+ {
+ // should never happen
+ throw new RuntimeException(e);
+ }
}
/**
@@ -310,7 +325,19 @@
key += "-qs-" + request.getQueryString().hashCode();
}
}
- return key;
+
+ // build hash (avoid long filenames or invalid chars)
+ key = String.valueOf(Hex.encodeHex(hashDigest.digest(key.getBytes())));
+
+ // build directories with the first 4 chars
+ StringBuffer path = new StringBuffer();
+ for (int i = 0; i < 4; i++)
+ {
+ path.append(key.substring(i, i + 1)).append("/");
+ }
+ path.append(key);
+
+ return path.toString();
}
/**
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|