
com.crabshue.commons.validations.path.validators.FilePathValidator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of commons-validations Show documentation
Show all versions of commons-validations Show documentation
Library for annotation-based validations.
The newest version!
package com.crabshue.commons.validations.path.validators;
import com.crabshue.commons.validations.ObjectValidator;
import com.crabshue.commons.validations.path.annotations.PathAccessMode;
import com.crabshue.commons.validations.path.annotations.ValidFilePath;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.nio.file.Files;
import java.nio.file.Path;
public class FilePathValidator implements ConstraintValidator {
private PathAccessMode[] accessModes;
@Override
public void initialize(ValidFilePath constraintAnnotation) {
accessModes = constraintAnnotation.accessModes();
}
@Override
public boolean isValid(Path path, ConstraintValidatorContext constraintValidatorContext) {
if (path != null) {
if (!Files.exists(path)) {
ObjectValidator.setErrorMessage(constraintValidatorContext, "The file '${validatedValue}' does not exist");
return false;
}
if (!Files.isRegularFile(path)) {
ObjectValidator.setErrorMessage(constraintValidatorContext, "'${validatedValue}' is not a file");
return false;
}
for (PathAccessMode accessMode : accessModes) {
if (!accessMode.canAccessInMode(path)) {
ObjectValidator.setErrorMessage(constraintValidatorContext, "The file '${validatedValue}' cannot be accessed in " + accessMode.getAccessMode());
return false;
}
}
}
return true;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy