Skip to content

Instantly share code, notes, and snippets.

@Kapcash
Created October 24, 2019 16:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Kapcash/d69deb8d123882cf7e34c35552acf91d to your computer and use it in GitHub Desktop.
Save Kapcash/d69deb8d123882cf7e34c35552acf91d to your computer and use it in GitHub Desktop.
Java Spring validator decorator to restreint possibles values from Enum
@Target({ FIELD })
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = { EnumRestreintValidator.class })
public @interface EnumRestreint {
String message() default "The enum value is not included in the possibles values.";
String[] authorizedFields() default {};
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
/**
* Restreint possibles values from Enum
* @author Florent Catiau-Tristant <florent.catiau-tristant@partnre.com>
*/
public class EnumRestreintValidator implements ConstraintValidator<EnumRestreint, Enum<?>> {
/** The possible values you can pick from the parameterized enum */
Set<String> validFields;
@Override
public void initialize(EnumRestreint constraint) {
validFields = Arrays.stream(constraint.authorizedFields()).collect(Collectors.toSet());
}
@Override
public boolean isValid(Enum<?> enumValue, ConstraintValidatorContext constraintValidatorContext) {
return validFields.contains(enumValue.name());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment