T
- Input typeR
- Return typeE
- Error typepublic class Validator<T,R,E>
extends java.lang.Object
Constructor and Description |
---|
Validator() |
Modifier and Type | Method and Description |
---|---|
ValidationResults<R,E> |
accumulate()
Accumulate validation results.
|
ValidationResults<R,E> |
accumulate(T input)
Accumulate validation results
|
ValidationResults<R,E> |
accumulateUntilFail(T input)
Run the accumulation until first fail
|
Validator<T,R,E> |
add(Validator<T,R,E> validator)
Add another Validator instance to this validation
|
Validator<T,R,E> |
add(Xor<E,R> validation)
Add a FunctionalJava Validation to this CumulativeValidation
|
Validator<T,R,E> |
isValid(java.util.function.Predicate<? super T> valid,
E error,
R result)
Add another validation to this cumulative validator
|
static <T,R,E> Validator<T,R,E> |
of(java.util.function.Predicate<? super T> valid,
E error,
R result)
Static factory method
Construct a CumulativeValidator that checks for the supplied condition returns the supplied
error if it doesn't hold or the supplied result if it does.
|
static <T,R,E> Validator<T,R,E> |
of(Xor<E,R> validation)
Static factory method
Construct a CumulativeValidator from the supplied FunctionalJava validation object
|
public Validator<T,R,E> isValid(java.util.function.Predicate<? super T> valid, E error, R result)
CumulativeValidator<User,String,String> validator = CumulativeValidator.of((User user)->user.age>18, "too young", "age ok")
ValidationResults<String,String> results = validator.isValid(user->user.email!=null, "user email null","email ok")
.accumulate(new User(10,"[email protected]"));
assertThat(results.getResults().size(),equalTo(2));
}
valid
- Validation Predicate to checkerror
- Error to return if validation predicate failsresult
- Result to return if validation predicate succeedspublic ValidationResults<R,E> accumulate()
public ValidationResults<R,E> accumulate(T input)
ValidationResults<String,String> results = CumulativeValidator.of((User user)->user.age>18, "too young", "age ok")
.isValid(user->user.email!=null, "user email null","email ok")
.accumulate(new User(10,"[email protected]"));
assertThat(results.getResults().size(),equalTo(2));
input
- Value to perform validation checks withpublic ValidationResults<R,E> accumulateUntilFail(T input)
ValidationResults<String,String> results = CumulativeValidator.of((User user)->user.age>18, "too young", "age ok")
.add(Validator.of((User user)->user.email!=null, "user email null","email ok"))
.accumulateUntilFail(new User(10,"[email protected]"));
assertThat(results.getResults().size(),equalTo(1));
input
- Value to perform validation checks withpublic Validator<T,R,E> add(Xor<E,R> validation)
User user = new User(10,"[email protected]");
ValidationResults<String,String> results = CumulativeValidator.of(emailOk(user))
.add(user.age>18 ? Validation.success("age ok") : Validation.fail("too young"))
.accumulate();
validation
- FunctionalJava Validation to addpublic Validator<T,R,E> add(Validator<T,R,E> validator)
ValidationResults<String,String> results = CumulativeValidator.of((User user)->user.age>18, "too young", "age ok")
.add(Validator.of((User user)->user.email!=null, "user email null","email ok"))
.accumulate(new User(10,"[email protected]"));
assertThat(results.getResults().size(),equalTo(2));
validation
- Validator instancepublic static <T,R,E> Validator<T,R,E> of(java.util.function.Predicate<? super T> valid, E error, R result)
ValidationResults<String,String> results = CumulativeValidator.of((User user)->user.age>18, "too young", "age ok")
.isValid(user->user.email!=null, "user email null","email ok")
.accumulate(new User(10,"[email protected]"));
assertThat(results.getResults().size(),equalTo(2));
valid
- Validation Predicate to checkerror
- Error to return if validation predicate failsresult
- Result to return if validation predicate succeedspublic static <T,R,E> Validator<T,R,E> of(Xor<E,R> validation)
User user = new User(10,"[email protected]");
ValidationResults<String,String> results = CumulativeValidator.of(emailOk(user))
.add(ageOk(user))
.accumulate();
public Validation<String,String> emailOk(User u){
if(u.email!=null)
return Validation.success("email ok");
return Validation.fail("no email");
}
public Validation<String,String> ageOk(User u){
if(u.age>18)
return Validation.success("age ok");
return Validation.fail("too young");
}
validation
- FuncitonalJava validation