summaryrefslogtreecommitdiffstats
path: root/ri/src/main/java/javax/annotation/MatchesPattern.java
diff options
context:
space:
mode:
Diffstat (limited to 'ri/src/main/java/javax/annotation/MatchesPattern.java')
-rw-r--r--ri/src/main/java/javax/annotation/MatchesPattern.java30
1 files changed, 30 insertions, 0 deletions
diff --git a/ri/src/main/java/javax/annotation/MatchesPattern.java b/ri/src/main/java/javax/annotation/MatchesPattern.java
new file mode 100644
index 0000000..775d21c
--- /dev/null
+++ b/ri/src/main/java/javax/annotation/MatchesPattern.java
@@ -0,0 +1,30 @@
+package javax.annotation;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.regex.Pattern;
+
+import javax.annotation.meta.TypeQualifier;
+import javax.annotation.meta.TypeQualifierValidator;
+import javax.annotation.meta.When;
+
+@Documented
+@TypeQualifier(applicableTo = String.class)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface MatchesPattern {
+ @RegEx
+ String value();
+
+ int flags() default 0;
+
+ static class Checker implements TypeQualifierValidator<MatchesPattern> {
+ public When forConstantValue(MatchesPattern annotation, Object value) {
+ Pattern p = Pattern.compile(annotation.value(), annotation.flags());
+ if (p.matcher(((String) value)).matches())
+ return When.ALWAYS;
+ return When.NEVER;
+ }
+
+ }
+}