package Ġorg . max ur . m serv . frame . runner Ċ Ċ import Ġorg . max ur . m serv . frame . Locator Config Ċ import Ġorg . max ur . m serv . frame . Locator Impl Ċ import Ġorg . max ur . m serv . frame . kotlin . Locator Ċ import Ġjava . util . concurrent . atomic . Atomic Integer Ċ Ċ /** Ċ Ġ* ĠThe ĠService ĠLoc ator ĠBuilder . Ċ Ġ* Ċ Ġ* Ġ@ author ĠMax im ĠY un us ov Ċ Ġ* Ġ@ version Ġ 1 . 0 Ċ Ġ* Ġ@ since Ġ< pre > 2 6 . 0 8 . 2 0 1 7 </ pre > Ċ Ġ*/ Ċ abstract Ġclass ĠLoc ator Builder () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġname Count Ġ= ĠAtomicInteger () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġval Ġname Ġget () Ġ= Ġ" locator Ġ${ name Count . and Increment }" ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠList Ġof Ġproject Ġservice Ġpackages Ġfor Ġservice Ġlocator Ġlookup . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġpackages : ĠSet < String > Ġ= Ġset Of () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuild Ġservice Ġlocator . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġbuild ( init : ĠLoc ator Config . () Ġ-> ĠUnit ): ĠLoc ator Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocator Ġ= Ġmake () ĊĠĠĠĠĠĠĠ Ġlocator . configure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( org . max ur . m serv . frame . kotlin . Locator ( locator )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( org . max ur . m serv . frame . java . Locator ( locator )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlocator . register As Singleton () ĊĠĠĠĠĠĠĠ Ġconfigure ( locator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġorg . max ur . m serv . frame . kotlin . Locator ( locator ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLoc ator . current . on Configuration Error ( e ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġmake (): ĠLoc ator Impl ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġconfigure ( locator : ĠLoc ator Impl , Ġfunction : ĠLoc ator Config . () Ġ-> ĠUnit ): ĠLoc ator Config Ċ }