46 lines
1.4 KiB
Java
46 lines
1.4 KiB
Java
package javax.annotation;
|
|
|
|
import java.lang.annotation.Documented;
|
|
import java.lang.annotation.Retention;
|
|
import java.lang.annotation.RetentionPolicy;
|
|
|
|
import javax.annotation.meta.TypeQualifier;
|
|
import javax.annotation.meta.When;
|
|
|
|
/**
|
|
* This annotation a value that is of a particular syntax, such as Java syntax
|
|
* or regular expression syntax. This can be used to provide syntax checking of
|
|
* constant values at compile time, run time checking at runtime, and can assist
|
|
* IDEs in deciding how to interpret String constants (e.g., should a
|
|
* refactoring that renames method {@code x()} to {@code y()} update the String
|
|
* constant {@code "x()"}).
|
|
*/
|
|
@Documented
|
|
@TypeQualifier(applicableTo = CharSequence.class)
|
|
@Retention(RetentionPolicy.RUNTIME)
|
|
public @interface Syntax {
|
|
/**
|
|
* Value indicating the particular syntax denoted by this annotation. Different
|
|
* tools will recognize different syntaxes, but some proposed canonical values
|
|
* are:
|
|
* <ul>
|
|
* <li>"Java"
|
|
* <li>"RegEx"
|
|
* <li>"JavaScript"
|
|
* <li>"Ruby"
|
|
* <li>"Groovy"
|
|
* <li>"SQL"
|
|
* <li>"FormatString"
|
|
* </ul>
|
|
* <p>
|
|
* Syntax names can be followed by a colon and a list of key value pairs,
|
|
* separated by commas. For example, "SQL:dialect=Oracle,version=2.3". Tools
|
|
* should ignore any keys they don't recognize.
|
|
*
|
|
* @return a name indicating the particular syntax.
|
|
*/
|
|
String value();
|
|
|
|
When when() default When.ALWAYS;
|
|
}
|