|
15 | 15 | */ |
16 | 16 | package am.ik.yavi.builder; |
17 | 17 |
|
18 | | -import java.math.BigDecimal; |
19 | | -import java.math.BigInteger; |
20 | | -import java.time.Instant; |
21 | | -import java.time.LocalDate; |
22 | | -import java.time.LocalDateTime; |
23 | | -import java.time.LocalTime; |
24 | | -import java.time.OffsetDateTime; |
25 | | -import java.time.Year; |
26 | | -import java.time.YearMonth; |
27 | | -import java.time.ZonedDateTime; |
28 | | -import java.util.ArrayList; |
29 | | -import java.util.Arrays; |
30 | | -import java.util.Collection; |
31 | | -import java.util.Deque; |
32 | | -import java.util.LinkedHashMap; |
33 | | -import java.util.LinkedList; |
34 | | -import java.util.List; |
35 | | -import java.util.Map; |
36 | | -import java.util.function.Consumer; |
37 | | -import java.util.function.Function; |
38 | | -import java.util.function.Predicate; |
39 | | -import java.util.function.Supplier; |
40 | | - |
41 | 18 | import am.ik.yavi.constraint.BigDecimalConstraint; |
42 | 19 | import am.ik.yavi.constraint.BigIntegerConstraint; |
43 | 20 | import am.ik.yavi.constraint.BooleanConstraint; |
|
111 | 88 | import am.ik.yavi.meta.YearMonthConstraintMeta; |
112 | 89 | import am.ik.yavi.meta.ZonedDateTimeConstraintMeta; |
113 | 90 |
|
| 91 | +import java.math.BigDecimal; |
| 92 | +import java.math.BigInteger; |
| 93 | +import java.time.Instant; |
| 94 | +import java.time.LocalDate; |
| 95 | +import java.time.LocalDateTime; |
| 96 | +import java.time.LocalTime; |
| 97 | +import java.time.OffsetDateTime; |
| 98 | +import java.time.Year; |
| 99 | +import java.time.YearMonth; |
| 100 | +import java.time.ZonedDateTime; |
| 101 | +import java.util.ArrayList; |
| 102 | +import java.util.Arrays; |
| 103 | +import java.util.Collection; |
| 104 | +import java.util.Deque; |
| 105 | +import java.util.LinkedHashMap; |
| 106 | +import java.util.LinkedList; |
| 107 | +import java.util.List; |
| 108 | +import java.util.Map; |
| 109 | +import java.util.function.Consumer; |
| 110 | +import java.util.function.Function; |
| 111 | +import java.util.function.Predicate; |
| 112 | +import java.util.function.Supplier; |
| 113 | + |
114 | 114 | public class ValidatorBuilder<T> implements Cloneable { |
115 | 115 | private static final String DEFAULT_SEPARATOR = "."; |
116 | 116 |
|
@@ -732,6 +732,33 @@ public ValidatorBuilder<T> _doubleArray(ToDoubleArray<T> f, String name, |
732 | 732 | return this.constraint(f, name, c, DoubleArrayConstraint::new); |
733 | 733 | } |
734 | 734 |
|
| 735 | + /** |
| 736 | + * @since 0.14.0 |
| 737 | + */ |
| 738 | + public <C extends T> ValidatorBuilder<T> constraintOnClass(Class<C> clazz, |
| 739 | + Validator<C> cValidator) { |
| 740 | + Validator<T> TValidator = new ValidatorBuilder<T>() |
| 741 | + .nest(clazz::cast, clazz.getName(), cValidator).build(); |
| 742 | + |
| 743 | + return constraintOnCondition(getClassConstraintCondition(clazz), TValidator); |
| 744 | + } |
| 745 | + |
| 746 | + /** |
| 747 | + * @since 0.14.0 |
| 748 | + */ |
| 749 | + public <C extends T> ValidatorBuilder<T> constraintOnClass(Class<C> clazz, |
| 750 | + ValidatorBuilderConverter<C> converter) { |
| 751 | + ValidatorBuilderConverter<T> tConverter = tValidatorBuilder -> tValidatorBuilder |
| 752 | + .nest(clazz::cast, clazz.getName(), converter); |
| 753 | + |
| 754 | + return constraintOnCondition(getClassConstraintCondition(clazz), tConverter); |
| 755 | + } |
| 756 | + |
| 757 | + private <C extends T> ConstraintCondition<T> getClassConstraintCondition( |
| 758 | + Class<C> classCondition) { |
| 759 | + return (t, c) -> classCondition.isInstance(t); |
| 760 | + } |
| 761 | + |
735 | 762 | /** |
736 | 763 | * @since 0.11.0 |
737 | 764 | */ |
|
0 commit comments