public abstract class BindingGraph
extends java.lang.Object
A BindingGraph
represents one of the following:
Component
or ProductionComponent
Subcomponent
or ProductionSubcomponent
(only when -Adagger.experimentalAheadOfTimeSubcomponents=enabled
is passed to the compiler)
Module
or ProducerModule
,
including all subcomponents generated by Module.subcomponents()
()} and ProducerModule.subcomponents()
()}
BindingGraph
representing a module, the root BindingGraph.ComponentNode
will
actually represent the module type, and there will be an entry point edge (with no request
element) for every binding (except multibinding contributions) in the module, including its
transitively included modules.
There is a Binding
for each owned binding in the graph. If a binding is owned
by more than one component, there is one binding object for that binding for every owning
component.
There is a component node (without a binding) for each component in the graph.
There is a dependency edge for each dependency request in the graph. Its target node is the binding for the binding that satisfies the request. For entry point dependency requests, the source node is the component node for the component for which it is an entry point. For other dependency requests, the source node is the binding for the binding that contains the request.
There is a subcomponent edge for each parent-child component relationship in the graph.
The target node is the component node for the child component. For subcomponents defined by a
subcomponent builder binding (either a method on the
component or a set of @Module.subcomponents
annotation values), the source node is the
binding for the @Subcomponent.Builder
type. For subcomponents defined by subcomponent factory methods, the source node is the component node for
the parent.
Note that this API is experimental and will change.
Modifier and Type | Class and Description |
---|---|
static interface |
BindingGraph.ChildFactoryMethodEdge
An edge that represents a subcomponent factory method linking a parent component to a child
subcomponent.
|
static interface |
BindingGraph.ComponentNode
A component node in the graph.
|
static interface |
BindingGraph.DependencyEdge
An edge that represents a dependency on a binding.
|
static interface |
BindingGraph.Edge
An edge in the binding graph.
|
static interface |
BindingGraph.MaybeBinding
A node in the binding graph that is either a
Binding or a BindingGraph.MissingBinding . |
static class |
BindingGraph.MissingBinding
A node in the binding graph that represents a missing binding for a key in a component.
|
static interface |
BindingGraph.Node
A node in the binding graph.
|
static interface |
BindingGraph.SubcomponentBuilderBindingEdge
An edge that represents the link between a parent component and a child subcomponent implied by
a subcomponent builder binding.
|
Modifier and Type | Method and Description |
---|---|
com.google.common.collect.ImmutableSet<Binding> |
bindings()
Returns the bindings.
|
com.google.common.collect.ImmutableSet<Binding> |
bindings(Key key)
Returns the bindings for a key.
|
java.util.Optional<BindingGraph.ComponentNode> |
componentNode(ComponentPath component)
Returns the component node for a component.
|
com.google.common.collect.ImmutableSet<BindingGraph.ComponentNode> |
componentNodes()
Returns the component nodes.
|
com.google.common.collect.ImmutableSet<BindingGraph.ComponentNode> |
componentNodes(javax.lang.model.element.TypeElement component)
Returns the component nodes for a component.
|
com.google.common.collect.ImmutableSet<BindingGraph.DependencyEdge> |
dependencyEdges()
Returns the dependency edges.
|
com.google.common.collect.ImmutableSetMultimap<DependencyRequest,BindingGraph.DependencyEdge> |
dependencyEdges(Binding binding)
Returns the dependency edges for the dependencies of a binding.
|
com.google.common.collect.ImmutableSet<BindingGraph.DependencyEdge> |
dependencyEdges(DependencyRequest dependencyRequest)
Returns the dependency edges for a dependency request.
|
com.google.common.collect.ImmutableSet<BindingGraph.MaybeBinding> |
entryPointBindings()
Returns the binding or missing binding nodes that directly satisfy entry points.
|
com.google.common.collect.ImmutableSet<BindingGraph.DependencyEdge> |
entryPointEdges()
Returns the dependency edges for all entry points for all components and subcomponents.
|
com.google.common.collect.ImmutableSet<BindingGraph.DependencyEdge> |
entryPointEdges(ComponentPath component)
Returns the dependency edges for the entry points of a given
component . |
com.google.common.collect.ImmutableSet<BindingGraph.DependencyEdge> |
entryPointEdgesDependingOnBinding(BindingGraph.MaybeBinding binding)
Returns the edges for entry points that transitively depend on a binding or missing binding for
a key.
|
abstract boolean |
isModuleBindingGraph()
ReturnsĀ
true if this graph was constructed from a module for module binding validation. |
boolean |
isPartialBindingGraph()
Returns
true if the rootComponentNode() is a subcomponent. |
com.google.common.collect.ImmutableSet<BindingGraph.MissingBinding> |
missingBindings()
Returns the nodes that represent missing bindings.
|
abstract com.google.common.graph.ImmutableNetwork<BindingGraph.Node,BindingGraph.Edge> |
network()
Returns the graph in its
Network representation. |
com.google.common.collect.ImmutableSet<Binding> |
requestedBindings(Binding binding)
Returns the bindings that a given binding directly request as a dependency.
|
com.google.common.collect.ImmutableSet<BindingGraph.MaybeBinding> |
requestedMaybeMissingBindings(Binding binding)
Returns the bindings or missing bindings that a given binding directly requests as a
dependency.
|
com.google.common.collect.ImmutableSet<Binding> |
requestingBindings(BindingGraph.MaybeBinding binding)
Returns the bindings that directly request a given binding as a dependency.
|
BindingGraph.ComponentNode |
rootComponentNode()
Returns the component node for the root component.
|
java.lang.String |
toString() |
public abstract com.google.common.graph.ImmutableNetwork<BindingGraph.Node,BindingGraph.Edge> network()
Network
representation.public final java.lang.String toString()
toString
in class java.lang.Object
public abstract boolean isModuleBindingGraph()
true
if this graph was constructed from a module for module binding validation.public final boolean isPartialBindingGraph()
true
if the rootComponentNode()
is a subcomponent. This occurs in
ahead-of-time-subcomponents mode.public final com.google.common.collect.ImmutableSet<Binding> bindings()
public final com.google.common.collect.ImmutableSet<Binding> bindings(Key key)
public final com.google.common.collect.ImmutableSet<BindingGraph.MissingBinding> missingBindings()
public final com.google.common.collect.ImmutableSet<BindingGraph.ComponentNode> componentNodes()
public final java.util.Optional<BindingGraph.ComponentNode> componentNode(ComponentPath component)
public final com.google.common.collect.ImmutableSet<BindingGraph.ComponentNode> componentNodes(javax.lang.model.element.TypeElement component)
public final BindingGraph.ComponentNode rootComponentNode()
public final com.google.common.collect.ImmutableSet<BindingGraph.DependencyEdge> dependencyEdges()
public final com.google.common.collect.ImmutableSetMultimap<DependencyRequest,BindingGraph.DependencyEdge> dependencyEdges(Binding binding)
DependencyRequest
will map to a single BindingGraph.DependencyEdge
. When conflicting bindings exist
for a key, the multimap will have several edges for that DependencyRequest
. Graphs that
have no binding for a key will have an edge whose target
node is a BindingGraph.MissingBinding
.public final com.google.common.collect.ImmutableSet<BindingGraph.DependencyEdge> dependencyEdges(DependencyRequest dependencyRequest)
public final com.google.common.collect.ImmutableSet<BindingGraph.DependencyEdge> entryPointEdges(ComponentPath component)
component
. Each edge's
source node is that component's component node.public final com.google.common.collect.ImmutableSet<BindingGraph.DependencyEdge> entryPointEdges()
public final com.google.common.collect.ImmutableSet<BindingGraph.MaybeBinding> entryPointBindings()
public final com.google.common.collect.ImmutableSet<BindingGraph.DependencyEdge> entryPointEdgesDependingOnBinding(BindingGraph.MaybeBinding binding)
public final com.google.common.collect.ImmutableSet<Binding> requestingBindings(BindingGraph.MaybeBinding binding)
public final com.google.common.collect.ImmutableSet<Binding> requestedBindings(Binding binding)
BindingGraph.MissingBinding
s.requestedMaybeMissingBindings(Binding)
public final com.google.common.collect.ImmutableSet<BindingGraph.MaybeBinding> requestedMaybeMissingBindings(Binding binding)
requestedBindings(Binding)