Class ProvidesMethodScanner

java.lang.Object
com.google.inject.spi.ModuleAnnotatedMethodScanner
com.google.inject.internal.ProvidesMethodScanner

final class ProvidesMethodScanner extends ModuleAnnotatedMethodScanner
A ModuleAnnotatedMethodScanner that handles the , ProvidesIntoSet, ProvidesIntoMap and ProvidesIntoOptional annotations.

This is the default scanner used by ProviderMethodsModule and handles all the built in annotations.

  • Field Details

  • Constructor Details

    • ProvidesMethodScanner

      private ProvidesMethodScanner()
  • Method Details

    • annotationClasses

      public Set<? extends Class<? extends Annotation>> annotationClasses()
      Description copied from class: ModuleAnnotatedMethodScanner
      Returns the annotations this should scan for. Every method in the module that has one of these annotations will create a Provider binding, with the return value of the binding being what's provided and the parameters of the method being dependencies of the provider.
      Specified by:
      annotationClasses in class ModuleAnnotatedMethodScanner
    • prepareMethod

      public <T> Key<T> prepareMethod(Binder binder, Annotation annotation, Key<T> key, InjectionPoint injectionPoint)
      Description copied from class: ModuleAnnotatedMethodScanner
      Prepares a method for binding. This key parameter is the key discovered from looking at the binding annotation and return value of the method. Implementations can modify the key to instead bind to another key. For example, Multibinder may want to change @ProvidesIntoSet String provideFoo() to bind into a unique Key within the multibinder instead of binding String.

      The injection point and annotation are provided in case the implementation wants to set the key based on the property of the annotation or if any additional preparation is needed for any of the dependencies. The annotation is guaranteed to be an instance of one the classes returned by ModuleAnnotatedMethodScanner.annotationClasses().

      If injectionPoint represents an abstract method, null must be returned from this method. This scanner can use binder to bind alternative bindings in place of the abstract method. In all other cases, this method may not return null.

      Specified by:
      prepareMethod in class ModuleAnnotatedMethodScanner
    • findMapKeyAnnotation

      private static ProvidesMethodScanner.AnnotationOrError findMapKeyAnnotation(Binder binder, Method method)
    • typeAndValueOfMapKey

      static ProvidesMethodScanner.TypeAndValue<?> typeAndValueOfMapKey(Annotation mapKeyAnnotation)