package edu.uw.zookeeper.common;
import com.google.common.base.MoreObjects;
public class PromiseTask<T,V> extends ForwardingPromise.SimpleForwardingPromise<V> {
public static <V> Promise<V> newPromise() {
return SettableFuturePromise.<V>create();
}
public static <T,V> PromiseTask<T,V> of(T task) {
Promise<V> promise = newPromise();
return of(task, promise);
}
public static <T,V> PromiseTask<T,V> of(T task, Promise<V> promise) {
return new PromiseTask<T,V>(task, promise);
}
protected final T task;
public PromiseTask(T task, Promise<V> delegate) {
super(delegate);
this.task = task;
}
public T task() {
return task;
}
@Override
protected MoreObjects.ToStringHelper toStringHelper(MoreObjects.ToStringHelper helper) {
return super.toStringHelper(helper.addValue(task()));
}
}