summaryrefslogtreecommitdiffstats
path: root/ri/src/main/java/javax/annotation/Syntax.java
diff options
context:
space:
mode:
Diffstat (limited to 'ri/src/main/java/javax/annotation/Syntax.java')
-rw-r--r--ri/src/main/java/javax/annotation/Syntax.java44
1 files changed, 44 insertions, 0 deletions
diff --git a/ri/src/main/java/javax/annotation/Syntax.java b/ri/src/main/java/javax/annotation/Syntax.java
new file mode 100644
index 0000000..5491093
--- /dev/null
+++ b/ri/src/main/java/javax/annotation/Syntax.java
@@ -0,0 +1,44 @@
+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 x() to y() update the String constant "x()").
+ *
+ *
+ */
+@Documented
+@TypeQualifier(applicableTo = String.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>
+ *
+ * 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.
+ */
+ String value();
+
+ When when() default When.ALWAYS;
+}