Top Description Inners Fields Constructors Methods
com.google.inject.internal

pack-priv final Class Initializer

extends Object
Class Inheritance
Static Imports
com.google.common.base.Preconditions.checkNotNull

Manages and injects instances at injector-creation time. This is made more complicated by instances that request other instances while they're being injected. We overcome this by using Initializable, which attempts to perform injection before use.
Author
[email protected] (Jesse Wilson)

Nested and Inner Type Summary

Modifier and TypeClass and Description
private static class
private static enum

Field Summary

Modifier and TypeField and Description
private final CycleDetectingLock.CycleDetectingLockFactory<Class<?>>
cycleDetectingLockFactory

Allows us to detect circular dependencies.

private final IdentityHashMap<Object, Initializer.InjectableReference<?>>
initializablesCache

Map that guarantees that no instance would get two references.

private final List<Initializer.InjectableReference<?>>
pendingInjections

Instances that need injection during injector creation to a source that registered them.

private volatile boolean
validationStarted

Is set to true once validateOustandingInjections is called.

Constructor Summary

AccessConstructor and Description
pack-priv

Method Summary

Modifier and TypeMethod and Description
pack-priv void
injectAll(final Errors errors)

Performs creation-time injections on all objects that require it.

pack-priv <T> Initializable<T>
requestInjection(InjectorImpl injector, TypeLiteral<T> type, T
an instance that optionally has members to be injected (each annotated with @Inject).
instance
,
Binding<T>
the binding that caused this initializable to be created, if it exists.
binding
,
Object
the source location that this injection was requested
source
,
Set<InjectionPoint> injectionPoints, Errors errors)

Registers an instance for member injection when that step is performed.

pack-priv void
validateOustandingInjections(Errors errors)

Prepares member injectors for all injected instances.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

cycleDetectingLockFactoryback to summary
private final CycleDetectingLock.CycleDetectingLockFactory<Class<?>> cycleDetectingLockFactory

Allows us to detect circular dependencies. It's only used during injectable reference initialization. After initialization direct access through volatile field is used.

initializablesCacheback to summary
private final IdentityHashMap<Object, Initializer.InjectableReference<?>> initializablesCache

Map that guarantees that no instance would get two references. New references added before validateOustandingInjections. Cleared up in validateOustandingInjections.

pendingInjectionsback to summary
private final List<Initializer.InjectableReference<?>> pendingInjections

Instances that need injection during injector creation to a source that registered them. New references added before validateOustandingInjections. Cleared up in injectAll.

validationStartedback to summary
private volatile boolean validationStarted

Is set to true once validateOustandingInjections is called.

Constructor Detail

Initializerback to summary
pack-priv Initializer()

Method Detail

injectAllback to summary
pack-priv void injectAll(final Errors errors)

Performs creation-time injections on all objects that require it. Whenever fulfilling an injection depends on another object that requires injection, we inject it first. If the two instances are codependent (directly or transitively), ordering of injection is arbitrary.

requestInjectionback to summary
pack-priv <T> Initializable<T> requestInjection(InjectorImpl injector, TypeLiteral<T> type, T instance, Binding<T> binding, Object source, Set<InjectionPoint> injectionPoints, Errors errors)

Registers an instance for member injection when that step is performed.

Parameters
instance:T

an instance that optionally has members to be injected (each annotated with @Inject).

binding:Binding<T>

the binding that caused this initializable to be created, if it exists.

source:Object

the source location that this injection was requested

validateOustandingInjectionsback to summary
pack-priv void validateOustandingInjections(Errors errors)

Prepares member injectors for all injected instances. This prompts Guice to do static analysis on the injected instances.

com.google.inject.internal back to summary

private Class Initializer.InjectableReference<T>

extends Object
implements Initializable<T>
Class Inheritance
All Implemented Interfaces
com.google.inject.internal.Initializable

Field Summary

Modifier and TypeField and Description
private final InjectorImpl
private final T
private final Key<T>
private final CycleDetectingLock<?>
private volatile MembersInjectorImpl<T>
private final ProvisionListenerStackCallback<T>
private final Object
private volatile Initializer.InjectableReferenceState
private final TypeLiteral<T>

Constructor Summary

AccessConstructor and Description
public
InjectableReference(InjectorImpl injector, T instance, TypeLiteral<T> type, Key<T> key, ProvisionListenerStackCallback<T> provisionCallback, Object source, CycleDetectingLock<?> lock)

Method Summary

Modifier and TypeMethod and Description
public T
public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.
public void
validate(Errors errors)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAllwaitwaitwait

Field Detail

injectorback to summary
private final InjectorImpl injector
instanceback to summary
private final T instance
keyback to summary
private final Key<T> key
lockback to summary
private final CycleDetectingLock<?> lock
membersInjectorback to summary
private volatile MembersInjectorImpl<T> membersInjector
provisionCallbackback to summary
private final ProvisionListenerStackCallback<T> provisionCallback
sourceback to summary
private final Object source
stateback to summary
private volatile Initializer.InjectableReferenceState state
typeback to summary
private final TypeLiteral<T> type

Constructor Detail

InjectableReferenceback to summary
public InjectableReference(InjectorImpl injector, T instance, TypeLiteral<T> type, Key<T> key, ProvisionListenerStackCallback<T> provisionCallback, Object source, CycleDetectingLock<?> lock)

Method Detail

getback to summary
public T get() throws InternalProvisionException

Implements com.google.inject.internal.Initializable.get.

Reentrant. If instance was registered for injection at injector-creation time, this method will ensure that all its members have been injected before returning.

Annotations
@Override
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object.

Returns:String

a string representation of the object

Annotations
@Override
validateback to summary
public void validate(Errors errors) throws ErrorsException
com.google.inject.internal back to summary

private final Enum Initializer.InjectableReferenceState

extends Enum<Initializer.InjectableReferenceState>
Class Inheritance

Field Summary

Modifier and TypeField and Description
public static final Initializer.InjectableReferenceState
public static final Initializer.InjectableReferenceState
public static final Initializer.InjectableReferenceState
public static final Initializer.InjectableReferenceState

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public static Initializer.InjectableReferenceState
public static Initializer.InjectableReferenceState[]
Inherited from java.lang.Enum:
clonecompareTodescribeConstableequalsfinalizegetDeclaringClasshashCodenameordinaltoStringvalueOf

Field Detail

INJECTINGback to summary
public static final Initializer.InjectableReferenceState INJECTING
NEWback to summary
public static final Initializer.InjectableReferenceState NEW
READYback to summary
public static final Initializer.InjectableReferenceState READY
VALIDATEDback to summary
public static final Initializer.InjectableReferenceState VALIDATED

Constructor Detail

InjectableReferenceStateback to summary
private InjectableReferenceState()

Method Detail

valueOfback to summary
public static Initializer.InjectableReferenceState valueOf(String name)
valuesback to summary
public static Initializer.InjectableReferenceState[] values()