private static final class RealOptionalBinder.RealOptionalKeyProvider<T> extends RealOptionalBinder.RealOptionalBinderProviderWithDependencies<T,com.google.common.base.Optional<T>> implements ProviderWithExtensionVisitor<com.google.common.base.Optional<T>>, OptionalBinderBinding<com.google.common.base.Optional<T>>
Modifier and Type | Field and Description |
---|---|
private InternalFactory<? extends T> |
delegate |
private Key<com.google.common.base.Optional<T>> |
optionalKey |
private Dependency<?> |
targetDependency |
bindingSelection
provisionCallback
Constructor and Description |
---|
RealOptionalKeyProvider(RealOptionalBinder.BindingSelection<T> bindingSelection,
Key<com.google.common.base.Optional<T>> optionalKey) |
Modifier and Type | Method and Description |
---|---|
<B,R> R |
acceptExtensionVisitor(BindingTargetVisitor<B,R> visitor,
ProviderInstanceBinding<? extends B> binding)
Instructs the extension determine if the visitor is an instance of a custom extension visitor,
and if so, visit it using that method.
|
boolean |
containsElement(Element element)
Returns true if this OptionalBinder contains the given Element in order to build the optional
binding or uses the given Element in order to support building and injecting its data.
|
(package private) void |
doInitialize()
Initialize the factory.
|
protected com.google.common.base.Optional<T> |
doProvision(InternalContext context,
Dependency<?> currentDependency)
Creates an object to be injected.
|
Binding<?> |
getActualBinding()
Returns the actual binding (set by
OptionalBinder.setBinding() ) or null if not set. |
Binding<?> |
getDefaultBinding()
Returns the default binding (set by
OptionalBinder.setDefault() ) if one exists or null if
no default binding is set. |
java.util.Set<Dependency<?>> |
getDependencies()
Returns the known dependencies for this type.
|
Key<com.google.common.base.Optional<T>> |
getKey()
Returns the
Key for this binding. |
equals, hashCode, initialize
get, get, getSource
private Dependency<?> targetDependency
private InternalFactory<? extends T> delegate
RealOptionalKeyProvider(RealOptionalBinder.BindingSelection<T> bindingSelection, Key<com.google.common.base.Optional<T>> optionalKey)
void doInitialize()
RealOptionalBinder.RealOptionalBinderProviderWithDependencies
doInitialize
in class RealOptionalBinder.RealOptionalBinderProviderWithDependencies<T,com.google.common.base.Optional<T>>
protected com.google.common.base.Optional<T> doProvision(InternalContext context, Dependency<?> currentDependency) throws InternalProvisionException
InternalProviderInstanceBindingImpl.Factory
doProvision
in class InternalProviderInstanceBindingImpl.Factory<com.google.common.base.Optional<T>>
InternalProvisionException
- if a value cannot be providedpublic java.util.Set<Dependency<?>> getDependencies()
HasDependencies
Injector
will be
included in the returned set.getDependencies
in interface HasDependencies
public <B,R> R acceptExtensionVisitor(BindingTargetVisitor<B,R> visitor, ProviderInstanceBinding<? extends B> binding)
ProviderWithExtensionVisitor
Due to issues with generics, the type parameters of this method do not relate to the type of the provider. In practice, the 'B' type will always be a supertype of 'T'.
acceptExtensionVisitor
in interface ProviderWithExtensionVisitor<com.google.common.base.Optional<T>>
public Key<com.google.common.base.Optional<T>> getKey()
OptionalBinderBinding
Key
for this binding.getKey
in interface OptionalBinderBinding<com.google.common.base.Optional<T>>
public Binding<?> getActualBinding()
OptionalBinderBinding
OptionalBinder.setBinding()
) or null if not set. This
will throw UnsupportedOperationException
if it is called on an element retrieved from
Elements.getElements(com.google.inject.Module...)
.
The Binding's type will always match the type Optional's generic type. For example, if
getKey returns a key of Optional<String>
, then this will always return a
Binding<String>
.
getActualBinding
in interface OptionalBinderBinding<com.google.common.base.Optional<T>>
public Binding<?> getDefaultBinding()
OptionalBinderBinding
OptionalBinder.setDefault()
) if one exists or null if
no default binding is set. This will throw UnsupportedOperationException
if it is
called on an element retrieved from Elements.getElements(com.google.inject.Module...)
.
The Binding's type will always match the type Optional's generic type. For example, if
getKey returns a key of Optional<String>
, then this will always return a
Binding<String>
.
getDefaultBinding
in interface OptionalBinderBinding<com.google.common.base.Optional<T>>
public boolean containsElement(Element element)
OptionalBinderBinding
Elements.getElements(com.google.inject.Module...)
. Usually this is only necessary if you are working with elements
retrieved from modules (without an Injector), otherwise OptionalBinderBinding.getDefaultBinding()
and OptionalBinderBinding.getActualBinding()
are better options.containsElement
in interface OptionalBinderBinding<com.google.common.base.Optional<T>>