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 abstract class SingleValueParameterTypeValidator<T> implements ParameterTypeValidator {
public T defaultValue;
public SingleValueParameterTypeValidator(T defaultValue) {
this.defaultValue = defaultValue;
}
public abstract RequestParameter isValidSingleParam(String value);
@Override
public RequestParameter isValid(String value) {
if (value != null) {
return isValidSingleParam(value);
} else
if (this.hasDefault())
return RequestParameter.create(getDefault());
else
throw ValidationException.ValidationExceptionFactory.generateNotMatchValidationException("Invalid value");
}
@Override
public RequestParameter isValidCollection(List<String> value) throws ValidationException {
if (value.size() > 1)
throw ValidationException.ValidationExceptionFactory.generateUnexpectedArrayValidationException();
return this.isValid(value.get(0));
}
@Override
public T getDefault() {
return defaultValue;
}
}