Class PropertyBuilderClassifier


  • class PropertyBuilderClassifier
    extends java.lang.Object
    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 PropertyBuilderClassifier.PropertyBuilder instance with information about barBuilder.
    • Field Detail

      • typeUtils

        private final javax.lang.model.util.Types typeUtils
      • elementUtils

        private final javax.lang.model.util.Elements elementUtils
      • getterToPropertyName

        private final com.google.common.collect.ImmutableBiMap<javax.lang.model.element.ExecutableElement,​java.lang.String> getterToPropertyName
      • COM_GOOGLE_COMMON_COLLECT_IMMUTABLE

        private static final java.lang.String COM_GOOGLE_COMMON_COLLECT_IMMUTABLE
      • BUILDER_METHOD_NAMES

        private static final com.google.common.collect.ImmutableSet<java.lang.String> BUILDER_METHOD_NAMES
    • Constructor Detail

      • PropertyBuilderClassifier

        PropertyBuilderClassifier​(ErrorReporter errorReporter,
                                  javax.lang.model.util.Types typeUtils,
                                  javax.lang.model.util.Elements elementUtils,
                                  BuilderMethodClassifier builderMethodClassifier,
                                  com.google.common.collect.ImmutableBiMap<javax.lang.model.element.ExecutableElement,​java.lang.String> getterToPropertyName,
                                  EclipseHack eclipseHack)
    • Method Detail

      • builderMaker

        private java.util.Optional<javax.lang.model.element.ExecutableElement> builderMaker​(java.util.Map<java.lang.String,​javax.lang.model.element.ExecutableElement> barNoArgMethods,
                                                                                            javax.lang.model.element.TypeElement barBuilderTypeElement)
      • noArgMethodsOf

        private java.util.Map<java.lang.String,​javax.lang.model.element.ExecutableElement> noArgMethodsOf​(javax.lang.model.element.TypeElement type)
      • addAllPutAll

        private java.util.Optional<javax.lang.model.element.ExecutableElement> addAllPutAll​(javax.lang.model.element.TypeElement barBuilderTypeElement)
      • isNullable

        private static boolean isNullable​(javax.lang.model.element.ExecutableElement getter)