Class FieldScope

java.lang.Object
com.github.victools.jsonschema.generator.TypeScope
com.github.victools.jsonschema.generator.MemberScope<com.fasterxml.classmate.members.ResolvedField,Field>
com.github.victools.jsonschema.generator.FieldScope

public class FieldScope extends MemberScope<com.fasterxml.classmate.members.ResolvedField,Field>
Representation of a single introspected field.
  • Constructor Details

    • FieldScope

      protected FieldScope(com.fasterxml.classmate.members.ResolvedField field, MemberScope.DeclarationDetails declarationDetails, com.github.victools.jsonschema.generator.MemberScope.OverrideDetails overrideDetails, TypeContext context)
      Constructor.
      Parameters:
      field - targeted field
      declarationDetails - basic details regarding the declaration context
      overrideDetails - augmenting details (e.g., overridden type, name, or container item index)
      context - the overall type resolution context
  • Method Details

    • withOverriddenType

      public FieldScope withOverriddenType(com.fasterxml.classmate.ResolvedType overriddenType)
      Description copied from class: MemberScope
      Create another instance for this field or method and context, but overriding the declared field/method return type with the given one.
      Specified by:
      withOverriddenType in class MemberScope<com.fasterxml.classmate.members.ResolvedField,Field>
      Parameters:
      overriddenType - alternative type for this field or method return value (overriding the declared type)
      Returns:
      new instance with the given type override
      See Also:
    • withOverriddenName

      public FieldScope withOverriddenName(String overriddenName)
      Description copied from class: MemberScope
      Create another instance for this field or method and context, but overriding the declared field/method name with the given one.
      Specified by:
      withOverriddenName in class MemberScope<com.fasterxml.classmate.members.ResolvedField,Field>
      Parameters:
      overriddenName - alternative name for this field or method
      Returns:
      new instance with the given name override
      See Also:
    • asFakeContainerItemScope

      public FieldScope asFakeContainerItemScope()
      Description copied from class: MemberScope
      Create another instance for this field or method and context, representing its field/method return type's container item type.
      Overrides:
      asFakeContainerItemScope in class MemberScope<com.fasterxml.classmate.members.ResolvedField,Field>
      Returns:
      new instance with the container item type as override (or an identical copy if this is not a container type)
      See Also:
    • doGetSchemaPropertyName

      protected String doGetSchemaPropertyName()
      Returns the name to be used to reference this field in its parent's "properties".
      Specified by:
      doGetSchemaPropertyName in class MemberScope<com.fasterxml.classmate.members.ResolvedField,Field>
      Returns:
      the (potentially overridden) name of this field
      See Also:
    • isTransient

      public boolean isTransient()
      Indicates whether the field has the transient keyword.
      Returns:
      whether field is transient
    • findGetter

      public MethodScope findGetter()
      Return the conventional getter method (if one exists). E.g. for a field named "foo", look-up either "getFoo()" or "isFoo()".
      Returns:
      public getter from within the field's declaring class
    • hasGetter

      public boolean hasGetter()
      Determine whether the field's declaring class contains a matching method starting with "get" or "is".
      Returns:
      whether a matching getter exists in the field's declaring class
      See Also:
    • getContainerItemAnnotation

      public <A extends Annotation> A getContainerItemAnnotation(Class<A> annotationClass, Predicate<Annotation> considerOtherAnnotation)
      Description copied from class: MemberScope
      Return the annotation of the given type on the member's container item (i.e. first type parameter if there is one), if such an annotation is present on either the field or its getter.
      Additionally, also consider annotations on annotations, if the given predicate indicates another annotation as eligible for holding the target.
      Specified by:
      getContainerItemAnnotation in class MemberScope<com.fasterxml.classmate.members.ResolvedField,Field>
      Type Parameters:
      A - type of annotation
      Parameters:
      annotationClass - type of annotation
      considerOtherAnnotation - check whether some other annotation should also be checked for holding an instance of the target annotation
      Returns:
      annotation instance (or null if no annotation of the given type is present)
    • getAnnotationConsideringFieldAndGetter

      public <A extends Annotation> A getAnnotationConsideringFieldAndGetter(Class<A> annotationClass, Predicate<Annotation> considerOtherAnnotation)
      Description copied from class: MemberScope
      Return the annotation of the given type on the member, if such an annotation is present on either the field or its getter.
      Additionally, also consider annotations on annotations, if the given predicate indicates another annotation as eligible for holding the target.
      Specified by:
      getAnnotationConsideringFieldAndGetter in class MemberScope<com.fasterxml.classmate.members.ResolvedField,Field>
      Type Parameters:
      A - type of annotation
      Parameters:
      annotationClass - type of annotation
      considerOtherAnnotation - check whether some other annotation should also be checked for holding an instance of the target annotation
      Returns:
      annotation instance (or null if no annotation of the given type is present)
    • getContainerItemAnnotationConsideringFieldAndGetter

      public <A extends Annotation> A getContainerItemAnnotationConsideringFieldAndGetter(Class<A> annotationClass, Predicate<Annotation> considerOtherAnnotation)
      Description copied from class: MemberScope
      Return the annotation of the given type on the member's container item (i.e. single type parameter if there is one), if such an annotation is present on either the field or its getter.
      Additionally, also consider annotations on annotations, if the given predicate indicates another annotation as eligible for holding the target.
      Specified by:
      getContainerItemAnnotationConsideringFieldAndGetter in class MemberScope<com.fasterxml.classmate.members.ResolvedField,Field>
      Type Parameters:
      A - type of annotation
      Parameters:
      annotationClass - type of annotation
      considerOtherAnnotation - check whether some other annotation should also be checked for holding an instance of the target annotation
      Returns:
      annotation instance (or null if no annotation of the given type is present)