final class InjectorJitBindingData
extends java.lang.Object
MembersInjectorStore
or ProvisionListenerCallbackStore
, which are still stored in InjectorImpl
.Modifier and Type | Field and Description |
---|---|
private WeakKeySet |
bannedKeys |
private java.util.Set<Key<?>> |
failedJitBindings
Cache of Keys that we were unable to create JIT bindings for, so we don't keep trying.
|
private java.util.Map<Key<?>,BindingImpl<?>> |
jitBindings
Just-in-time binding cache.
|
private java.lang.Object |
lock
This lock is needed for threadsafe InjectorJitBindingData accesses.
|
private java.util.Optional<InjectorJitBindingData> |
parent |
Constructor and Description |
---|
InjectorJitBindingData(java.util.Optional<InjectorJitBindingData> parent) |
Modifier and Type | Method and Description |
---|---|
(package private) void |
addFailedJitBinding(Key<?> key) |
(package private) void |
banKey(Key<?> key,
InjectorBindingData injectorBindingData,
java.lang.Object source)
Forbids the corresponding injector and its ancestors from creating a binding to
key . |
(package private) void |
banKeyInParent(Key<?> key,
InjectorBindingData injectorBindingData,
java.lang.Object source)
Similar to
banKey(Key, InjectorBindingData, Object) but we only begin banning the
binding at the parent level. |
(package private) BindingImpl<?> |
getJitBinding(Key<?> key) |
(package private) java.util.Map<Key<?>,BindingImpl<?>> |
getJitBindings() |
(package private) java.util.Set<java.lang.Object> |
getSourcesForBannedKey(Key<?> key)
Returns the source of a banned key.
|
(package private) boolean |
isBannedKey(Key<?> key)
Returns true if
key is forbidden from being bound in the injector corresponding to this
data object. |
(package private) boolean |
isFailedJitBinding(Key<?> key) |
(package private) java.lang.Object |
lock() |
(package private) void |
putJitBinding(Key<?> key,
BindingImpl<?> binding) |
(package private) void |
removeJitBinding(Key<?> key) |
private final java.util.Map<Key<?>,BindingImpl<?>> jitBindings
lock
.private final java.util.Set<Key<?>> failedJitBindings
lock
.private final WeakKeySet bannedKeys
private final java.util.Optional<InjectorJitBindingData> parent
private final java.lang.Object lock
InjectorJitBindingData(java.util.Optional<InjectorJitBindingData> parent)
java.util.Map<Key<?>,BindingImpl<?>> getJitBindings()
BindingImpl<?> getJitBinding(Key<?> key)
void putJitBinding(Key<?> key, BindingImpl<?> binding)
void removeJitBinding(Key<?> key)
boolean isFailedJitBinding(Key<?> key)
void addFailedJitBinding(Key<?> key)
void banKey(Key<?> key, InjectorBindingData injectorBindingData, java.lang.Object source)
key
.
Child injectors ban their bound keys on their parent injectors to prevent just-in-time bindings
on the parent injector that would conflict, and pass along their InjectorBindingData to control
the banned key's lifetime.void banKeyInParent(Key<?> key, InjectorBindingData injectorBindingData, java.lang.Object source)
banKey(Key, InjectorBindingData, Object)
but we only begin banning the
binding at the parent level. This is used to prevent JIT bindings in the parent injector from
overriding explicit bindings declared in a child injector.boolean isBannedKey(Key<?> key)
key
is forbidden from being bound in the injector corresponding to this
data object. This indicates that one of the injector's children has bound the key.java.util.Set<java.lang.Object> getSourcesForBannedKey(Key<?> key)
java.lang.Object lock()