Class InternalContext

  • All Implemented Interfaces:
    java.lang.AutoCloseable

    final class InternalContext
    extends java.lang.Object
    implements java.lang.AutoCloseable
    Internal context. Used to coordinate injections and support circular dependencies.
    • Field Detail

      • constructionContexts

        private final java.util.IdentityHashMap<java.lang.Object,​ConstructionContext<?>> constructionContexts
      • dependency

        private Dependency<?> dependency
        Keeps track of the type that is currently being requested for injection.
      • enterCount

        private int enterCount
        The number of times enter() has been called + 1 for initial construction. This value is decremented when #exit() is called.
      • toClear

        private final java.lang.Object[] toClear
        A single element array to clear when the enterCount hits 0.

        This is the value stored in the InjectorImpl.localContext thread local.

    • Method Detail

      • enter

        void enter()
        Should only be called by InjectorImpl.enterContext().
      • close

        public void close()
        Should be called any any method that received an instance via InjectorImpl.enterContext().
        Specified by:
        close in interface java.lang.AutoCloseable
      • getConstructionContext

        <T> ConstructionContext<T> getConstructionContext​(java.lang.Object key)
      • setDependency

        void setDependency​(Dependency<?> dependency)
        Used to set the current dependency.

        The currentDependency field is only used by InternalFactoryToProviderAdapter to propagate information to singleton scope. See comments in that class about alternatives.