Packages

final class InjectorDefaultImpl[F[_]] extends Injector[F]

Linear Supertypes
Injector[F], Producer, Planner, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. InjectorDefaultImpl
  2. Injector
  3. Producer
  4. Planner
  5. AnyRef
  6. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new InjectorDefaultImpl(parentFactory: InjectorFactory, bootstrapLocator: Locator, defaultModule: Module)(implicit F: QuasiIO[F], tagK: TagK[F])

    parentFactory

    passed-through for summoning in DI as InjectorFactory / field in Bootloader

    bootstrapLocator

    contains Planner & PlanInterpeter built using a BootstrapModule, most often created using izumi.distage.bootstrap.BootstrapLocator.bootstrap

    defaultModule

    is added to (but overridden by) user's PlannerInput

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. implicit val F: QuasiIO[F]
    Definition Classes
    InjectorDefaultImplInjector
  5. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  6. final def assert(bindings: ModuleBase, roots: Roots, excludedActivations: Set[NonEmptySet[AxisChoice]] = Set.empty): Unit

    Efficiently check all possible paths for the given module to the given roots,

    Efficiently check all possible paths for the given module to the given roots,

    This is a "raw" version of izumi.distage.framework.PlanCheck API, please use PlanCheck for all non-exotic needs.

    This method executes at runtime, to check correctness at compile-time use PlanCheck API from distage-framework module.

    returns

    Unit

    Definition Classes
    Injector
    Exceptions thrown

    PlanCheckException on found issues

    See also

    Compile-Time Checks

  7. val bootstrapLocator: Locator
  8. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  9. val defaultModule: Module
  10. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  11. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  12. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  13. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  14. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  15. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  16. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  17. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  18. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  19. val parentFactory: InjectorFactory
  20. def plan(input: PlannerInput): Plan
    Definition Classes
    InjectorDefaultImplPlanner
  21. final def plan(bindings: ModuleBase, roots: Roots): Plan
    Definition Classes
    Planner
    Annotations
    @inline()
  22. final def plan(bindings: ModuleBase, activation: Activation, roots: Roots): Plan
    Definition Classes
    Planner
    Annotations
    @inline()
  23. def planNoRewrite(input: PlannerInput): Plan
    Definition Classes
    InjectorDefaultImplPlanner
  24. def planNoRewriteSafe(input: PlannerInput): Either[List[DIError], Plan]
    Definition Classes
    InjectorDefaultImplPlanner
  25. def planSafe(input: PlannerInput): Either[List[DIError], Plan]
    Definition Classes
    InjectorDefaultImplPlanner
  26. final def planSafe(bindings: ModuleBase, roots: Roots): Either[List[DIError], Plan]
    Definition Classes
    Planner
    Annotations
    @inline()
  27. final def planSafe(bindings: ModuleBase, activation: Activation, roots: Roots): Either[List[DIError], Plan]
    Definition Classes
    Planner
    Annotations
    @inline()
  28. final def produce(plan: Plan): Lifecycle[F, Locator]

    Create an effectful izumi.distage.model.definition.Lifecycle value that encapsulates the allocation and cleanup of an object graph described by an existing plan

    Create an effectful izumi.distage.model.definition.Lifecycle value that encapsulates the allocation and cleanup of an object graph described by an existing plan

    class HelloWorld {
      def hello() = println("hello world")
    }
    
    val injector = Injector()
    
    val plan = injector.plan(PlannerInput(
        bindings = new ModuleDef {
          make[HelloWorld]
        },
        activation = Activation.empty,
        roots = Roots.target[HelloWorld],
      ))
    
    injector
      .produce(plan)
      .use(_.get[HelloWorld].hello())
    plan

    Computed wiring plan, may be produced by calling the plan method

    returns

    A Resource value that encapsulates allocation and cleanup of the object graph described by input

    Definition Classes
    Injector
  29. final def produce(bindings: ModuleBase, roots: Roots, activation: Activation = Activation.empty): Lifecycle[F, Locator]
    Definition Classes
    Injector
  30. final def produce(input: PlannerInput): Lifecycle[F, Locator]

    Create an effectful izumi.distage.model.definition.Lifecycle value that encapsulates the allocation and cleanup of an object graph described by input

    Create an effectful izumi.distage.model.definition.Lifecycle value that encapsulates the allocation and cleanup of an object graph described by input

    class HelloWorld {
      def hello() = println("hello world")
    }
    
    Injector()
      .produce(PlannerInput(
        bindings = new ModuleDef {
          make[HelloWorld]
        },
        activation = Activation.empty,
        roots = Roots.target[HelloWorld],
      ))
      .use(_.get[HelloWorld].hello())
    input

    Bindings created by izumi.distage.model.definition.ModuleDef DSL and garbage collection roots. Garbage collector will remove all bindings that aren't direct or indirect dependencies of the chosen root DIKeys from the plan - they will never be instantiated. If left empty, garbage collection will not be performed – that would be equivalent to designating all DIKeys as roots.

    returns

    A Resource value that encapsulates allocation and cleanup of the object graph described by input

    Definition Classes
    Injector
  31. final def produceCustomF[G[_]](plannerInput: PlannerInput)(implicit arg0: TagK[G], arg1: QuasiIO[G]): Lifecycle[G, Locator]

    Produce izumi.distage.model.Locator interpreting effect and resource bindings into the provided effect type

    Produce izumi.distage.model.Locator interpreting effect and resource bindings into the provided effect type

    Definition Classes
    Injector
  32. final def produceCustomF[F[_]](plan: Plan)(implicit arg0: TagK[F], arg1: QuasiIO[F]): Lifecycle[F, Locator]

    Produce izumi.distage.model.Locator interpreting effect- and resource-bindings into the provided F

    Produce izumi.distage.model.Locator interpreting effect- and resource-bindings into the provided F

    Definition Classes
    Producer
  33. final def produceCustomIdentity(plannerInput: PlannerInput): Lifecycle[Identity, Locator]

    Produce izumi.distage.model.Locator, supporting only effect and resource bindings in Identity

    Produce izumi.distage.model.Locator, supporting only effect and resource bindings in Identity

    Definition Classes
    Injector
  34. final def produceCustomIdentity(plan: Plan): Lifecycle[Identity, Locator]

    Produce izumi.distage.model.Locator, supporting only effect- and resource-bindings in Identity

    Produce izumi.distage.model.Locator, supporting only effect- and resource-bindings in Identity

    Definition Classes
    Producer
  35. final def produceDetailedCustomF[G[_]](plannerInput: PlannerInput)(implicit arg0: TagK[G], arg1: QuasiIO[G]): Lifecycle[G, Either[FailedProvision[G], Locator]]
    Definition Classes
    Injector
  36. final def produceDetailedCustomF[F[_]](plan: Plan)(implicit arg0: TagK[F], arg1: QuasiIO[F]): Lifecycle[F, Either[FailedProvision[F], Locator]]
    Definition Classes
    Producer
  37. final def produceDetailedIdentity(plannerInput: PlannerInput): Lifecycle[Identity, Either[FailedProvision[Identity], Locator]]
    Definition Classes
    Injector
  38. final def produceDetailedIdentity(plan: Plan): Lifecycle[Identity, Either[FailedProvision[Identity], Locator]]
    Definition Classes
    Producer
  39. final def produceEval[A](bindings: ModuleBase, activation: Activation = Activation.empty)(function: Functoid[F[A]]): Lifecycle[F, A]

    Create an effectful izumi.distage.model.definition.Lifecycle value that encapsulates the allocation and cleanup of an object graph described by the input module, designate all arguments of the provided function as roots of the graph and run the function.

    Create an effectful izumi.distage.model.definition.Lifecycle value that encapsulates the allocation and cleanup of an object graph described by the input module, designate all arguments of the provided function as roots of the graph and run the function.

    class Hello { def hello() = println("hello") }
    class World { def world() = println("world") }
    
    Injector()
      .produceEval(new ModuleDef {
        make[Hello]
        make[World]
      }) {
        (hello: Hello, world: World) =>
          hello.hello()
          world
      }
      .use {
        world =>
          world.world()
      }

    This is useful for the common case when you want to run an effect using the produced objects from the object graph, without finalizing the object graph yet

    Injector[F]().produceEval[A](moduleDef)(fn) is a short-hand for:

    Injector[F]()
      .produce(moduleDef, Roots(fn.get.diKeys.toSet))
      .evalMap(_.run(fn)): Lifecycle[F, A]
    bindings

    Bindings created by izumi.distage.model.definition.ModuleDef DSL

    activation

    A map of axes of configuration to choices along these axes

    function

    N-ary izumi.distage.model.providers.Functoid function for which arguments will be designated as roots and provided from the object graph

    Definition Classes
    Injector
  40. final def produceGet[A](name: Identifier)(bindings: ModuleBase, activation: Activation = Activation.empty)(implicit arg0: Tag[A]): Lifecycle[F, A]
    Definition Classes
    Injector
  41. final def produceGet[A](bindings: ModuleBase)(implicit arg0: Tag[A]): Lifecycle[F, A]
    Definition Classes
    Injector
  42. final def produceGet[A](bindings: ModuleBase, activation: Activation)(implicit arg0: Tag[A]): Lifecycle[F, A]

    Create an effectful izumi.distage.model.definition.Lifecycle value that encapsulates the allocation and cleanup of an object graph described by the input module, designate A as the root of the graph and retrieve A from the result.

    Create an effectful izumi.distage.model.definition.Lifecycle value that encapsulates the allocation and cleanup of an object graph described by the input module, designate A as the root of the graph and retrieve A from the result.

    class HelloWorld {
      def hello() = println("hello world")
    }
    
    Injector()
      .produceGet[HelloWorld](new ModuleDef {
        make[HelloWorld]
      })
      .use(_.hello())

    This is useful for the common case when your main logic class is the root of your graph AND the object you want to use immediately.

    Injector[F]().produceGet[A](moduleDef) is a short-hand for:

    Injector[F]()
      .produce(moduleDef, Roots(DIKey.get[A]))
      .map(_.get[A]): Lifecycle[F, A]
    bindings

    Bindings created by izumi.distage.model.definition.ModuleDef DSL

    activation

    A map of axes of configuration to choices along these axes

    Definition Classes
    Injector
  43. final def produceRun[A](bindings: ModuleBase, activation: Activation = Activation.empty)(function: Functoid[F[A]]): F[A]

    Create an an object graph described by the input module, designate all arguments of the provided function as roots of the graph, and run the function, deallocating the object graph when the function exits.

    Create an an object graph described by the input module, designate all arguments of the provided function as roots of the graph, and run the function, deallocating the object graph when the function exits.

    class Hello { def hello() = println("hello") }
    class World { def world() = println("world") }
    
    Injector()
      .produceRun(new ModuleDef {
        make[Hello]
        make[World]
      }) {
        (hello: Hello, world: World) =>
          hello.hello()
          world.world()
      }

    This is useful for the common case when you want to run an effect using the produced objects from the object graph and deallocate the object graph once the effect is finished

    Injector[F]().produceRun[A](moduleDef)(fn) is a short-hand for:

    Injector[F]()
      .produce(moduleDef, Roots(fn.get.diKeys.toSet))
      .use(_.run(fn)): F[A]
    bindings

    Bindings created by izumi.distage.model.definition.ModuleDef DSL

    activation

    A map of axes of configuration to choices along these axes

    function

    N-ary izumi.distage.model.providers.Functoid function for which arguments will be designated as roots and provided from the object graph

    Definition Classes
    Injector
  44. def providedEnvironment: InjectorProvidedEnv
    Definition Classes
    InjectorDefaultImplInjector
  45. def providedKeys: Set[DIKey]

    Keys that will be available to the module interpreted by this Injector, includes parent Locator keys, izumi.distage.modules.DefaultModule & Injector's self-reference keys

    Keys that will be available to the module interpreted by this Injector, includes parent Locator keys, izumi.distage.modules.DefaultModule & Injector's self-reference keys

    Definition Classes
    InjectorDefaultImplInjector
  46. def rewrite(module: ModuleBase): ModuleBase
    Definition Classes
    InjectorDefaultImplPlanner
  47. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  48. implicit val tagK: TagK[F]
    Definition Classes
    InjectorDefaultImplInjector
  49. def toString(): String
    Definition Classes
    AnyRef → Any
  50. final def verify(bindings: ModuleBase, roots: Roots, excludedActivations: Set[NonEmptySet[AxisChoice]] = Set.empty): PlanVerifierResult

    Efficiently check all possible paths for the given module to the given roots,

    Efficiently check all possible paths for the given module to the given roots,

    This is a "raw" version of izumi.distage.framework.PlanCheck API, please use PlanCheck for all non-exotic needs.

    This method executes at runtime, to check correctness at compile-time use PlanCheck API from distage-framework module.

    returns

    Set of issues if any.

    Definition Classes
    Injector
    Exceptions thrown

    Nothing Does not throw.

    See also

    Compile-Time Checks

  51. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  52. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  53. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()

Inherited from Injector[F]

Inherited from Producer

Inherited from Planner

Inherited from AnyRef

Inherited from Any

Ungrouped