Internal: remove code duplication in QueryValidationException

The class can now simply extend ValidationException and rely on the base class.
This commit is contained in:
javanna 2015-08-28 09:35:43 +02:00 committed by Luca Cavanna
parent 350cba98cf
commit 24e53b5f8f
1 changed files with 8 additions and 46 deletions

View File

@ -19,66 +19,29 @@
package org.elasticsearch.index.query; package org.elasticsearch.index.query;
import java.util.ArrayList; import org.elasticsearch.common.ValidationException;
import java.util.List; import java.util.List;
/** /**
* This exception can be used to indicate various reasons why validation of a query has failed. * This exception can be used to indicate various reasons why validation of a query has failed.
*/ */
public class QueryValidationException extends IllegalArgumentException { public class QueryValidationException extends ValidationException {
private final List<String> validationErrors = new ArrayList<>();
public QueryValidationException(String error) {
super("query validation failed");
validationErrors.add(error);
}
public QueryValidationException(List<String> errors) {
super("query validation failed");
validationErrors.addAll(errors);
}
public void addValidationError(String error) {
validationErrors.add(error);
}
public void addValidationErrors(Iterable<String> errors) {
for (String error : errors) {
validationErrors.add(error);
}
}
public List<String> validationErrors() {
return validationErrors;
}
@Override
public String getMessage() {
StringBuilder sb = new StringBuilder();
sb.append("Validation Failed: ");
int index = 0;
for (String error : validationErrors) {
sb.append(++index).append(": ").append(error).append(";");
}
return sb.toString();
}
/** /**
* Helper method than can be used to add error messages to an existing {@link QueryValidationException}. * Helper method than can be used to add error messages to an existing {@link QueryValidationException}.
* When passing {@code null} as the initial exception, a new exception is created. * When passing {@code null} as the initial exception, a new exception is created.
* *
* @param queryId * @param queryId the query that caused the error
* @param validationError the error message to add to an initial exception * @param validationError the error message to add to an initial exception
* @param validationException an initial exception. Can be {@code null}, in which case a new exception is created. * @param validationException an initial exception. Can be {@code null}, in which case a new exception is created.
* @return a {@link QueryValidationException} with added validation error message * @return a {@link QueryValidationException} with added validation error message
*/ */
public static QueryValidationException addValidationError(String queryId, String validationError, QueryValidationException validationException) { public static QueryValidationException addValidationError(String queryId, String validationError, QueryValidationException validationException) {
if (validationException == null) { if (validationException == null) {
validationException = new QueryValidationException("[" + queryId + "] " + validationError); validationException = new QueryValidationException();
} else {
validationException.addValidationError(validationError);
} }
validationException.addValidationError("[" + queryId + "] " + validationError);
return validationException; return validationException;
} }
@ -91,10 +54,9 @@ public class QueryValidationException extends IllegalArgumentException {
*/ */
public static QueryValidationException addValidationErrors(List<String> validationErrors, QueryValidationException validationException) { public static QueryValidationException addValidationErrors(List<String> validationErrors, QueryValidationException validationException) {
if (validationException == null) { if (validationException == null) {
validationException = new QueryValidationException(validationErrors); validationException = new QueryValidationException();
} else {
validationException.addValidationErrors(validationErrors);
} }
validationException.addValidationErrors(validationErrors);
return validationException; return validationException;
} }
} }