Class AutoValueSupport
- java.lang.Object
-
- org.checkerframework.checker.calledmethods.builder.AutoValueSupport
-
- All Implemented Interfaces:
BuilderFrameworkSupport
public class AutoValueSupport extends java.lang.Object implements BuilderFrameworkSupport
AutoValue support for the Called Methods Checker. This class adds@
CalledMethods
annotations to the code generated by AutoValue.
-
-
Constructor Summary
Constructors Constructor Description AutoValueSupport(CalledMethodsAnnotatedTypeFactory atypeFactory)
Create a new AutoValueSupport.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.List<javax.lang.model.element.ExecutableElement>
getAllAbstractMethods(javax.lang.model.element.TypeElement classElement)
Get all the abstract methods for a class.void
handleBuilderBuildMethod(AnnotatedTypeMirror.AnnotatedExecutableType builderBuildType)
Hook for adding annotations to a build() method (i.e.void
handleConstructor(com.sun.source.tree.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 iftree
is a call to any other constructor.void
handleToBuilderMethod(AnnotatedTypeMirror.AnnotatedExecutableType toBuilderType)
Hook for supporting a builder framework'stoBuilder
routine.boolean
isBuilderBuildMethod(javax.lang.model.element.ExecutableElement candidateBuildElement)
Returns true if a method is abuild
method on aBuilder
type for the builder framework.boolean
isToBuilderMethod(javax.lang.model.element.ExecutableElement candidateToBuilderElement)
Returns true if a method is atoBuilder
method on a type generated by the builder framework.
-
-
-
Constructor Detail
-
AutoValueSupport
public AutoValueSupport(CalledMethodsAnnotatedTypeFactory atypeFactory)
Create a new AutoValueSupport.- Parameters:
atypeFactory
- the typechecker's type factory
-
-
Method Detail
-
handleConstructor
public void handleConstructor(com.sun.source.tree.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 iftree
is a call to any other constructor.- Specified by:
handleConstructor
in interfaceBuilderFrameworkSupport
- Parameters:
tree
- an AST for a constructor calltype
- type of the call expression
-
isBuilderBuildMethod
public boolean isBuilderBuildMethod(javax.lang.model.element.ExecutableElement candidateBuildElement)
Description copied from interface:BuilderFrameworkSupport
Returns true if a method is abuild
method on aBuilder
type for the builder framework.- Specified by:
isBuilderBuildMethod
in interfaceBuilderFrameworkSupport
- Parameters:
candidateBuildElement
- a method- Returns:
true
ifcandidateBuildElement
is abuild
method on aBuilder
type for the builder framework
-
handleBuilderBuildMethod
public void handleBuilderBuildMethod(AnnotatedTypeMirror.AnnotatedExecutableType builderBuildType)
Description copied from interface:BuilderFrameworkSupport
Hook for adding annotations to a build() method (i.e. a finalizer) generated by a builder framework.For
build
methods onBuilder
types, implementations of this method should determine the required properties and add a correspondingCalledMethods
annotation to the type of the receiver parameter.- Specified by:
handleBuilderBuildMethod
in interfaceBuilderFrameworkSupport
- Parameters:
builderBuildType
- the type of a method that is thebuild
method (as determined byBuilderFrameworkSupport.isBuilderBuildMethod(ExecutableElement)
) for a builder
-
isToBuilderMethod
public boolean isToBuilderMethod(javax.lang.model.element.ExecutableElement candidateToBuilderElement)
Description copied from interface:BuilderFrameworkSupport
Returns true if a method is atoBuilder
method on a type generated by the builder framework.- Specified by:
isToBuilderMethod
in interfaceBuilderFrameworkSupport
- Parameters:
candidateToBuilderElement
- a method- Returns:
true
ifcandidateToBuilderElement
is atoBuilder
method on a type generated by the builder framework
-
handleToBuilderMethod
public void handleToBuilderMethod(AnnotatedTypeMirror.AnnotatedExecutableType toBuilderType)
Description copied from interface:BuilderFrameworkSupport
Hook for supporting a builder framework'stoBuilder
routine. Typically, the returned Builder has had all of its required setters invoked. So, implementations of this method should add aCalledMethods
annotation capturing this fact.- Specified by:
handleToBuilderMethod
in interfaceBuilderFrameworkSupport
- Parameters:
toBuilderType
- the type of a method that is thetoBuilder
method (as determined byBuilderFrameworkSupport.isToBuilderMethod(ExecutableElement)
) for a type that has an associated builder
-
getAllAbstractMethods
public java.util.List<javax.lang.model.element.ExecutableElement> getAllAbstractMethods(javax.lang.model.element.TypeElement classElement)
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
-
-