• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package javax.annotation;
2 
3 import java.lang.annotation.Documented;
4 import java.lang.annotation.Retention;
5 import java.lang.annotation.RetentionPolicy;
6 
7 import javax.annotation.meta.TypeQualifier;
8 import javax.annotation.meta.When;
9 
10 /**
11  * This annotation a value that is of a particular syntax, such as Java syntax
12  * or regular expression syntax. This can be used to provide syntax checking of
13  * constant values at compile time, run time checking at runtime, and can assist
14  * IDEs in deciding how to interpret String constants (e.g., should a
15  * refactoring that renames method x() to y() update the String constant "x()").
16  *
17  *
18  */
19 @Documented
20 @TypeQualifier(applicableTo = String.class)
21 @Retention(RetentionPolicy.RUNTIME)
22 public @interface Syntax {
23     /**
24      * Value indicating the particular syntax denoted by this annotation.
25      * Different tools will recognize different syntaxes, but some proposed
26      * canonical values are:
27      * <ul>
28      * <li> "Java"
29      * <li> "RegEx"
30      * <li> "JavaScript"
31      * <li> "Ruby"
32      * <li> "Groovy"
33      * <li> "SQL"
34      * <li> "FormatString"
35      * </ul>
36      *
37      * Syntax names can be followed by a colon and a list of key value pairs,
38      * separated by commas. For example, "SQL:dialect=Oracle,version=2.3". Tools
39      * should ignore any keys they don't recognize.
40      */
value()41     String value();
42 
when()43     When when() default When.ALWAYS;
44 }
45