package xapi.components.api;
import java.util.function.Consumer;
import com.google.gwt.core.client.Callback;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
public class LoggingCallback <T, E extends Exception> implements Callback<T, E> {
private final Consumer<T> callback;
public LoggingCallback(Consumer<T> callback) {
this.callback = callback;
assert callback != null : "Do not send null callbacks to LoggingCallback";
}
@Override
public void onFailure(E reason) {
GWT.log(getFailureText(reason), reason);
}
protected String getFailureText(E reason) {
return "An unexpected exception occurred";
}
@Override
public void onSuccess(T result) {
callback.accept(result);
}
public static Callback<Void, Exception> voidCallback(ScheduledCommand onLoaded) {
return new LoggingCallback<>((v)->onLoaded.execute());
}
}