package com.tresorit.zerokit.call; import java.util.concurrent.Executor; import java.util.concurrent.Executors; public class CallbackExecutor<T, S> implements Callback<T, S> { @SuppressWarnings("WeakerAccess") static final Executor EXECUTOR = Executors.newSingleThreadExecutor(); @SuppressWarnings("WeakerAccess") final Callback<? super T, ? super S> callback; public CallbackExecutor(Callback<? super T, ? super S> callback) { this.callback = callback; } @Override public void onSuccess(final T result) { EXECUTOR.execute(new Runnable() { @Override public void run() { callback.onSuccess(result); } }); } @Override public void onError(final S error) { EXECUTOR.execute(new Runnable() { @Override public void run() { callback.onError(error); } }); } }