package org.smoothbuild.task.base;
import static com.google.common.base.Preconditions.checkState;
import java.util.Objects;
import org.smoothbuild.lang.message.Message;
import org.smoothbuild.lang.value.Value;
import com.google.common.collect.ImmutableList;
public class Output {
private final Value result;
private final ImmutableList<Message> messages;
public Output(Value result) {
this(result, ImmutableList.<Message> of());
}
public Output(Iterable<? extends Message> messages) {
this(null, messages);
}
public Output(Value result, Iterable<? extends Message> messages) {
this.result = result;
this.messages = ImmutableList.copyOf(messages);
}
public boolean hasResult() {
return result != null;
}
public Value result() {
checkState(hasResult(), "Output does not contain result.");
return result;
}
public ImmutableList<Message> messages() {
return messages;
}
public boolean equals(Object object) {
return object instanceof Output && equals((Output) object);
}
private boolean equals(Output output) {
return Objects.equals(result, output.result)
&& Objects.equals(messages, output.messages);
}
public int hashCode() {
return Objects.hash(result, messages);
}
public String toString() {
return "TaskOutput(" + result + ", " + messages + ")";
}
}