package com.sequenceiq.cloudbreak.controller.validation.stack;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Component;
import com.sequenceiq.cloudbreak.cloud.model.StackParamValidation;
import com.sequenceiq.cloudbreak.controller.BadRequestException;
@Component
public class ParametersRegexValidator implements ParameterValidator {
@Override
public <O, E extends StackParamValidation> void validate(Map<String, O> parameters, List<E> paramsList) {
for (StackParamValidation param : paramsList) {
if (param.getRegex().isPresent()
&& parameters.containsKey(param.getName())
&& !String.valueOf(parameters.get(param.getName())).matches(param.getRegex().get())) {
throw new BadRequestException(String.format("%s does not match regex: %s.",
param.getName(), param.getRegex().get()));
}
}
}
@Override
public ValidatorType getValidatorType() {
return ValidatorType.REGEX;
}
}