/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 ĠVS CT Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* Ġ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* Ġ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġai . to ck . shared Ċ Ċ import Ġai . to ck . shared . cache . To ck Cache Ċ import Ġai . to ck . shared . cache . mongo . Mongo Cache Ċ import Ġai . to ck . shared . security . No Op To ck User Listener Ċ import Ġai . to ck . shared . security . To ck User Listener Ċ import Ġai . to ck . shared . vertx . To ck Vert x Provider Ċ import Ġai . to ck . shared . vertx . Vert x Provider Ċ import Ġai . to ck . shared . vertx . vertx Executor Ċ import Ġcom . github . sal om on br ys . kode in . K ode in Ċ import Ġcom . github . sal om on br ys . kode in . K ode in Injector Ċ import Ġcom . github . sal om on br ys . kode in . bind Ċ import Ġcom . github . sal om on br ys . kode in . provider Ċ import Ġcom . github . sal om on br ys . kode in . provider OrNull Ċ import Ġcom . github . sal om on br ys . kode in . singleton Ċ import Ġcom . mongodb . Mongo Client Ċ import Ġmu . Kotlin Logging Ċ Ċ private Ġval Ġlogger Ġ= ĠKotlin Logging . logger Ġ{} Ċ Ċ /** Ċ Ġ* ĠInternal Ġinjector Ġ- Ġreset Ġonly Ġfor Ġtests . Ċ Ġ*/ Ċ var Ġto ck Internal Injector Ġ= ĠK ode in Injector () Ċ Ċ /** Ċ Ġ* ĠMain ĠT ock Ġinjector . Ċ Ġ*/ Ċ val Ġinjector : ĠK ode in Injector Ġget () Ġ= Ġto ck Internal Injector Ċ Ċ /** Ċ Ġ* ĠExtension Ġfunction Ġfor ĠI oc . ĠPattern : Ċ Ġ* Ġ< code > val Ġcore : ĠN lp Core Ġget () Ġ= Ġinjector . provide ()</ code > Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠAny > ĠK ode in Injector . provide ( tag : ĠAny ? Ġ= Ġnull ): ĠT Ġ= ĊĠĠĠ Ġinjector . provider < T >( tag ). value . invoke () Ċ Ċ /** Ċ Ġ* ĠExtension Ġfunction Ġfor ĠI oc . ĠPattern : Ċ Ġ* Ġ< code > val Ġcore : ĠN lp Core Ġget () Ġ= Ġinjector . provide OrDefault () Ġ{ Ġ... Ġ}</ code > Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠAny > ĠK ode in Injector . provide OrDefault ( tag : ĠAny ? Ġ= Ġnull , ĠdefaultValue Provider : Ġ() Ġ-> ĠT ): ĠT Ġ= ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġinjector . provider OrNull < T >( tag ). value ?. invoke () Ġ?: ĠdefaultValue Provider . invoke () ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠK ode in Injector . Un inject ed Exception ) Ġ{ ĊĠĠĠĠĠĠĠ ĠdefaultValue Provider . invoke () ĊĠĠĠ Ġ} Ċ Ċ /** Ċ Ġ* ĠIO C Ġof Ġshared Ġmodule . Ċ Ġ*/ Ċ val Ġshared Module Ġ= ĠK ode in . Module Ġ{ ĊĠĠĠ Ġbind < Executor >() Ġwith Ġprovider Ġ{ Ġvert x Executor () Ġ} ĊĠĠĠ Ġbind < To ck Cache >() Ġwith Ġprovider Ġ{ ĠMongo Cache Ġ} ĊĠĠĠ Ġbind < Vert x Provider >() Ġwith Ġprovider Ġ{ ĠT ock Vert x Provider Ġ} ĊĠĠĠ Ġbind < To ck User Listener >() Ġwith Ġprovider Ġ{ ĠNo Op To ck User Listener Ġ} ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġbind < Mongo Client >() Ġwith Ġsingleton Ġ{ Ġmongo Client Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . warn Ġ{ Ġe . message Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġbind < com . mongodb . reactiv est ream s . client . Mongo Client >() Ġwith Ġsingleton Ġ{ Ġasync Mongo Client Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . warn Ġ{ Ġe . message Ġ} ĊĠĠĠ Ġ} Ċ }