package edu.uw.zookeeper.common;
import com.google.common.util.concurrent.ForwardingListenableFuture;
import com.google.common.util.concurrent.SettableFuture;
public final class SettableFuturePromise<V> extends ForwardingListenableFuture<V> implements Promise<V> {
public static <V> SettableFuturePromise<V> create() {
return wrap(SettableFuture.<V>create());
}
public static <V> SettableFuturePromise<V> wrap(SettableFuture<V> delegate) {
return new SettableFuturePromise<V>(delegate);
}
private final SettableFuture<V> delegate;
private SettableFuturePromise(SettableFuture<V> delegate) {
this.delegate = delegate;
}
@Override
public boolean set(V value) {
return delegate().set(value);
}
@Override
public boolean setException(Throwable throwable) {
return delegate().setException(throwable);
}
@Override
public String toString() {
return ToStringListenableFuture.toString(delegate);
}
@Override
protected SettableFuture<V> delegate() {
return delegate;
}
}