common-utils/src/main/java/org/warp/commonutils/functional/ConsumerResult.java

63 lines
1.2 KiB
Java

package org.warp.commonutils.functional;
import java.util.StringJoiner;
import java.util.concurrent.CancellationException;
public final class ConsumerResult {
private final boolean cancel;
private ConsumerResult(boolean cancel) {
this.cancel = cancel;
}
public static ConsumerResult cancelNext() {
return new ConsumerResult(true);
}
public static ConsumerResult result() {
return new ConsumerResult(false);
}
public boolean isCancelled() {
return cancel;
}
public void throwIfCancelled() {
if (cancel) {
throw new CancellationException("Operation cancelled");
}
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
ConsumerResult that = (ConsumerResult) o;
return cancel == that.cancel;
}
@Override
public int hashCode() {
return (cancel ? 1 : 0);
}
@Override
public String toString() {
return new StringJoiner(", ", ConsumerResult.class.getSimpleName() + "[", "]").add("cancel=" + cancel).toString();
}
public ConsumerResult or(ConsumerResult otherResult) {
if (otherResult.cancel) {
return otherResult;
}
return this;
}
}