Class AnnotationValue<A extends Annotation>

java.lang.Object
io.micronaut.core.annotation.AnnotationValue<A>
Type Parameters:
A - The annotation type
All Implemented Interfaces:
AnnotationValueResolver, ValueResolver<CharSequence>
Direct Known Subclasses:
EvaluatedAnnotationValue

public class AnnotationValue<A extends Annotation> extends Object implements AnnotationValueResolver
A runtime representation of the annotation and its values.

This class implements the AnnotationValueResolver interface and methods such as ValueResolver.get(CharSequence, Class) can be used to retrieve the values of annotation members.

If a member is not present then the methods of the class will attempt to resolve the default value for a given annotation member. In this sense the behaviour of this class is similar to how a implementation of Annotation behaves.

NOTE: During the mapping or remapping, nullable stereotypes value means that the stereotypes will be filled from the annotation definition, when empty collection will skip it.
Since:
1.0
Author:
Graeme Rocher
  • Constructor Details

  • Method Details

    • getValueMapper

      protected @Nullable Function<Object,Object> getValueMapper()
      Returns:
      The value mapper.
      Since:
      4.0.2
    • mutate

      public AnnotationValueBuilder<A> mutate()
      Creates a builder with the initial value of this annotation.
      Returns:
      The builder with this annotation value
      Since:
      4.0.0
    • getRetentionPolicy

      public final RetentionPolicy getRetentionPolicy()
      Returns:
      The retention policy.
    • getStereotypes

      public @Nullable List<AnnotationValue<?>> getStereotypes()
      Returns:
      The stereotypes of the annotation
    • getDefaultValues

      public @Nullable Map<CharSequence,Object> getDefaultValues()
      The default values.
      Returns:
      The default of the annotation or null if not specified.
      Since:
      4.0.0
    • getProperties

      public Map<String,String> getProperties(String member)
      Resolves a map of properties for a member that is an array of annotations that have members called "name" or "key" to represent the key and "value" to represent the value.

      For example consider the following annotation definition:

       @PropertySource({ @Property(name = "one", value = "1"), @Property(name = "two", value = "2")})
       public class MyBean {
              ...
       }

      You can use this method to resolve the values of the PropertySource annotation such that the following assertion is true:

       annotationValue.getProperties("value") == [one:1, two:2]
       
      Parameters:
      member - The member
      Returns:
      The properties as an immutable map.
    • getProperties

      public Map<String,String> getProperties(String member, String keyMember)
      Resolve properties with a custom key member.
      Parameters:
      member - The member to resolve the properties from
      keyMember - The member of the sub annotation that represents the key.
      Returns:
      The properties.
      See Also:
    • enumValue

      public <E extends Enum> Optional<E> enumValue(String member, Class<E> enumType)
      Return the enum value of the given member of the given enum type.
      Specified by:
      enumValue in interface AnnotationValueResolver
      Type Parameters:
      E - The enum type
      Parameters:
      member - The annotation member
      enumType - The required type
      Returns:
      An Optional of the enum value
    • enumValue

      public <E extends Enum> Optional<E> enumValue(String member, Class<E> enumType, Function<Object,Object> valueMapper)
      Return the enum value of the given member of the given enum type.
      Type Parameters:
      E - The enum type
      Parameters:
      member - The annotation member
      enumType - The required type
      valueMapper - The value mapper
      Returns:
      An Optional of the enum value
    • enumValues

      public <E extends Enum> E[] enumValues(String member, Class<E> enumType)
      Return the enum values of the given member of the given enum type.
      Specified by:
      enumValues in interface AnnotationValueResolver
      Type Parameters:
      E - The enum type
      Parameters:
      member - The annotation member
      enumType - The required type
      Returns:
      An array of enum values
    • classValue

      public Optional<Class<?>> classValue()
      The value of the annotation as a Class.
      Specified by:
      classValue in interface AnnotationValueResolver
      Returns:
      An Optional class
    • classValue

      public Optional<Class<?>> classValue(String member)
      The value of the given annotation member as a Class.
      Specified by:
      classValue in interface AnnotationValueResolver
      Parameters:
      member - The annotation member
      Returns:
      An Optional class
    • classValue

      public <T> Optional<Class<? extends T>> classValue(String member, Class<T> requiredType)
      The value of the given annotation member as a Class.
      Specified by:
      classValue in interface AnnotationValueResolver
      Type Parameters:
      T - The required type
      Parameters:
      member - The annotation member
      requiredType - The required type
      Returns:
      An Optional class
    • classValue

      public Optional<Class<?>> classValue(String member, @Nullable Function<Object,Object> valueMapper)
      The value of the given annotation member as a Class.
      Parameters:
      member - The annotation member
      valueMapper - The raw value mapper
      Returns:
      An Optional class
    • stringValues

      public String[] stringValues(String member)
      Description copied from interface: AnnotationValueResolver
      The string values for the given member.
      Specified by:
      stringValues in interface AnnotationValueResolver
      Parameters:
      member - The annotation member
      Returns:
      An array of String
    • booleanValues

      public boolean[] booleanValues(String member)
      Description copied from interface: AnnotationValueResolver
      The boolean[] value for the given member.
      Specified by:
      booleanValues in interface AnnotationValueResolver
      Parameters:
      member - The annotation member
      Returns:
      An array of boolean
    • byteValues

      public byte[] byteValues(String member)
      Description copied from interface: AnnotationValueResolver
      The byte[] value for the given member.
      Specified by:
      byteValues in interface AnnotationValueResolver
      Parameters:
      member - The annotation member
      Returns:
      An array of byte
    • charValues

      public char[] charValues(String member)
      Description copied from interface: AnnotationValueResolver
      The char[] value for the given member.
      Specified by:
      charValues in interface AnnotationValueResolver
      Parameters:
      member - The annotation member
      Returns:
      An array of char
    • intValues

      public int[] intValues(String member)
      Description copied from interface: AnnotationValueResolver
      The int[] value for the given member.
      Specified by:
      intValues in interface AnnotationValueResolver
      Parameters:
      member - The annotation member
      Returns:
      An array of int
    • doubleValues

      public double[] doubleValues(String member)
      Description copied from interface: AnnotationValueResolver
      The double[] value for the given member.
      Specified by:
      doubleValues in interface AnnotationValueResolver
      Parameters:
      member - The annotation member
      Returns:
      An array of double
    • longValues

      public long[] longValues(String member)
      Description copied from interface: AnnotationValueResolver
      The long[] value for the given member.
      Specified by:
      longValues in interface AnnotationValueResolver
      Parameters:
      member - The annotation member
      Returns:
      An array of long
    • floatValues

      public float[] floatValues(String member)
      Description copied from interface: AnnotationValueResolver
      The float[] value for the given member.
      Specified by:
      floatValues in interface AnnotationValueResolver
      Parameters:
      member - The annotation member
      Returns:
      An array of float
    • shortValues

      public short[] shortValues(String member)
      Description copied from interface: AnnotationValueResolver
      The short[] value for the given member.
      Specified by:
      shortValues in interface AnnotationValueResolver
      Parameters:
      member - The annotation member
      Returns:
      An array of short
    • stringValues

      public String[] stringValues(String member, Function<Object,Object> valueMapper)
      The string values for the given member and mapper.
      Parameters:
      member - The member
      valueMapper - The mapper
      Returns:
      The string values
    • classValues

      public Class<?>[] classValues(String member)
      Description copied from interface: AnnotationValueResolver
      The value of the given annotation member as a Class.
      Specified by:
      classValues in interface AnnotationValueResolver
      Parameters:
      member - The annotation member
      Returns:
      An array of classes
    • annotationClassValues

      public AnnotationClassValue<?>[] annotationClassValues(String member)
      Description copied from interface: AnnotationValueResolver
      The AnnotationClassValue instances for the given member. Unlike AnnotationValueResolver.classValues(String) this may include classes that are no the classpath.
      Specified by:
      annotationClassValues in interface AnnotationValueResolver
      Parameters:
      member - The annotation member
      Returns:
      An array of class values
    • annotationClassValue

      public Optional<AnnotationClassValue<?>> annotationClassValue(String member)
      Description copied from interface: AnnotationValueResolver
      The AnnotationClassValue instance for the given member.
      Specified by:
      annotationClassValue in interface AnnotationValueResolver
      Parameters:
      member - The annotation member
      Returns:
      An annotation class value
    • intValue

      public OptionalInt intValue(String member)
      The integer value of the given member.
      Specified by:
      intValue in interface AnnotationValueResolver
      Parameters:
      member - The annotation member
      Returns:
      An OptionalInt
    • intValue

      public OptionalInt intValue(String member, @Nullable Function<Object,Object> valueMapper)
      The integer value of the given member.
      Parameters:
      member - The annotation member
      valueMapper - The value mapper
      Returns:
      An OptionalInt
    • byteValue

      public Optional<Byte> byteValue(String member)
      Description copied from interface: AnnotationValueResolver
      The byte value of the given member.
      Specified by:
      byteValue in interface AnnotationValueResolver
      Parameters:
      member - The annotation member
      Returns:
      An Optional of Byte
    • charValue

      public Optional<Character> charValue(String member)
      Description copied from interface: AnnotationValueResolver
      The char value of the given member.
      Specified by:
      charValue in interface AnnotationValueResolver
      Parameters:
      member - The annotation member
      Returns:
      An Optional of Character
    • intValue

      public OptionalInt intValue()
      The integer value of the given member.
      Specified by:
      intValue in interface AnnotationValueResolver
      Returns:
      An OptionalInt
    • longValue

      public OptionalLong longValue(String member)
      Description copied from interface: AnnotationValueResolver
      The long value of the given member.
      Specified by:
      longValue in interface AnnotationValueResolver
      Parameters:
      member - The annotation member
      Returns:
      An OptionalLong
    • longValue

      public OptionalLong longValue(String member, @Nullable Function<Object,Object> valueMapper)
      The long value of the given member.
      Parameters:
      member - The annotation member
      valueMapper - The value mapper
      Returns:
      An OptionalLong
    • shortValue

      public Optional<Short> shortValue(String member)
      Description copied from interface: AnnotationValueResolver
      The short value of the given member.
      Specified by:
      shortValue in interface AnnotationValueResolver
      Parameters:
      member - The annotation member
      Returns:
      An Optional of Short
    • shortValue

      public Optional<Short> shortValue(String member, @Nullable Function<Object,Object> valueMapper)
      The short value of the given member.
      Parameters:
      member - The annotation member
      valueMapper - The value mapper
      Returns:
      An Optional of Short
    • booleanValue

      public Optional<Boolean> booleanValue(String member, @Nullable Function<Object,Object> valueMapper)
      The boolean value of the given member.
      Parameters:
      member - The annotation member
      valueMapper - The value mapper
      Returns:
      An Optional boolean
    • doubleValue

      public OptionalDouble doubleValue(String member)
      The double value of the given member.
      Specified by:
      doubleValue in interface AnnotationValueResolver
      Parameters:
      member - The annotation member
      Returns:
      An OptionalDouble
    • doubleValue

      public OptionalDouble doubleValue(String member, @Nullable Function<Object,Object> valueMapper)
      The double value of the given member.
      Parameters:
      member - The annotation member
      valueMapper - The value mapper
      Returns:
      An OptionalDouble
    • floatValue

      public Optional<Float> floatValue(String member)
      Description copied from interface: AnnotationValueResolver
      The double value of the given member.
      Specified by:
      floatValue in interface AnnotationValueResolver
      Parameters:
      member - The annotation member
      Returns:
      An OptionalDouble
    • floatValue

      public Optional<Float> floatValue(String member, @Nullable Function<Object,Object> valueMapper)
      The double value of the given member.
      Parameters:
      member - The annotation member
      valueMapper - The value mapper
      Returns:
      An OptionalDouble
    • doubleValue

      public OptionalDouble doubleValue()
      The double value of the given member.
      Specified by:
      doubleValue in interface AnnotationValueResolver
      Returns:
      An OptionalDouble
    • stringValue

      public Optional<String> stringValue(String member)
      The string value of the given member.
      Specified by:
      stringValue in interface AnnotationValueResolver
      Parameters:
      member - The annotation member
      Returns:
      An OptionalInt
    • stringValue

      public Optional<String> stringValue(String member, @Nullable Function<Object,Object> valueMapper)
      The string value of the given member.
      Parameters:
      member - The annotation member
      valueMapper - An optional raw value mapper
      Returns:
      An OptionalInt
    • stringValue

      public Optional<String> stringValue()
      The double value of the given member.
      Specified by:
      stringValue in interface AnnotationValueResolver
      Returns:
      An OptionalInt
    • booleanValue

      public Optional<Boolean> booleanValue(String member)
      Description copied from interface: AnnotationValueResolver
      The boolean value of the given member.
      Specified by:
      booleanValue in interface AnnotationValueResolver
      Parameters:
      member - The annotation member
      Returns:
      An Optional boolean
    • isPresent

      public final boolean isPresent(CharSequence member)
      Is the given member present.
      Specified by:
      isPresent in interface AnnotationValueResolver
      Parameters:
      member - The member
      Returns:
      True if it is
    • isTrue

      public boolean isTrue()
      Specified by:
      isTrue in interface AnnotationValueResolver
      Returns:
      Is the value of the annotation true.
    • isTrue

      public boolean isTrue(String member)
      Specified by:
      isTrue in interface AnnotationValueResolver
      Parameters:
      member - The member
      Returns:
      Is the value of the annotation true.
    • isTrue

      public boolean isTrue(String member, @Nullable Function<Object,Object> valueMapper)
      Parameters:
      member - The member
      valueMapper - The value mapper
      Returns:
      Is the value of the annotation true.
    • isFalse

      public boolean isFalse()
      Specified by:
      isFalse in interface AnnotationValueResolver
      Returns:
      Is the value of the annotation true.
    • isFalse

      public boolean isFalse(String member)
      Specified by:
      isFalse in interface AnnotationValueResolver
      Parameters:
      member - The member
      Returns:
      Is the value of the annotation true.
    • getAnnotationName

      public final String getAnnotationName()
      The annotation name.
      Returns:
      The annotation name
    • contains

      public final boolean contains(String member)
      Whether a particular member is present.
      Parameters:
      member - The member
      Returns:
      True if it is
    • getMemberNames

      public final Set<CharSequence> getMemberNames()
      Resolves the names of all the present annotation members.
      Returns:
      The names of the members
    • getValues

      public Map<CharSequence,Object> getValues()
      Specified by:
      getValues in interface AnnotationValueResolver
      Returns:
      The attribute values
    • getConvertibleValues

      public ConvertibleValues<Object> getConvertibleValues()
      Returns:
      The convertible values
    • get

      public <T> Optional<T> get(CharSequence member, ArgumentConversionContext<T> conversionContext)
      Description copied from interface: ValueResolver
      Resolve the given property for the given name.
      Specified by:
      get in interface ValueResolver<A extends Annotation>
      Type Parameters:
      T - The concrete type
      Parameters:
      member - The name
      conversionContext - The conversion context
      Returns:
      An optional containing the property value if it exists and is able to be converted
    • getValue

      public <T> Optional<T> getValue(ArgumentConversionContext<T> conversionContext)
      Get the value of the value member of the annotation.
      Type Parameters:
      T - The type
      Parameters:
      conversionContext - The conversion context
      Returns:
      The result
    • getValue

      public final <T> Optional<T> getValue(Argument<T> argument)
      Get the value of the value member of the annotation.
      Type Parameters:
      T - The type
      Parameters:
      argument - The argument
      Returns:
      The result
    • getValue

      public final <T> Optional<T> getValue(Class<T> type)
      Get the value of the value member of the annotation.
      Type Parameters:
      T - The type
      Parameters:
      type - The type
      Returns:
      The result
    • getRequiredValue

      public final <T> T getRequiredValue(Class<T> type)
      Get the value of the value member of the annotation.
      Type Parameters:
      T - The type
      Parameters:
      type - The type
      Returns:
      The result
      Throws:
      IllegalStateException - If no member is available that conforms to the given type
    • getRequiredValue

      public final <T> T getRequiredValue(String member, Class<T> type)
      Get the value of the value member of the annotation.
      Type Parameters:
      T - The type
      Parameters:
      member - The member
      type - The type
      Returns:
      The result
      Throws:
      IllegalStateException - If no member is available that conforms to the given name and type
    • getAnnotations

      public <T extends Annotation> List<AnnotationValue<T>> getAnnotations(String member, Class<T> type)
      Gets a list of AnnotationValue for the given member.
      Type Parameters:
      T - The type
      Parameters:
      member - The member
      type - The type
      Returns:
      The result
      Throws:
      IllegalStateException - If no member is available that conforms to the given name and type
    • getAnnotations

      public <T extends Annotation> List<AnnotationValue<T>> getAnnotations(String member)
      Gets a list of AnnotationValue for the given member.
      Type Parameters:
      T - The type
      Parameters:
      member - The member
      Returns:
      The result
      Throws:
      IllegalStateException - If no member is available that conforms to the given name and type
    • getAnnotation

      public <T extends Annotation> Optional<AnnotationValue<T>> getAnnotation(String member, Class<T> type)
      Gets a list of AnnotationValue for the given member.
      Type Parameters:
      T - The type
      Parameters:
      member - The member
      type - The type
      Returns:
      The result
      Throws:
      IllegalStateException - If no member is available that conforms to the given name and type
    • getAnnotation

      public <T extends Annotation> Optional<AnnotationValue<T>> getAnnotation(String member)
      Gets a list of AnnotationValue for the given member.
      Type Parameters:
      T - The type
      Parameters:
      member - The member
      Returns:
      The result
      Throws:
      IllegalStateException - If no member is available that conforms to the given name and type
      Since:
      3.3.0
    • hasEvaluatedExpressions

      public boolean hasEvaluatedExpressions()
      If this AnnotationValue contains Evaluated Expressions.
      Returns:
      true if it is
      Since:
      4.0.0
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • builder

      public static <T extends Annotation> AnnotationValueBuilder<T> builder(String annotationName)
      Start building a new annotation for the given name.
      Type Parameters:
      T - The annotation type
      Parameters:
      annotationName - The annotation name
      Returns:
      The builder
    • builder

      public static <T extends Annotation> AnnotationValueBuilder<T> builder(String annotationName, RetentionPolicy retentionPolicy)
      Start building a new annotation for the given name.
      Type Parameters:
      T - The annotation type
      Parameters:
      annotationName - The annotation name
      retentionPolicy - The retention policy
      Returns:
      The builder
      Since:
      2.4.0
    • builder

      public static <T extends Annotation> AnnotationValueBuilder<T> builder(Class<T> annotation)
      Start building a new annotation for the given name.
      Type Parameters:
      T - The annotation type
      Parameters:
      annotation - The annotation name
      Returns:
      The builder
    • builder

      public static <T extends Annotation> AnnotationValueBuilder<T> builder(AnnotationValue<T> annotation)
      Start building a new annotation existing value.
      Type Parameters:
      T - The annotation type
      Parameters:
      annotation - The annotation name
      Returns:
      The builder
      Since:
      4.0.0
    • builder

      public static <T extends Annotation> AnnotationValueBuilder<T> builder(AnnotationValue<T> annotation, @Nullable RetentionPolicy retentionPolicy)
      Start building a new annotation existing value and retention policy.
      Type Parameters:
      T - The annotation type
      Parameters:
      annotation - The annotation name
      retentionPolicy - The retention policy. Defaults to runtime.
      Returns:
      The builder
    • resolveStringValues

      @Internal public static String @Nullable [] resolveStringValues(@Nullable Object value, @Nullable Function<Object,Object> valueMapper)
      The string values for the given value.
      Parameters:
      value - The value
      valueMapper - The value mapper
      Returns:
      The string[] or null
    • resolveEnumValues

      @Internal public static <E extends Enum> E[] resolveEnumValues(Class<E> enumType, @Nullable Object rawValue)
      The enum values for the given enum type and raw value.
      Type Parameters:
      E - The enum generic type
      Parameters:
      enumType - The enum type
      rawValue - The raw value
      Returns:
      An array of enum values
    • resolveStringArray

      @Internal public static String[] resolveStringArray(String[] strs, @Nullable Function<Object,Object> valueMapper)
      The string[] values for the given value.
      Parameters:
      strs - The strings
      valueMapper - The value mapper
      Returns:
      The string[] or the original string
    • resolveClassValues

      @Internal public static Class<?> @Nullable [] resolveClassValues(@Nullable Object value)
      The class values for the given value.
      Parameters:
      value - The value
      Returns:
      The class values or null