Class MethodScope
- java.lang.Object
-
- com.github.victools.jsonschema.generator.TypeScope
-
- com.github.victools.jsonschema.generator.MemberScope<com.fasterxml.classmate.members.ResolvedMethod,Method>
-
- com.github.victools.jsonschema.generator.MethodScope
-
public class MethodScope extends MemberScope<com.fasterxml.classmate.members.ResolvedMethod,Method>
Representation of a single introspected method.
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
MethodScope(com.fasterxml.classmate.members.ResolvedMethod method, com.fasterxml.classmate.ResolvedType overriddenType, String overriddenName, com.fasterxml.classmate.ResolvedTypeWithMembers declaringTypeMembers, Integer fakeContainerItemIndex, TypeContext context)
Constructor.protected
MethodScope(com.fasterxml.classmate.members.ResolvedMethod method, com.fasterxml.classmate.ResolvedTypeWithMembers declaringTypeMembers, TypeContext context)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description MethodScope
asFakeContainerItemScope()
Create another instance for this field or method and context, representing its field/method return type's container item type.protected String
doGetSchemaPropertyName()
Returns the name to be used to reference this method in its parent's "properties".FieldScope
findGetterField()
Look-up the field associated with this method if it is deemed to be a getter by convention.<A extends Annotation>
AgetAnnotation(Class<A> annotationClass, Predicate<Annotation> considerOtherAnnotation)
Return the annotation of the given type on the method or its return type, if such an annotation is present.<A extends Annotation>
AgetAnnotationConsideringFieldAndGetter(Class<A> annotationClass, Predicate<Annotation> considerOtherAnnotation)
Return the annotation of the given type on the member, if such an annotation is present on either the field or its getter.int
getArgumentCount()
Returns the number of arguments this method has.List<com.fasterxml.classmate.ResolvedType>
getArgumentTypes()
Returns the list of types of this method's arguments.<A extends Annotation>
AgetContainerItemAnnotation(Class<A> annotationClass, Predicate<Annotation> considerOtherAnnotation)
Return the annotation of the given type on the member's container item (i.e.<A extends Annotation>
AgetContainerItemAnnotationConsideringFieldAndGetter(Class<A> annotationClass, Predicate<Annotation> considerOtherAnnotation)
Return the annotation of the given type on the member's container item (i.e.boolean
isGetter()
Determine whether the method's name matches the getter naming convention ("getFoo()"/"isFoo()") and a respective field ("foo") exists.boolean
isVoid()
Indicating whether the method is declared asvoid
, i.e.MethodScope
withOverriddenName(String overriddenName)
Create another instance for this field or method and context, but overriding the declared field/method name with the given one.MethodScope
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.MemberScope
asFakeContainerItemScope, getAnnotation, getAnnotationConsideringFieldAndGetter, getAnnotationConsideringFieldAndGetterIfSupported, getAnnotationConsideringFieldAndGetterIfSupported, getContainerItemAnnotation, getContainerItemAnnotationConsideringFieldAndGetter, getContainerItemAnnotationConsideringFieldAndGetterIfSupported, getContainerItemAnnotationConsideringFieldAndGetterIfSupported, getDeclaredName, getDeclaredType, getDeclaringType, getDeclaringTypeMembers, getFakeContainerItemIndex, getMember, getName, getOverriddenName, getOverriddenType, getRawMember, getSchemaPropertyName, isFakeContainerItemScope, isFinal, isPrivate, isProtected, isPublic, isStatic, toString
-
Methods inherited from class com.github.victools.jsonschema.generator.TypeScope
getContainerItemType, getContext, getFullTypeDescription, getSimpleTypeDescription, getType, getTypeParameterFor, isContainerType
-
-
-
-
Constructor Detail
-
MethodScope
protected MethodScope(com.fasterxml.classmate.members.ResolvedMethod method, com.fasterxml.classmate.ResolvedTypeWithMembers declaringTypeMembers, TypeContext context)
Constructor.- Parameters:
method
- targeted methoddeclaringTypeMembers
- collection of the declaring type's fields and (other) methodscontext
- the overall type resolution context
-
MethodScope
protected MethodScope(com.fasterxml.classmate.members.ResolvedMethod method, com.fasterxml.classmate.ResolvedType overriddenType, String overriddenName, com.fasterxml.classmate.ResolvedTypeWithMembers declaringTypeMembers, Integer fakeContainerItemIndex, TypeContext context)
Constructor.- Parameters:
method
- targeted methodoverriddenType
- alternative type for this method's return valueoverriddenName
- alternative name for this methoddeclaringTypeMembers
- collection of the declaring type's fields and (other) 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
-
withOverriddenType
public MethodScope 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 classMemberScope<com.fasterxml.classmate.members.ResolvedMethod,Method>
- 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:
MemberScope.getDeclaredType()
,MemberScope.getOverriddenType()
-
withOverriddenName
public MethodScope 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 classMemberScope<com.fasterxml.classmate.members.ResolvedMethod,Method>
- Parameters:
overriddenName
- alternative name for this field or method- Returns:
- new instance with the given name override
- See Also:
MemberScope.getDeclaredType()
,MemberScope.getOverriddenType()
-
asFakeContainerItemScope
public MethodScope 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 classMemberScope<com.fasterxml.classmate.members.ResolvedMethod,Method>
- Returns:
- new instance with the container item type as override (or an identical copy if this is not a container type)
- See Also:
MemberScope.withOverriddenType(ResolvedType)
,TypeScope.getContainerItemType()
,MemberScope.isFakeContainerItemScope()
-
isVoid
public boolean isVoid()
Indicating whether the method is declared asvoid
, i.e. has no return value.- Returns:
- whether method has no return value
-
getArgumentCount
public int getArgumentCount()
Returns the number of arguments this method has.- Returns:
- number of arguments
-
getArgumentTypes
public List<com.fasterxml.classmate.ResolvedType> getArgumentTypes()
Returns the list of types of this method's arguments.- Returns:
- argument types
-
findGetterField
public FieldScope findGetterField()
Look-up the field associated with this method if it is deemed to be a getter by convention.- Returns:
- associated field
-
isGetter
public boolean isGetter()
Determine whether the method's name matches the getter naming convention ("getFoo()"/"isFoo()") and a respective field ("foo") exists.- Returns:
- whether method name starts with "get"/"is" and rest matches name of field in declaring class
- See Also:
findGetterField()
-
getAnnotation
public <A extends Annotation> A getAnnotation(Class<A> annotationClass, Predicate<Annotation> considerOtherAnnotation)
Return the annotation of the given type on the method or its return type, if such an annotation is present.- Overrides:
getAnnotation
in classMemberScope<com.fasterxml.classmate.members.ResolvedMethod,Method>
- Type Parameters:
A
- type of annotation to look-up- Parameters:
annotationClass
- annotation class to look up instance on member forconsiderOtherAnnotation
- 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
-
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 classMemberScope<com.fasterxml.classmate.members.ResolvedMethod,Method>
- Type Parameters:
A
- type of annotation- Parameters:
annotationClass
- type of annotationconsiderOtherAnnotation
- 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 classMemberScope<com.fasterxml.classmate.members.ResolvedMethod,Method>
- Type Parameters:
A
- type of annotation- Parameters:
annotationClass
- type of annotationconsiderOtherAnnotation
- 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 classMemberScope<com.fasterxml.classmate.members.ResolvedMethod,Method>
- Type Parameters:
A
- type of annotation- Parameters:
annotationClass
- type of annotationconsiderOtherAnnotation
- 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)
-
doGetSchemaPropertyName
protected String doGetSchemaPropertyName()
Returns the name to be used to reference this method in its parent's "properties".- Specified by:
doGetSchemaPropertyName
in classMemberScope<com.fasterxml.classmate.members.ResolvedMethod,Method>
- Returns:
- the (potentially overridden) name of the method followed by its argument types in parentheses
- See Also:
MemberScope.getName()
,TypeContext.getMethodPropertyArgumentTypeDescription(ResolvedType)
-
-