Class ElementSource


  • public final class ElementSource
    extends java.lang.Object
    Contains information about where and how an element was bound.

    The declaring source refers to a location in source code that defines the Guice element. For example, if the element is created from a method annotated by @Provides, the declaring source of element would be the method itself.

    The sequence of class names of modules involved in the element creation can be retrieved by getModuleClassNames(). The order of the module class names is reverse chronological. The first module (index 0) is the module that installs the element. The last module is the root module.

    In order to support the cases where a Guice element is created from another Guice element (original) (e.g., by Element.applyTo(com.google.inject.Binder)), it also provides a reference to the original element source (getOriginalElementSource()).

    Since:
    4.0
    • Field Detail

      • originalElementSource

        final ElementSource originalElementSource
        The source of element that this element created from (if there is any), otherwise null.
      • trustedOriginalElementSource

        final boolean trustedOriginalElementSource
        Wheather the originalElementSource was set externaly (untrusted) or by Guice internals (trusted).

        External code can set the originalElementSource to an arbitrary ElementSource via Binder.withSource(ElementSource), thereby spoofing the element origin.

      • declaringSource

        final java.lang.Object declaringSource
        Refers to a single location in source code that causes the element creation. It can be any object such as Constructor, Method, Field, StackTraceElement, etc. For example, if the element is created from a method annotated by @Provides, the declaring source of element would be the method itself.
    • Constructor Detail

      • ElementSource

        ElementSource​(@Nullable
                      ElementSource originalSource,
                      boolean trustedOriginalSource,
                      java.lang.Object declaringSource,
                      ModuleSource moduleSource,
                      ModuleAnnotatedMethodScanner scanner)
        Creates a new from the given parameters.
        Parameters:
        originalSource - The source of element that this element was created from (if there is any), otherwise null.
        declaringSource - the source (in)directly declared the element.
        moduleSource - the moduleSource when the element is bound
        partialCallStack - the partial call stack from the top module to where the element is bound
    • Method Detail

      • getOriginalElementSource

        public ElementSource getOriginalElementSource()
        Returns the ElementSource of the element this was created or copied from. If this was not created or copied from another element, returns null.
      • getDeclaringSource

        public java.lang.Object getDeclaringSource()
        Returns a single location in source code that defines the element. It can be any object such as Constructor, Method, Field, StackTraceElement, etc. For example, if the element is created from a method annotated by @Provides, the declaring source of element would be the method itself.
      • getModuleClassNames

        public java.util.List<java.lang.String> getModuleClassNames()
        Returns the class names of modules involved in creating this Element. The first element (index 0) is the class name of module that defined the element, and the last element is the class name of root module.
      • toString

        public java.lang.String toString()
        Returns getDeclaringSource().toString() value.
        Overrides:
        toString in class java.lang.Object