Interface AnnotationMetadataProvider

All Superinterfaces:
AnnotationSource
All Known Subinterfaces:
AbstractAnnotationMetadataBuilder.CachedAnnotationMetadata, AdvisedBeanType<T>, AnnotatedElement, AnnotationElement, AnnotationMetadataDelegate, Argument<T>, ArgumentConversionContext<T>, ArgumentInjectionPoint<B,T>, ArgumentValue<V>, ArrayableClassElement, BeanConfiguration, BeanConstructor<T>, BeanConstructorElement, BeanDefinition<T>, BeanDefinitionMethodReference<T,R>, BeanDefinitionReference<T>, BeanElement, BeanElementBuilder, BeanFieldElement, BeanInfo<T>, BeanIntrospection<T>, BeanIntrospectionReference<T>, BeanMethod<B,T>, BeanMethodElement, BeanParameterElement, BeanProperty<B,T>, BeanType<T>, BeanWrapper<T>, BoundExecutable<T,R>, CallableInjectionPoint<T>, ClassElement, ConfigurableElement, ConstructorElement, ConstructorInjectionPoint<T>, ConstructorInvocationContext<T>, ConversionContext, DelegatingBeanDefinition<T>, DelegatingExecutableMethod<T,R>, DisposableBeanDefinition<T>, Element, ElementAnnotationMetadata, ElementMutableAnnotationMetadataDelegate<R>, EnumConstantElement, EnumElement, ErrorRouteInfo<T,R>, Executable<T,R>, ExecutableMethod<T,R>, ExecutionHandle<T,R>, FieldElement, FieldInjectionPoint<B,T>, FilterRoute, GenericElement, GenericPlaceholder<T>, GenericPlaceholderElement, GraalReflectionConfigurer, HttpFilterResolver.FilterEntry, ImmutableArgumentConversionContext<T>, InitializingBeanDefinition<T>, InjectableBeanDefinition<T>, InjectableElement, InjectionPoint<T>, InstantiatableBeanDefinition<T>, InvocationContext<T,R>, MemberElement, MethodBasedRouteInfo<T,R>, MethodBasedRouteMatch<T,R>, MethodElement, MethodExecutionHandle<T,R>, MethodInjectionPoint<B,T>, MethodInvocationContext<T,R>, MethodReference<T,R>, MutableAnnotationMetadataDelegate<R>, MutableArgumentValue<V>, PackageElement, ParameterElement, ParametrizedInstantiatableBeanDefinition<T>, PropertyElement, ProxyBeanDefinition<T>, QualifiedBeanType<T>, ReturnType<T>, RouteInfo<R>, RouteMatch<R>, RuntimeBeanDefinition<T>, StatusRouteInfo<T,R>, TypedElement, TypeInformation<T>, UnsafeBeanInstantiationIntrospection<T>, UnsafeBeanProperty<B,T>, UnsafeExecutable<T,R>, UnsafeExecutionHandle<T,R>, UriRouteInfo<T,R>, UriRouteMatch<T,R>, ValidatedBeanDefinition<T>, WildcardElement
All Known Implementing Classes:
AbstractAnnotationElement, AbstractBeanConfiguration, AbstractBeanConstructor, AbstractBeanDefinitionBeanConstructor, AbstractBeanDefinitionBuilder, AbstractBeanIntrospectionReference, AbstractBeanMethod, AbstractBeanProperty, AbstractBeanResolutionContext.AnnotationSegment, AbstractBeanResolutionContext.ConstructorArgumentSegment, AbstractBeanResolutionContext.FieldSegment, AbstractBeanResolutionContext.MethodArgumentSegment, AbstractBeanResolutionContext.MethodSegment, AbstractElementAnnotationMetadata, AbstractElementAnnotationMetadataFactory.AbstractElementAnnotationMetadata, AbstractElementAnnotationMetadataFactory.MutableElementAnnotationMetadata, AbstractExecutableBeanMethod, AbstractExecutableMethod, AbstractGroovyElement, AbstractInitializableBeanDefinition, AbstractInitializableBeanDefinitionReference, AbstractInitializableBeanIntrospection, AbstractJavaElement, AbstractMutableAnnotationMetadata, AbstractProviderDefinition, AnnotationMetadataReference, ApplicationEventPublisherFactory, ArgumentBeanType, BeanDefinitionWriter, BeanProviderDefinition, BeanRegistration, ClientFilterResolutionContext, ConstructorInterceptorChain, DefaultArgument, DefaultErrorRouteInfo, DefaultRequestMatcher, DefaultRouteInfo, DefaultStatusRouteInfo, DefaultUrlRouteInfo, DisabledBean, EvaluatedAnnotationMetadata, GenericArgument, GenericPlaceholderElementAnnotationMetadata, GroovyClassElement, GroovyConstructorElement, GroovyEnumConstantElement, GroovyFieldElement, GroovyMethodElement, GroovyPackageElement, GroovyParameterElement, InterceptorChain, InterceptorRegistryBean, JakartaProviderBeanDefinition, JavaClassElement, JavaMethodElement, JavaPackageElement, JavaxProviderBeanDefinition, MappingAnnotationMetadataDelegate, MethodElementAnnotationMetadata, MethodInterceptorChain, MutatedMethodElementAnnotationMetadata, PrimitiveElement, PropertyElementAnnotationMetadata, WildcardElementAnnotationMetadata

