Spring. Creating a Custom Java Annotaiton

 package com.luv2code.springmvcdemo.validation;


import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Constraint(validatedBy = CourseCodeConstraintValidator.class)
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface CourseCode {

// define default course code
public String value() default "LUV";

// define default error message
public String message() default "must start with LUV";

// define default groups
public Class<?>[] groups() default {};

// define default payloads
public Class<? extends Payload>[] payload() default {};
}
package com.luv2code.springmvcdemo.validation;

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

public class CourseCodeConstraintValidator implements ConstraintValidator<CourseCode, String> {

private String coursePrefix;

@Override
public void initialize(CourseCode constraintAnnotation) {
coursePrefix = constraintAnnotation.value();
}

@Override
public boolean isValid(String theCode, ConstraintValidatorContext constraintValidatorContext) {
boolean result;
if (theCode != null) {
result = theCode.startsWith(coursePrefix);
} else {
result = true;
}
return result;
}
}
package com.luv2code.springmvcdemo;


import com.luv2code.springmvcdemo.validation.CourseCode;

import javax.validation.constraints.*;

public class Customer {

private String firstName;

@NotNull(message = "is required")
@Size(min = 1, message = "is required")
private String lastName;

@NotNull(message = "is required")
@Min(value = 0, message = "must be grater or equal to zero")
@Max(value = 10, message = "must be less than or equal to ten")
private Integer freePasses;

@Pattern(regexp = "^[a-zA-Z0-9]{5}", message = "only 5 characters of digits is allowed")
private String postalCode;

// @CourseCode(value = "TOPS", message = "must start with TOPS")
@CourseCode
private String courseCode;

public String getFirstName() {
return firstName;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

public Integer getFreePasses() {
return freePasses;
}

public void setFreePasses(Integer freePasses) {
this.freePasses = freePasses;
}

public String getPostalCode() {
return postalCode;
}

public void setPostalCode(String postalCode) {
this.postalCode = postalCode;
}

public String getCourseCode() {
return courseCode;
}

public void setCourseCode(String courseCode) {
this.courseCode = courseCode;
}
}

Комментарии

Популярные сообщения из этого блога

Lesson1: JDK, JVM, JRE

SE_21_Lesson_11: Inheritance, Polymorphism

SE_21_Lesson_9: Initialization Blocks, Wrapper types, String class