Class AutoValueSupport
java.lang.Object
org.checkerframework.checker.calledmethods.builder.AutoValueSupport
- All Implemented Interfaces:
BuilderFrameworkSupport
AutoValue support for the Called Methods Checker. This class adds
@CalledMethods
annotations to the code generated by AutoValue.-
Constructor Summary
ConstructorsConstructorDescriptionAutoValueSupport(CalledMethodsAnnotatedTypeFactory atypeFactory) Create a new AutoValueSupport. -
Method Summary
Modifier and TypeMethodDescriptiongetAllAbstractMethods(TypeElement classElement) Get all the abstract methods for a class.voidhandleBuilderBuildMethod(AnnotatedTypeMirror.AnnotatedExecutableType builderBuildType) Hook for adding annotations to a build() method (i.e.voidhandleConstructor(NewClassTree tree, AnnotatedTypeMirror type) This method modifies the type of a copy constructor generated by AutoValue to match the type of the AutoValue toBuilder method, and has no effect iftreeis a call to any other constructor.voidhandleToBuilderMethod(AnnotatedTypeMirror.AnnotatedExecutableType toBuilderType) Hook for supporting a builder framework'stoBuilderroutine.booleanisBuilderBuildMethod(ExecutableElement candidateBuildElement) Returns true if a method is abuildmethod on aBuildertype for the builder framework.booleanisToBuilderMethod(ExecutableElement candidateToBuilderElement) Returns true if a method is atoBuildermethod on a type generated by the builder framework.
-
Constructor Details
-
AutoValueSupport
Create a new AutoValueSupport.- Parameters:
atypeFactory- the typechecker's type factory
-
-
Method Details
-
handleConstructor
This method modifies the type of a copy constructor generated by AutoValue to match the type of the AutoValue toBuilder method, and has no effect iftreeis a call to any other constructor.- Specified by:
handleConstructorin interfaceBuilderFrameworkSupport- Parameters:
tree- an AST for a constructor calltype- type of the call expression
-
isBuilderBuildMethod
Description copied from interface:BuilderFrameworkSupportReturns true if a method is abuildmethod on aBuildertype for the builder framework.- Specified by:
isBuilderBuildMethodin interfaceBuilderFrameworkSupport- Parameters:
candidateBuildElement- a method- Returns:
trueifcandidateBuildElementis abuildmethod on aBuildertype for the builder framework
-
handleBuilderBuildMethod
Description copied from interface:BuilderFrameworkSupportHook for adding annotations to a build() method (i.e. a finalizer) generated by a builder framework.For
buildmethods onBuildertypes, implementations of this method should determine the required properties and add a correspondingCalledMethodsannotation to the type of the receiver parameter.- Specified by:
handleBuilderBuildMethodin interfaceBuilderFrameworkSupport- Parameters:
builderBuildType- the type of a method that is thebuildmethod (as determined byBuilderFrameworkSupport.isBuilderBuildMethod(ExecutableElement)) for a builder
-
isToBuilderMethod
Description copied from interface:BuilderFrameworkSupportReturns true if a method is atoBuildermethod on a type generated by the builder framework.- Specified by:
isToBuilderMethodin interfaceBuilderFrameworkSupport- Parameters:
candidateToBuilderElement- a method- Returns:
trueifcandidateToBuilderElementis atoBuildermethod on a type generated by the builder framework
-
handleToBuilderMethod
Description copied from interface:BuilderFrameworkSupportHook for supporting a builder framework'stoBuilderroutine. Typically, the returned Builder has had all of its required setters invoked. So, implementations of this method should add aCalledMethodsannotation capturing this fact.- Specified by:
handleToBuilderMethodin interfaceBuilderFrameworkSupport- Parameters:
toBuilderType- the type of a method that is thetoBuildermethod (as determined byBuilderFrameworkSupport.isToBuilderMethod(ExecutableElement)) for a type that has an associated builder
-
getAllAbstractMethods
Get all the abstract methods for a class. This includes inherited abstract methods that are not overridden by the class or a superclass. There is no guarantee that this method will work as intended on code that implements an interface (which AutoValue classes are not supposed to do: https://github.com/google/auto/blob/master/value/userguide/howto.md#inherit).- Parameters:
classElement- the class- Returns:
- list of all abstract methods
-