166e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilsonpackage javax.annotation; 266e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson 366e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilsonimport java.lang.annotation.Documented; 466e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilsonimport java.lang.annotation.Retention; 566e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilsonimport java.lang.annotation.RetentionPolicy; 666e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson 766e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilsonimport javax.annotation.meta.TypeQualifier; 866e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilsonimport javax.annotation.meta.When; 966e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson 1066e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson/** 1166e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson * This annotation a value that is of a particular syntax, such as Java syntax 1266e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson * or regular expression syntax. This can be used to provide syntax checking of 1366e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson * constant values at compile time, run time checking at runtime, and can assist 1466e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson * IDEs in deciding how to interpret String constants (e.g., should a 1566e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson * refactoring that renames method x() to y() update the String constant "x()"). 1666e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson * 1766e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson * 1866e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson */ 1966e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson@Documented 2066e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson@TypeQualifier(applicableTo = String.class) 2166e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson@Retention(RetentionPolicy.RUNTIME) 2266e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilsonpublic @interface Syntax { 2366e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson /** 2466e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson * Value indicating the particular syntax denoted by this annotation. 2566e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson * Different tools will recognize different syntaxes, but some proposed 2666e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson * canonical values are: 2766e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson * <ul> 2866e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson * <li> "Java" 2966e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson * <li> "RegEx" 3066e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson * <li> "JavaScript" 3166e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson * <li> "Ruby" 3266e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson * <li> "Groovy" 3366e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson * <li> "SQL" 3466e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson * <li> "FormatString" 3566e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson * </ul> 3666e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson * 3766e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson * Syntax names can be followed by a colon and a list of key value pairs, 3866e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson * separated by commas. For example, "SQL:dialect=Oracle,version=2.3". Tools 3966e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson * should ignore any keys they don't recognize. 4066e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson */ 4166e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson String value(); 4266e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson 4366e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson When when() default When.ALWAYS; 4466e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson} 45