package net.formio.validation.constraints; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; import net.formio.upload.UploadedFile; /** * Validator for {@link FileExtension}. * * @author Karel Stefan */ public class FileExtensionConstraintValidator implements ConstraintValidator<FileExtension, Object> { private String[] allowedExtensions; private boolean ignoreCase; @Override public void initialize(FileExtension annotation) { allowedExtensions = annotation.value(); ignoreCase = annotation.ignoreCase(); } @Override public boolean isValid(Object input, ConstraintValidatorContext ignored) { if (input == null) { return true; } else if (input instanceof String) { return isValidStr((String) input); } else if (input instanceof UploadedFile) { return isValidStr(((UploadedFile) input).getFileName()); } throw new IllegalStateException("FileExtensionValidator is not applicable to the field type " + getClass().getName()); } protected String[] getAllowedExtensions() { return allowedExtensions; } protected boolean isIgnoreCase() { return ignoreCase; } private boolean isValidStr(String input) { if (input.isEmpty()) { return true; } return FileExtensionValidation.hasFileExtension(input, getAllowedExtensions(), isIgnoreCase()); } }