|
54 | 54 | import am.ik.yavi.core.ConstraintPredicate; |
55 | 55 | import am.ik.yavi.core.ConstraintPredicates; |
56 | 56 | import am.ik.yavi.core.CustomConstraint; |
| 57 | +import am.ik.yavi.core.InheritanceValidator; |
57 | 58 | import am.ik.yavi.core.NestedCollectionValidator; |
58 | 59 | import am.ik.yavi.core.NestedConstraintCondition; |
59 | 60 | import am.ik.yavi.core.NestedConstraintPredicates; |
|
67 | 68 | import am.ik.yavi.fn.Pair; |
68 | 69 | import am.ik.yavi.message.MessageFormatter; |
69 | 70 | 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; |
| 71 | +import am.ik.yavi.meta.*; |
90 | 72 |
|
91 | 73 | import java.math.BigDecimal; |
92 | 74 | 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; |
| 75 | +import java.time.*; |
| 76 | +import java.util.*; |
109 | 77 | import java.util.function.Consumer; |
110 | 78 | import java.util.function.Function; |
111 | 79 | import java.util.function.Predicate; |
@@ -737,21 +705,22 @@ public ValidatorBuilder<T> _doubleArray(ToDoubleArray<T> f, String name, |
737 | 705 | */ |
738 | 706 | public <C extends T> ValidatorBuilder<T> constraintOnClass(Class<C> clazz, |
739 | 707 | Validator<C> cValidator) { |
740 | | - Validator<T> TValidator = new ValidatorBuilder<T>() |
741 | | - .nest(clazz::cast, clazz.getName(), cValidator).build(); |
| 708 | + Validatable<T> validatable = new InheritanceValidator<>(clazz, cValidator); |
742 | 709 |
|
743 | | - return constraintOnCondition(getClassConstraintCondition(clazz), TValidator); |
| 710 | + this.conditionalValidators |
| 711 | + .add(new Pair<>(getClassConstraintCondition(clazz), validatable)); |
| 712 | + |
| 713 | + return this; |
744 | 714 | } |
745 | 715 |
|
746 | 716 | /** |
747 | 717 | * @since 0.14.0 |
748 | 718 | */ |
749 | 719 | public <C extends T> ValidatorBuilder<T> constraintOnClass(Class<C> clazz, |
750 | 720 | ValidatorBuilderConverter<C> converter) { |
751 | | - ValidatorBuilderConverter<T> tConverter = tValidatorBuilder -> tValidatorBuilder |
752 | | - .nest(clazz::cast, clazz.getName(), converter); |
| 721 | + Validator<C> cValidator = converter.apply(new ValidatorBuilder<>()).build(); |
753 | 722 |
|
754 | | - return constraintOnCondition(getClassConstraintCondition(clazz), tConverter); |
| 723 | + return constraintOnClass(clazz, cValidator); |
755 | 724 | } |
756 | 725 |
|
757 | 726 | private <C extends T> ConstraintCondition<T> getClassConstraintCondition( |
@@ -1025,6 +994,7 @@ protected final <N> ValidatorBuilder<T> nest(Function<T, N> nested, String name, |
1025 | 994 | .forEach(this.appendNestedConditionalValidator(nested, name)); |
1026 | 995 | builder.collectionValidators |
1027 | 996 | .forEach(appendNestedCollectionValidator(nested, name)); |
| 997 | + |
1028 | 998 | return this; |
1029 | 999 | } |
1030 | 1000 |
|
|
0 commit comments