Class AbstractEnvironmentAnnotationMetadata

java.lang.Object
io.micronaut.inject.annotation.AbstractEnvironmentAnnotationMetadata
All Implemented Interfaces:
AnnotationMetadata, AnnotationSource

@Internal public abstract class AbstractEnvironmentAnnotationMetadata extends Object implements AnnotationMetadata
Variation of AnnotationMetadata that is environment specific.
Since:
1.0
Author:
Graeme Rocher
  • Constructor Details

    • AbstractEnvironmentAnnotationMetadata

      protected AbstractEnvironmentAnnotationMetadata(AnnotationMetadata targetMetadata)
      Construct a new environment aware annotation metadata.
      Parameters:
      targetMetadata - The target annotation metadata
  • Method Details

    • getAnnotationMetadata

      public AnnotationMetadata getAnnotationMetadata()
      Returns:
      The backing annotation metadata
    • 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
    • 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
    • getValue

      public <T> Optional<T> getValue(@NonNull String annotation, @NonNull String member, @NonNull Argument<T> requiredType)
      Description copied from interface: AnnotationMetadata
      Get the value of the given annotation member.
      Specified by:
      getValue in interface AnnotationMetadata
      Type Parameters:
      T - The value
      Parameters:
      annotation - The annotation class
      member - The annotation member
      requiredType - The required type
      Returns:
      An Optional of the value
    • classValues

      public <T> 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
    • classValues

      public <T> Class<T>[] classValues(@NonNull Class<? extends Annotation> 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
    • 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
    • isFalse

      public boolean isFalse(@NonNull String annotation, @NonNull 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
    • getAnnotationTypeByStereotype

      public @NonNull Optional<Class<? extends Annotation>> getAnnotationTypeByStereotype(@NonNull Class<? extends Annotation> stereotype)
      Description copied from interface: AnnotationMetadata
      Find the first annotation name for the given stereotype.
      Specified by:
      getAnnotationTypeByStereotype in interface AnnotationMetadata
      Parameters:
      stereotype - The stereotype
      Returns:
      The annotation name
    • getAnnotationTypeByStereotype

      public @NonNull Optional<Class<? extends Annotation>> getAnnotationTypeByStereotype(@Nullable String stereotype)
      Description copied from interface: AnnotationMetadata
      Find the first annotation name for the given stereotype.
      Specified by:
      getAnnotationTypeByStereotype in interface AnnotationMetadata
      Parameters:
      stereotype - The stereotype
      Returns:
      The annotation name
    • classValue

      public @NonNull 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
    • classValue

      public @NonNull Optional<Class> classValue(@NonNull Class<? extends Annotation> 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
    • enumValue

      public <E extends Enum<E>> Optional<E> enumValue(@NonNull String 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
    • 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
    • enumValues

      public <E extends Enum<E>> E[] enumValues(@NonNull String annotation, @NonNull 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
    • 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
    • booleanValue

      public Optional<Boolean> booleanValue(@NonNull Class<? extends Annotation> 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
    • stringValue

      public @NonNull Optional<String> stringValue(@NonNull Class<? extends Annotation> 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
    • 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
    • stringValue

      public @NonNull 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
    • 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
    • longValue

      public OptionalLong longValue(@NonNull Class<? extends Annotation> 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
    • intValue

      public @NonNull 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
    • intValue

      public @NonNull OptionalInt intValue(@NonNull Class<? extends Annotation> 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
    • 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
    • isTrue

      public boolean isTrue(@NonNull Class<? extends Annotation> 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
    • isFalse

      public boolean isFalse(@NonNull Class<? extends Annotation> annotation, @NonNull 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
    • getAnnotationType

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

      public <T extends Annotation> @NonNull T[] synthesizeAnnotationsByType(@NonNull 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> @NonNull T[] synthesizeDeclaredAnnotationsByType(@NonNull 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
    • 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
    • getAnnotationNamesByStereotype

      public @NonNull List<String> getAnnotationNamesByStereotype(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
    • 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
    • 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
    • getDeclaredAnnotationNamesByStereotype

      public @NonNull List<String> getDeclaredAnnotationNamesByStereotype(String stereotype)
      Description copied from interface: AnnotationMetadata
      Resolve all annotations names for the given stereotype that are declared annotations.
      Specified by:
      getDeclaredAnnotationNamesByStereotype in interface AnnotationMetadata
      Parameters:
      stereotype - The stereotype
      Returns:
      The declared annotations
    • 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
    • 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> @NonNull Optional<T> getDefaultValue(@NonNull String annotation, @NonNull String member, @NonNull Class<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
    • getDefaultValue

      public <T> @NonNull 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
    • 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
    • getTargetAnnotationMetadata

      public AnnotationMetadata getTargetAnnotationMetadata()
      Description copied from interface: AnnotationMetadata
      Unwraps possible a possible delegate or a provider, returns this otherwise.
      Specified by:
      getTargetAnnotationMetadata in interface AnnotationMetadata
      Specified by:
      getTargetAnnotationMetadata in interface AnnotationSource
      Returns:
      unwrapped
      See Also:
    • getEnvironment

      protected abstract @Nullable Environment getEnvironment()
      Resolves the Environment for this metadata.
      Returns:
      The metadata