13713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick/* 23713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * Copyright (C) 2011 The Android Open Source Project 33713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * 43713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * Licensed under the Apache License, Version 2.0 (the "License"); 53713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * you may not use this file except in compliance with the License. 63713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * You may obtain a copy of the License at 73713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * 83713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * http://www.apache.org/licenses/LICENSE-2.0 93713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * 103713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * Unless required by applicable law or agreed to in writing, software 113713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * distributed under the License is distributed on an "AS IS" BASIS, 123713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * See the License for the specific language governing permissions and 143713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * limitations under the License. 153713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick */ 163713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick 173713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrickpackage com.android.volley; 183713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick 193713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick/** 203713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * Encapsulates a parsed response for delivery. 213713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * 223713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * @param <T> Parsed type of this response 233713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick */ 243713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrickpublic class Response<T> { 253713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick 263713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick /** Callback interface for delivering parsed responses. */ 273713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick public interface Listener<T> { 283713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick /** Called when a response is received. */ 293713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick public void onResponse(T response); 303713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick } 313713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick 323713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick /** Callback interface for delivering error responses. */ 333713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick public interface ErrorListener { 343713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick /** 353713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * Callback method that an error has been occurred with the 363713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * provided error code and optional user-readable message. 373713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick */ 383713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick public void onErrorResponse(VolleyError error); 393713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick } 403713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick 413713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick /** Returns a successful response containing the parsed result. */ 423713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick public static <T> Response<T> success(T result, Cache.Entry cacheEntry) { 433713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick return new Response<T>(result, cacheEntry); 443713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick } 453713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick 463713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick /** 473713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * Returns a failed response containing the given error code and an optional 483713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * localized message displayed to the user. 493713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick */ 503713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick public static <T> Response<T> error(VolleyError error) { 513713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick return new Response<T>(error); 523713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick } 533713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick 543713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick /** Parsed response, or null in the case of error. */ 553713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick public final T result; 563713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick 573713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick /** Cache metadata for this response, or null in the case of error. */ 583713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick public final Cache.Entry cacheEntry; 593713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick 603713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick /** Detailed error information if <code>errorCode != OK</code>. */ 613713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick public final VolleyError error; 623713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick 633713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick /** True if this response was a soft-expired one and a second one MAY be coming. */ 643713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick public boolean intermediate = false; 653713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick 663713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick /** 673713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * Returns whether this response is considered successful. 683713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick */ 693713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick public boolean isSuccess() { 703713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick return error == null; 713713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick } 723713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick 733713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick 743713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick private Response(T result, Cache.Entry cacheEntry) { 753713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick this.result = result; 763713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick this.cacheEntry = cacheEntry; 773713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick this.error = null; 783713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick } 793713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick 803713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick private Response(VolleyError error) { 813713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick this.result = null; 823713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick this.cacheEntry = null; 833713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick this.error = error; 843713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick } 853713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick} 86