public interface AnnotationMetadataProvider extends AnnotationSource
An interface for a type that provides AnnotationMetadata.
Since:
1.0
Author:
Graeme Rocher
  • Method Details

    • getAnnotationMetadata

      @NonNull default @NonNull AnnotationMetadata getAnnotationMetadata()
      Supplies the metadata. Defaults to AnnotationMetadata.EMPTY_METADATA.
      Returns:
      The AnnotationMetadata
    • synthesize

      default <T extends Annotation> T synthesize(Class<T> annotationClass)
      Description copied from interface: AnnotationSource
      Synthesizes a new annotation from the metadata for the given annotation type. This method works by creating a runtime proxy of the annotation interface and should be avoided in favour of direct use of the annotation metadata and only used for unique cases that require integrating third party libraries.
      Specified by:
      synthesize in interface AnnotationSource
      Type Parameters:
      T - The annotation generic type
      Parameters:
      annotationClass - The annotation class
      Returns:
      The annotation or null if it doesn't exist
    • synthesizeAll

      default Annotation[] synthesizeAll()
      Description copied from interface: AnnotationSource
      Synthesizes a new annotations from the metadata. This method works by creating a runtime proxy of the annotation interface and should be avoided in favour of direct use of the annotation metadata and only used for unique cases that require integrating third party libraries.
      Specified by:
      synthesizeAll in interface AnnotationSource
      Returns:
      All the annotations
    • synthesizeDeclared

      default Annotation[] synthesizeDeclared()
      Description copied from interface: AnnotationSource
      Synthesizes a new annotations from the metadata. This method works by creating a runtime proxy of the annotation interface and should be avoided in favour of direct use of the annotation metadata and only used for unique cases that require integrating third party libraries.
      Specified by:
      synthesizeDeclared in interface AnnotationSource
      Returns:
      All declared annotations
    • isAnnotationPresent

      default boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
      Description copied from interface: AnnotationSource
      Return whether an annotation is present.
      Specified by:
      isAnnotationPresent in interface AnnotationSource
      Parameters:
      annotationClass - The annotation class
      Returns:
      True if it is
    • isDeclaredAnnotationPresent

      default boolean isDeclaredAnnotationPresent(Class<? extends Annotation> annotationClass)
      Description copied from interface: AnnotationSource
      Variation of AnnotationSource.isAnnotationPresent(Class) for declared annotations.
      Specified by:
      isDeclaredAnnotationPresent in interface AnnotationSource
      Parameters:
      annotationClass - The annotation class
      Returns:
      True if it is
    • synthesizeDeclared

      default <T extends Annotation> T synthesizeDeclared(Class<T> annotationClass)
      Description copied from interface: AnnotationSource
      Synthesizes a new annotation from the metadata for the given annotation type. This method works by creating a runtime proxy of the annotation interface and should be avoided in favour of direct use of the annotation metadata and only used for unique cases that require integrating third party libraries.

      This method ignores inherited annotations. (Returns null if no annotations are directly present on this element.)

      Specified by:
      synthesizeDeclared in interface AnnotationSource
      Type Parameters:
      T - The annotation generic type
      Parameters:
      annotationClass - The annotation class
      Returns:
      The annotation or null if it doesn't exist
    • synthesizeAnnotationsByType

      default <T extends Annotation> T[] synthesizeAnnotationsByType(Class<T> annotationClass)
      Description copied from interface: AnnotationSource
      Synthesizes a new annotations from the metadata for the given type. This method works by creating a runtime proxy of the annotation interface and should be avoided in favour of direct use of the annotation metadata and only used for unique cases that require integrating third party libraries.
      Specified by:
      synthesizeAnnotationsByType in interface AnnotationSource
      Type Parameters:
      T - The annotation generic type
      Parameters:
      annotationClass - The annotation type
      Returns:
      All annotations by the given type
    • synthesizeDeclaredAnnotationsByType

      default <T extends Annotation> T[] synthesizeDeclaredAnnotationsByType(Class<T> annotationClass)
      Description copied from interface: AnnotationSource
      Synthesizes a new annotations from the metadata for the given type. This method works by creating a runtime proxy of the annotation interface and should be avoided in favour of direct use of the annotation metadata and only used for unique cases that require integrating third party libraries.
      Specified by:
      synthesizeDeclaredAnnotationsByType in interface AnnotationSource
      Type Parameters:
      T - The annotation generic type
      Parameters:
      annotationClass - The annotation type
      Returns:
      Declared annotations by the given type
    • findAnnotation

      default <T extends Annotation> Optional<AnnotationValue<T>> findAnnotation(String annotation)
      Description copied from interface: AnnotationSource
      Find an AnnotationValue for the given annotation name.
      Specified by:
      findAnnotation in interface AnnotationSource
      Type Parameters:
      T - The annotation type
      Parameters:
      annotation - The annotation name
      Returns:
      A AnnotationValue instance
    • findAnnotation

      default <T extends Annotation> Optional<AnnotationValue<T>> findAnnotation(Class<T> annotationClass)
      Description copied from interface: AnnotationSource
      Find an AnnotationValue for the given annotation type.
      Specified by:
      findAnnotation in interface AnnotationSource
      Type Parameters:
      T - The annotation type
      Parameters:
      annotationClass - The annotation
      Returns:
      A AnnotationValue instance
    • findDeclaredAnnotation

      default <T extends Annotation> Optional<AnnotationValue<T>> findDeclaredAnnotation(String annotation)
      Description copied from interface: AnnotationSource
      Get all values for the given annotation that are directly declared on the annotated element.
      Specified by:
      findDeclaredAnnotation in interface AnnotationSource
      Type Parameters:
      T - The annotation type
      Parameters:
      annotation - The annotation name
      Returns:
      A AnnotationValue instance
    • findDeclaredAnnotation

      default <T extends Annotation> Optional<AnnotationValue<T>> findDeclaredAnnotation(Class<T> annotationClass)
      Description copied from interface: AnnotationSource
      Get all values for the given annotation that are directly declared on the annotated element.
      Specified by:
      findDeclaredAnnotation in interface AnnotationSource
      Type Parameters:
      T - The annotation type
      Parameters:
      annotationClass - The annotation name
      Returns:
      A AnnotationValue instance
    • getTargetAnnotationMetadata

      default AnnotationSource getTargetAnnotationMetadata()
      Description copied from interface: AnnotationSource
      Unwraps possible delegate or provider.
      Specified by:
      getTargetAnnotationMetadata in interface AnnotationSource
      Returns:
      unwrapped