- All Implemented Interfaces:
- Enclosing class:
As a Multibinder, it acts as a factory for LinkedBindingBuilders for each of the set's elements. Each binding is given an annotation that identifies it as a part of this set.
As a Module, it installs the binding to the set itself. As a module, this implements equals() and hashcode() in order to trick Guice into executing its configure() method only once. That makes it so that multiple multibinders can be created for the same target collection, but only one is bound. Since the list of bindings is retrieved from the injector itself (and not the multibinder), each multibinder has access to all contributions from all multibinders.
As a Provider, this constructs the set instances.
We use a subclass to hide 'implements Module, Provider' from the public API.
Nested Class Summary
Nested classes/interfaces inherited from class org.elasticsearch.common.inject.multibindings.Multibinder
Method SummaryModifier and TypeMethodDescriptionReturns a binding builder used to add a new element in the set.
voidContributes bindings and other configurations for this module to
get()Provides an instance of
Set<Dependency<?>>Returns the known dependencies for this type.
(Injector injector)Invoked by Guice at Injector-creation time to prepare providers for each element in this set.
Methods inherited from class org.elasticsearch.common.inject.multibindings.Multibinder
newSetBinder, newSetBinder, newSetBinder, newSetBinder, newSetBinder, newSetBinder
configurepublic void configure
(Binder binder)Description copied from interface:
ModuleContributes bindings and other configurations for this module to
Do not invoke this method directly to install submodules. Instead use
Binder.install(Module), which ensures that
provider methodsare discovered.
addBindingpublic LinkedBindingBuilder<T> addBinding()Description copied from class:
MultibinderReturns a binding builder used to add a new element in the set. Each bound element must have a distinct value. Bound providers will be evaluated each time the set is injected.
It is an error to call this method without also calling one of the
tomethods on the returned binding builder.
Scoping elements independently is supported. Use the
inmethod to specify a binding scope.
- Specified by:
initializeInvoked by Guice at Injector-creation time to prepare providers for each element in this set. At this time the set's size is known, but its contents are only evaluated when get() is invoked.
getDescription copied from interface:
ProviderProvides an instance of
T. Must never return
getDependenciespublic Set<Dependency<?>> getDependencies()Description copied from interface:
HasDependenciesReturns the known dependencies for this type. If this has dependencies whose values are not known statically, a dependency for the
Injectorwill be included in the returned set.
- Specified by:
- a possibly empty set
equalspublic boolean equals
hashCodepublic int hashCode()
toStringpublic String toString()