aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Doan <andy.doan@linaro.org>2011-09-26 16:23:00 -0500
committerAndy Doan <doanac@gmail.com>2011-09-26 16:24:39 -0500
commitd4d97c9b7ed328c4aa7cdaa0b2fdca43769c8a80 (patch)
treeba9b275b3ba70844941a69cd376e95c4f81e02b0
parent0a0936fd7e2416b6629c0415be5ff4a361d9c69f (diff)
downloadLinaroConnect-d4d97c9b7ed328c4aa7cdaa0b2fdca43769c8a80.tar.gz
fix bug with null drawables
For some reason twitpic seems to give us bad images from time to time. This adds the ability to reset the input stream and try again
-rw-r--r--src/org/linaro/connect/JSONImageItem.java5
-rw-r--r--src/org/linaro/connect/LRUCache.java18
2 files changed, 18 insertions, 5 deletions
diff --git a/src/org/linaro/connect/JSONImageItem.java b/src/org/linaro/connect/JSONImageItem.java
index 0208640..77ab6fe 100644
--- a/src/org/linaro/connect/JSONImageItem.java
+++ b/src/org/linaro/connect/JSONImageItem.java
@@ -32,6 +32,11 @@ public class JSONImageItem extends JSONItem{
try {
InputStream is = LinaroConnect.getUrlInputStream(url, true);
d = Drawable.createFromStream(is, null);
+ if (d == null) {
+ Log.w(LinaroConnect.TAG, "got null drawable for " + url + ". trying again");
+ is.reset();
+ d = Drawable.createFromStream(is, null);
+ }
is.close();
} catch (Exception e) {
Log.e(LinaroConnect.TAG, "Error dowloading: " + url, e);
diff --git a/src/org/linaro/connect/LRUCache.java b/src/org/linaro/connect/LRUCache.java
index 3bfe75e..0623a7c 100644
--- a/src/org/linaro/connect/LRUCache.java
+++ b/src/org/linaro/connect/LRUCache.java
@@ -70,11 +70,7 @@ class LRUCache extends LinkedHashMap<String, File> {
throws IOException {
mUrl = url;
mCacheFile = cache;
-
- URLConnection c = new URL(url).openConnection();
-
- mIn = c.getInputStream();
- mOut = new FileOutputStream(cache);
+ reset();
}
@Override
@@ -96,6 +92,18 @@ class LRUCache extends LinkedHashMap<String, File> {
}
@Override
+ public synchronized void reset() throws IOException {
+ if( mIn != null )
+ mIn.close();
+ if( mOut != null )
+ mOut.close();
+
+ URLConnection c = new URL(mUrl).openConnection();
+ mIn = c.getInputStream();
+ mOut = new FileOutputStream(mCacheFile);
+ }
+
+ @Override
public void close() throws IOException {
mIn.close();
mOut.close();