1package javax.annotation; 2 3import java.lang.annotation.Documented; 4import java.lang.annotation.Retention; 5import java.lang.annotation.RetentionPolicy; 6import java.util.regex.Pattern; 7 8import javax.annotation.meta.TypeQualifier; 9import javax.annotation.meta.TypeQualifierValidator; 10import javax.annotation.meta.When; 11 12@Documented 13@TypeQualifier(applicableTo = String.class) 14@Retention(RetentionPolicy.RUNTIME) 15public @interface MatchesPattern { 16 @RegEx 17 String value(); 18 19 int flags() default 0; 20 21 static class Checker implements TypeQualifierValidator<MatchesPattern> { 22 public When forConstantValue(MatchesPattern annotation, Object value) { 23 Pattern p = Pattern.compile(annotation.value(), annotation.flags()); 24 if (p.matcher(((String) value)).matches()) 25 return When.ALWAYS; 26 return When.NEVER; 27 } 28 29 } 30} 31