Skip to content

Commit eb3ed1d

Browse files
committed
Update example to use Closure
Signed-off-by: Gopal S Akshintala <gopala.akshintala@salesforce.com>
1 parent a9c4c35 commit eb3ed1d

File tree

4 files changed

+37
-18
lines changed

4 files changed

+37
-18
lines changed

README.adoc

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -125,17 +125,27 @@ ifdef::env-github[]
125125
[source,java,indent=0,options="nowrap"]
126126
.link:{testdir}/com/salesforce/vador/execution/VadorTest.java[VadorTest.java, tag=withValidators]
127127
----
128-
final Validator<Bean, ValidationFailure> validator1 = bean -> NONE;
129-
final Validator<Bean, ValidationFailure> validator2 = bean -> NONE;
130-
final Validator<Bean, ValidationFailure> validator3 = bean -> UNKNOWN_EXCEPTION;
131-
final List<Validator<Bean, ValidationFailure>> validatorChain =
132-
List.of(validator1, validator2, validator3);
133-
final var validationConfig =
134-
ValidationConfig.<Bean, ValidationFailure>toValidate()
135-
.withValidators(Tuple.of(validatorChain, NONE))
136-
.prepare();
137-
final var result = Vador.validateAndFailFast(VALIDATABLE, validationConfig);
138-
assertThat(result).contains(UNKNOWN_EXCEPTION);
128+
@Test
129+
void failFastWithFirstFailureWithValidator() {
130+
// tag::withValidators[]
131+
final List<Validator<Bean, ValidationFailure>> validatorChain =
132+
List.of(validator(1, 9), validator(3, 7), validator(5, 5));
133+
final var validationConfig =
134+
ValidationConfig.<Bean, ValidationFailure>toValidate()
135+
.withValidators(Tuple.of(validatorChain, NONE))
136+
.prepare();
137+
// end::withValidators[]
138+
final var result = Vador.validateAndFailFast(new Bean(0), validationConfig);
139+
assertThat(result).contains(OUT_OF_BOUND);
140+
}
141+
142+
/**
143+
* You can pass any number of arguments (like lowerLimit, upperLimit),
144+
* to write your validator closure
145+
*/
146+
Validator<Bean, ValidationFailure> validator(int lowerLimit, int upperLimit) {
147+
return bean -> bean.value >= lowerLimit && bean.value <= upperLimit ? NONE : OUT_OF_BOUND;
148+
}
139149
----
140150

141151
endif::[]

vador/src/test/java/com/salesforce/vador/execution/VadorTest.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import static org.assertj.core.api.Assertions.assertThat;
1111
import static sample.consumer.failure.ValidationFailure.NONE;
1212
import static sample.consumer.failure.ValidationFailure.NOTHING_TO_VALIDATE;
13+
import static sample.consumer.failure.ValidationFailure.OUT_OF_BOUND;
1314
import static sample.consumer.failure.ValidationFailure.UNKNOWN_EXCEPTION;
1415
import static sample.consumer.failure.ValidationFailure.VALIDATION_FAILURE_1;
1516
import static sample.consumer.failure.ValidationFailure.VALIDATION_FAILURE_2;
@@ -34,18 +35,23 @@ class VadorTest {
3435
@Test
3536
void failFastWithFirstFailureWithValidator() {
3637
// tag::withValidators[]
37-
final Validator<Bean, ValidationFailure> validator1 = bean -> NONE;
38-
final Validator<Bean, ValidationFailure> validator2 = bean -> NONE;
39-
final Validator<Bean, ValidationFailure> validator3 = bean -> UNKNOWN_EXCEPTION;
4038
final List<Validator<Bean, ValidationFailure>> validatorChain =
41-
List.of(validator1, validator2, validator3);
39+
List.of(validator(1, 9), validator(3, 7), validator(5, 5));
4240
final var validationConfig =
4341
ValidationConfig.<Bean, ValidationFailure>toValidate()
4442
.withValidators(Tuple.of(validatorChain, NONE))
4543
.prepare();
4644
// end::withValidators[]
47-
final var result = Vador.validateAndFailFast(VALIDATABLE, validationConfig);
48-
assertThat(result).contains(UNKNOWN_EXCEPTION);
45+
final var result = Vador.validateAndFailFast(new Bean(0), validationConfig);
46+
assertThat(result).contains(OUT_OF_BOUND);
47+
}
48+
49+
/**
50+
* You can pass any number of arguments (like lowerLimit, upperLimit), to write your validator
51+
* closure
52+
*/
53+
Validator<Bean, ValidationFailure> validator(int lowerLimit, int upperLimit) {
54+
return bean -> bean.value >= lowerLimit && bean.value <= upperLimit ? NONE : OUT_OF_BOUND;
4955
}
5056

5157
// end::failFastDemo[]
@@ -146,7 +152,7 @@ void throwableMapperTest() {
146152

147153
@Value
148154
private static class Bean {
149-
int id;
155+
int value;
150156
}
151157

152158
@Value

vador/src/test/java/sample/consumer/failure/ValidationFailure.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ public class ValidationFailure {
5757
new ValidationFailure(ValidationFailureMessage.INVALID_UDD_ID_3);
5858
public static final ValidationFailure INVALID_MEMBER =
5959
new ValidationFailure(ValidationFailureMessage.INVALID_CHILD);
60+
public static final ValidationFailure OUT_OF_BOUND =
61+
new ValidationFailure(ValidationFailureMessage.UNKNOWN_EXCEPTION);
6062
public static final ValidationFailure UNKNOWN_EXCEPTION =
6163
new ValidationFailure(ValidationFailureMessage.UNKNOWN_EXCEPTION);
6264
public static final ValidationFailure VALIDATION_FAILURE_1 =

vador/src/test/java/sample/consumer/failure/ValidationFailureMessage.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public enum ValidationFailureMessage {
4545
INVALID_CHILD(Section.COMMON_VALIDATION_FAILURE, "InvalidChild"),
4646
INVALID_MEMBER(Section.COMMON_VALIDATION_FAILURE, "InvalidMember"),
4747
UNKNOWN_EXCEPTION("", ""),
48+
OUT_OF_BOUND("", ""),
4849
VALIDATION_FAILURE_1("", ""),
4950
VALIDATION_FAILURE_2("", ""),
5051
VALIDATION_FAILURE_3("", ""),

0 commit comments

Comments
 (0)