I made a custom validation annotation for unique email (When user registers itself, program checks if email is already in database).
Everything works just fine, but when I need to modify user's info and not to create a new one I run into a problem that says "Email is already in use"
Can I somehow turn off only @EmailAvailablity
validation(I need the others like email pattern and password validation)?
All validation annotations are in the same User bean.
These ARE MY CUSTOM VALIDATOR CLASS
- User AVailablity
package com.vicky.finalYearProject.customValidations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.validation.Constraint;
import javax.validation.Payload;
@Constraint(validatedBy = UserAvailabilityValidator.class)
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface UserAvailability {
public String message() default "Email is already Registered";
public Class<?>[] groups() default { };
public Class<? extends Payload>[] payload() default { };
}
- Constraint Validator
package com.vicky.finalYearProject.customValidations;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import com.vicky.finalYearProject.Service.CheckUserAvailabilityService;
public class UserAvailabilityValidator implements ConstraintValidator<UserAvailability, String>{
CheckUserAvailabilityService availabilityService = new CheckUserAvailabilityService();
@Override
public void initialize(UserAvailability constraintAnnotation) {
ConstraintValidator.super.initialize(constraintAnnotation);
}
@Override
public boolean isValid(String email, ConstraintValidatorContext context) {
return availabilityService.isAvailable(email);//return true or false;
}
}
i have checked one question similar :
How to prevent Spring validation on update
but i cant understand it...
Thank You.