package org.cnodejs.android.md.model.api; import org.cnodejs.android.md.model.entity.Result; import okhttp3.Headers; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; public class BackgroundCallback<T extends Result> implements Callback<T>, CallbackLifecycle<T> { @Override public final void onResponse(Call<T> call, Response<T> response) { boolean interrupt; if (response.isSuccessful()) { interrupt = onResultOk(response.code(), response.headers(), response.body()); } else { interrupt = onResultError(response.code(), response.headers(), Result.buildError(response)); } if (!interrupt) { onFinish(); } } @Override public final void onFailure(Call<T> call, Throwable t) { boolean interrupt; if (call.isCanceled()) { interrupt = onCallCancel(); } else { interrupt = onCallException(t, Result.buildError(t)); } if (!interrupt) { onFinish(); } } @Override public boolean onResultOk(int code, Headers headers, T result) { return false; } @Override public boolean onResultError(int code, Headers headers, Result.Error error) { return false; } @Override public boolean onCallCancel() { return false; } @Override public boolean onCallException(Throwable t, Result.Error error) { return false; } @Override public void onFinish() {} }