Class ScalaPropertyElement

java.lang.Object
io.micronaut.scala.processing.visitor.ScalaPropertyElement
All Implemented Interfaces:
io.micronaut.core.annotation.AnnotatedElement, io.micronaut.core.annotation.AnnotationMetadata, io.micronaut.core.annotation.AnnotationMetadataDelegate, io.micronaut.core.annotation.AnnotationMetadataProvider, io.micronaut.core.annotation.AnnotationSource, io.micronaut.core.naming.Described, io.micronaut.core.naming.Named, io.micronaut.inject.ast.annotation.MutableAnnotationMetadataDelegate<io.micronaut.inject.ast.Element>, io.micronaut.inject.ast.Element, io.micronaut.inject.ast.MemberElement, io.micronaut.inject.ast.PropertyElement, io.micronaut.inject.ast.TypedElement

public final class ScalaPropertyElement extends Object implements io.micronaut.inject.ast.PropertyElement
Scala property element.
  • Nested Class Summary

    Nested classes/interfaces inherited from interface io.micronaut.inject.ast.PropertyElement

    io.micronaut.inject.ast.PropertyElement.AccessKind
  • Field Summary

    Fields inherited from interface io.micronaut.core.annotation.AnnotationMetadata

    CLASS_NAME_SUFFIX, EMPTY_METADATA, VALUE_MEMBER

    Fields inherited from interface io.micronaut.core.annotation.AnnotationSource

    EMPTY

    Fields inherited from interface io.micronaut.inject.ast.Element

    EMPTY_ELEMENT_ARRAY

    Fields inherited from interface io.micronaut.inject.ast.annotation.MutableAnnotationMetadataDelegate

    EMPTY
  • Method Summary

    Modifier and Type
    Method
    Description
    <T extends Annotation>
    io.micronaut.inject.ast.Element
    annotate(io.micronaut.core.annotation.AnnotationValue<T> annotationValue)
     
    <T extends Annotation>
    io.micronaut.inject.ast.Element
    annotate(String annotationType, Consumer<io.micronaut.core.annotation.AnnotationValueBuilder<T>> consumer)
     
    protected Object
     
    protected Class<?>
     
    boolean
     
    io.micronaut.core.annotation.AnnotationMetadata
     
    protected io.micronaut.inject.ast.annotation.MutableAnnotationMetadataDelegate<?>
     
    io.micronaut.inject.ast.ClassElement
     
    getDocumentation(boolean parse)
    The documentation of this property, falling back to the declaring class's tag for it.
    protected io.micronaut.inject.ast.annotation.ElementAnnotationMetadata
     
    Optional<io.micronaut.inject.ast.FieldElement>
     
    Set<io.micronaut.inject.ast.ElementModifier>
     
     
     
    io.micronaut.inject.ast.ClassElement
     
    io.micronaut.inject.ast.PropertyElement.AccessKind
     
    Optional<? extends io.micronaut.inject.ast.MemberElement>
     
    Optional<io.micronaut.inject.ast.MethodElement>
     
    io.micronaut.inject.ast.ClassElement
     
    io.micronaut.inject.ast.PropertyElement.AccessKind
     
    Optional<? extends io.micronaut.inject.ast.MemberElement>
     
    Optional<io.micronaut.inject.ast.MethodElement>
     
    int
     
    protected boolean
    Whether an absent nullability annotation on this member means non-null.
    boolean
     
    boolean
     
    boolean
     
    boolean
     
    boolean
     
    boolean
     
    boolean
     
    boolean
     
    boolean
     
    boolean
     
    boolean
     
    protected Optional<String>
     
    io.micronaut.inject.ast.Element
    removeAnnotation(String annotationType)
     
    <T extends Annotation>
    io.micronaut.inject.ast.Element
    removeAnnotationIf(Predicate<io.micronaut.core.annotation.AnnotationValue<T>> predicate)
     
    io.micronaut.inject.ast.Element
    removeStereotype(String annotationType)
     
    io.micronaut.inject.ast.PropertyElement
    withAnnotationMetadata(io.micronaut.core.annotation.AnnotationMetadata annotationMetadata)
     

    Methods inherited from class Object

    clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface io.micronaut.core.annotation.AnnotatedElement

    isDeclaredNonNull, isDeclaredNullable, isNonNull, isNullable

    Methods inherited from interface io.micronaut.core.annotation.AnnotationMetadata

    enumValuesSet, enumValuesSet, getValues, hasDeclaredStereotype, hasStereotypeNonRepeating, isAnnotationPresent, isDeclaredAnnotationPresent

    Methods inherited from interface io.micronaut.core.annotation.AnnotationMetadataDelegate

    booleanValue, booleanValue, booleanValue, booleanValue, classValue, classValue, classValue, classValue, classValues, classValues, classValues, classValues, copyAnnotationMetadata, doubleValue, doubleValue, doubleValue, enumValue, enumValue, enumValue, enumValue, enumValues, enumValues, enumValues, enumValues, findAnnotation, findAnnotation, findDeclaredAnnotation, findDeclaredAnnotation, findRepeatableAnnotation, findRepeatableAnnotation, getAnnotation, getAnnotation, getAnnotationNameByStereotype, getAnnotationNameByStereotype, getAnnotationNames, getAnnotationNamesByStereotype, getAnnotationNamesByStereotype, getAnnotationType, getAnnotationType, getAnnotationTypeByStereotype, getAnnotationTypeByStereotype, getAnnotationTypesByStereotype, getAnnotationTypesByStereotype, getAnnotationTypesByStereotype, getAnnotationValuesByName, getAnnotationValuesByStereotype, getAnnotationValuesByType, getDeclaredAnnotation, getDeclaredAnnotation, getDeclaredAnnotationNameByStereotype, getDeclaredAnnotationNames, getDeclaredAnnotationNamesByStereotype, getDeclaredAnnotationTypeByStereotype, getDeclaredAnnotationTypeByStereotype, getDeclaredAnnotationValuesByName, getDeclaredAnnotationValuesByType, getDeclaredMetadata, getDeclaredStereotypeAnnotationNames, getDefaultValue, getDefaultValue, getDefaultValue, getDefaultValue, getDefaultValues, getStereotypeAnnotationNames, getTargetAnnotationMetadata, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValues, getValues, hasAnnotation, hasAnnotation, hasDeclaredAnnotation, hasDeclaredAnnotation, hasDeclaredStereotype, hasDeclaredStereotype, hasDeclaredStereotype, hasEvaluatedExpressions, hasPropertyExpressions, hasSimpleAnnotation, hasSimpleDeclaredAnnotation, hasStereotype, hasStereotype, hasStereotype, hasStereotype, intValue, intValue, intValue, isAnnotationPresent, isDeclaredAnnotationPresent, isEmpty, isFalse, isFalse, isPresent, isPresent, isRepeatableAnnotation, isRepeatableAnnotation, isTrue, isTrue, longValue, longValue, stringValue, stringValue, stringValue, stringValue, stringValues, stringValues, stringValues, stringValues, synthesize, synthesize, synthesizeAll, synthesizeAnnotationsByType, synthesizeDeclared, synthesizeDeclared, synthesizeDeclared, synthesizeDeclaredAnnotationsByType

    Methods inherited from interface io.micronaut.inject.ast.Element

    annotate, annotate, annotate, annotate, annotate, getDescription, getDescription, getDocumentation, getName, getNativeType, getSimpleName, isAbstract, isFinal, isPackagePrivate, isPrivate, isProtected, isPublic, isStatic, isSynthetic, removeAnnotation, removeAnnotation, removeAnnotationIf, removeStereotype, removeStereotype

    Methods inherited from interface io.micronaut.inject.ast.MemberElement

    getDeclaringType, getModifiers, hides, isAccessible, isAccessible, isAccessible, isReflectionRequired, isReflectionRequired

    Methods inherited from interface io.micronaut.inject.ast.PropertyElement

    getReadType, getReadTypeAnnotationMetadata, getWriteType, getWriteTypeAnnotationMetadata, overrides

    Methods inherited from interface io.micronaut.inject.ast.TypedElement

    getArrayDimensions, getGenericType, isArray, isPrimitive, isVoid
  • Method Details

    • getType

      public io.micronaut.inject.ast.ClassElement getType()
      Specified by:
      getType in interface io.micronaut.inject.ast.PropertyElement
      Specified by:
      getType in interface io.micronaut.inject.ast.TypedElement
    • getOwningType

      public io.micronaut.inject.ast.ClassElement getOwningType()
      Specified by:
      getOwningType in interface io.micronaut.inject.ast.MemberElement
    • getField

      public Optional<io.micronaut.inject.ast.FieldElement> getField()
      Specified by:
      getField in interface io.micronaut.inject.ast.PropertyElement
    • getWriteMethod

      public Optional<io.micronaut.inject.ast.MethodElement> getWriteMethod()
      Specified by:
      getWriteMethod in interface io.micronaut.inject.ast.PropertyElement
    • getReadMethod

      public Optional<io.micronaut.inject.ast.MethodElement> getReadMethod()
      Specified by:
      getReadMethod in interface io.micronaut.inject.ast.PropertyElement
    • getReadMember

      public Optional<? extends io.micronaut.inject.ast.MemberElement> getReadMember()
      Specified by:
      getReadMember in interface io.micronaut.inject.ast.PropertyElement
    • getWriteMember

      public Optional<? extends io.micronaut.inject.ast.MemberElement> getWriteMember()
      Specified by:
      getWriteMember in interface io.micronaut.inject.ast.PropertyElement
    • getDocumentation

      public Optional<String> getDocumentation(boolean parse)
      The documentation of this property, falling back to the declaring class's tag for it.

      The inherited resolution looks where a property is documented in Java: on the field, or on the accessor. A Scala class parameter is documented in neither -- class Engine(val manufacturer: String) declares a property whose description belongs to the class, as a @param tag, because that is the only place the author can write it. Without this a configuration class written the ordinary Scala way produces metadata with no descriptions at all, which is the whole reason to read documentation.

      Specified by:
      getDocumentation in interface io.micronaut.inject.ast.Element
      Specified by:
      getDocumentation in interface io.micronaut.inject.ast.PropertyElement
      Parameters:
      parse - Whether the comment may be parsed
      Returns:
      The documentation for this property, if anything documents it
    • getAnnotationMetadata

      public io.micronaut.core.annotation.AnnotationMetadata getAnnotationMetadata()
      Specified by:
      getAnnotationMetadata in interface io.micronaut.core.annotation.AnnotationMetadataProvider
    • getAnnotationMetadataToWrite

      protected io.micronaut.inject.ast.annotation.MutableAnnotationMetadataDelegate<?> getAnnotationMetadataToWrite()
    • withAnnotationMetadata

      public io.micronaut.inject.ast.PropertyElement withAnnotationMetadata(io.micronaut.core.annotation.AnnotationMetadata annotationMetadata)
      Specified by:
      withAnnotationMetadata in interface io.micronaut.inject.ast.Element
      Specified by:
      withAnnotationMetadata in interface io.micronaut.inject.ast.MemberElement
    • getReadAccessKind

      public io.micronaut.inject.ast.PropertyElement.AccessKind getReadAccessKind()
      Specified by:
      getReadAccessKind in interface io.micronaut.inject.ast.PropertyElement
    • getWriteAccessKind

      public io.micronaut.inject.ast.PropertyElement.AccessKind getWriteAccessKind()
      Specified by:
      getWriteAccessKind in interface io.micronaut.inject.ast.PropertyElement
    • isExcluded

      public boolean isExcluded()
      Specified by:
      isExcluded in interface io.micronaut.inject.ast.PropertyElement
    • isReadOnly

      public boolean isReadOnly()
      Specified by:
      isReadOnly in interface io.micronaut.inject.ast.PropertyElement
    • isWriteOnly

      public boolean isWriteOnly()
      Specified by:
      isWriteOnly in interface io.micronaut.inject.ast.PropertyElement
    • getDeclaringType

      public io.micronaut.inject.ast.ClassElement getDeclaringType()
      Specified by:
      getDeclaringType in interface io.micronaut.inject.ast.MemberElement
    • equalityKey

      protected Object equalityKey()
    • hasNullMarked

      protected boolean hasNullMarked()
      Whether an absent nullability annotation on this member means non-null.

      `@NullMarked` annotates nothing itself: it changes what saying nothing means for everything inside it. Core leaves that to the language module -- `isNonNull()` on the shared `AnnotatedElement` only asks whether the stereotype is present -- and the Java module implements it by walking from the member out to its owning type. Without the same walk here, every unannotated member of a `@NullMarked` Scala class reported neither nullable nor non-null, so binding and validation treated it as unconstrained.

      Returns:
      true when this member, or the type declaring it, is null-marked
    • isNonNull

      public boolean isNonNull()
      Specified by:
      isNonNull in interface io.micronaut.core.annotation.AnnotatedElement
    • rawDocumentation

      protected Optional<String> rawDocumentation()
      Returns:
      The raw Scaladoc comment written on this element, if any
    • getName

      public String getName()
      Specified by:
      getName in interface io.micronaut.inject.ast.Element
      Specified by:
      getName in interface io.micronaut.core.naming.Named
    • isProtected

      public boolean isProtected()
      Specified by:
      isProtected in interface io.micronaut.inject.ast.Element
    • isPublic

      public boolean isPublic()
      Specified by:
      isPublic in interface io.micronaut.inject.ast.Element
    • isPrivate

      public boolean isPrivate()
      Specified by:
      isPrivate in interface io.micronaut.inject.ast.Element
    • isPackagePrivate

      public boolean isPackagePrivate()
      Specified by:
      isPackagePrivate in interface io.micronaut.inject.ast.Element
    • isAbstract

      public boolean isAbstract()
      Specified by:
      isAbstract in interface io.micronaut.inject.ast.Element
    • isStatic

      public boolean isStatic()
      Specified by:
      isStatic in interface io.micronaut.inject.ast.Element
    • isFinal

      public boolean isFinal()
      Specified by:
      isFinal in interface io.micronaut.inject.ast.Element
    • getModifiers

      public Set<io.micronaut.inject.ast.ElementModifier> getModifiers()
      Specified by:
      getModifiers in interface io.micronaut.inject.ast.Element
    • getNativeType

      public Object getNativeType()
      Specified by:
      getNativeType in interface io.micronaut.inject.ast.Element
    • getElementAnnotationMetadata

      protected io.micronaut.inject.ast.annotation.ElementAnnotationMetadata getElementAnnotationMetadata()
    • annotate

      public <T extends Annotation> io.micronaut.inject.ast.Element annotate(String annotationType, Consumer<io.micronaut.core.annotation.AnnotationValueBuilder<T>> consumer)
      Specified by:
      annotate in interface io.micronaut.inject.ast.Element
      Specified by:
      annotate in interface io.micronaut.inject.ast.annotation.MutableAnnotationMetadataDelegate<io.micronaut.inject.ast.Element>
    • annotate

      public <T extends Annotation> io.micronaut.inject.ast.Element annotate(io.micronaut.core.annotation.AnnotationValue<T> annotationValue)
      Specified by:
      annotate in interface io.micronaut.inject.ast.Element
      Specified by:
      annotate in interface io.micronaut.inject.ast.annotation.MutableAnnotationMetadataDelegate<io.micronaut.inject.ast.Element>
    • removeAnnotation

      public io.micronaut.inject.ast.Element removeAnnotation(String annotationType)
      Specified by:
      removeAnnotation in interface io.micronaut.inject.ast.Element
      Specified by:
      removeAnnotation in interface io.micronaut.inject.ast.annotation.MutableAnnotationMetadataDelegate<io.micronaut.inject.ast.Element>
    • removeAnnotationIf

      public <T extends Annotation> io.micronaut.inject.ast.Element removeAnnotationIf(Predicate<io.micronaut.core.annotation.AnnotationValue<T>> predicate)
      Specified by:
      removeAnnotationIf in interface io.micronaut.inject.ast.Element
      Specified by:
      removeAnnotationIf in interface io.micronaut.inject.ast.annotation.MutableAnnotationMetadataDelegate<io.micronaut.inject.ast.Element>
    • removeStereotype

      public io.micronaut.inject.ast.Element removeStereotype(String annotationType)
      Specified by:
      removeStereotype in interface io.micronaut.inject.ast.Element
      Specified by:
      removeStereotype in interface io.micronaut.inject.ast.annotation.MutableAnnotationMetadataDelegate<io.micronaut.inject.ast.Element>
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

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

      protected Class<?> equalityType()