| 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; |
| } |
| } |
| } |