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 usages of 011 * {@link sting.Named @Named}, {@link sting.Typed @Typed}, and {@link sting.Eager @Eager}. This is 012 * an integration meta-annotation rather than a component-defining Sting annotation. 013 * 014 * <p>When a type is annotated with an annotation meta-annotated by {@link ActAsStingProvider}, 015 * Sting tolerates {@link sting.Named @Named}, {@link sting.Typed @Typed}, and 016 * {@link sting.Eager @Eager} on the type without treating that type as a Sting-managed 017 * component. The expectation is that another annotation processor will process the type and make 018 * use of the metadata if present.</p> 019 * 020 * <p>This annotation only affects validation. It does not participate in explicit include 021 * resolution, provider-backed auto-discovery, or any other graph construction step.</p> 022 * 023 * <p>It should be noted that Sting will attempt to use any annotation with this name and shape so 024 * that frameworks do not need a direct code dependency on Sting.</p> 025 * 026 * @see ActAsStingComponent 027 */ 028@Documented 029@Retention( RetentionPolicy.RUNTIME ) 030@Target( ElementType.ANNOTATION_TYPE ) 031public @interface ActAsStingProvider 032{ 033}