final case class AutoSetHook[BINDING](includeOnly: InclusionPredicate, name: Option[Identifier], weak: Boolean, pos: CodePosition)(implicit evidence$1: Tag[BINDING]) extends PlanningHook with Product with Serializable
A hook that will collect all implementations with types that are
_ <: T into a Set[T] set binding
available for summoning.
This class is not intended to be used directly, there is a convenience helper, AutoSetModule.
Usage:
val collectCloseables = AutoSetHook[AutoCloseable]("closeables") val injector = Injector(new BootstrapModuleDef { many[PlanningHook] .add(collectCloseables) })
Then, in any class created from injector:
class App(allCloseables: Set[AutoCloseable]) { ... }
These Auto-Sets can be used (just as example) to implement custom lifecycles:
val locator = injector.produce(modules) val closeables = locator.get[Set[AutoCloseable]]("closeables") try { locator.get[App].runMain() } finally { // reverse closeables list, Auto-Sets preserve order, in the order of *initialization* // Therefore resources should closed in the *opposite order* // e.g. if C depends on B depends on A, create: A -> B -> C, close: C -> B -> A closeables.reverse.foreach(_.close()) }
Linear Supertypes
Ordering
- Alphabetic
 - By Inheritance
 
Inherited
- AutoSetHook
 - Serializable
 - Product
 - Equals
 - PlanningHook
 - AnyRef
 - Any
 
- Hide All
 - Show All
 
Visibility
- Public
 - Protected
 
Instance Constructors
-  new AutoSetHook(includeOnly: InclusionPredicate, name: Option[Identifier], weak: Boolean, pos: CodePosition)(implicit arg0: Tag[BINDING])
 
Value Members
-   final  def !=(arg0: Any): Boolean
- Definition Classes
 - AnyRef → Any
 
 -   final  def ##: Int
- Definition Classes
 - AnyRef → Any
 
 -   final  def ==(arg0: Any): Boolean
- Definition Classes
 - AnyRef → Any
 
 -   final  def asInstanceOf[T0]: T0
- Definition Classes
 - Any
 
 -    def clone(): AnyRef
- Attributes
 - protected[lang]
 - Definition Classes
 - AnyRef
 - Annotations
 - @throws(classOf[java.lang.CloneNotSupportedException]) @native()
 
 -   final  def eq(arg0: AnyRef): Boolean
- Definition Classes
 - AnyRef
 
 -    def finalize(): Unit
- Attributes
 - protected[lang]
 - Definition Classes
 - AnyRef
 - Annotations
 - @throws(classOf[java.lang.Throwable])
 
 -   final  def getClass(): Class[_ <: AnyRef]
- Definition Classes
 - AnyRef → Any
 - Annotations
 - @native()
 
 -    def hookDefinition(definition: ModuleBase): ModuleBase
- Definition Classes
 - AutoSetHook → PlanningHook
 
 -  val includeOnly: InclusionPredicate
 -   final  def isInstanceOf[T0]: Boolean
- Definition Classes
 - Any
 
 -  val name: Option[Identifier]
 -   final  def ne(arg0: AnyRef): Boolean
- Definition Classes
 - AnyRef
 
 -   final  def notify(): Unit
- Definition Classes
 - AnyRef
 - Annotations
 - @native()
 
 -   final  def notifyAll(): Unit
- Definition Classes
 - AnyRef
 - Annotations
 - @native()
 
 -  val pos: CodePosition
 -    def productElementNames: Iterator[String]
- Definition Classes
 - Product
 
 -    val setElementType: SafeType
- Attributes
 - protected
 
 -    val setKey: DIKey
- Attributes
 - protected
 
 -   final  def synchronized[T0](arg0: => T0): T0
- Definition Classes
 - AnyRef
 
 -   final  def wait(): Unit
- Definition Classes
 - AnyRef
 - Annotations
 - @throws(classOf[java.lang.InterruptedException])
 
 -   final  def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
 - AnyRef
 - Annotations
 - @throws(classOf[java.lang.InterruptedException])
 
 -   final  def wait(arg0: Long): Unit
- Definition Classes
 - AnyRef
 - Annotations
 - @throws(classOf[java.lang.InterruptedException]) @native()
 
 -  val weak: Boolean