io.mstream.trader.commons.ratpack.exception.ValidationErrorHandler Maven / Gradle / Ivy
The newest version!
package io.mstream.trader.commons.ratpack.exception;
import io.mstream.trader.commons.http.RequestContext;
import io.mstream.trader.commons.validation.ValidationError;
import io.mstream.trader.commons.validation.ValidationResult;
import io.mstream.trader.commons.validation.request.RequestValidator;
import io.netty.handler.codec.http.HttpResponseStatus;
import org.slf4j.Logger;
import ratpack.http.Request;
import java.util.Set;
import java.util.function.Predicate;
import static org.slf4j.LoggerFactory.getLogger;
import static ratpack.jackson.Jackson.json;
public abstract class ValidationErrorHandler implements Predicate {
private static final Logger LOGGER = getLogger(ValidationErrorHandler.class);
private final RequestValidator requestValidator;
protected ValidationErrorHandler(RequestValidator requestValidator) {
this.requestValidator = requestValidator;
}
@Override
public boolean test(RequestContext requestContext) {
ValidationResult validationResult = requestValidator.validate(requestContext);
if (!validationResult.isValid()) {
Request request = requestContext.getContext().getRequest();
Set validationErrors =
validationResult.getValidationErrors();
LOGGER.debug(
"request {} {} rejected because of validation errors: {}",
request.getMethod(),
request.getPath(),
validationErrors);
requestContext.getContext().getResponse()
.status(HttpResponseStatus.BAD_REQUEST.code());
requestContext.getContext().render(json(validationErrors));
return false;
}
return true;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy