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.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.github.victools.jsonschema.generator.MemberScope
MemberScope.DeclarationDetails
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedMethodScope(com.fasterxml.classmate.members.ResolvedMethod method, MemberScope.DeclarationDetails declarationDetails, com.github.victools.jsonschema.generator.MemberScope.OverrideDetails overrideDetails, TypeContext context)Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description MethodScopeasFakeContainerItemScope()Create another instance for this field or method and context, representing its field/method return type's container item type.protected StringdoGetSchemaPropertyName()Returns the name to be used to reference this method in its parent's "properties".FieldScopefindGetterField()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.intgetArgumentCount()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.booleanisGetter()Determine whether the method's name matches the getter naming convention ("getFoo()"/"isFoo()") and a respective field ("foo") exists.booleanisVoid()Indicating whether the method is declared asvoid, i.e.MethodScopewithOverriddenName(String overriddenName)Create another instance for this field or method and context, but overriding the declared field/method name with the given one.MethodScopewithOverriddenType(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, getDeclarationDetails, 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, MemberScope.DeclarationDetails declarationDetails, com.github.victools.jsonschema.generator.MemberScope.OverrideDetails overrideDetails, TypeContext context)Constructor.- Parameters:
method- targeted methoddeclarationDetails- basic details regarding the declaration contextoverrideDetails- augmenting details (e.g., overridden type, name, or container item index)context- the overall type resolution context
-
-
Method Detail
-
withOverriddenType
public MethodScope withOverriddenType(com.fasterxml.classmate.ResolvedType overriddenType)
Description copied from class:MemberScopeCreate another instance for this field or method and context, but overriding the declared field/method return type with the given one.- Specified by:
withOverriddenTypein 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:MemberScopeCreate another instance for this field or method and context, but overriding the declared field/method name with the given one.- Specified by:
withOverriddenNamein 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:MemberScopeCreate another instance for this field or method and context, representing its field/method return type's container item type.- Overrides:
asFakeContainerItemScopein 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:
getAnnotationin 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
nullif 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:MemberScopeReturn 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:
getContainerItemAnnotationin 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
nullif 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:MemberScopeReturn 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:
getAnnotationConsideringFieldAndGetterin 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
nullif 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:MemberScopeReturn 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:
getContainerItemAnnotationConsideringFieldAndGetterin 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
nullif 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:
doGetSchemaPropertyNamein 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)
-
-