Class MemberScope<M extends com.fasterxml.classmate.members.ResolvedMember<T>,T extends Member>
- java.lang.Object
-
- com.github.victools.jsonschema.generator.TypeScope
-
- com.github.victools.jsonschema.generator.MemberScope<M,T>
-
- Type Parameters:
M
- type of member in scope (i.e.ResolvedField
orResolvedMethod
).T
- type of java/reflection member in scope (i.e.FIeld
orNethod
- Direct Known Subclasses:
FieldScope
,MethodScope
public abstract class MemberScope<M extends com.fasterxml.classmate.members.ResolvedMember<T>,T extends Member> extends TypeScope
Representation of a single introspected field or method.
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
MemberScope(M member, com.fasterxml.classmate.ResolvedType overriddenType, String overriddenName, com.fasterxml.classmate.ResolvedTypeWithMembers declaringTypeMembers, Integer fakeContainerItemIndex, TypeContext context)
Constructor.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description MemberScope<M,T>
asFakeContainerItemScope()
Create another instance for this field or method and context, representing its field/method return type's container item type.MemberScope<M,T>
asFakeContainerItemScope(Class<?> referenceType, int containerItemIndex)
Create another instance for this field or method and context, representing its field/method return type's container item type.protected abstract String
doGetSchemaPropertyName()
Returns the name to be used to reference this member in its parent's "properties".<A extends Annotation>
AgetAnnotation(Class<A> annotationClass)
Return the annotation of the given type on the member, if such an annotation is present.abstract <A extends Annotation>
AgetAnnotationConsideringFieldAndGetter(Class<A> annotationClass)
Return the annotation of the given type on the member, if such an annotation is present on either the field or its getter.<A extends Annotation>
AgetAnnotationConsideringFieldAndGetterIfSupported(Class<A> annotationClass)
Return the annotation of the given type on the member, if such an annotation is present on either the field or its getter and this is not afake container item scope
.abstract <A extends Annotation>
AgetContainerItemAnnotation(Class<A> annotationClass)
Return the annotation of the given type on the member's container item (i.e.abstract <A extends Annotation>
AgetContainerItemAnnotationConsideringFieldAndGetter(Class<A> annotationClass)
Return the annotation of the given type on the member's container item (i.e.<A extends Annotation>
AgetContainerItemAnnotationConsideringFieldAndGetterIfSupported(Class<A> annotationClass)
Return the annotation of the given type on the member's container item (i.e.String
getDeclaredName()
Returns the member's name as specified in the declaring class.com.fasterxml.classmate.ResolvedType
getDeclaredType()
Returns the type declared as the field's or method return value's type.com.fasterxml.classmate.ResolvedType
getDeclaringType()
Returns the member's declaring type.com.fasterxml.classmate.ResolvedTypeWithMembers
getDeclaringTypeMembers()
Getter for the collection of the member's declaring type's (other) fields and methods.protected Integer
getFakeContainerItemIndex()
Getter for thefakeContainerItemIndex
(may be null).M
getMember()
Getter for the represented field or method.String
getName()
Returns name of this member.String
getOverriddenName()
Returns the member's overridden name.com.fasterxml.classmate.ResolvedType
getOverriddenType()
Returns the overridden type of the field or method's return value.T
getRawMember()
Returns the JDK object that represents member.String
getSchemaPropertyName()
Returns the name to be used to reference this member in its parent's "properties".boolean
isFakeContainerItemScope()
Check whether this field/method scope represents only the container item type of the actual field/method.boolean
isFinal()
Indicates whether the member has thefinal
keyword.boolean
isPrivate()
Indicates whether the member is ofprivate
visibility.boolean
isProtected()
Indicates whether the member is ofprotected
visibility.boolean
isPublic()
Indicates whether the member is ofpublic
visibility.boolean
isStatic()
Indicates whether the member has thestatic
keyword.String
toString()
abstract MemberScope<M,T>
withOverriddenName(String overriddenName)
Create another instance for this field or method and context, but overriding the declared field/method name with the given one.abstract MemberScope<M,T>
withOverriddenType(com.fasterxml.classmate.ResolvedType overriddenType)
Create another instance for this field or method and context, but overriding the declared field/method return type with the given one.-
Methods inherited from class com.github.victools.jsonschema.generator.TypeScope
getContainerItemType, getContext, getFullTypeDescription, getSimpleTypeDescription, getType, getTypeParameterFor, isContainerType
-
-
-
-
Constructor Detail
-
MemberScope
protected MemberScope(M member, com.fasterxml.classmate.ResolvedType overriddenType, String overriddenName, com.fasterxml.classmate.ResolvedTypeWithMembers declaringTypeMembers, Integer fakeContainerItemIndex, TypeContext context)
Constructor.- Parameters:
member
- targeted field or methodoverriddenType
- alternative type for this field or method's return valueoverriddenName
- alternative name for this field or methoddeclaringTypeMembers
- collection of the declaring type's (other) fields and methodsfakeContainerItemIndex
- index of the container item on the generic field/method scope's declared type (e.g., in case of a List, it is 0)context
- the overall type resolution context
-
-
Method Detail
-
getFakeContainerItemIndex
protected Integer getFakeContainerItemIndex()
Getter for thefakeContainerItemIndex
(may be null).- Returns:
- index of the container item on the generic field/method scope's declared type (e.g., in case of a List, it is 0)
- See Also:
isFakeContainerItemScope()
-
withOverriddenType
public abstract MemberScope<M,T> withOverriddenType(com.fasterxml.classmate.ResolvedType overriddenType)
Create another instance for this field or method and context, but overriding the declared field/method return type with the given one.- 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:
getDeclaredType()
,getOverriddenType()
-
asFakeContainerItemScope
public MemberScope<M,T> asFakeContainerItemScope()
Create another instance for this field or method and context, representing its field/method return type's container item type.- Returns:
- new instance with the container item type as override (or an identical copy if this is not a container type)
- See Also:
withOverriddenType(ResolvedType)
,TypeScope.getContainerItemType()
,isFakeContainerItemScope()
-
asFakeContainerItemScope
public MemberScope<M,T> asFakeContainerItemScope(Class<?> referenceType, int containerItemIndex)
Create another instance for this field or method and context, representing its field/method return type's container item type.- Parameters:
referenceType
- the generic "container type" from which to extract the "container item type"containerItemIndex
- index of the container item on the generic field/method scope's declared type (e.g., in case of a List, it is 0)- Returns:
- new instance with the container item type as override (or an identical copy if this is not a container type)
- See Also:
withOverriddenType(ResolvedType)
,TypeScope.getContainerItemType()
,isFakeContainerItemScope()
-
withOverriddenName
public abstract MemberScope<M,T> withOverriddenName(String overriddenName)
Create another instance for this field or method and context, but overriding the declared field/method name with the given one.- Parameters:
overriddenName
- alternative name for this field or method- Returns:
- new instance with the given name override
- See Also:
getDeclaredType()
,getOverriddenType()
-
getMember
public M getMember()
Getter for the represented field or method.- Returns:
- represented field or method
-
getDeclaringTypeMembers
public com.fasterxml.classmate.ResolvedTypeWithMembers getDeclaringTypeMembers()
Getter for the collection of the member's declaring type's (other) fields and methods.- Returns:
- declaring type's fields and methods
-
getDeclaredType
public com.fasterxml.classmate.ResolvedType getDeclaredType()
Returns the type declared as the field's or method return value's type.- Returns:
- declared type
- See Also:
TypeScope.getType()
-
getOverriddenType
public com.fasterxml.classmate.ResolvedType getOverriddenType()
Returns the overridden type of the field or method's return value.- Returns:
- overridden type (or
null
if no override applies) - See Also:
TypeScope.getType()
-
isFakeContainerItemScope
public boolean isFakeContainerItemScope()
Check whether this field/method scope represents only the container item type of the actual field/method.- Returns:
- whether this is not the actual field/method but a representation of its container item type
-
getDeclaredName
public String getDeclaredName()
Returns the member's name as specified in the declaring class.- Returns:
- declared method/field name
- See Also:
getName()
-
getOverriddenName
public String getOverriddenName()
Returns the member's overridden name.- Returns:
- overridden name (or
null
if no override applies) - See Also:
getName()
-
getName
public String getName()
Returns name of this member.- Returns:
- method/field name
- See Also:
getDeclaredName()
,getOverriddenName()
-
getDeclaringType
public final com.fasterxml.classmate.ResolvedType getDeclaringType()
Returns the member's declaring type.- Returns:
- declaring type
-
getRawMember
public T getRawMember()
Returns the JDK object that represents member.- Returns:
- raw member
-
isStatic
public boolean isStatic()
Indicates whether the member has thestatic
keyword.- Returns:
- whether member is static
-
isFinal
public boolean isFinal()
Indicates whether the member has thefinal
keyword.- Returns:
- whether member is final
-
isPrivate
public boolean isPrivate()
Indicates whether the member is ofprivate
visibility.- Returns:
- whether member is private
-
isProtected
public boolean isProtected()
Indicates whether the member is ofprotected
visibility.- Returns:
- whether member is protected
-
isPublic
public boolean isPublic()
Indicates whether the member is ofpublic
visibility.- Returns:
- whether member is public
-
getAnnotation
public <A extends Annotation> A getAnnotation(Class<A> annotationClass)
Return the annotation of the given type on the member, if such an annotation is present.- Type Parameters:
A
- type of annotation to look-up- Parameters:
annotationClass
- annotation class to look up instance on member for- Returns:
- annotation instance (or
null
if no annotation of the given type is present
-
getContainerItemAnnotation
public abstract <A extends Annotation> A getContainerItemAnnotation(Class<A> annotationClass)
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.- Type Parameters:
A
- type of annotation- Parameters:
annotationClass
- type of annotation- Returns:
- annotation instance (or
null
if no annotation of the given type is present)
-
getAnnotationConsideringFieldAndGetter
public abstract <A extends Annotation> A getAnnotationConsideringFieldAndGetter(Class<A> annotationClass)
Return the annotation of the given type on the member, if such an annotation is present on either the field or its getter.- Type Parameters:
A
- type of annotation- Parameters:
annotationClass
- type of annotation- Returns:
- annotation instance (or
null
if no annotation of the given type is present)
-
getAnnotationConsideringFieldAndGetterIfSupported
public <A extends Annotation> A getAnnotationConsideringFieldAndGetterIfSupported(Class<A> annotationClass)
Return the annotation of the given type on the member, if such an annotation is present on either the field or its getter and this is not afake container item scope
.- Type Parameters:
A
- type of annotation- Parameters:
annotationClass
- type of annotation- Returns:
- annotation instance (or
null
if no annotation of the given type is present or the look-up is not supported by default)
-
getContainerItemAnnotationConsideringFieldAndGetter
public abstract <A extends Annotation> A getContainerItemAnnotationConsideringFieldAndGetter(Class<A> annotationClass)
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.- Type Parameters:
A
- type of annotation- Parameters:
annotationClass
- type of annotation- Returns:
- annotation instance (or
null
if no annotation of the given type is present)
-
getContainerItemAnnotationConsideringFieldAndGetterIfSupported
public <A extends Annotation> A getContainerItemAnnotationConsideringFieldAndGetterIfSupported(Class<A> annotationClass)
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 and this particular member is either a collection or special generic type (e.g.Optional
).- Type Parameters:
A
- type of annotation- Parameters:
annotationClass
- type of annotation- Returns:
- annotation instance (or
null
if no annotation of the given type is present or this look-up is not supported by default )
-
getSchemaPropertyName
public String getSchemaPropertyName()
Returns the name to be used to reference this member in its parent's "properties".- Returns:
- member's name in parent "properties"
-
doGetSchemaPropertyName
protected abstract String doGetSchemaPropertyName()
Returns the name to be used to reference this member in its parent's "properties".- Returns:
- member's name in parent "properties"
-
-