Top Description Inners Fields Constructors Methods
com.google.auto.value.processor

pack-priv Class PropertyBuilderClassifier

extends Object
Class Inheritance
Static Imports
java.util.stream.Collectors.collectingAndThen, .Collectors.joining, .Collectors.toMap

Classifies methods inside builder types that return builders for properties. For example, if @AutoValue class Foo has a method ImmutableList<String> bar() then Foo.Builder can have a method ImmutableList.Builder<String> barBuilder(). This class checks that a method like barBuilder() follows the rules, and if so constructs a PropertyBuilder instance with information about barBuilder.
Author
Éamonn McManus

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static class
PropertyBuilderClassifier.PropertyBuilder

Information about a property builder, referenced from the autovalue.vm template.

Field Summary

Modifier and TypeField and Description
private static final ImmutableSet<String>
private static final ImmutableSet<String>
private final BuilderMethodClassifier<?>
private final EclipseHack
private final javax.lang.model.util.Elements
private final ErrorReporter
private final Nullables
private static final ImmutableSet<String>
private final Predicate<String>
private final ImmutableMap<String, javax.lang.model.type.TypeMirror>
private final javax.lang.model.util.Types

Constructor Summary

AccessConstructor and Description
pack-priv
PropertyBuilderClassifier(ErrorReporter errorReporter, javax.lang.model.util.Types typeUtils, javax.lang.model.util.Elements elementUtils, BuilderMethodClassifier<?> builderMethodClassifier, Predicate<String> propertyIsNullable, ImmutableMap<String, javax.lang.model.type.TypeMirror> propertyTypes, EclipseHack eclipseHack, Nullables nullables)

Method Summary

Modifier and TypeMethod and Description
private Optional<javax.lang.model.element.ExecutableElement>
addAllPutAll(javax.lang.model.element.TypeElement barBuilderTypeElement, javax.lang.model.type.DeclaredType barBuilderDeclaredType, javax.lang.model.type.TypeMirror barTypeMirror)

private Optional<javax.lang.model.element.ExecutableElement>
builderMaker(ImmutableSet<String> methodNamesToCheck, Map<String, javax.lang.model.element.ExecutableElement> methods, javax.lang.model.element.TypeElement barBuilderTypeElement, int argumentCount)

private static boolean
isStaticInterfaceMethodNotIn(javax.lang.model.element.ExecutableElement method, javax.lang.model.element.TypeElement type)

pack-priv Optional<PropertyBuilderClassifier.PropertyBuilder>
makePropertyBuilder(javax.lang.model.element.ExecutableElement method, String property)

private ImmutableMap<String, javax.lang.model.element.ExecutableElement>
methodsOf(javax.lang.model.element.TypeElement type, int argumentCount)

private Optional<javax.lang.model.element.ExecutableElement>
noArgBuilderMaker(Map<String, javax.lang.model.element.ExecutableElement> barNoArgMethods, javax.lang.model.element.TypeElement barBuilderTypeElement)

private Map<String, javax.lang.model.element.ExecutableElement>
noArgMethodsOf(javax.lang.model.element.TypeElement type)

private Optional<javax.lang.model.element.ExecutableElement>
oneArgBuilderMaker(Map<String, javax.lang.model.element.ExecutableElement> barOneArgMethods, javax.lang.model.element.TypeElement barBuilderTypeElement)

private ImmutableMap<String, javax.lang.model.element.ExecutableElement>
oneArgumentMethodsOf(javax.lang.model.element.TypeElement type)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

ADD_ALL_PUT_ALLback to summary
private static final ImmutableSet<String> ADD_ALL_PUT_ALL
BUILDER_METHOD_NAMESback to summary
private static final ImmutableSet<String> BUILDER_METHOD_NAMES
builderMethodClassifierback to summary
private final BuilderMethodClassifier<?> builderMethodClassifier
eclipseHackback to summary
private final EclipseHack eclipseHack
elementUtilsback to summary
private final javax.lang.model.util.Elements elementUtils
errorReporterback to summary
private final ErrorReporter errorReporter
nullablesback to summary
private final Nullables nullables
ONE_ARGUMENT_BUILDER_METHOD_NAMESback to summary
private static final ImmutableSet<String> ONE_ARGUMENT_BUILDER_METHOD_NAMES
propertyIsNullableback to summary
private final Predicate<String> propertyIsNullable
propertyTypesback to summary
private final ImmutableMap<String, javax.lang.model.type.TypeMirror> propertyTypes
typeUtilsback to summary
private final javax.lang.model.util.Types typeUtils

