package Ġcom . gitlab . d aring . f ms . z abb ix . metric Ċ Ċ import Ġcom . gitlab . d aring . f ms . common . json . Json Utils . Yaml Mapper Ċ import Ġcom . gitlab . d aring . f ms . common . json . read List Ċ import Ġcom . gitlab . d aring . f ms . z abb ix . model . Item Ċ import Ġcom . google . common . cache . Cache Builder Ċ import Ġcom . google . common . cache . Cache Loader Ċ import Ġcom . google . common . cache . Loading Cache Ċ Ċ class ĠDefault Metric Parser ( ĊĠĠĠĠĠĠĠ Ġval Ġcache Size : ĠLong Ċ ) Ġ: ĠMetric Parser Ġ{ ĊĊĠĠĠ Ġval Ġcache Ġ= Ġcreate Cache () ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Cache (): ĠLoading Cache < String , ĠMetric > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcl Ġ= ĠCache Loader . from ( this :: parse Metric ) ĊĠĠĠĠĠĠĠ Ġreturn ĠCache Builder . newBuilder (). maximum Size ( cache Size ). build ( cl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Metric ( item : ĠItem ): ĠMetric Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcache [ item . key ]. copy ( item Ġ= Ġitem ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Metric ( key : ĠString ?): ĠMetric Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( key Ġ== Ġnull ) Ġthrow ĠNullPointerException (" key ") ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġkey . indexOf ('[ ') ĊĠĠĠĠĠĠĠ Ġif Ġ( i Ġ<= Ġ 0 ) Ġreturn ĠMetric ( key , Ġempty List ()) ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠYaml Mapper . read List < String >( key . substring ( i )) ĊĠĠĠĠĠĠĠ Ġreturn ĠMetric ( key . substring ( 0 , Ġi ), Ġparams ) ĊĠĠĠ Ġ} Ċ Ċ }