Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public abstract class ResponseWithErrorHandling<R, E> implements Callback<ResponseBody> {
- private Type responseType;
- private Type errorType;
- public abstract void onResponseRequest(Call<ResponseBody> call, R response);
- public abstract void onErrorRequest(Call<ResponseBody> call, E error);
- public abstract void onFailureRequest(Call<ResponseBody> call, Throwable error);
- protected ResponseWithErrorHandling() {
- this.responseType = ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
- this.errorType = ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[1];
- }
- @Override
- public final void onResponse(@NonNull Call<ResponseBody> call, @NonNull Response<ResponseBody> response) {
- try {
- if (response.isSuccessful()) {
- R mResponse = new Gson().fromJson(response.body().string(), responseType);
- onResponseRequest(call, mResponse);
- } else {
- E mError = new Gson().fromJson(response.errorBody().string(), errorType);
- onErrorRequest(call, mError);
- }
- } catch (Exception e) {
- e.printStackTrace();
- onFailureRequest(call, e);
- }
- }
- @Override
- public final void onFailure(@NonNull Call<ResponseBody> call, @NonNull Throwable t) {
- onFailureRequest(call, t);
- }
- }
Add Comment
Please, Sign In to add comment