Constructor Detail

PropertyBuilderClassifierback to summary
pack-priv PropertyBuilderClassifier(ErrorReporter errorReporter, javax.lang.model.util.Types typeUtils, javax.lang.model.util.Elements elementUtils, BuilderMethodClassifier<?> builderMethodClassifier, Predicate<String> propertyIsNullable, ImmutableMap<String, javax.lang.model.type.TypeMirror> propertyTypes, EclipseHack eclipseHack, Nullables nullables)

Method Detail

addAllPutAllback to summary
private Optional<javax.lang.model.element.ExecutableElement> addAllPutAll(javax.lang.model.element.TypeElement barBuilderTypeElement, javax.lang.model.type.DeclaredType barBuilderDeclaredType, javax.lang.model.type.TypeMirror barTypeMirror)
builderMakerback to summary
private Optional<javax.lang.model.element.ExecutableElement> builderMaker(ImmutableSet<String> methodNamesToCheck, Map<String, javax.lang.model.element.ExecutableElement> methods, javax.lang.model.element.TypeElement barBuilderTypeElement, int argumentCount)
isStaticInterfaceMethodNotInback to summary
private static boolean isStaticInterfaceMethodNotIn(javax.lang.model.element.ExecutableElement method, javax.lang.model.element.TypeElement type)
makePropertyBuilderback to summary
pack-priv Optional<PropertyBuilderClassifier.PropertyBuilder> makePropertyBuilder(javax.lang.model.element.ExecutableElement method, String property)
methodsOfback to summary
private ImmutableMap<String, javax.lang.model.element.ExecutableElement> methodsOf(javax.lang.model.element.TypeElement type, int argumentCount)
noArgBuilderMakerback to summary
private Optional<javax.lang.model.element.ExecutableElement> noArgBuilderMaker(Map<String, javax.lang.model.element.ExecutableElement> barNoArgMethods, javax.lang.model.element.TypeElement barBuilderTypeElement)
noArgMethodsOfback to summary
private Map<String, javax.lang.model.element.ExecutableElement> noArgMethodsOf(javax.lang.model.element.TypeElement type)
oneArgBuilderMakerback to summary
private Optional<javax.lang.model.element.ExecutableElement> oneArgBuilderMaker(Map<String, javax.lang.model.element.ExecutableElement> barOneArgMethods, javax.lang.model.element.TypeElement barBuilderTypeElement)
oneArgumentMethodsOfback to summary
private ImmutableMap<String, javax.lang.model.element.ExecutableElement> oneArgumentMethodsOf(javax.lang.model.element.TypeElement type)
com.google.auto.value.processor back to summary

public Class PropertyBuilderClassifier.PropertyBuilder

extends Object
Class Inheritance
  • java.lang.Object
  • com.google.auto.value.processor.PropertyBuilderClassifier.PropertyBuilder

Information about a property builder, referenced from the autovalue.vm template. A property called bar (defined by a method bar() or getBar()) can have a property builder called barBuilder(). For example, if bar() returns ImmutableSet<String> then barBuilder() might return ImmutableSet.Builder<String>.

Field Summary

Modifier and TypeField and Description
private final String
private final String
private final String
private final javax.lang.model.type.TypeMirror
private final String
private final String
private final String
private final String
private final String
private final String
private final javax.lang.model.element.ExecutableElement

Constructor Summary

AccessConstructor and Description
pack-priv
PropertyBuilder(javax.lang.model.element.ExecutableElement propertyBuilderMethod, String builderType, String nullableBuilderType, javax.lang.model.type.TypeMirror builderTypeMirror, String build, String initializer, String beforeInitDefault, String initDefault, String builtToBuilder, String copyAll)

Method Summary

