@@ -68,13 +68,17 @@ public boolean tautology() {
68
68
69
69
@ Override
70
70
public ValidationResult evaluate (Value val , boolean failFast ) throws ExecutionException {
71
- Message message = val .messageValue ();
71
+ MessageLike message = val .messageValue ();
72
72
if (message == null ) {
73
73
return ValidationResult .EMPTY ;
74
74
}
75
75
boolean hasField ;
76
76
if (descriptor .isRepeated ()) {
77
- hasField = message .getRepeatedFieldCount (descriptor ) != 0 ;
77
+ if (descriptor .isMapField ()) {
78
+ hasField = !message .getField (descriptor ).mapValue ().isEmpty ();
79
+ } else {
80
+ hasField = !message .getField (descriptor ).repeatedValue ().isEmpty ();
81
+ }
78
82
} else {
79
83
hasField = message .hasField (descriptor );
80
84
}
@@ -90,12 +94,11 @@ public ValidationResult evaluate(Value val, boolean failFast) throws ExecutionEx
90
94
if (ignoreEmpty && !hasField ) {
91
95
return ValidationResult .EMPTY ;
92
96
}
93
- Object fieldValue = message .getField (descriptor );
94
- if (ignoreDefault && Objects .equals (zero , fieldValue )) {
97
+ Value fieldValue = message .getField (descriptor );
98
+ if (ignoreDefault && Objects .equals (zero , fieldValue . jvmValue ( Object . class ) )) {
95
99
return ValidationResult .EMPTY ;
96
100
}
97
- ValidationResult evalResult =
98
- valueEvaluator .evaluate (new ObjectValue (descriptor , fieldValue ), failFast );
101
+ ValidationResult evalResult = valueEvaluator .evaluate (fieldValue , failFast );
99
102
List <Violation > violations =
100
103
ErrorPathUtils .prefixErrorPaths (evalResult .getViolations (), "%s" , descriptor .getName ());
101
104
return new ValidationResult (violations );
0 commit comments