001package sting;
002
003import java.lang.annotation.Documented;
004import java.lang.annotation.ElementType;
005import java.lang.annotation.Retention;
006import java.lang.annotation.RetentionPolicy;
007import java.lang.annotation.Target;
008
009/**
010 * Annotation applied to type-targeting annotations that suppress warnings due to constructor
011 * parameter usages of {@link sting.Named @Named}. This is an integration meta-annotation rather
012 * than a component-defining Sting annotation.
013 *
014 * <p>When a type is annotated with an annotation meta-annotated by {@link ActAsStingConsumer},
015 * Sting tolerates {@link sting.Named @Named} on constructor parameters without treating that type
016 * as a Sting-managed component. The expectation is that another annotation processor will process
017 * the type and make use of the qualifier information if present.</p>
018 *
019 * <p>This annotation only affects validation. It does not participate in explicit include
020 * resolution, provider-backed auto-discovery, or any other graph construction step.</p>
021 *
022 * <p>It should be noted that Sting will attempt to use any annotation with this name and shape so
023 * that frameworks do not need a direct code dependency on Sting.</p>
024 *
025 * @see ActAsStingComponent
026 * @see InjectorFragment
027 */
028@Documented
029@Retention( RetentionPolicy.RUNTIME )
030@Target( ElementType.ANNOTATION_TYPE )
031public @interface ActAsStingConsumer
032{
033}