/* Ċ Ġ* ĠCopyright Ġ@ Ġ 2 0 1 8 Ġ- Ġpresent Ġ 8 x 8 , ĠInc . Ċ Ġ* Ċ Ġ* Ġ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 Ġorg . j its i . video bridge . x mpp . config Ċ Ċ import Ġcom . types afe . config . Config Object Ċ import Ġcom . types afe . config . Config Value Ċ import Ġorg . j its i . config . J its i Config Ċ import Ġorg . j its i . met acon fig . Config Exception Ċ import Ġorg . j its i . met acon fig . config Ċ import Ġorg . j its i . video bridge . stats . Stats Collector Ċ import Ġorg . j its i . video bridge . stats . config . Stats Transport Config Ċ import Ġorg . j its i . x mpp . m uc client . M uc Client Configuration Ċ import Ġjava . time . Duration Ċ Ċ class ĠX mpp Client Connection Config Ġ{ ĊĠĠĠ Ġval Ġclient Configs : ĠList < M uc Client Configuration > Ġby Ġconfig Ġ{ ĊĠĠĠĠĠĠĠ Ġ" org . j its i . video bridge . x mpp . user ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( J its i Config . legacy Config ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. convert From < Map < String , ĠString >> Ġ{ Ġprops Map Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM uc Client Configuration . load From Map ( props Map , Ġ" org . j its i . video bridge . x mpp . user .", Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĠforEach Ġ{ Ġit . apply Default Iq Handler Mode () Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take If Ġ{ Ġit . isNotEmpty () Ġ} Ġ?: Ġthrow ĠConfig Exception . Unable To Retrieve . NotFound (" no Ġconfigs Ġfound ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ" video bridge . apis . x mpp - client . configs ". from ( J its i Config . new Config ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. convert From < Config Object > Ġ{ Ġcfg Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcfg . entries ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . to M uc Client Configuration () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . is Complete Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġpresence Interval Property : ĠDuration Ġby Ġconfig Ġ{ ĊĠĠĠĠĠĠĠ Ġ" video bridge . apis . x mpp - client . presence - interval ". from ( J its i Config . new Config ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġinterval Ġat Ġwhich Ġpresence Ġupdates Ġ( with Ġupdates Ġstats / status ) Ġare Ġpublished . ĠAllow Ġto Ġbe Ġover rid en Ġby ĊĠĠĠĠ Ġ* Ġlegacy - style Ġ" stats - transport s " Ġconfig . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġpresence Interval : ĠDuration Ġ= ĠStats Collector . config . transport Configs . stream () ĊĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġtc Ġ-> Ġtc Ġis ĠStats Transport Config . M uc Stats Transport Config Ġ} ĊĠĠĠĠĠĠĠ Ġ. map ( Stats Transport Config :: interval ) ĊĠĠĠĠĠĠĠ Ġ. findFirst () ĊĠĠĠĠĠĠĠ Ġ. orElse ( presence Interval Property ) Ċ } Ċ Ċ /** Ċ Ġ* ĠWe Ġwant Ġthe Ġbridge Ġto Ġdefault Ġto Ġusing Ġ" sync " Ġas Ġthe ĠIQ Ġhandler Ġmode Ġ( unless Ġthe Ġconfig Ġactually Ġoverrides Ġit ). Ċ Ġ*/ Ċ private Ġfun ĠM uc Client Configuration . apply Default Iq Handler Mode () Ġ{ ĊĠĠĠ Ġif Ġ( this . iq Handler Mode Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . iq Handler Mode Ġ= Ġ" sync " ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠMutable Map . Mutable Entry < String , ĠConfig Value >. to M uc Client Configuration (): ĠM uc Client Configuration Ġ{ ĊĠĠĠ Ġval Ġconfig Ġ= ĠM uc Client Configuration ( this . key ) ĊĠĠĠ Ġ( value Ġas ? ĠConfig Object )?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġit . forEach Ġ{ Ġ( prop Name , Ġprop Value ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . setProperty ( prop Name , Ġprop Value . un wrapped (). toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠException ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Invalid Ġm uc Ġclient Ġconfiguration . Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Expected Ġtype ĠConfig Object Ġbut Ġgot Ġ${ value . un wrapped () :: class . java }" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġconfig . also Ġ{ Ġit . apply Default Iq Handler Mode () Ġ} Ċ } Ċ