package com.uaihebert.uaimockserver.facade; import com.uaihebert.uaimockserver.model.UaiRequest; import com.uaihebert.uaimockserver.validator.BodyValidator; import com.uaihebert.uaimockserver.validator.ContentTypeValidator; import com.uaihebert.uaimockserver.validator.OptionalHeaderValidator; import com.uaihebert.uaimockserver.validator.OptionalQueryParamValidator; import com.uaihebert.uaimockserver.validator.RequestDataValidator; import com.uaihebert.uaimockserver.validator.RequiredHeaderValidator; import com.uaihebert.uaimockserver.validator.RequiredQueryParamValidator; import io.undertow.server.HttpServerExchange; import java.util.ArrayList; import java.util.List; public final class RequestValidatorFacade { private static final List<RequestDataValidator> REQUEST_DATA_VALIDATOR_LIST = new ArrayList<RequestDataValidator>(); static { REQUEST_DATA_VALIDATOR_LIST.add(new BodyValidator()); REQUEST_DATA_VALIDATOR_LIST.add(new ContentTypeValidator()); REQUEST_DATA_VALIDATOR_LIST.add(new OptionalHeaderValidator()); REQUEST_DATA_VALIDATOR_LIST.add(new RequiredHeaderValidator()); REQUEST_DATA_VALIDATOR_LIST.add(new OptionalQueryParamValidator()); REQUEST_DATA_VALIDATOR_LIST.add(new RequiredQueryParamValidator()); } private RequestValidatorFacade() { } public static RequestAnalysisResult isValidRequest(final UaiRequest uaiRequest, final HttpServerExchange exchange) { final RequestAnalysisResult requestAnalysisResult = new RequestAnalysisResult(); for (RequestDataValidator requestDataValidator : REQUEST_DATA_VALIDATOR_LIST) { requestDataValidator.validate(uaiRequest, exchange, requestAnalysisResult); } return requestAnalysisResult; } public static class RequestAnalysisResult { private boolean valid = true; private boolean abortTheRequest; public boolean isValid() { return valid; } public boolean isAbortTheRequest() { return abortTheRequest; } public void abortTheRequest() { setInvalid(); abortTheRequest = true; } public void setInvalid() { valid = false; } } }