package Ġn ol ambda . link router Ċ Ċ import Ġn ol ambda . link router . Deep Link Uri . Companion . to Deep Link Uri Ċ import Ġn ol ambda . link router . matcher . Deep Link Entry Matcher Ċ import Ġn ol ambda . link router . matcher . Uri Matcher Ċ import Ġjava . util . concurrent . Concurrent HashMap Ċ Ċ type alias ĠUri Router Logger Ġ= Ġ( String ) Ġ-> ĠUnit Ċ type alias ĠUri Router Handler < T > Ġ= Ġ( Deep Link Uri , ĠMap < String , ĠString >) Ġ-> ĠT Ċ Ċ class ĠEntry Value < T >( ĊĠĠĠ Ġval Ġhandler : ĠUri Router Handler < T >, ĊĠĠĠ Ġval Ġmatcher : ĠUri Matcher Ċ ) Ċ Ċ abstract Ġclass ĠUri Router < RES >( ĊĠĠĠ Ġprivate Ġval Ġlogger : ĠUri Router Logger ? Ċ ) Ġ: ĠRouter < String , ĠRES ?> Ġ{ ĊĊĠĠĠ Ġabstract Ġfun Ġresolve Entry ( route : ĠString ): ĠPair < Deep Link Entry , ĠEntry Value < RES >> ? ĊĊĠĠĠ Ġoverride Ġfun Ġresolve ( route : ĠString ): ĠRES ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġresolve Entry ( route ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger ?. invoke (" Path Ġnot Ġimplemented Ġ$ route ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdeep Link Entry Ġ= Ġresult . first ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġresult . second ĊĊĠĠĠĠĠĠĠ Ġval Ġdeep Link Uri Ġ= Ġroute . to Deep Link Uri () ĊĠĠĠĠĠĠĠ Ġval Ġparameters Ġ= Ġdeep Link Entry . getParameters ( deep Link Uri ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġvalue . handler . invoke ( deep Link Uri , Ġparameters ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġadd Entry ( ĊĠĠĠĠĠĠĠ Ġvar arg Ġuri : ĠString , ĊĠĠĠĠĠĠĠ Ġmatcher : ĠUri Matcher Ġ= ĠDeep Link Entry Matcher , ĊĠĠĠĠĠĠĠ Ġhandler : ĠUri Router Handler < RES > ĊĠĠĠ Ġ) Ċ } Ċ