package com.openfeint.internal.request; import com.openfeint.api.R; import com.openfeint.internal.OpenFeintInternal; import com.openfeint.internal.Util; import com.openfeint.internal.resource.ServerException; public abstract class JSONRequest extends JSONContentRequest { public void onSuccess(Object responseBody) { } public void onFailure(String exceptionMessage) { } public JSONRequest() { super(); } public JSONRequest(OrderedArgList args) { super(args); } public void onResponse(int responseCode, byte[] bodyStream) { if (!isResponseJSON()) { // Server screwed up. onResponse(responseCode, notJSONError(responseCode)); } else { // OpenFeintInternal.log("JSONRequest", bodyStream); // bodyStream = new ByteArrayInputStream(s.getBytes("UTF-8")); Object responseBody = Util.getObjFromJson(bodyStream); if (responseBody != null) onResponse(responseCode, responseBody); } } protected void onResponse(int responseCode, Object responseBody) { if (200 <= responseCode && responseCode < 300 && (responseBody == null || !(responseBody instanceof ServerException))) { onSuccess(responseBody); } else { onFailure(responseBody); } } protected void onFailure(Object responseBody) { String exceptionMessage = OpenFeintInternal.getRString(R.string.of_unknown_server_error); if (responseBody != null && responseBody instanceof ServerException) { ServerException e = (ServerException)responseBody; exceptionMessage = e.message; if (e.needsDeveloperAttention) { OpenFeintInternal.log("ServerException", exceptionMessage); OpenFeintInternal.getInstance().displayErrorDialog(exceptionMessage); } } onFailure(exceptionMessage); } }