package Ġcom . fa endir . ac ra . navigation Ċ Ċ import Ġcom . fa endir . ac ra . service . DataService Ċ import Ġcom . fa endir . ac ra . util . PARAM _ APP Ċ import Ġcom . fa endir . ac ra . util . PARAM _ BUG Ċ import Ġcom . fa endir . ac ra . util . PARAM _ REPORT Ċ import Ġcom . fa endir . ac ra . util . to Nullable Ċ import Ġcom . vaadin . flow . component . UI Ċ import Ġcom . vaadin . flow . router . Route Parameters Ċ import Ġcom . vaadin . flow . server . UI Init Event Ċ import Ġcom . vaadin . flow . server . UI Init Listener Ċ import Ġorg . springframework . beans . factory . annotation . Value Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġjava . lang . annotation . Inherited Ċ Ċ @ Inherited Ċ @ Target ( Annotation Target . VALUE _ PARAMETER ) Ċ @ Retention ( Annotation Retention . RUNTIME ) Ċ @ Value ("# {@ parameter Parser . parse App () }") Ċ annotation Ġclass ĠParse App Parameter Ċ Ċ @ Inherited Ċ @ Target ( Annotation Target . VALUE _ PARAMETER ) Ċ @ Retention ( Annotation Retention . RUNTIME ) Ċ @ Value ("# {@ parameter Parser . parse Bug () }") Ċ annotation Ġclass ĠParse Bug Parameter Ċ Ċ @ Inherited Ċ @ Target ( Annotation Target . VALUE _ PARAMETER ) Ċ @ Retention ( Annotation Retention . RUNTIME ) Ċ @ Value ("# {@ parameter Parser . parse Report () }") Ċ annotation Ġclass ĠParse Report Parameter ĊĊ Ċ @ Component Ċ class ĠParameter Parser ( private Ġval Ġdata Service : ĠData Service ) Ġ: ĠUI Init Listener Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcache Ġ= Ġmutable Map Of < Int , ĠRoute Parameters >() ĊĠĠĠ Ġoverride Ġfun Ġui Init ( ui Init Event : ĠUI Init Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġui Init Event . ui . add Before Enter Listener Ġ{ Ġcache [ it . ui . ui Id ] Ġ= Ġit . route Parameters Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġparse App () Ġ= Ġparse ( PARAM _ APP , ĠData Service :: find App ) ĊĊĠĠĠ Ġfun Ġparse Bug () Ġ= Ġparse ( PARAM _ BUG ) Ġ{ Ġfind Bug ( it . toInt ()) Ġ} ĊĊĠĠĠ Ġfun Ġparse Report () Ġ= Ġparse ( PARAM _ REPORT , ĠData Service :: find Report ) ĊĊĠĠĠ Ġfun Ġparse ( param : ĠString , Ġparse : ĠData Service .( String ) Ġ-> ĠAny ?): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparse ( data Service , Ġcache [ UI . getCurrent (). ui Id ]?. get ( param )?. to Nullable () Ġ?: Ġthrow ĠIllegalArgumentException (" Parameter Ġ$ param Ġnot Ġpresent ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException (" Parse Ġfailure Ġfor Ġparameter Ġ$ param ") ĊĠĠĠ Ġ} Ċ } Ċ