Revision: 4475
http://openutils.svn.sourceforge.net/openutils/?rev=4475&view=rev
Author: fgiust
Date: 2013-12-08 20:15:30 +0000 (Sun, 08 Dec 2013)
Log Message:
-----------
hash filenames to avoid long files or invalid chars
Modified Paths:
--------------
magnoliamodules/trunk/openutils-mgnlcache/src/main/java/net/sourceforge/openutils/mgnlsimplecache/filesystem/FSCacheManager.java
Modified: magnoliamodules/trunk/openutils-mgnlcache/src/main/java/net/sourceforge/openutils/mgnlsimplecache/filesystem/FSCacheManager.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnlcache/src/main/java/net/sourceforge/openutils/mgnlsimplecache/filesystem/FSCacheManager.java 2013-12-08 19:55:40 UTC (rev 4474)
+++ magnoliamodules/trunk/openutils-mgnlcache/src/main/java/net/sourceforge/openutils/mgnlsimplecache/filesystem/FSCacheManager.java 2013-12-08 20:15:30 UTC (rev 4475)
@@ -22,6 +22,7 @@
import info.magnolia.cms.core.Path;
import info.magnolia.cms.util.MBeanUtil;
import info.magnolia.cms.util.ObservationUtil;
+import info.magnolia.module.files.MD5CheckingFileExtractor;
import info.magnolia.repository.RepositoryConstants;
import info.magnolia.voting.Voter;
@@ -29,6 +30,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 +45,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 +86,8 @@
private volatile boolean active = true;
+ private MessageDigest hashDigest;
+
/**
* Logger.
*/
@@ -110,6 +116,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 +326,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.
|