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