package com.linkedin.parseq.promise;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ResolvedValue<T> implements Promise<T> {
private static final Logger LOGGER = LoggerFactory.getLogger(ResolvedValue.class);
private final T _value;
public ResolvedValue(T value) {
_value = value;
}
@Override
public T get() throws PromiseException {
return _value;
}
@Override
public Throwable getError() throws PromiseUnresolvedException {
return null;
}
@Override
public T getOrDefault(T defaultValue) throws PromiseUnresolvedException {
return _value;
}
@Override
public void await() throws InterruptedException {
}
@Override
public boolean await(long time, TimeUnit unit) throws InterruptedException {
return true;
}
@Override
public void addListener(PromiseListener<T> listener) {
try {
listener.onResolved(this);
} catch (Throwable e) {
LOGGER.warn("An exception was thrown by listener: " + listener.getClass(), e);
}
}
@Override
public boolean isDone() {
return true;
}
@Override
public boolean isFailed() {
return false;
}
}