Class PropertyCodeGenerator

java.lang.Object
org.inferred.freebuilder.processor.property.PropertyCodeGenerator
Direct Known Subclasses:
BiMapProperty, BuildableListProperty, BuildableProperty, DefaultProperty, ListMultimapProperty, ListProperty, MapProperty, MultisetProperty, NullableProperty, OptionalProperty, PrimitiveOptionalProperty, SetMultimapProperty, SetProperty, SortedSetProperty

public abstract class PropertyCodeGenerator extends Object
Property-type-specific code generation interface.
  • Field Details

    • datatype

      protected final Datatype datatype
    • property

      protected final Property property
  • Constructor Details

    • PropertyCodeGenerator

      public PropertyCodeGenerator(Datatype datatype, Property property)
  • Method Details

    • initialState

      public PropertyCodeGenerator.Initially initialState()
      Returns whether the property is required, optional, or has a default.
    • addValueFieldDeclaration

      public abstract void addValueFieldDeclaration(SourceBuilder code)
      Add the field declaration for the property to the value's source code.
    • addBuilderFieldDeclaration

      public abstract void addBuilderFieldDeclaration(SourceBuilder code)
      Add the field declaration for the property to the builder's source code.
    • addBuilderFieldAccessors

      public abstract void addBuilderFieldAccessors(SourceBuilder code)
      Add the accessor methods for the property to the builder's source code.
    • addFinalFieldAssignment

      public abstract void addFinalFieldAssignment(SourceBuilder code, Excerpt finalField, String builder)
      Add the final assignment of the property to the value object's source code.
    • addPartialFieldAssignment

      public void addPartialFieldAssignment(SourceBuilder code, Excerpt finalField, String builder)
      Add the final assignment of the property to the partial value object's source code.
    • addAssignToBuilder

      public abstract void addAssignToBuilder(SourceBuilder code, Variable builder)
      Adds an assignment to the field on the builder from the Value/Partial implementation.
    • addMergeFromValue

      public abstract void addMergeFromValue(SourceBuilder code, String value)
      Add a merge from value for the property to the builder's source code.
    • addMergeFromBuilder

      public abstract void addMergeFromBuilder(SourceBuilder code, String builder)
      Add a merge from builder for the property to the builder's source code.
    • getMergeActions

      public abstract Set<MergeAction> getMergeActions()
      Returns the actions taken in mergeFrom, for generating JavaDoc.
    • addGetterAnnotations

      public void addGetterAnnotations(SourceBuilder code)
      Adds method annotations for the value type getter method.
    • addReadValueFragment

      public void addReadValueFragment(SourceBuilder code, Excerpt finalField)
      Adds a fragment converting the value object's field to the property's type.
    • addSetFromResult

      public abstract void addSetFromResult(SourceBuilder code, Excerpt builder, Excerpt variable)
      Adds a set call for the property from a function result to the builder's source code.
    • addClearField

      public abstract void addClearField(SourceBuilder code)
      Adds a clear call for the property given a template builder to the builder's source code.
    • addToStringCondition

      public void addToStringCondition(SourceBuilder code)
      Adds condition statement for an initially optional property to be included in the toString output for the Value/Partial types.
      Throws:
      IllegalStateException - if initialState() is not PropertyCodeGenerator.Initially.OPTIONAL
    • addToStringValue

      public void addToStringValue(SourceBuilder code)
      Adds value to an ongoing toString concatenation or append sequence.
    • addAccessorAnnotations

      public void addAccessorAnnotations(SourceBuilder code)
    • addPutAnnotations

      public void addPutAnnotations(SourceBuilder code)
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • fieldValues

      private Map<String,Object> fieldValues()
    • addFieldValues

      private void addFieldValues(Class<?> cls, com.google.common.collect.ImmutableMap.Builder<String,Object> valuesBuilder)