166e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilsonpackage javax.annotation.meta;
266e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson
366e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilsonimport java.lang.annotation.Annotation;
466e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson
566e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilsonimport javax.annotation.Nonnull;
666e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson
766e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilsonpublic interface TypeQualifierValidator<A extends Annotation> {
866e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson    /**
966e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson     * Given a type qualifier, check to see if a known specific constant value
1066e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson     * is an instance of the set of values denoted by the qualifier.
1166e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson     *
1266e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson     * @param annotation
1366e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson     *                the type qualifier
1466e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson     * @param value
1566e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson     *                the value to check
1666e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson     * @return a value indicating whether or not the value is an member of the
1766e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson     *         values denoted by the type qualifier
1866e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson     */
1966e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson    public @Nonnull
2066e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson    When forConstantValue(@Nonnull A annotation, Object value);
2166e84b9ff30de7c75b510cb9117205368cf5bd25Jesse Wilson}
22