Я хочу проверить строку по набору значений с помощью аннотации. Я хочу в основном это
@ValidateString(enumClass=com.co.enum)
String dataType;
int maxValue;
int minValue;
int precision;
или
@ValidateString(values={"String","Boolean", "Integer"})
String dataType;
int maxValue;
int minValue;
int precision;
. Я также хочу сделать некоторую проверку других переменных в зависимости от значения, установленного в dataType,
if (dataType = "String") maxValue, minValue, precision все должны быть нулевыми или нулевыми.
Я не могу придумать, как добиться этого с помощью специальных аннотаций .. . .
Кто-нибудь, пожалуйста, помогите мне
Немного импровизации с Потоком API Java 8
import static java.util.stream.Collectors.toList;
import static java.util.stream.Stream.of;
import java.util.List;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
public class EnumValidatorImpl implements ConstraintValidator<EnumValidator, String>
{
private List<String> valueList = null;
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
return valueList.contains(value.toUpperCase());
}
@Override
public void initialize(EnumValidator constraintAnnotation) {
valueList = of(constraintAnnotation.enumClazz().getEnumConstants()).map(e->e.toString()).collect(toList());
}
}