aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKoushik Dutta <koushd@gmail.com>2015-03-16 16:12:39 -0700
committerKoushik Dutta <koushd@gmail.com>2015-03-16 16:12:39 -0700
commitaabefa293391d35e112c6f14f7a53ef5e2259956 (patch)
tree566613d25422deda2d049bf9e35c8ce6c4467fa9
parent4b12f4bf5959540bd244c70cf650d698e05fd556 (diff)
downloadAndroidAsync-aabefa293391d35e112c6f14f7a53ef5e2259956.tar.gz
AndroidAsync-aabefa293391d35e112c6f14f7a53ef5e2259956.tar.bz2
AndroidAsync-aabefa293391d35e112c6f14f7a53ef5e2259956.zip
Revert "fix issue 461"
This reverts commit 98a9d50ec4e466ee8d84be47e0a7bab6434e7d0f.
-rw-r--r--AndroidAsync/src/com/koushikdutta/async/http/cache/ResponseCacheMiddleware.java4
-rw-r--r--AndroidAsync/src/com/koushikdutta/async/util/FileCache.java49
2 files changed, 17 insertions, 36 deletions
diff --git a/AndroidAsync/src/com/koushikdutta/async/http/cache/ResponseCacheMiddleware.java b/AndroidAsync/src/com/koushikdutta/async/http/cache/ResponseCacheMiddleware.java
index ee2a108..614ba40 100644
--- a/AndroidAsync/src/com/koushikdutta/async/http/cache/ResponseCacheMiddleware.java
+++ b/AndroidAsync/src/com/koushikdutta/async/http/cache/ResponseCacheMiddleware.java
@@ -104,7 +104,7 @@ public class ResponseCacheMiddleware extends SimpleMiddleware {
return null;
}
- String key = cache.toKeyString(data.request.getUri());
+ String key = FileCache.toKeyString(data.request.getUri());
FileInputStream[] snapshot = null;
long contentLength;
Entry entry;
@@ -267,7 +267,7 @@ public class ResponseCacheMiddleware extends SimpleMiddleware {
return;
}
- String key = cache.toKeyString(data.request.getUri());
+ String key = FileCache.toKeyString(data.request.getUri());
RawHeaders varyHeaders = requestHeaders.getHeaders().getAll(networkResponse.getVaryFields());
Entry entry = new Entry(data.request.getUri(), varyHeaders, data.request, networkResponse.getHeaders());
BodyCacher cacher = new BodyCacher();
diff --git a/AndroidAsync/src/com/koushikdutta/async/util/FileCache.java b/AndroidAsync/src/com/koushikdutta/async/util/FileCache.java
index 548924f..d117108 100644
--- a/AndroidAsync/src/com/koushikdutta/async/util/FileCache.java
+++ b/AndroidAsync/src/com/koushikdutta/async/util/FileCache.java
@@ -19,9 +19,6 @@ import java.util.Set;
* Created by koush on 4/12/14.
*/
public class FileCache {
-
- private MessageDigest messageDigest;
-
class CacheEntry {
final long size;
public CacheEntry(File file) {
@@ -65,16 +62,23 @@ public class FileCache {
return null;
}
- public String toKeyString(Object... parts) {
- synchronized (FileCache.class) { // I spreaded synchronized block to whole method to assure
- // that only one thread deals with our copy of MessageDigest
- // instance
- for (Object part : parts) {
- messageDigest.update(part.toString().getBytes());
+ public static String toKeyString(Object... parts) {
+ MessageDigest messageDigest;
+ synchronized (FileCache.class) {
+ try {
+ messageDigest = MessageDigest.getInstance(hashAlgorithm);
+ } catch (NoSuchAlgorithmException e) {
+ messageDigest = findAlternativeMessageDigest();
+ if (null == messageDigest)
+ throw new RuntimeException(e);
}
- byte[] md5bytes = messageDigest.digest();
- return new BigInteger(1, md5bytes).toString(16);
}
+
+ for (Object part : parts) {
+ messageDigest.update(part.toString().getBytes());
+ }
+ byte[] md5bytes = messageDigest.digest();
+ return new BigInteger(1, md5bytes).toString(16);
}
boolean loadAsync;
@@ -271,33 +275,10 @@ public class FileCache {
this.loadAsync = loadAsync;
cache = new InternalCache();
- try {
- messageDigest = (MessageDigest) MessageDigest.getInstance(hashAlgorithm);
- cloneMessageDigest(messageDigest);
- } catch (NoSuchAlgorithmException e1) {
- messageDigest = findAlternativeMessageDigest();
- if (null == messageDigest)
- throw new RuntimeException(e1);
- cloneMessageDigest(messageDigest);
- }
-
directory.mkdirs();
doLoad();
}
- // taken from https://github.com/candrews/HttpResponseCache/commit/a93c92d1d8b87778ac7bb2fa2fe2759e7ca06219
- private void cloneMessageDigest(MessageDigest messageDigest){
- try {
- // clone the messageDigest instance as a workaround for
- // java.security.MessageDigest.getInstance(String) not being thread safe in Android
- // see https://code.google.com/p/android/issues/detail?id=37937
- messageDigest = (MessageDigest) messageDigest.clone();
- } catch (CloneNotSupportedException e) {
- // ignore the exception and use the original messageDigest.
- // hopefully whatever platform we're on doesn't have the bug that requires the cloning workaround
- }
- }
-
public long size() {
return cache.size();
}