1import java.lang.annotation.Documented;
2import java.lang.annotation.Retention;
3import java.lang.annotation.RetentionPolicy;
4
5import javax.annotation.meta.TypeQualifier;
6import javax.annotation.meta.TypeQualifierValidator;
7import javax.annotation.meta.When;
8
9@Documented
10@TypeQualifier(applicableTo=String.class)
11@Retention(RetentionPolicy.RUNTIME)
12public @interface FixedLengthString {
13	int value();
14
15	class Checker implements TypeQualifierValidator<FixedLengthString> {
16
17		public When forConstantValue(FixedLengthString annotation, Object v) {
18			if (!(v instanceof String))
19				return When.NEVER;
20			String s = (String) v;
21			if (s.length() == annotation.value())
22				return When.ALWAYS;
23			return When.NEVER;
24		}
25	}
26}