|
15 | 15 | */ |
16 | 16 | package am.ik.yavi.builder; |
17 | 17 |
|
18 | | -import am.ik.yavi.constraint.BigDecimalConstraint; |
19 | | -import am.ik.yavi.constraint.BigIntegerConstraint; |
20 | | -import am.ik.yavi.constraint.BooleanConstraint; |
21 | | -import am.ik.yavi.constraint.ByteConstraint; |
22 | | -import am.ik.yavi.constraint.CharSequenceConstraint; |
23 | | -import am.ik.yavi.constraint.CharacterConstraint; |
24 | | -import am.ik.yavi.constraint.CollectionConstraint; |
25 | | -import am.ik.yavi.constraint.DoubleConstraint; |
26 | | -import am.ik.yavi.constraint.FloatConstraint; |
27 | | -import am.ik.yavi.constraint.InstantConstraint; |
28 | | -import am.ik.yavi.constraint.IntegerConstraint; |
29 | | -import am.ik.yavi.constraint.LocalDateConstraint; |
30 | | -import am.ik.yavi.constraint.LocalDateTimeConstraint; |
31 | | -import am.ik.yavi.constraint.LocalTimeConstraint; |
32 | | -import am.ik.yavi.constraint.LongConstraint; |
33 | | -import am.ik.yavi.constraint.MapConstraint; |
34 | | -import am.ik.yavi.constraint.ObjectConstraint; |
35 | | -import am.ik.yavi.constraint.OffsetDateTimeConstraint; |
36 | | -import am.ik.yavi.constraint.ShortConstraint; |
37 | | -import am.ik.yavi.constraint.YearConstraint; |
38 | | -import am.ik.yavi.constraint.YearMonthConstraint; |
39 | | -import am.ik.yavi.constraint.ZonedDateTimeConstraint; |
40 | | -import am.ik.yavi.constraint.array.BooleanArrayConstraint; |
41 | | -import am.ik.yavi.constraint.array.ByteArrayConstraint; |
42 | | -import am.ik.yavi.constraint.array.CharArrayConstraint; |
43 | | -import am.ik.yavi.constraint.array.DoubleArrayConstraint; |
44 | | -import am.ik.yavi.constraint.array.FloatArrayConstraint; |
45 | | -import am.ik.yavi.constraint.array.IntArrayConstraint; |
46 | | -import am.ik.yavi.constraint.array.LongArrayConstraint; |
47 | | -import am.ik.yavi.constraint.array.ObjectArrayConstraint; |
48 | | -import am.ik.yavi.constraint.array.ShortArrayConstraint; |
49 | | -import am.ik.yavi.core.BiValidator; |
50 | | -import am.ik.yavi.core.CollectionValidator; |
51 | | -import am.ik.yavi.core.Constraint; |
52 | | -import am.ik.yavi.core.ConstraintCondition; |
53 | | -import am.ik.yavi.core.ConstraintGroup; |
54 | | -import am.ik.yavi.core.ConstraintPredicate; |
55 | | -import am.ik.yavi.core.ConstraintPredicates; |
56 | | -import am.ik.yavi.core.CustomConstraint; |
57 | | -import am.ik.yavi.core.NestedCollectionValidator; |
58 | | -import am.ik.yavi.core.NestedConstraintCondition; |
59 | | -import am.ik.yavi.core.NestedConstraintPredicates; |
60 | | -import am.ik.yavi.core.NestedValidator; |
61 | | -import am.ik.yavi.core.NullAs; |
62 | | -import am.ik.yavi.core.Validatable; |
63 | | -import am.ik.yavi.core.Validator; |
64 | | -import am.ik.yavi.core.ValueValidator; |
65 | | -import am.ik.yavi.core.ViolatedArguments; |
66 | | -import am.ik.yavi.core.ViolationMessage; |
| 18 | +import am.ik.yavi.constraint.*; |
| 19 | +import am.ik.yavi.constraint.array.*; |
| 20 | +import am.ik.yavi.core.*; |
67 | 21 | import am.ik.yavi.fn.Pair; |
68 | 22 | import am.ik.yavi.message.MessageFormatter; |
69 | 23 | import am.ik.yavi.message.SimpleMessageFormatter; |
70 | | -import am.ik.yavi.meta.BigDecimalConstraintMeta; |
71 | | -import am.ik.yavi.meta.BigIntegerConstraintMeta; |
72 | | -import am.ik.yavi.meta.BooleanConstraintMeta; |
73 | | -import am.ik.yavi.meta.ByteConstraintMeta; |
74 | | -import am.ik.yavi.meta.CharacterConstraintMeta; |
75 | | -import am.ik.yavi.meta.DoubleConstraintMeta; |
76 | | -import am.ik.yavi.meta.FloatConstraintMeta; |
77 | | -import am.ik.yavi.meta.InstantConstraintMeta; |
78 | | -import am.ik.yavi.meta.IntegerConstraintMeta; |
79 | | -import am.ik.yavi.meta.LocalDateConstraintMeta; |
80 | | -import am.ik.yavi.meta.LocalDateTimeConstraintMeta; |
81 | | -import am.ik.yavi.meta.LocalTimeConstraintMeta; |
82 | | -import am.ik.yavi.meta.LongConstraintMeta; |
83 | | -import am.ik.yavi.meta.ObjectConstraintMeta; |
84 | | -import am.ik.yavi.meta.OffsetDateTimeConstraintMeta; |
85 | | -import am.ik.yavi.meta.ShortConstraintMeta; |
86 | | -import am.ik.yavi.meta.StringConstraintMeta; |
87 | | -import am.ik.yavi.meta.YearConstraintMeta; |
88 | | -import am.ik.yavi.meta.YearMonthConstraintMeta; |
89 | | -import am.ik.yavi.meta.ZonedDateTimeConstraintMeta; |
| 24 | +import am.ik.yavi.meta.*; |
90 | 25 |
|
91 | 26 | import java.math.BigDecimal; |
92 | 27 | 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; |
| 28 | +import java.time.*; |
| 29 | +import java.util.*; |
109 | 30 | import java.util.function.Consumer; |
110 | 31 | import java.util.function.Function; |
111 | 32 | import java.util.function.Predicate; |
@@ -737,21 +658,22 @@ public ValidatorBuilder<T> _doubleArray(ToDoubleArray<T> f, String name, |
737 | 658 | */ |
738 | 659 | public <C extends T> ValidatorBuilder<T> constraintOnClass(Class<C> clazz, |
739 | 660 | Validator<C> cValidator) { |
740 | | - Validator<T> TValidator = new ValidatorBuilder<T>() |
741 | | - .nest(clazz::cast, clazz.getName(), cValidator).build(); |
| 661 | + Validatable<T> validatable = new InheritanceValidator<>(clazz, cValidator); |
742 | 662 |
|
743 | | - return constraintOnCondition(getClassConstraintCondition(clazz), TValidator); |
| 663 | + this.conditionalValidators |
| 664 | + .add(new Pair<>(getClassConstraintCondition(clazz), validatable)); |
| 665 | + |
| 666 | + return this; |
744 | 667 | } |
745 | 668 |
|
746 | 669 | /** |
747 | 670 | * @since 0.14.0 |
748 | 671 | */ |
749 | 672 | public <C extends T> ValidatorBuilder<T> constraintOnClass(Class<C> clazz, |
750 | 673 | ValidatorBuilderConverter<C> converter) { |
751 | | - ValidatorBuilderConverter<T> tConverter = tValidatorBuilder -> tValidatorBuilder |
752 | | - .nest(clazz::cast, clazz.getName(), converter); |
| 674 | + Validator<C> cValidator = converter.apply(new ValidatorBuilder<>()).build(); |
753 | 675 |
|
754 | | - return constraintOnCondition(getClassConstraintCondition(clazz), tConverter); |
| 676 | + return constraintOnClass(clazz, cValidator); |
755 | 677 | } |
756 | 678 |
|
757 | 679 | private <C extends T> ConstraintCondition<T> getClassConstraintCondition( |
@@ -1025,6 +947,7 @@ protected final <N> ValidatorBuilder<T> nest(Function<T, N> nested, String name, |
1025 | 947 | .forEach(this.appendNestedConditionalValidator(nested, name)); |
1026 | 948 | builder.collectionValidators |
1027 | 949 | .forEach(appendNestedCollectionValidator(nested, name)); |
| 950 | + |
1028 | 951 | return this; |
1029 | 952 | } |
1030 | 953 |
|
|
0 commit comments