package io.vertx.ext.web.api.validation.impl;

import io.vertx.ext.web.api.RequestParameter;
import io.vertx.ext.web.api.validation.ParameterTypeValidator;
import io.vertx.ext.web.api.validation.ValidationException;

import java.util.List;

Author:Francesco Guardiani @slinkydeveloper
/** * @author Francesco Guardiani @slinkydeveloper */
public class OneOfTypeValidator implements ParameterTypeValidator { List<ParameterTypeValidator> validators; public OneOfTypeValidator(List<ParameterTypeValidator> validators) { this.validators = validators; } @Override public RequestParameter isValid(String value) throws ValidationException { RequestParameter resultParam = null; for (ParameterTypeValidator validator : validators) { try { RequestParameter validatedParam = validator.isValid(value); if (validatedParam != null) { if (resultParam == null) resultParam = validatedParam; else throw ValidationException.ValidationExceptionFactory.generateNotMatchValidationException(value + " match " + "" + "multiple schemas inside oneOf field"); } } catch (ValidationException e) { } } if (resultParam != null) return resultParam; else throw ValidationException.ValidationExceptionFactory.generateNotMatchValidationException(value + " doesn't " + "match any of oneOf schemas"); } }