| 
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