package edu.ualberta.med.biobank.mvp.action; import edu.ualberta.med.biobank.common.action.ActionCallback; import edu.ualberta.med.biobank.common.action.ActionResult; import edu.ualberta.med.biobank.mvp.action.StaleSafeDispatcher.AsyncContext.Call; public class StaleSafeActionCallback<T extends ActionResult> implements ActionCallback<T> { private final Call call; private final ActionCallback<T> callback; public StaleSafeActionCallback(Call call, ActionCallback<T> callback) { this.call = call; this.callback = callback; } @Override public void onFailure(Throwable caught) { if (call.finish()) { callback.onFailure(caught); } } @Override public void onSuccess(T result) { if (call.finish()) { callback.onSuccess(result); } } }