Class AnnotationMetadataHierarchy

java.lang.Object
io.micronaut.inject.annotation.AnnotationMetadataHierarchy
All Implemented Interfaces:
AnnotationMetadata, AnnotationSource, Iterable<AnnotationMetadata>

public final class AnnotationMetadataHierarchy extends Object implements AnnotationMetadata, Iterable<AnnotationMetadata>
Used to represent an annotation metadata hierarchy. The first AnnotationMetadata instance passed to the constructor represents the annotation metadata that is declared, hence methods like hasDeclaredAnnotation(String) will return true for the last annotation metadata passed in the hierarchy.

This class is used to internally optimize memory usage and compilation time for classes that declare AOP advice at the type level and where the classes methods typically don't include any annotations and therefore would be wasteful to generate additional annotation metadata classes.

Since:
1.3.0
Author:
graemerocher
  • Field Details

    • EMPTY_HIERARCHY

      public static final AnnotationMetadata[] EMPTY_HIERARCHY
      Constant to represent an empty hierarchy.
  • Constructor Details

    • AnnotationMetadataHierarchy

      public AnnotationMetadataHierarchy(AnnotationMetadata... hierarchy)
      Default constructor.
      Parameters:
      hierarchy - The annotation hierarchy
    • AnnotationMetadataHierarchy

      @Internal public AnnotationMetadataHierarchy(boolean delegateDeclaredToAllElements, AnnotationMetadata... hierarchy)
      Default constructor.
      Parameters:
      delegateDeclaredToAllElements - The delegate declared to all elements
      hierarchy - The annotation hierarchy
  • Method Details

    • hasPropertyExpressions

      public boolean hasPropertyExpressions()
      Description copied from interface: AnnotationMetadata
      Does the metadata contain any property expressions like ${foo.bar}. Note this by default returns true as previous versions of Micronaut must assume metadata is present. The compilation time this is computed in order to decide whether to instrument annotation metadata with environment specific logic.
      Specified by:
      hasPropertyExpressions in interface AnnotationMetadata
      Returns:
      True if property expressions are present
    • hasEvaluatedExpressions

      public boolean hasEvaluatedExpressions()
      Description copied from interface: AnnotationMetadata
      Does the metadata contain any evaluated expressions like #{ T(java.lang.Math).random() }.
      Specified by:
      hasEvaluatedExpressions in interface AnnotationMetadata
      Returns:
      True if evaluated expressions are present
    • getAnnotationType

      public Optional<Class<? extends Annotation>> getAnnotationType(@NonNull String name)
      Description copied from interface: AnnotationMetadata
      Gets the type for a given annotation if it is present on the classpath. Subclasses can potentially override to provide optimized loading.
      Specified by:
      getAnnotationType in interface AnnotationMetadata
      Parameters:
      name - The type name
      Returns:
      The type if present
    • getAnnotationType

      public Optional<Class<? extends Annotation>> getAnnotationType(@NonNull String name, @NonNull ClassLoader classLoader)
      Description copied from interface: AnnotationMetadata
      Gets the type for a given annotation if it is present on the classpath. Subclasses can potentially override to provide optimized loading.
      Specified by:
      getAnnotationType in interface AnnotationMetadata
      Parameters:
      name - The type name
      classLoader - The ClassLoader to load the type
      Returns:
      The type if present
    • getDeclaredMetadata

      public @NonNull AnnotationMetadata getDeclaredMetadata()
      Description copied from interface: AnnotationMetadata
      Gets the declared metadata without inherited metdata.
      Specified by:
      getDeclaredMetadata in interface AnnotationMetadata
      Returns:
      The metadata that is actually declared in the element
    • getRootMetadata

      public @NonNull AnnotationMetadata getRootMetadata()
      Returns:
      The metadata that is actually declared in the element
    • createSibling

      public @NonNull AnnotationMetadata createSibling(@NonNull AnnotationMetadata child)
      Create a new hierarchy instance from this metadata using this metadata's parents.
      Parameters:
      child - The child annotation metadata
      Returns:
      A new sibling
    • synthesize

      public <T extends Annotation> @Nullable T synthesize(@NonNull Class<T> annotationClass, @NonNull String sourceAnnotation)
      Description copied from interface: AnnotationSource
      Synthesizes a new annotation for the given annotation type using the member values of the given source annotation.

      This method allows supporting synthesizing annotations that have been renamed, for example a jakarta.inject.Named annotation an be synthesized from the metadata of the a jakarta.inject.Named annotation.

      Specified by:
      synthesize in interface AnnotationSource
      Type Parameters:
      T - The annotation generic type
      Parameters:
      annotationClass - The annotation class
      sourceAnnotation - The source annotation that provides the member values
      Returns:
      The annotation or null if it doesn't exist
    • synthesizeAll

      public 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

      public 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
    • synthesizeAnnotationsByType

      public <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

      public <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
    • synthesizeDeclared

      public <T extends Annotation> @Nullable T synthesizeDeclared(@NonNull Class<T> annotationClass, @NonNull String sourceAnnotation)
      Description copied from interface: AnnotationSource
      Synthesizes a new annotation declared for the given annotation type using the member values of the given source annotation.

      This method allows supporting synthesizing annotations that have been renamed, for example a jakarta.inject.Named annotation an be synthesized from the metadata of the a jakarta.inject.Named annotation.

      Specified by:
      synthesizeDeclared in interface AnnotationSource
      Type Parameters:
      T - The annotation generic type
      Parameters:
      annotationClass - The annotation class
      sourceAnnotation - The source annotation that provides the member values
      Returns:
      The annotation or null if it doesn't exist
    • synthesize

      public <T extends Annotation> @Nullable T synthesize(@NonNull 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
    • synthesizeDeclared

      public <T extends Annotation> @Nullable T synthesizeDeclared(@NonNull 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
    • findAnnotation

      public <T extends Annotation> @NonNull Optional<AnnotationValue<T>> findAnnotation(@NonNull 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
    • findDeclaredAnnotation

      public <T extends Annotation> @NonNull Optional<AnnotationValue<T>> findDeclaredAnnotation(@NonNull 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
    • doubleValue

      public @NonNull OptionalDouble doubleValue(@NonNull Class<? extends Annotation> annotation, @NonNull String member)
      Description copied from interface: AnnotationMetadata
      The value as an OptionalDouble for the given annotation and member.
      Specified by:
      doubleValue in interface AnnotationMetadata
      Parameters:
      annotation - The annotation
      member - The member
      Returns:
      THe OptionalDouble value
    • stringValues

      public @NonNull String[] stringValues(@NonNull Class<? extends Annotation> annotation, @NonNull String member)
      Description copied from interface: AnnotationMetadata
      The values as string array for the given annotation and member.
      Specified by:
      stringValues in interface AnnotationMetadata
      Parameters:
      annotation - The annotation
      member - The member
      Returns:
      The string values if it is present
    • stringValues

      public @NonNull String[] stringValues(@NonNull String annotation, @NonNull String member)
      Description copied from interface: AnnotationMetadata
      The values as string array for the given annotation and member.
      Specified by:
      stringValues in interface AnnotationMetadata
      Parameters:
      annotation - The annotation
      member - The member
      Returns:
      The string values if it is present
    • booleanValue

      public Optional<Boolean> booleanValue(@NonNull String annotation, @NonNull String member)
      Description copied from interface: AnnotationMetadata
      The value as an optional boolean for the given annotation and member.
      Specified by:
      booleanValue in interface AnnotationMetadata
      Parameters:
      annotation - The annotation
      member - The member
      Returns:
      The string value if it is present
    • isTrue

      public boolean isTrue(@NonNull String annotation, @NonNull String member)
      Description copied from interface: AnnotationMetadata
      Returns whether the value of the given member is true.
      Specified by:
      isTrue in interface AnnotationMetadata
      Parameters:
      annotation - The annotation class
      member - The annotation member
      Returns:
      True if the value is true
    • longValue

      public OptionalLong longValue(@NonNull String annotation, @NonNull String member)
      Description copied from interface: AnnotationMetadata
      The value as an OptionalLong for the given annotation and member.
      Specified by:
      longValue in interface AnnotationMetadata
      Parameters:
      annotation - The annotation
      member - The member
      Returns:
      THe OptionalLong value
    • stringValue

      public Optional<String> stringValue(@NonNull String annotation, @NonNull String member)
      Description copied from interface: AnnotationMetadata
      The value as an optional string for the given annotation and member.
      Specified by:
      stringValue in interface AnnotationMetadata
      Parameters:
      annotation - The annotation
      member - The member
      Returns:
      The string value if it is present
    • intValue

      public OptionalInt intValue(@NonNull String annotation, @NonNull String member)
      Description copied from interface: AnnotationMetadata
      The value as an OptionalInt for the given annotation and member.
      Specified by:
      intValue in interface AnnotationMetadata
      Parameters:
      annotation - The annotation
      member - The member
      Returns:
      THe OptionalInt value
    • doubleValue

      public @NonNull OptionalDouble doubleValue(@NonNull String annotation, @NonNull String member)
      Description copied from interface: AnnotationMetadata
      The value as an OptionalDouble for the given annotation and member.
      Specified by:
      doubleValue in interface AnnotationMetadata
      Parameters:
      annotation - The annotation
      member - The member
      Returns:
      THe OptionalDouble value
    • enumValue

      public <E extends Enum<E>> Optional<E> enumValue(@NonNull Class<? extends Annotation> annotation, @NonNull String member, Class<E> enumType)
      Description copied from interface: AnnotationMetadata
      The value of the annotation as a Class.
      Specified by:
      enumValue in interface AnnotationMetadata
      Type Parameters:
      E - The enum type
      Parameters:
      annotation - The annotation
      member - The annotation member
      enumType - The enum type
      Returns:
      An Optional class
    • classValues

      public <T> @NonNull Class<T>[] classValues(@NonNull String annotation, @NonNull String member)
      Description copied from interface: AnnotationMetadata
      The value of the annotation as a Class.
      Specified by:
      classValues in interface AnnotationMetadata
      Type Parameters:
      T - The type of the class
      Parameters:
      annotation - The annotation
      member - The annotation member
      Returns:
      An Optional class
    • classValue

      public Optional<Class> classValue(@NonNull String annotation, @NonNull String member)
      Description copied from interface: AnnotationMetadata
      The value of the annotation as a Class.
      Specified by:
      classValue in interface AnnotationMetadata
      Parameters:
      annotation - The annotation
      member - The annotation member
      Returns:
      An Optional class
    • getAnnotationNamesByStereotype

      public @NonNull List<String> getAnnotationNamesByStereotype(@Nullable String stereotype)
      Description copied from interface: AnnotationMetadata
      Resolve all annotation names that feature the given stereotype.
      Specified by:
      getAnnotationNamesByStereotype in interface AnnotationMetadata
      Parameters:
      stereotype - The annotation names
      Returns:
      A set of annotation names
    • getAnnotationValuesByStereotype

      public <T extends Annotation> List<AnnotationValue<T>> getAnnotationValuesByStereotype(String stereotype)
      Description copied from interface: AnnotationMetadata
      Resolve all annotation values that feature the given stereotype.
      Specified by:
      getAnnotationValuesByStereotype in interface AnnotationMetadata
      Type Parameters:
      T - The annotation type
      Parameters:
      stereotype - The annotation names
      Returns:
      A set of annotation names
    • getDeclaredAnnotationNames

      public @NonNull Set<String> getDeclaredAnnotationNames()
      Description copied from interface: AnnotationMetadata
      All the declared annotation names this metadata declares.
      Specified by:
      getDeclaredAnnotationNames in interface AnnotationMetadata
      Returns:
      All the declared annotation names this metadata declares
    • getAnnotationNames

      public @NonNull Set<String> getAnnotationNames()
      Description copied from interface: AnnotationMetadata
      All the annotation names this metadata declares.
      Specified by:
      getAnnotationNames in interface AnnotationMetadata
      Returns:
      All the annotation names this metadata declares
    • getValues

      public <T> @NonNull OptionalValues<T> getValues(@NonNull String annotation, @NonNull Class<T> valueType)
      Description copied from interface: AnnotationMetadata
      Get all values for the given annotation and type of the underlying values.
      Specified by:
      getValues in interface AnnotationMetadata
      Type Parameters:
      T - Generic type
      Parameters:
      annotation - The annotation name
      valueType - valueType
      Returns:
      The OptionalValues
    • getDefaultValue

      public <T> Optional<T> getDefaultValue(@NonNull String annotation, @NonNull String member, @NonNull Argument<T> requiredType)
      Description copied from interface: AnnotationMetadata
      Return the default value for the given annotation member.
      Specified by:
      getDefaultValue in interface AnnotationMetadata
      Type Parameters:
      T - The required generic type
      Parameters:
      annotation - The annotation
      member - The member
      requiredType - The required type
      Returns:
      An optional value
    • getAnnotationValuesByType

      public <T extends Annotation> @NonNull List<AnnotationValue<T>> getAnnotationValuesByType(@NonNull Class<T> annotationType)
      Description copied from interface: AnnotationMetadata
      Gets all the annotation values by the given repeatable type.
      Specified by:
      getAnnotationValuesByType in interface AnnotationMetadata
      Type Parameters:
      T - The annotation type
      Parameters:
      annotationType - The annotation type
      Returns:
      A list of values
    • getAnnotationValuesByName

      public <T extends Annotation> List<AnnotationValue<T>> getAnnotationValuesByName(String annotationType)
      Description copied from interface: AnnotationMetadata
      Gets all the annotation values by the given repeatable type name.
      Specified by:
      getAnnotationValuesByName in interface AnnotationMetadata
      Type Parameters:
      T - The annotation type
      Parameters:
      annotationType - The annotation type
      Returns:
      A list of values
    • getDeclaredAnnotationValuesByType

      public <T extends Annotation> @NonNull List<AnnotationValue<T>> getDeclaredAnnotationValuesByType(@NonNull Class<T> annotationType)
      Description copied from interface: AnnotationMetadata
      Gets only declared annotation values by the given repeatable type.
      Specified by:
      getDeclaredAnnotationValuesByType in interface AnnotationMetadata
      Type Parameters:
      T - The annotation type
      Parameters:
      annotationType - The annotation type
      Returns:
      A list of values
    • getDeclaredAnnotationValuesByName

      public <T extends Annotation> List<AnnotationValue<T>> getDeclaredAnnotationValuesByName(String annotationType)
      Description copied from interface: AnnotationMetadata
      Gets only declared annotation values by the given repeatable type name.
      Specified by:
      getDeclaredAnnotationValuesByName in interface AnnotationMetadata
      Type Parameters:
      T - The annotation type
      Parameters:
      annotationType - The annotation type
      Returns:
      A list of values
    • hasDeclaredAnnotation

      public boolean hasDeclaredAnnotation(@Nullable String annotation)
      Description copied from interface: AnnotationMetadata
      Checks whether this object has the given annotation directly declared on the object.
      Specified by:
      hasDeclaredAnnotation in interface AnnotationMetadata
      Parameters:
      annotation - The annotation
      Returns:
      True if the annotation is present
    • hasAnnotation

      public boolean hasAnnotation(@Nullable String annotation)
      Description copied from interface: AnnotationMetadata
      Checks whether this object has the given annotation on the object itself or inherited from a parent.
      Specified by:
      hasAnnotation in interface AnnotationMetadata
      Parameters:
      annotation - The annotation
      Returns:
      True if the annotation is present
    • hasStereotype

      public boolean hasStereotype(@Nullable String annotation)
      Description copied from interface: AnnotationMetadata

      Checks whether this object has the given annotation stereotype on the object itself or inherited from a parent

      .

      An annotation stereotype is a meta annotation potentially applied to another annotation

      Specified by:
      hasStereotype in interface AnnotationMetadata
      Parameters:
      annotation - The annotation
      Returns:
      True if the annotation is present
    • hasDeclaredStereotype

      public boolean hasDeclaredStereotype(@Nullable String annotation)
      Description copied from interface: AnnotationMetadata

      Checks whether this object has the given annotation stereotype on the object itself and not inherited from a parent

      .

      An annotation stereotype is a meta annotation potentially applied to another annotation

      Specified by:
      hasDeclaredStereotype in interface AnnotationMetadata
      Parameters:
      annotation - The annotation
      Returns:
      True if the annotation is present
    • enumValue

      public <E extends Enum<E>> Optional<E> enumValue(String annotation, String member, Class<E> enumType)
      Description copied from interface: AnnotationMetadata
      The value of the annotation as a Class.
      Specified by:
      enumValue in interface AnnotationMetadata
      Type Parameters:
      E - The enum type
      Parameters:
      annotation - The annotation
      member - The annotation member
      enumType - The enum type
      Returns:
      An Optional class
    • enumValues

      public <E extends Enum<E>> E[] enumValues(String annotation, String member, Class<E> enumType)
      Description copied from interface: AnnotationMetadata
      The enum values for the given annotation.
      Specified by:
      enumValues in interface AnnotationMetadata
      Type Parameters:
      E - The enum type
      Parameters:
      annotation - The annotation
      member - The annotation member
      enumType - The enum type
      Returns:
      An array of enum values
    • intValue

      public OptionalInt intValue(Class<? extends Annotation> annotation, String member)
      Description copied from interface: AnnotationMetadata
      The value as an OptionalInt for the given annotation and member.
      Specified by:
      intValue in interface AnnotationMetadata
      Parameters:
      annotation - The annotation
      member - The member
      Returns:
      THe OptionalInt value
    • isFalse

      public boolean isFalse(Class<? extends Annotation> annotation, String member)
      Description copied from interface: AnnotationMetadata
      Returns whether the value of the given member is true.
      Specified by:
      isFalse in interface AnnotationMetadata
      Parameters:
      annotation - The annotation class
      member - The annotation member
      Returns:
      True if the value is true
    • getDefaultValues

      public @NonNull Map<CharSequence,Object> getDefaultValues(@NonNull String annotation)
      Description copied from interface: AnnotationMetadata
      Return the default values for the given annotation name.
      Specified by:
      getDefaultValues in interface AnnotationMetadata
      Parameters:
      annotation - The annotation name
      Returns:
      The default values
    • enumValue

      public <E extends Enum<E>> Optional<E> enumValue(@NonNull Class<? extends Annotation> annotation, @NonNull String member, Class<E> enumType, @Nullable Function<Object,Object> valueMapper)
    • enumValue

      public <E extends Enum<E>> Optional<E> enumValue(@NonNull String annotation, @NonNull String member, Class<E> enumType, @Nullable Function<Object,Object> valueMapper)
    • enumValues

      public <E extends Enum<E>> E[] enumValues(@NonNull Class<? extends Annotation> annotation, @NonNull String member, Class<E> enumType, @Nullable Function<Object,Object> valueMapper)
    • enumValues

      public <E extends Enum<E>> E[] enumValues(@NonNull String annotation, @NonNull String member, Class<E> enumType, @Nullable Function<Object,Object> valueMapper)
    • classValue

      public Optional<Class> classValue(@NonNull Class<? extends Annotation> annotation, @NonNull String member, Function<Object,Object> valueMapper)
    • classValue

      public Optional<Class> classValue(@NonNull String annotation, @NonNull String member, @Nullable Function<Object,Object> valueMapper)
    • intValue

      public OptionalInt intValue(@NonNull Class<? extends Annotation> annotation, @NonNull String member, @Nullable Function<Object,Object> valueMapper)
    • booleanValue

      public Optional<Boolean> booleanValue(@NonNull Class<? extends Annotation> annotation, @NonNull String member, Function<Object,Object> valueMapper)
    • booleanValue

      public @NonNull Optional<Boolean> booleanValue(@NonNull String annotation, @NonNull String member, @Nullable Function<Object,Object> valueMapper)
    • longValue

      public OptionalLong longValue(@NonNull Class<? extends Annotation> annotation, @NonNull String member, @Nullable Function<Object,Object> valueMapper)
    • longValue

      public @NonNull OptionalLong longValue(@NonNull String annotation, @NonNull String member, @Nullable Function<Object,Object> valueMapper)
    • intValue

      public @NonNull OptionalInt intValue(@NonNull String annotation, @NonNull String member, @Nullable Function<Object,Object> valueMapper)
    • longValue

      public OptionalLong longValue(Class<? extends Annotation> annotation, String member)
      Description copied from interface: AnnotationMetadata
      The value as an OptionalLong for the given annotation and member.
      Specified by:
      longValue in interface AnnotationMetadata
      Parameters:
      annotation - The annotation
      member - The member
      Returns:
      THe OptionalLong value
    • enumValues

      public <E extends Enum<E>> E[] enumValues(Class<? extends Annotation> annotation, String member, Class<E> enumType)
      Description copied from interface: AnnotationMetadata
      The enum values for the given annotation.
      Specified by:
      enumValues in interface AnnotationMetadata
      Type Parameters:
      E - The enum type
      Parameters:
      annotation - The annotation
      member - The annotation member
      enumType - The enum type
      Returns:
      An array of enum values
    • classValues

      public <T> Class<T>[] classValues(Class<? extends Annotation> annotation, String member)
      Description copied from interface: AnnotationMetadata
      The value of the annotation as a Class.
      Specified by:
      classValues in interface AnnotationMetadata
      Type Parameters:
      T - The type of the class
      Parameters:
      annotation - The annotation
      member - The annotation member
      Returns:
      An Optional class
    • classValue

      public Optional<Class> classValue(Class<? extends Annotation> annotation, String member)
      Description copied from interface: AnnotationMetadata
      The value of the annotation as a Class.
      Specified by:
      classValue in interface AnnotationMetadata
      Parameters:
      annotation - The annotation
      member - The annotation member
      Returns:
      An Optional class
    • stringValue

      public Optional<String> stringValue(Class<? extends Annotation> annotation, String member)
      Description copied from interface: AnnotationMetadata
      The value as an optional string for the given annotation and member.
      Specified by:
      stringValue in interface AnnotationMetadata
      Parameters:
      annotation - The annotation
      member - The member
      Returns:
      The string value if it is present
    • booleanValue

      public Optional<Boolean> booleanValue(Class<? extends Annotation> annotation, String member)
      Description copied from interface: AnnotationMetadata
      The value as an optional boolean for the given annotation and member.
      Specified by:
      booleanValue in interface AnnotationMetadata
      Parameters:
      annotation - The annotation
      member - The member
      Returns:
      The string value if it is present
    • isTrue

      public boolean isTrue(Class<? extends Annotation> annotation, String member)
      Description copied from interface: AnnotationMetadata
      Returns whether the value of the given member is true.
      Specified by:
      isTrue in interface AnnotationMetadata
      Parameters:
      annotation - The annotation class
      member - The annotation member
      Returns:
      True if the value is true
    • isPresent

      public boolean isPresent(Class<? extends Annotation> annotation, String member)
      Description copied from interface: AnnotationMetadata
      Returns whether the value of the given member is present.
      Specified by:
      isPresent in interface AnnotationMetadata
      Parameters:
      annotation - The annotation class
      member - The annotation member
      Returns:
      True if the value is true
    • stringValue

      public Optional<String> stringValue(@NonNull Class<? extends Annotation> annotation, @NonNull String member, Function<Object,Object> valueMapper)
    • stringValues

      public @NonNull String[] stringValues(@NonNull Class<? extends Annotation> annotation, @NonNull String member, Function<Object,Object> valueMapper)
    • stringValues

      public String[] stringValues(String annotation, String member, Function<Object,Object> valueMapper)
    • stringValue

      public @NonNull Optional<String> stringValue(@NonNull String annotation, @NonNull String member, @Nullable Function<Object,Object> valueMapper)
    • isTrue

      public boolean isTrue(@NonNull Class<? extends Annotation> annotation, @NonNull String member, Function<Object,Object> valueMapper)
    • isTrue

      public boolean isTrue(@NonNull String annotation, @NonNull String member, @Nullable Function<Object,Object> valueMapper)
    • doubleValue

      public OptionalDouble doubleValue(@NonNull Class<? extends Annotation> annotation, @NonNull String member, @Nullable Function<Object,Object> valueMapper)
    • doubleValue

      public @NonNull OptionalDouble doubleValue(@NonNull String annotation, @NonNull String member, Function<Object,Object> valueMapper)
    • getValue

      public <T> @NonNull Optional<T> getValue(@NonNull String annotation, @NonNull String member, @NonNull Argument<T> requiredType, @Nullable Function<Object,Object> valueMapper)
    • iterator

      public @NonNull Iterator<AnnotationMetadata> iterator()
      Specified by:
      iterator in interface Iterable<AnnotationMetadata>
    • isEmpty

      public boolean isEmpty()
      Description copied from interface: AnnotationMetadata
      Is the annotation metadata empty.
      Specified by:
      isEmpty in interface AnnotationMetadata
      Returns:
      True if it is
    • isRepeatableAnnotation

      public boolean isRepeatableAnnotation(Class<? extends Annotation> annotation)
      Description copied from interface: AnnotationMetadata
      Is repeatable annotation?
      Specified by:
      isRepeatableAnnotation in interface AnnotationMetadata
      Parameters:
      annotation - The annotation
      Returns:
      true if repeatable
    • isRepeatableAnnotation

      public boolean isRepeatableAnnotation(String annotation)
      Description copied from interface: AnnotationMetadata
      Is repeatable annotation?
      Specified by:
      isRepeatableAnnotation in interface AnnotationMetadata
      Parameters:
      annotation - The annotation
      Returns:
      true if repeatable
    • findRepeatableAnnotation

      public Optional<String> findRepeatableAnnotation(Class<? extends Annotation> annotation)
      Description copied from interface: AnnotationMetadata
      Find repeatable annotation container.
      Specified by:
      findRepeatableAnnotation in interface AnnotationMetadata
      Parameters:
      annotation - The annotation
      Returns:
      optional repeatable annotation container
    • findRepeatableAnnotation

      public Optional<String> findRepeatableAnnotation(String annotation)
      Description copied from interface: AnnotationMetadata
      Find repeatable annotation container.
      Specified by:
      findRepeatableAnnotation in interface AnnotationMetadata
      Parameters:
      annotation - The annotation
      Returns:
      optional repeatable annotation container
    • merge

      public MutableAnnotationMetadata merge()
      Merges the hierarchy into one MutableAnnotationMetadata.
      Returns:
      merged metadata
      Since:
      4.0.0
    • copyAnnotationMetadata

      public AnnotationMetadata copyAnnotationMetadata()
      Description copied from interface: AnnotationMetadata
      Makes a copy of the annotation or returns this.
      Specified by:
      copyAnnotationMetadata in interface AnnotationMetadata
      Returns:
      the copy
    • size

      public int size()
      The size of the hierarchy.
      Returns:
      The size
      Since:
      4.0.0