summaryrefslogtreecommitdiffstats
path: root/sampleUses/src/main/java/FixedLengthString.java
diff options
context:
space:
mode:
Diffstat (limited to 'sampleUses/src/main/java/FixedLengthString.java')
-rw-r--r--sampleUses/src/main/java/FixedLengthString.java26
1 files changed, 26 insertions, 0 deletions
diff --git a/sampleUses/src/main/java/FixedLengthString.java b/sampleUses/src/main/java/FixedLengthString.java
new file mode 100644
index 0000000..bf7ba44
--- /dev/null
+++ b/sampleUses/src/main/java/FixedLengthString.java
@@ -0,0 +1,26 @@
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+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 FixedLengthString {
+ int value();
+
+ class Checker implements TypeQualifierValidator<FixedLengthString> {
+
+ public When forConstantValue(FixedLengthString annotation, Object v) {
+ if (!(v instanceof String))
+ return When.NEVER;
+ String s = (String) v;
+ if (s.length() == annotation.value())
+ return When.ALWAYS;
+ return When.NEVER;
+ }
+ }
+} \ No newline at end of file