package com.codepoetics.octarine.records;
import java.util.Collections;
import java.util.List;
import java.util.function.Supplier;
public interface Validation<T> extends Supplier<Valid<T>> {
static <T> Validation<T> valid(Valid<T> validValue) {
return new Validation<T>() {
@Override
public boolean isValid() {
return true;
}
@Override
public List<String> validationErrors() {
return Collections.emptyList();
}
@Override
public Valid<T> get() {
return validValue;
}
};
}
static <T> Validation<T> invalid(List<String> validationErrors) {
return new Validation<T>() {
@Override
public boolean isValid() {
return false;
}
@Override
public List<String> validationErrors() {
return validationErrors;
}
@Override
public Valid<T> get() {
throw new RecordValidationException(validationErrors());
}
};
}
boolean isValid();
List<String> validationErrors();
}