Java 类com.facebook.internal.FileLruCache 实例源码

项目:kaorisan    文件:ImageResponseCache.java   
static InputStream interceptAndCacheImageStream(Context context, HttpURLConnection connection) throws IOException {
    InputStream stream = null;
    if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
        URL url = connection.getURL();
        stream = connection.getInputStream(); // Default stream in case caching fails
        if (isCDNURL(url)) {
            try {
                FileLruCache cache = getCache(context);

                // Wrap stream with a caching stream
                stream = cache.interceptAndPut(
                        url.toString(),
                        new BufferedHttpInputStream(stream, connection));
            } catch (IOException e) {
                // Caching is best effort
            }
        }
    }
    return stream;
}
项目:kaorisan    文件:UrlRedirectCache.java   
static void cacheUrlRedirect(Context context, URL fromUrl, URL toUrl) {
    if (fromUrl == null || toUrl == null) {
        return;
    }

    OutputStream redirectStream = null;
    try {
        FileLruCache cache = getCache(context);
        redirectStream = cache.openPutStream(fromUrl.toString(), REDIRECT_CONTENT_TAG);
        redirectStream.write(toUrl.toString().getBytes());
    } catch (IOException e) {
        // Caching is best effort
    } finally {
        Utility.closeQuietly(redirectStream);
    }
}
项目:p2psafety    文件:ImageResponseCache.java   
static InputStream interceptAndCacheImageStream(Context context, HttpURLConnection connection) throws IOException {
    InputStream stream = null;
    if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
        URL url = connection.getURL();
        stream = connection.getInputStream(); // Default stream in case caching fails
        if (isCDNURL(url)) {
            try {
                FileLruCache cache = getCache(context);

                // Wrap stream with a caching stream
                stream = cache.interceptAndPut(
                        url.toString(),
                        new BufferedHttpInputStream(stream, connection));
            } catch (IOException e) {
                // Caching is best effort
            }
        }
    }
    return stream;
}
项目:p2psafety    文件:UrlRedirectCache.java   
static void cacheUrlRedirect(Context context, URL fromUrl, URL toUrl) {
    if (fromUrl == null || toUrl == null) {
        return;
    }

    OutputStream redirectStream = null;
    try {
        FileLruCache cache = getCache(context);
        redirectStream = cache.openPutStream(fromUrl.toString(), REDIRECT_CONTENT_TAG);
        redirectStream.write(toUrl.toString().getBytes());
    } catch (IOException e) {
        // Caching is best effort
    } finally {
        Utility.closeQuietly(redirectStream);
    }
}
项目:ClassParticipation2    文件:ImageResponseCache.java   
static InputStream interceptAndCacheImageStream(Context context, HttpURLConnection connection) throws IOException {
    InputStream stream = null;
    if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
        URL url = connection.getURL();
        stream = connection.getInputStream(); // Default stream in case caching fails
        if (isCDNURL(url)) {
            try {
                FileLruCache cache = getCache(context);

                // Wrap stream with a caching stream
                stream = cache.interceptAndPut(
                        url.toString(),
                        new BufferedHttpInputStream(stream, connection));
            } catch (IOException e) {
                // Caching is best effort
            }
        }
    }
    return stream;
}
项目:ClassParticipation2    文件:UrlRedirectCache.java   
static void cacheUrlRedirect(Context context, URL fromUrl, URL toUrl) {
    if (fromUrl == null || toUrl == null) {
        return;
    }

    OutputStream redirectStream = null;
    try {
        FileLruCache cache = getCache(context);
        redirectStream = cache.openPutStream(fromUrl.toString(), REDIRECT_CONTENT_TAG);
        redirectStream.write(toUrl.toString().getBytes());
    } catch (IOException e) {
        // Caching is best effort
    } finally {
        Utility.closeQuietly(redirectStream);
    }
}
项目:LostAndFound    文件:TestUtils.java   
public static void clearFileLruCache(final FileLruCache cache) throws InterruptedException {
    // since the cache clearing happens in a separate thread, we need to wait until
    // the clear is complete before we can check for the existence of the old files
    synchronized (cache) {
        cache.clearCache();
        Settings.getExecutor().execute(new Runnable() {
            @Override
            public void run() {
                synchronized (cache) {
                    cache.notifyAll();
                }
            }
        });
        cache.wait(CACHE_CLEAR_TIMEOUT);
    }
    // sleep a little more just to make sure all the files are deleted.
    Thread.sleep(CACHE_CLEAR_TIMEOUT);
}
项目:FacebookImageShareIntent    文件:TestUtils.java   
public static void clearFileLruCache(final FileLruCache cache) throws InterruptedException {
    // since the cache clearing happens in a separate thread, we need to wait until
    // the clear is complete before we can check for the existence of the old files
    synchronized (cache) {
        cache.clearCache();
        Settings.getExecutor().execute(new Runnable() {
            @Override
            public void run() {
                synchronized (cache) {
                    cache.notifyAll();
                }
            }
        });
        cache.wait(CACHE_CLEAR_TIMEOUT);
    }
    // sleep a little more just to make sure all the files are deleted.
    Thread.sleep(CACHE_CLEAR_TIMEOUT);
}
项目:aws-mobile-self-paced-labs-samples    文件:ImageResponseCache.java   
static InputStream interceptAndCacheImageStream(Context context, HttpURLConnection connection) throws IOException {
    InputStream stream = null;
    if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
        URL url = connection.getURL();
        stream = connection.getInputStream(); // Default stream in case caching fails
        if (isCDNURL(url)) {
            try {
                FileLruCache cache = getCache(context);

                // Wrap stream with a caching stream
                stream = cache.interceptAndPut(
                        url.toString(),
                        new BufferedHttpInputStream(stream, connection));
            } catch (IOException e) {
                // Caching is best effort
            }
        }
    }
    return stream;
}
项目:aws-mobile-self-paced-labs-samples    文件:UrlRedirectCache.java   
static void cacheUrlRedirect(Context context, URL fromUrl, URL toUrl) {
    if (fromUrl == null || toUrl == null) {
        return;
    }

    OutputStream redirectStream = null;
    try {
        FileLruCache cache = getCache(context);
        redirectStream = cache.openPutStream(fromUrl.toString(), REDIRECT_CONTENT_TAG);
        redirectStream.write(toUrl.toString().getBytes());
    } catch (IOException e) {
        // Caching is best effort
    } finally {
        Utility.closeQuietly(redirectStream);
    }
}
项目:facebook-android-sdk    文件:ImageResponseCache.java   
static InputStream interceptAndCacheImageStream(Context context, HttpURLConnection connection) throws IOException {
    InputStream stream = null;
    if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
        URL url = connection.getURL();
        stream = connection.getInputStream(); // Default stream in case caching fails
        if (isCDNURL(url)) {
            try {
                FileLruCache cache = getCache(context);

                // Wrap stream with a caching stream
                stream = cache.interceptAndPut(
                        url.toString(),
                        new BufferedHttpInputStream(stream, connection));
            } catch (IOException e) {
                // Caching is best effort
            }
        }
    }
    return stream;
}
项目:facebook-android-sdk    文件:UrlRedirectCache.java   
static void cacheUrlRedirect(Context context, URL fromUrl, URL toUrl) {
    if (fromUrl == null || toUrl == null) {
        return;
    }

    OutputStream redirectStream = null;
    try {
        FileLruCache cache = getCache(context);
        redirectStream = cache.openPutStream(fromUrl.toString(), REDIRECT_CONTENT_TAG);
        redirectStream.write(toUrl.toString().getBytes());
    } catch (IOException e) {
        // Caching is best effort
    } finally {
        Utility.closeQuietly(redirectStream);
    }
}
项目:HypFacebook    文件:ImageResponseCache.java   
static InputStream interceptAndCacheImageStream(Context context, HttpURLConnection connection) throws IOException {
    InputStream stream = null;
    if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
        URL url = connection.getURL();
        stream = connection.getInputStream(); // Default stream in case caching fails
        if (isCDNURL(url)) {
            try {
                FileLruCache cache = getCache(context);

                // Wrap stream with a caching stream
                stream = cache.interceptAndPut(
                        url.toString(),
                        new BufferedHttpInputStream(stream, connection));
            } catch (IOException e) {
                // Caching is best effort
            }
        }
    }
    return stream;
}
项目:HypFacebook    文件:UrlRedirectCache.java   
static void cacheUrlRedirect(Context context, URL fromUrl, URL toUrl) {
    if (fromUrl == null || toUrl == null) {
        return;
    }

    OutputStream redirectStream = null;
    try {
        FileLruCache cache = getCache(context);
        redirectStream = cache.openPutStream(fromUrl.toString(), REDIRECT_CONTENT_TAG);
        redirectStream.write(toUrl.toString().getBytes());
    } catch (IOException e) {
        // Caching is best effort
    } finally {
        Utility.closeQuietly(redirectStream);
    }
}
项目:FacebookNewsfeedSample-Android    文件:ImageResponseCache.java   
static InputStream interceptAndCacheImageStream(Context context, HttpURLConnection connection) throws IOException {
    InputStream stream = null;
    if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
        URL url = connection.getURL();
        stream = connection.getInputStream(); // Default stream in case caching fails
        if (isCDNURL(url)) {
            try {
                FileLruCache cache = getCache(context);

                // Wrap stream with a caching stream
                stream = cache.interceptAndPut(
                        url.toString(),
                        new BufferedHttpInputStream(stream, connection));
            } catch (IOException e) {
                // Caching is best effort
            }
        }
    }
    return stream;
}
项目:FacebookNewsfeedSample-Android    文件:UrlRedirectCache.java   
static void cacheUrlRedirect(Context context, URL fromUrl, URL toUrl) {
    if (fromUrl == null || toUrl == null) {
        return;
    }

    OutputStream redirectStream = null;
    try {
        FileLruCache cache = getCache(context);
        redirectStream = cache.openPutStream(fromUrl.toString(), REDIRECT_CONTENT_TAG);
        redirectStream.write(toUrl.toString().getBytes());
    } catch (IOException e) {
        // Caching is best effort
    } finally {
        Utility.closeQuietly(redirectStream);
    }
}
项目:kognitivo    文件:LikeActionController.java   
private synchronized static void performFirstInitialize() {
    if (isInitialized) {
        return;
    }

    handler = new Handler(Looper.getMainLooper());

    Context appContext = FacebookSdk.getApplicationContext();
    SharedPreferences sharedPreferences = appContext.getSharedPreferences(
            LIKE_ACTION_CONTROLLER_STORE,
            Context.MODE_PRIVATE);

    objectSuffix = sharedPreferences.getInt(LIKE_ACTION_CONTROLLER_STORE_OBJECT_SUFFIX_KEY, 1);
    controllerDiskCache = new FileLruCache(TAG, new FileLruCache.Limits());

    registerAccessTokenTracker();

    CallbackManagerImpl.registerStaticCallback(
            CallbackManagerImpl.RequestCodeOffset.Like.toRequestCode(),
            new CallbackManagerImpl.Callback() {
                @Override
                public boolean onActivityResult(int resultCode, Intent data) {
                    return handleOnActivityResult(
                            CallbackManagerImpl.RequestCodeOffset.Like.toRequestCode(),
                            resultCode,
                            data);
                }
            });

    isInitialized = true;
}
项目:Move-Alarm_ORCA    文件:LikeActionController.java   
private synchronized static void performFirstInitialize() {
    if (isInitialized) {
        return;
    }

    handler = new Handler(Looper.getMainLooper());

    Context appContext = FacebookSdk.getApplicationContext();
    SharedPreferences sharedPreferences = appContext.getSharedPreferences(
            LIKE_ACTION_CONTROLLER_STORE,
            Context.MODE_PRIVATE);

    objectSuffix = sharedPreferences.getInt(LIKE_ACTION_CONTROLLER_STORE_OBJECT_SUFFIX_KEY, 1);
    controllerDiskCache = new FileLruCache(TAG, new FileLruCache.Limits());

    registerAccessTokenTracker();

    CallbackManagerImpl.registerStaticCallback(
            CallbackManagerImpl.RequestCodeOffset.Like.toRequestCode(),
            new CallbackManagerImpl.Callback() {
                @Override
                public boolean onActivityResult(int resultCode, Intent data) {
                    return handleOnActivityResult(
                            CallbackManagerImpl.RequestCodeOffset.Like.toRequestCode(),
                            resultCode,
                            data);
                }
            });

    isInitialized = true;
}
项目:SocioBlood    文件:LikeActionController.java   
private synchronized static void performFirstInitialize() {
    if (isInitialized) {
        return;
    }

    handler = new Handler(Looper.getMainLooper());

    Context appContext = FacebookSdk.getApplicationContext();
    SharedPreferences sharedPreferences = appContext.getSharedPreferences(
            LIKE_ACTION_CONTROLLER_STORE,
            Context.MODE_PRIVATE);

    objectSuffix = sharedPreferences.getInt(LIKE_ACTION_CONTROLLER_STORE_OBJECT_SUFFIX_KEY, 1);
    controllerDiskCache = new FileLruCache(TAG, new FileLruCache.Limits());

    registerAccessTokenTracker();

    CallbackManagerImpl.registerStaticCallback(
            CallbackManagerImpl.RequestCodeOffset.Like.toRequestCode(),
            new CallbackManagerImpl.Callback() {
                @Override
                public boolean onActivityResult(int resultCode, Intent data) {
                    return handleOnActivityResult(
                            CallbackManagerImpl.RequestCodeOffset.Like.toRequestCode(),
                            resultCode,
                            data);
                }
            });

    isInitialized = true;
}
项目:kaorisan    文件:ImageResponseCache.java   
static InputStream getCachedImageStream(URL url, Context context) {
    InputStream imageStream = null;
    if (url != null) {
        if (isCDNURL(url)) {
            try {
                FileLruCache cache = getCache(context);
                imageStream = cache.get(url.toString());
            } catch (IOException e) {
                Logger.log(LoggingBehavior.CACHE, Log.WARN, TAG, e.toString());
            }
        }
    }

    return imageStream;
}
项目:p2psafety    文件:ImageResponseCache.java   
static InputStream getCachedImageStream(URL url, Context context) {
    InputStream imageStream = null;
    if (url != null) {
        if (isCDNURL(url)) {
            try {
                FileLruCache cache = getCache(context);
                imageStream = cache.get(url.toString());
            } catch (IOException e) {
                Logger.log(LoggingBehavior.CACHE, Log.WARN, TAG, e.toString());
            }
        }
    }

    return imageStream;
}
项目:ClassParticipation2    文件:ImageResponseCache.java   
static InputStream getCachedImageStream(URL url, Context context) {
    InputStream imageStream = null;
    if (url != null) {
        if (isCDNURL(url)) {
            try {
                FileLruCache cache = getCache(context);
                imageStream = cache.get(url.toString());
            } catch (IOException e) {
                Logger.log(LoggingBehavior.CACHE, Log.WARN, TAG, e.toString());
            }
        }
    }

    return imageStream;
}
项目:aws-mobile-self-paced-labs-samples    文件:ImageResponseCache.java   
static InputStream getCachedImageStream(URL url, Context context) {
    InputStream imageStream = null;
    if (url != null) {
        if (isCDNURL(url)) {
            try {
                FileLruCache cache = getCache(context);
                imageStream = cache.get(url.toString());
            } catch (IOException e) {
                Logger.log(LoggingBehavior.CACHE, Log.WARN, TAG, e.toString());
            }
        }
    }

    return imageStream;
}
项目:facebook-android-sdk    文件:ImageResponseCache.java   
static InputStream getCachedImageStream(URL url, Context context) {
    InputStream imageStream = null;
    if (url != null) {
        if (isCDNURL(url)) {
            try {
                FileLruCache cache = getCache(context);
                imageStream = cache.get(url.toString());
            } catch (IOException e) {
                Logger.log(LoggingBehavior.CACHE, Log.WARN, TAG, e.toString());
            }
        }
    }

    return imageStream;
}
项目:HypFacebook    文件:ImageResponseCache.java   
static InputStream getCachedImageStream(URL url, Context context) {
    InputStream imageStream = null;
    if (url != null) {
        if (isCDNURL(url)) {
            try {
                FileLruCache cache = getCache(context);
                imageStream = cache.get(url.toString());
            } catch (IOException e) {
                Logger.log(LoggingBehavior.CACHE, Log.WARN, TAG, e.toString());
            }
        }
    }

    return imageStream;
}
项目:FacebookNewsfeedSample-Android    文件:ImageResponseCache.java   
static InputStream getCachedImageStream(URL url, Context context) {
    InputStream imageStream = null;
    if (url != null) {
        if (isCDNURL(url)) {
            try {
                FileLruCache cache = getCache(context);
                imageStream = cache.get(url.toString());
            } catch (IOException e) {
                Logger.log(LoggingBehavior.CACHE, Log.WARN, TAG, e.toString());
            }
        }
    }

    return imageStream;
}
项目:kaorisan    文件:UrlRedirectCache.java   
static URL getRedirectedUrl(Context context, URL url) {
    if (url == null) {
        return null;
    }

    String urlString = url.toString();
    URL finalUrl = null;
    InputStreamReader reader = null;
    try {
        InputStream stream;
        FileLruCache cache = getCache(context);
        boolean redirectExists = false;
        while ((stream = cache.get(urlString, REDIRECT_CONTENT_TAG)) != null) {
            redirectExists = true;

            // Get the redirected url
            reader = new InputStreamReader(stream);
            char[] buffer = new char[128];
            int bufferLength;
            StringBuilder urlBuilder = new StringBuilder();
            while ((bufferLength = reader.read(buffer, 0, buffer.length)) > 0) {
                urlBuilder.append(buffer, 0, bufferLength);
            }
            Utility.closeQuietly(reader);

            // Iterate to the next url in the redirection
            urlString = urlBuilder.toString();
        }

        if (redirectExists) {
            finalUrl = new URL(urlString);
        }
    } catch (MalformedURLException e) {
        // caching is best effort, so ignore the exception
    } catch (IOException ioe) {
    } finally {
        Utility.closeQuietly(reader);
    }

    return finalUrl;
}
项目:p2psafety    文件:UrlRedirectCache.java   
static URL getRedirectedUrl(Context context, URL url) {
    if (url == null) {
        return null;
    }

    String urlString = url.toString();
    URL finalUrl = null;
    InputStreamReader reader = null;
    try {
        InputStream stream;
        FileLruCache cache = getCache(context);
        boolean redirectExists = false;
        while ((stream = cache.get(urlString, REDIRECT_CONTENT_TAG)) != null) {
            redirectExists = true;

            // Get the redirected url
            reader = new InputStreamReader(stream);
            char[] buffer = new char[128];
            int bufferLength;
            StringBuilder urlBuilder = new StringBuilder();
            while ((bufferLength = reader.read(buffer, 0, buffer.length)) > 0) {
                urlBuilder.append(buffer, 0, bufferLength);
            }
            Utility.closeQuietly(reader);

            // Iterate to the next url in the redirection
            urlString = urlBuilder.toString();
        }

        if (redirectExists) {
            finalUrl = new URL(urlString);
        }
    } catch (MalformedURLException e) {
        // caching is best effort, so ignore the exception
    } catch (IOException ioe) {
    } finally {
        Utility.closeQuietly(reader);
    }

    return finalUrl;
}
项目:ClassParticipation2    文件:UrlRedirectCache.java   
static URL getRedirectedUrl(Context context, URL url) {
    if (url == null) {
        return null;
    }

    String urlString = url.toString();
    URL finalUrl = null;
    InputStreamReader reader = null;
    try {
        InputStream stream;
        FileLruCache cache = getCache(context);
        boolean redirectExists = false;
        while ((stream = cache.get(urlString, REDIRECT_CONTENT_TAG)) != null) {
            redirectExists = true;

            // Get the redirected url
            reader = new InputStreamReader(stream);
            char[] buffer = new char[128];
            int bufferLength;
            StringBuilder urlBuilder = new StringBuilder();
            while ((bufferLength = reader.read(buffer, 0, buffer.length)) > 0) {
                urlBuilder.append(buffer, 0, bufferLength);
            }
            Utility.closeQuietly(reader);

            // Iterate to the next url in the redirection
            urlString = urlBuilder.toString();
        }

        if (redirectExists) {
            finalUrl = new URL(urlString);
        }
    } catch (MalformedURLException e) {
        // caching is best effort, so ignore the exception
    } catch (IOException ioe) {
    } finally {
        Utility.closeQuietly(reader);
    }

    return finalUrl;
}
项目:aws-mobile-self-paced-labs-samples    文件:UrlRedirectCache.java   
static URL getRedirectedUrl(Context context, URL url) {
    if (url == null) {
        return null;
    }

    String urlString = url.toString();
    URL finalUrl = null;
    InputStreamReader reader = null;
    try {
        InputStream stream;
        FileLruCache cache = getCache(context);
        boolean redirectExists = false;
        while ((stream = cache.get(urlString, REDIRECT_CONTENT_TAG)) != null) {
            redirectExists = true;

            // Get the redirected url
            reader = new InputStreamReader(stream);
            char[] buffer = new char[128];
            int bufferLength;
            StringBuilder urlBuilder = new StringBuilder();
            while ((bufferLength = reader.read(buffer, 0, buffer.length)) > 0) {
                urlBuilder.append(buffer, 0, bufferLength);
            }
            Utility.closeQuietly(reader);

            // Iterate to the next url in the redirection
            urlString = urlBuilder.toString();
        }

        if (redirectExists) {
            finalUrl = new URL(urlString);
        }
    } catch (MalformedURLException e) {
        // caching is best effort, so ignore the exception
    } catch (IOException ioe) {
    } finally {
        Utility.closeQuietly(reader);
    }

    return finalUrl;
}
项目:facebook-android-sdk    文件:UrlRedirectCache.java   
static URL getRedirectedUrl(Context context, URL url) {
    if (url == null) {
        return null;
    }

    String urlString = url.toString();
    URL finalUrl = null;
    InputStreamReader reader = null;
    try {
        InputStream stream;
        FileLruCache cache = getCache(context);
        boolean redirectExists = false;
        while ((stream = cache.get(urlString, REDIRECT_CONTENT_TAG)) != null) {
            redirectExists = true;

            // Get the redirected url
            reader = new InputStreamReader(stream);
            char[] buffer = new char[128];
            int bufferLength;
            StringBuilder urlBuilder = new StringBuilder();
            while ((bufferLength = reader.read(buffer, 0, buffer.length)) > 0) {
                urlBuilder.append(buffer, 0, bufferLength);
            }
            Utility.closeQuietly(reader);

            // Iterate to the next url in the redirection
            urlString = urlBuilder.toString();
        }

        if (redirectExists) {
            finalUrl = new URL(urlString);
        }
    } catch (MalformedURLException e) {
        // caching is best effort, so ignore the exception
    } catch (IOException ioe) {
    } finally {
        Utility.closeQuietly(reader);
    }

    return finalUrl;
}
项目:HypFacebook    文件:UrlRedirectCache.java   
static URL getRedirectedUrl(Context context, URL url) {
    if (url == null) {
        return null;
    }

    String urlString = url.toString();
    URL finalUrl = null;
    InputStreamReader reader = null;
    try {
        InputStream stream;
        FileLruCache cache = getCache(context);
        boolean redirectExists = false;
        while ((stream = cache.get(urlString, REDIRECT_CONTENT_TAG)) != null) {
            redirectExists = true;

            // Get the redirected url
            reader = new InputStreamReader(stream);
            char[] buffer = new char[128];
            int bufferLength;
            StringBuilder urlBuilder = new StringBuilder();
            while ((bufferLength = reader.read(buffer, 0, buffer.length)) > 0) {
                urlBuilder.append(buffer, 0, bufferLength);
            }
            Utility.closeQuietly(reader);

            // Iterate to the next url in the redirection
            urlString = urlBuilder.toString();
        }

        if (redirectExists) {
            finalUrl = new URL(urlString);
        }
    } catch (MalformedURLException e) {
        // caching is best effort, so ignore the exception
    } catch (IOException ioe) {
    } finally {
        Utility.closeQuietly(reader);
    }

    return finalUrl;
}
项目:FacebookNewsfeedSample-Android    文件:UrlRedirectCache.java   
static URL getRedirectedUrl(Context context, URL url) {
    if (url == null) {
        return null;
    }

    String urlString = url.toString();
    URL finalUrl = null;
    InputStreamReader reader = null;
    try {
        InputStream stream;
        FileLruCache cache = getCache(context);
        boolean redirectExists = false;
        while ((stream = cache.get(urlString, REDIRECT_CONTENT_TAG)) != null) {
            redirectExists = true;

            // Get the redirected url
            reader = new InputStreamReader(stream);
            char[] buffer = new char[128];
            int bufferLength;
            StringBuilder urlBuilder = new StringBuilder();
            while ((bufferLength = reader.read(buffer, 0, buffer.length)) > 0) {
                urlBuilder.append(buffer, 0, bufferLength);
            }
            Utility.closeQuietly(reader);

            // Iterate to the next url in the redirection
            urlString = urlBuilder.toString();
        }

        if (redirectExists) {
            finalUrl = new URL(urlString);
        }
    } catch (MalformedURLException e) {
        // caching is best effort, so ignore the exception
    } catch (IOException ioe) {
    } finally {
        Utility.closeQuietly(reader);
    }

    return finalUrl;
}