Modifier and TypeMethod and Description
public String
public String
getBeforeInitDefault()

An empty string, or a complete statement to be included before the expression returned by getInitDefault().

public String
getBuild()

The name of the build method, build or buildOrThrow.

public String
getBuilderType()

The type of the builder, for example ImmutableSet.Builder<String>.

pack-priv javax.lang.model.type.TypeMirror
public String
getBuiltToBuilder()

A method to convert the built type back into a builder.

public String
getCopyAll()

The method to copy another collection into this builder.

public String
getInitDefault()

An expression to return a default instance of the type that this builder builds.

public String
getInitializer()

An initializer for the builder field, for example ImmutableSet.builder().

public String
getMethodName()

The name of the property builder method.

public String
getName()

The name of the field to hold this builder.

public String
getNullableBuilderType()

The type of the builder with an appropriate @Nullable type annotation.

public javax.lang.model.element.ExecutableElement
getPropertyBuilderMethod()

The property builder method, for example barBuilder().

public String
getPropertyBuilderMethodParameters()

The property builder method parameters, for example Comparator<T> comparator

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

beforeInitDefaultback to summary
private final String beforeInitDefault
buildback to summary
private final String build
builderTypeback to summary
private final String builderType
builderTypeMirrorback to summary
private final javax.lang.model.type.TypeMirror builderTypeMirror
builtToBuilderback to summary
private final String builtToBuilder
copyAllback to summary
private final String copyAll
initDefaultback to summary
private final String initDefault
initializerback to summary
private final String initializer
nameback to summary
private final String name
nullableBuilderTypeback to summary
private final String nullableBuilderType
propertyBuilderMethodback to summary
private final javax.lang.model.element.ExecutableElement propertyBuilderMethod

Constructor Detail

PropertyBuilderback to summary
pack-priv PropertyBuilder(javax.lang.model.element.ExecutableElement propertyBuilderMethod, String builderType, String nullableBuilderType, javax.lang.model.type.TypeMirror builderTypeMirror, String build, String initializer, String beforeInitDefault, String initDefault, String builtToBuilder, String copyAll)

Method Detail

getAccessback to summary
public String getAccess()
getBeforeInitDefaultback to summary
public String getBeforeInitDefault()

An empty string, or a complete statement to be included before the expression returned by getInitDefault().

getBuildback to summary
public String getBuild()

The name of the build method, build or buildOrThrow.

getBuilderTypeback to summary
public String getBuilderType()

The type of the builder, for example ImmutableSet.Builder<String>.

getBuilderTypeMirrorback to summary
pack-priv javax.lang.model.type.TypeMirror getBuilderTypeMirror()
getBuiltToBuilderback to summary
public String getBuiltToBuilder()

A method to convert the built type back into a builder. Unfortunately Guava collections don't have this (you can't say myImmutableMap.toBuilder()), but for other types such as @AutoValue types this is toBuilder().

getCopyAllback to summary
public String getCopyAll()

The method to copy another collection into this builder. It is addAll for one-dimensional collections like ImmutableList and ImmutableSet, and it is putAll for two-dimensional collections like ImmutableMap and ImmutableTable.

getInitDefaultback to summary
public String getInitDefault()

An expression to return a default instance of the type that this builder builds. For example, if this is an ImmutableList<String> then the method ImmutableList.of() will correctly return an empty ImmutableList<String>, assuming the appropriate context for type inference. The expression here can assume that the statement from getBeforeInitDefault has preceded it.

getInitializerback to summary
public String getInitializer()

An initializer for the builder field, for example ImmutableSet.builder().

getMethodNameback to summary
public String getMethodName()

The name of the property builder method.

getNameback to summary
public String getName()

The name of the field to hold this builder.

getNullableBuilderTypeback to summary
public String getNullableBuilderType()

The type of the builder with an appropriate @Nullable type annotation.

getPropertyBuilderMethodback to summary
public javax.lang.model.element.ExecutableElement getPropertyBuilderMethod()

The property builder method, for example barBuilder().

getPropertyBuilderMethodParametersback to summary
public String getPropertyBuilderMethodParameters()

The property builder method parameters, for example Comparator<T> comparator