|
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