errors = fieldErrors.computeIfAbsent(field, k -> new LinkedList<>());
+ errors.add(new Error(code, message, data, values));
return this;
}
+ public Errors addFieldError(String field, String code, String message, Object... values) {
+ return addFieldError(field, code, message, null, values);
+ }
+
public Errors addGeneralError(String code, String message, Object... values) {
generalErrors.add(new Error(code, message, values));
return this;
@@ -69,6 +67,9 @@ public Errors addGeneralError(String code, String message, Object... values) {
*
* This is a little loose, making the caller know which code prefixes the Validator is using, an enum or something
* might work nicely... for now keeping this.
+ *
+ * @param codePrefix the code prefix.
+ * @return true if an error code with this prefix exists in general or field errors.
*/
public boolean containsError(String codePrefix) {
for (Error error : generalErrors) {
@@ -105,6 +106,21 @@ public boolean equals(Object o) {
return fieldErrors.equals(errors.fieldErrors) && generalErrors.equals(errors.generalErrors);
}
+ public Error getFieldError(String field, String code) {
+ List errors = fieldErrors.get(field);
+ if (errors == null) {
+ return null;
+ }
+
+ for (Error fieldError : errors) {
+ if (fieldError.code.equals(code)) {
+ return fieldError;
+ }
+ }
+
+ return null;
+ }
+
@Override
public int hashCode() {
int result = generalErrors.hashCode();