Class MemoizeExtension

java.lang.Object
com.google.auto.value.extension.AutoValueExtension
com.google.auto.value.extension.memoized.processor.MemoizeExtension

@AutoService(AutoValueExtension.class) public final class MemoizeExtension extends AutoValueExtension
An extension that implements the
invalid reference
Memoized
contract.
  • Field Details

    • DO_NOT_PULL_DOWN_ANNOTATIONS

      private static final com.google.common.collect.ImmutableSet<String> DO_NOT_PULL_DOWN_ANNOTATIONS
    • LAZY_INIT

      private static final com.squareup.javapoet.ClassName LAZY_INIT
    • SUPPRESS_WARNINGS

      private static final com.squareup.javapoet.AnnotationSpec SUPPRESS_WARNINGS
  • Constructor Details

    • MemoizeExtension

      public MemoizeExtension()
  • Method Details

    • applicable

      public boolean applicable(AutoValueExtension.Context context)
      Description copied from class: AutoValueExtension
      Determines whether this Extension applies to the given context.
      Overrides:
      applicable in class AutoValueExtension
      Parameters:
      context - The Context of the code generation for this class.
      Returns:
      true if this Extension should be applied in the given context. If an Extension returns false for a given class, it will not be called again during the processing of that class.
    • generateClass

      public String generateClass(AutoValueExtension.Context context, String className, String classToExtend, boolean isFinal)
      Description copied from class: AutoValueExtension
      Returns the generated source code of the class named className to extend classToExtend, or null if this extension does not generate a class in the hierarchy. If there is a generated class, it should be final if isFinal is true; otherwise it should be abstract. The returned string should be a complete Java class definition of the class className in the package context.packageName().

      The returned string will typically look like this:

      
       package <package>;
       ...
       <finalOrAbstract> class <className> extends <classToExtend> {...}
       

      Here, <package> is AutoValueExtension.Context.packageName(); <finalOrAbstract> is the keyword final if isFinal is true or abstract otherwise; and <className> and <classToExtend> are the values of this method's parameters of the same name.

      Specified by:
      generateClass in class AutoValueExtension
      Parameters:
      context - The AutoValueExtension.Context of the code generation for this class.
      className - The simple name of the resulting class. The returned code will be written to a file named accordingly.
      classToExtend - The simple name of the direct parent of the generated class. This could be the AutoValue generated class, or a class generated as the result of another Extension.
      isFinal - True if this class is the last class in the chain, meaning it should be marked as final. Otherwise it should be marked as abstract.
      Returns:
      The source code of the generated class, or null if this extension does not generate a class in the hierarchy.
    • memoizedMethods

      private static com.google.common.collect.ImmutableSet<ExecutableElement> memoizedMethods(AutoValueExtension.Context context)
    • getLazyInitAnnotation

      private static Optional<com.squareup.javapoet.AnnotationSpec> getLazyInitAnnotation(Elements elements)
      Returns the errorprone @LazyInit annotation if it is found on the classpath.