
io.machinecode.then.core.CallableDeferred Maven / Gradle / Ivy
package io.machinecode.then.core;
import io.machinecode.then.api.ExecutablePromise;
import io.machinecode.then.api.Promise;
import java.util.concurrent.Callable;
/**
* @author Brent Douglas
* @since 1.0
*/
public class CallableDeferred extends DeferredImpl implements ExecutablePromise, Promise, Callable, Runnable {
protected final Callable extends T> call;
public CallableDeferred(final Callable extends T> call) {
this.call = call;
}
@Override
public void run() {
final T that;
try {
that = call.call();
} catch (final Throwable e) {
reject(e);
return;
}
resolve(that);
}
@Override
public T call() throws Exception {
run();
return get();
}
@Override
public Runnable asRunnable() {
return this;
}
@Override
public Callable asCallable() {
return this;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy