Skip to content
This repository has been archived by the owner on Feb 7, 2024. It is now read-only.

Commit

Permalink
Merge branch 'file-validators-strings'
Browse files Browse the repository at this point in the history
  • Loading branch information
britter committed Aug 1, 2015
2 parents fecd5c3 + a50bd2e commit 1b79466
Show file tree
Hide file tree
Showing 34 changed files with 769 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
*/
package com.github.britter.beanvalidators.file;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.io.File;

public class AbsoluteConstraintValidator implements ConstraintValidator<Absolute, File> {
public class AbsoluteConstraintValidator extends AbstractFileConstraintValidator<Absolute> {

@Override
public void initialize(Absolute constraintAnnotation) {
super.initialize(constraintAnnotation);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.github.britter.beanvalidators.file;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import javax.validation.ValidationException;
import java.io.File;
import java.lang.annotation.Annotation;

import org.apache.commons.lang3.StringUtils;

abstract class AbstractFileConstraintValidator<A extends Annotation> implements ConstraintValidator<A, Object> {

private Class<? extends Annotation> constraintAnnotation;

@Override
public void initialize(A constraintAnnotation) {
this.constraintAnnotation = constraintAnnotation.annotationType();
}

@Override
public boolean isValid(Object value, ConstraintValidatorContext context) {
if (value == null) {
return true;
}
if (value instanceof File) {
return isValid((File) value, context);
} else if (value instanceof String) {
String str = (String) value;
return StringUtils.isBlank(str) || isValid(new File(str), context);
} else {
throw new ValidationException("@" + constraintAnnotation.getSimpleName()
+ " can not be applied to instances of " + value.getClass());
}
}

public abstract boolean isValid(File value, ConstraintValidatorContext context);
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
*/
package com.github.britter.beanvalidators.file;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.io.File;

public class DirectoryConstraintValidator implements ConstraintValidator<Directory, File> {
public class DirectoryConstraintValidator extends AbstractFileConstraintValidator<Directory> {

@Override
public void initialize(Directory constraintAnnotation) {
super.initialize(constraintAnnotation);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
*/
package com.github.britter.beanvalidators.file;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.io.File;

public class ExecutableConstraintValidator implements ConstraintValidator<Executable, File> {
public class ExecutableConstraintValidator extends AbstractFileConstraintValidator<Executable> {

@Override
public void initialize(Executable constraintAnnotation) {
super.initialize(constraintAnnotation);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
*/
package com.github.britter.beanvalidators.file;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.io.File;

public class ExistingConstraintValidator implements ConstraintValidator<Existing, File> {
public class ExistingConstraintValidator extends AbstractFileConstraintValidator<Existing> {

@Override
public void initialize(Existing constraintAnnotation) {
super.initialize(constraintAnnotation);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@
*/
package com.github.britter.beanvalidators.file;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

public class FileConstraintValidator implements ConstraintValidator<File, java.io.File> {
public class FileConstraintValidator extends AbstractFileConstraintValidator<File> {

@Override
public void initialize(File constraintAnnotation) {
super.initialize(constraintAnnotation);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
*/
package com.github.britter.beanvalidators.file;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.io.File;

public class HiddenConstraintValidator implements ConstraintValidator<Hidden, File> {
public class HiddenConstraintValidator extends AbstractFileConstraintValidator<Hidden> {

@Override
public void initialize(Hidden constraintAnnotation) {
super.initialize(constraintAnnotation);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
*/
package com.github.britter.beanvalidators.file;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.io.File;

public class NotAbsoluteConstraintValidator implements ConstraintValidator<NotAbsolute, File> {
public class NotAbsoluteConstraintValidator extends AbstractFileConstraintValidator<NotAbsolute> {

@Override
public void initialize(NotAbsolute constraintAnnotation) {
super.initialize(constraintAnnotation);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
*/
package com.github.britter.beanvalidators.file;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.io.File;

public class NotDirectoryConstraintValidator implements ConstraintValidator<NotDirectory, File> {
public class NotDirectoryConstraintValidator extends AbstractFileConstraintValidator<NotDirectory> {

@Override
public void initialize(NotDirectory constraintAnnotation) {
super.initialize(constraintAnnotation);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
*/
package com.github.britter.beanvalidators.file;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.io.File;

public class NotExecutableConstraintValidator implements ConstraintValidator<NotExecutable, File> {
public class NotExecutableConstraintValidator extends AbstractFileConstraintValidator<NotExecutable> {

@Override
public void initialize(NotExecutable constraintAnnotation) {
super.initialize(constraintAnnotation);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
*/
package com.github.britter.beanvalidators.file;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.io.File;

public class NotExistingConstraintValidator implements ConstraintValidator<NotExisting, File> {
public class NotExistingConstraintValidator extends AbstractFileConstraintValidator<NotExisting> {

@Override
public void initialize(NotExisting constraintAnnotation) {
super.initialize(constraintAnnotation);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
*/
package com.github.britter.beanvalidators.file;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.io.File;

public class NotFileConstraintValidator implements ConstraintValidator<NotFile, File> {
public class NotFileConstraintValidator extends AbstractFileConstraintValidator<NotFile> {

@Override
public void initialize(NotFile constraintAnnotation) {
super.initialize(constraintAnnotation);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
*/
package com.github.britter.beanvalidators.file;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.io.File;

public class NotHiddenConstraintValidator implements ConstraintValidator<NotHidden, File> {
public class NotHiddenConstraintValidator extends AbstractFileConstraintValidator<NotHidden> {

@Override
public void initialize(NotHidden constraintAnnotation) {
super.initialize(constraintAnnotation);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
*/
package com.github.britter.beanvalidators.file;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.io.File;

public class NotReadableConstraintValidator implements ConstraintValidator<NotReadable, File> {
public class NotReadableConstraintValidator extends AbstractFileConstraintValidator<NotReadable> {

@Override
public void initialize(NotReadable constraintAnnotation) {
super.initialize(constraintAnnotation);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
*/
package com.github.britter.beanvalidators.file;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.io.File;

public class NotWritableConstraintValidator implements ConstraintValidator<NotWritable, File> {
public class NotWritableConstraintValidator extends AbstractFileConstraintValidator<NotWritable> {

@Override
public void initialize(NotWritable constraintAnnotation) {
super.initialize(constraintAnnotation);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
*/
package com.github.britter.beanvalidators.file;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.io.File;

public class ReadableConstraintValidator implements ConstraintValidator<Readable, File> {
public class ReadableConstraintValidator extends AbstractFileConstraintValidator<Readable> {

@Override
public void initialize(Readable constraintAnnotation) {
super.initialize(constraintAnnotation);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
*/
package com.github.britter.beanvalidators.file;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.io.File;

public class WritableConstraintValidator implements ConstraintValidator<Writable, File> {
public class WritableConstraintValidator extends AbstractFileConstraintValidator<Writable> {

@Override
public void initialize(Writable constraintAnnotation) {
super.initialize(constraintAnnotation);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
package com.github.britter.beanvalidators.file;

import javax.validation.ValidationException;
import java.io.File;

import com.github.britter.beanvalidators.ValidationWrapper;
Expand Down Expand Up @@ -64,8 +65,31 @@ public void shouldNotValidateNonExistingFile() throws Exception {
validator.assertViolation("file");
}

@Test
public void shouldValidateAbsolutePathString() throws Exception {
fileBean.path = "/absolute/path";

validator.assertNoViolations("path");
}

@Test
public void shouldNotValidateRelativePathString() throws Exception {
fileBean.path = "is/not/absolute";

validator.assertViolation("path");
}

@Test(expected = ValidationException.class)
public void shouldThrowExceptionWhenWrongTypeIsAnnotated() throws Exception {
validator.validate("object");
}

private static final class FileBean {
@Absolute
private File file;
@Absolute
private String path;
@Absolute
private Object object = new Object();
}
}
Loading

0 comments on commit 1b79466

Please sign in to comment.