1d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru/* 2d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * Copyright (C) 2011 The Android Open Source Project 3d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * 4d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * Licensed under the Apache License, Version 2.0 (the "License"); 5d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * you may not use this file except in compliance with the License. 6d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * You may obtain a copy of the License at 7d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * 8d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * http://www.apache.org/licenses/LICENSE-2.0 9d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * 10d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * Unless required by applicable law or agreed to in writing, software 11d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * distributed under the License is distributed on an "AS IS" BASIS, 12d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * See the License for the specific language governing permissions and 14d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * limitations under the License. 15d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru */ 16d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 17d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Querupackage com.android.volley.toolbox; 18d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 19d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport com.android.volley.Cache; 20d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport com.android.volley.NetworkResponse; 21d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport com.android.volley.Request; 22d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport com.android.volley.Response; 23d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 24d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport android.os.Handler; 25d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport android.os.Looper; 26d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 27d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru/** 28d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * A synthetic request used for clearing the cache. 29d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru */ 30d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Querupublic class ClearCacheRequest extends Request<Object> { 31d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru private final Cache mCache; 32d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru private final Runnable mCallback; 33d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 34d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru /** 35d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * Creates a synthetic request for clearing the cache. 36d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * @param cache Cache to clear 37d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * @param callback Callback to make on the main thread once the cache is clear, 38d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * or null for none 39d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru */ 40d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru public ClearCacheRequest(Cache cache, Runnable callback) { 41e48f4430bfd3030350aa5ba827b449c37e2fadc9Jean-Baptiste Queru super(Method.GET, null, null); 42d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru mCache = cache; 43d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru mCallback = callback; 44d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 45d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 46d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru @Override 47d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru public boolean isCanceled() { 48d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru // This is a little bit of a hack, but hey, why not. 49d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru mCache.clear(); 50d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru if (mCallback != null) { 51d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru Handler handler = new Handler(Looper.getMainLooper()); 52d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru handler.postAtFrontOfQueue(mCallback); 53d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 54d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru return true; 55d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 56d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 57d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru @Override 58d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru public Priority getPriority() { 59d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru return Priority.IMMEDIATE; 60d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 61d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 62d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru @Override 63d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru protected Response<Object> parseNetworkResponse(NetworkResponse response) { 64d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru return null; 65d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 66d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 67d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru @Override 68d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru protected void deliverResponse(Object response) { 69d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 70d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru} 71