package org.azavea.otm.rest.handlers;
import com.loopj.android.http.JsonHttpResponseHandler;
import org.azavea.helpers.Logger;
import org.json.JSONObject;
import cz.msebera.android.httpclient.Header;
public abstract class LoggingJsonHttpResponseHandler extends JsonHttpResponseHandler {
@Override
public void onFailure(int statusCode, Header[] headers, String message, Throwable e) {
Logger.warning(String.format("Error in HTTP request. Status [%d] Message [%s]", statusCode, message), e);
failure(e, message);
}
// JsonHttpResponseHandler turns an empty response body into a null JSONObject
// so we just look for both String and JSON and send both to the same abstract method
@Override
public void onFailure(int statusCode, Header[] headers, Throwable e, JSONObject object) {
final String jsonString = object != null ? object.toString() : "";
onFailure(statusCode, headers, jsonString, e);
}
public abstract void failure(Throwable e, String message);
}