package Ġai . plat on . pulsar . ql . h 2 . ud fs Ċ Ċ import Ġai . plat on . pulsar . Pul sar Env Ċ import Ġai . plat on . pulsar . common . Net Util . test Network Ċ import Ġai . plat on . pulsar . common . Regex Extractor Ċ import Ġai . plat on . pulsar . common . S Parser Ċ import Ġai . plat on . pulsar . common . URL Util Ċ import Ġai . plat on . pulsar . common . config . Capability Types .* Ċ import Ġai . plat on . pulsar . common . proxy . Proxy Entry Ċ import Ġai . plat on . pulsar . common . proxy . Proxy Pool Ċ import Ġai . plat on . pulsar . persist . metadata . Browser Type Ċ import Ġai . plat on . pulsar . persist . metadata . Fetch Mode Ċ import Ġai . plat on . pulsar . ql . Query Session Ċ import Ġai . plat on . pulsar . ql . SQL Context Ċ import Ġai . plat on . pulsar . ql . annotation . U DF Group Ċ import Ġai . plat on . pulsar . ql . annotation . UD Function Ċ import Ġai . plat on . pulsar . ql . h 2 . H 2 SessionFactory Ċ import Ġorg . apache . commons . lang 3 . StringUtils Ċ import Ġorg . h 2 . engine . Session Ċ import Ġorg . h 2 . ext . pulsar . annotation . H 2 Context Ċ import Ġorg . h 2 . tools . Simple ResultSet Ċ import Ġorg . h 2 . value . Value Ċ import Ġorg . h 2 . value . Value Array Ċ import Ġorg . h 2 . value . Value String Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . io . File Ċ import Ġjava . lang . Long . MAX _ VALUE Ċ import Ġjava . time . Duration Ċ import Ġjava . util .* Ċ Ċ @ U DF Group Ċ object ĠCommon Functions Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLoggerFactory . getLogger ( Common Functions :: class . java ) ĊĊĠĠĠ Ġprivate Ġval Ġsql Context Ġ= ĠSQL Context . get OrCreate () ĊĠĠĠ Ġprivate Ġval Ġproxy Pool Ġ= ĠP ul sar Env . proxy Pool ĊĠĠĠ Ġprivate Ġval Ġun modified Config Ġ= Ġsql Context . un modified Config ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Get Ġthe Ġproxy Ġpool Ġstatus ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget Proxy Pool Status (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġproxy Pool . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġconfig Ġto Ġthe Ġgiven Ġvalue ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠTODO : Ġdo Ġwe Ġneed ĠFetch Mode Ġany Ġmore ? ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġh 2 session ĠH 2 Ġsession ĊĠĠĠĠ Ġ* Ġ@ param Ġmode ĠThe Ġproperty Ġvalue Ġto Ġset ĊĠĠĠĠ Ġ* Ġ@ param Ġttl ĠThe Ġproperty Ġvalue Ġtime Ġto Ġlive Ġin Ġsession ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġold Ġvalue Ġor Ġnull Ġon Ġfailure ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ UD Function ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġset Fetch Mode (@ H 2 Context Ġh 2 session : ĠSession , Ġmode _: ĠString , Ġttl : ĠInt ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmode Ġ= Ġmode _ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmode Ġ= ĠFetch Mode . valueOf ( mode . toUpperCase ()). toString () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . warn (" Unknown ĠFetch Mode Ġ$ mode ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlog . debug (" Set Ġfetch Ġmode Ġto Ġ$ mode ") ĊĠĠĠĠĠĠĠ Ġreturn Ġget AndSet Conf ( h 2 session , ĠFETCH _ MODE , Ġmode , Ġttl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Unset Ġthe Ġconfig Ġproperty Ġof Ġthe Ġcalling Ġsession , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" so Ġit Ġfallback Ġto Ġthe Ġprocess 's Ġun modified Ġconfig ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġunset Fetch Mode (@ H 2 Context Ġh 2 session : ĠSession ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġget Session ( h 2 session ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsession . config . get And Unset ( FETCH _ MODE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġconfig Ġto Ġthe Ġgiven Ġvalue ĊĠĠĠĠ Ġ* Ġ@ param Ġh 2 session ĠH 2 Ġsession ĊĠĠĠĠ Ġ* Ġ@ param Ġbrowser ĠThe Ġbrowser Ġto Ġuse ĊĠĠĠĠ Ġ* Ġ@ param Ġttl ĠThe Ġproperty Ġvalue Ġtime Ġto Ġlive Ġin Ġsession ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġold Ġvalue Ġor Ġnull Ġon Ġfailure ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ UD Function ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġset Browser (@ H 2 Context Ġh 2 session : ĠSession , Ġbrowser : ĠString , Ġttl : ĠInt ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbrowser Type Ġ= ĠBrowser Type . fromString ( browser ) ĊĠĠĠĠĠĠĠ Ġif Ġ( browser Type Ġ== ĠBrowser Type . NATIVE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunset Fetch Mode ( h 2 session ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Fetch Mode ( h 2 session , ĠFetch Mode . SE LEN IUM . name , Ġttl ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlog . debug (" Set Ġbrowser Ġto Ġ$ browser ") ĊĠĠĠĠĠĠĠ Ġreturn Ġget AndSet Conf ( h 2 session , ĠS EL EN IUM _ BROWSER , Ġbrowser Type . name , Ġttl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Unset Ġthe Ġconfig Ġproperty Ġof Ġthe Ġcalling Ġsession , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" so Ġit Ġfallback Ġto Ġthe Ġprocess 's Ġun modified Ġconfig ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġunset Browser (@ H 2 Context Ġh 2 session : ĠSession ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġget Session ( h 2 session ) ĊĠĠĠĠĠĠĠ Ġunset Fetch Mode ( h 2 session ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsession . config . get And Unset ( SE LEN IUM _ BROWSER ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAlso Ġretrieve Ġfa ded Ġlinks Ġwhenever Ġget Ġout Ġlinks Ġof Ġa Ġpage ĊĠĠĠĠ Ġ* Ġ@ param Ġttl ĠThe Ġproperty Ġvalue Ġtime Ġto Ġlive Ġin Ġsession ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ UD Function ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġenable F aded Links (@ H 2 Context Ġh 2 session : ĠSession , Ġttl : ĠInt ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget AndSet Conf ( h 2 session , ĠPAR SE _ RE TR IE VE _ FA DED _ LIN KS , Ġtrue . toString (), Ġttl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġdisable F aded Links (@ H 2 Context Ġh 2 session : ĠSession , Ġttl : ĠInt ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget AndSet Conf ( h 2 session , ĠPAR SE _ RE TR IE VE _ FA DED _ LIN KS , Ġfalse . toString (), Ġttl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġset E ager Fetch Limit (@ H 2 Context Ġh 2 session : ĠSession , Ġparallel : ĠBoolean , Ġttl : ĠInt ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget AndSet Conf ( h 2 session , ĠFETCH _ E AGER _ FETCH _ LIMIT , Ġparallel . toString (), Ġttl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Unset Ġthe Ġconfig Ġproperty Ġof Ġthe Ġcalling Ġsession , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" so Ġit Ġfallback Ġto Ġthe Ġprocess 's Ġun modified Ġconfig ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġunset E ager Fetch Limit (@ H 2 Context Ġh 2 session : ĠSession ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġget Session ( h 2 session ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsession . config . get And Unset ( FETCH _ E AGER _ FETCH _ LIMIT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġpage Ġexpires , Ġthis Ġconfig Ġaffects Ġjust Ġin Ġh 2 session Ġscope ĊĠĠĠĠ Ġ* ĠSQL Ġexamples : ĊĠĠĠĠ Ġ* Ġ` CALL Ġset Page Expires (' 1 d ')` ĊĠĠĠĠ Ġ* Ġ` CALL Ġset Page Expires (' PT 2 4 H ')` ĊĠĠĠĠ Ġ* Ġ` CALL Ġset Page Expires (' 1 s ')` ĊĠĠĠĠ Ġ* Ġ` CALL Ġset Page Expires (' 1 ')` ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġh 2 session Ġ ĠThe ĠH 2 Ġsession , Ġauto Ġinjected Ġby Ġh 2 Ġruntime ĊĠĠĠĠ Ġ* Ġ@ param Ġduration ĠThe Ġduration Ġstring . ĊĠĠĠĠ Ġ* ĠSupported Ġformats : Ġ 1 . Ġnumber Ġin Ġseconds , Ġ 2 . ĠISO - 8 6 0 1 Ġstandard Ġand Ġ 3 . Ġhadoop Ġtime Ġduration Ġformat ĊĠĠĠĠ Ġ* ĠISO - 8 6 0 1 Ġstandard Ġ: ĠP n DT n Hn Mn . n S ĊĠĠĠĠ Ġ* ĠHadoop Ġtime Ġduration Ġformat Ġ: ĠValid Ġunits Ġare Ġ: Ġns , Ġus , Ġms , Ġs , Ġm , Ġh , Ġd . ĊĠĠĠĠ Ġ* Ġ@ param Ġttl ĠThe Ġproperty Ġvalue Ġtime Ġto Ġlive Ġin Ġsession ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġold Ġpage Ġexpires Ġin Ġseconds , Ġor Ġnull Ġif Ġfailed ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Set Ġthe Ġpage Ġexpire Ġtime Ġwith Ġtime - to - life Ġof Ġthe Ġcalling Ġsession ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġset Page Expires (@ H 2 Context Ġh 2 session : ĠSession , Ġduration : ĠString , Ġttl : ĠInt Ġ= Ġ 1 ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġget Duration ( duration ) ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġd ?. toString () ĊĠĠĠĠĠĠĠ Ġreturn Ġget AndSet Conf ( h 2 session , ĠSTORAGE _ DAT UM _ EXPI RES , Ġvalue , Ġttl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Unset Ġthe Ġconfig Ġproperty Ġof Ġthe Ġcalling Ġsession , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" so Ġit Ġfallback Ġto Ġthe Ġprocess 's Ġun modified Ġconfig ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġunset Page Expires (@ H 2 Context Ġh 2 session : ĠSession ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġget Session ( h 2 session ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsession . config . get And Unset ( STORAGE _ DAT UM _ EXPI RES ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġconfig Ġto Ġthe Ġgiven Ġvalue ĊĠĠĠĠ Ġ* Ġ@ param Ġh 2 session ĠH 2 Ġsession ĊĠĠĠĠ Ġ* Ġ@ param Ġduration ĠThe Ġproperty Ġvalue Ġto Ġset ĊĠĠĠĠ Ġ* Ġ@ param Ġttl ĠThe Ġproperty Ġvalue Ġtime Ġto Ġlive Ġin Ġsession ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġold Ġvalue Ġor Ġnull Ġon Ġfailure ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Set Ġthe Ġpage Ġload Ġtimeout Ġwith Ġtime - to - life Ġof Ġthe Ġcalling Ġsession ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġset Page Load Timeout (@ H 2 Context Ġh 2 session : ĠSession , Ġduration : ĠString , Ġttl : ĠInt Ġ= Ġ 1 ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġget Duration ( duration ) ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġd ?. toString () ĊĠĠĠĠĠĠĠ Ġreturn Ġget AndSet Conf ( h 2 session , ĠFETCH _ PAGE _ LOAD _ TIMEOUT , Ġvalue , Ġttl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Unset Ġthe Ġconfig Ġproperty Ġof Ġthe Ġcalling Ġsession , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" so Ġit Ġfallback Ġto Ġthe Ġprocess 's Ġun modified Ġconfig ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġunset Page Load Timeout (@ H 2 Context Ġh 2 session : ĠSession ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġget Session ( h 2 session ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsession . config . get And Unset ( FETCH _ PAGE _ LOAD _ TIMEOUT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġconfig Ġto Ġthe Ġgiven Ġvalue ĊĠĠĠĠ Ġ* Ġ@ param Ġh 2 session ĠH 2 Ġsession ĊĠĠĠĠ Ġ* Ġ@ param Ġduration ĠThe Ġproperty Ġvalue Ġto Ġset ĊĠĠĠĠ Ġ* Ġ@ param Ġttl ĠThe Ġproperty Ġvalue Ġtime Ġto Ġlive Ġin Ġsession ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġold Ġvalue Ġor Ġnull Ġon Ġfailure ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Set Ġthe Ġscript Ġtimeout Ġwith Ġtime - to - life Ġof Ġthe Ġcalling Ġsession ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġset Script Timeout (@ H 2 Context Ġh 2 session : ĠSession , Ġduration : ĠString , Ġttl : ĠInt Ġ= Ġ 1 ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġget Duration ( duration ) ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġd ?. toString () ĊĠĠĠĠĠĠĠ Ġreturn Ġget AndSet Conf ( h 2 session , ĠFETCH _ SCRIPT _ TIMEOUT , Ġvalue , Ġttl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Unset Ġthe Ġconfig Ġproperty Ġof Ġthe Ġcalling Ġsession , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" so Ġit Ġfallback Ġto Ġthe Ġprocess 's Ġun modified Ġconfig ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġunset Script Timeout (@ H 2 Context Ġh 2 session : ĠSession ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġget Session ( h 2 session ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsession . config . get And Unset ( FETCH _ SCRIPT _ TIMEOUT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġconfig Ġto Ġthe Ġgiven Ġvalue ĊĠĠĠĠ Ġ* Ġ@ param Ġh 2 session ĠH 2 Ġsession ĊĠĠĠĠ Ġ* Ġ@ param Ġcount ĠThe Ġproperty Ġvalue Ġto Ġset ĊĠĠĠĠ Ġ* Ġ@ param Ġttl ĠThe Ġproperty Ġvalue Ġtime Ġto Ġlive Ġin Ġsession ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġold Ġvalue Ġor Ġnull Ġon Ġfailure ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Set Ġthe Ġscroll Ġdown Ġcount Ġwith Ġtime - to - life Ġof Ġthe Ġcalling Ġsession ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġset Scroll Down Count (@ H 2 Context Ġh 2 session : ĠSession , Ġcount : ĠInt , Ġttl : ĠInt Ġ= Ġ 1 ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget AndSet Conf ( h 2 session , ĠFETCH _ SCROLL _ DOWN _ COUNT , Ġcount . toString (), Ġttl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Unset Ġthe Ġconfig Ġproperty Ġof Ġthe Ġcalling Ġsession , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" so Ġit Ġfallback Ġto Ġthe Ġprocess 's Ġinitial Ġconfig ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġunset Scroll Down Count (@ H 2 Context Ġh 2 session : ĠSession ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġget Session ( h 2 session ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsession . config . get And Unset ( FETCH _ SCROLL _ DOWN _ COUNT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġconfig Ġto Ġthe Ġgiven Ġvalue ĊĠĠĠĠ Ġ* Ġ@ param Ġh 2 session ĠH 2 Ġsession ĊĠĠĠĠ Ġ* Ġ@ param Ġduration ĠThe Ġproperty Ġvalue Ġto Ġset ĊĠĠĠĠ Ġ* Ġ@ param Ġttl ĠThe Ġproperty Ġvalue Ġtime Ġto Ġlive Ġin Ġsession ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġold Ġvalue Ġor Ġnull Ġon Ġfailure ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Set Ġthe Ġscroll Ġinterval Ġwith Ġtime - to - life Ġof Ġthe Ġcalling Ġsession ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġset Scroll Interval (@ H 2 Context Ġh 2 session : ĠSession , Ġduration : ĠString , Ġttl : ĠInt ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġget Duration ( duration ) ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġd ?. toString () ĊĠĠĠĠĠĠĠ Ġreturn Ġget AndSet Conf ( h 2 session , ĠFETCH _ SCROLL _ DOWN _ WAIT , Ġvalue , Ġttl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Unset Ġthe Ġconfig Ġproperty Ġof Ġthe Ġcalling Ġsession , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" so Ġit Ġfallback Ġto Ġthe Ġprocess 's Ġinitial Ġconfig ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġunset Scroll Down Wait (@ H 2 Context Ġh 2 session : ĠSession ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġget Session ( h 2 session ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsession . config . get And Unset ( FETCH _ SCROLL _ DOWN _ WAIT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġh 2 session Ġscope Ġconfiguration . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSQL Ġexamples : ĊĠĠĠĠ Ġ* Ġ` CALL Ġset Conf (' fetch . page . load . timeout ', Ġ' 1 d ')` ĊĠĠĠĠ Ġ* Ġ` CALL Ġset Conf (' fetch . fetch . mode ', Ġ' NATIVE ')` ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġh 2 session ĠThe ĠH 2 Ġsession , Ġauto Ġinjected Ġby Ġh 2 Ġruntime ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġold Ġvalue Ġof Ġthe Ġkey ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Set Ġthe Ġconfig Ġproperty Ġassociated Ġby Ġname Ġwith Ġtime - to - life Ġof Ġthe Ġcalling Ġsession ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġset Config (@ H 2 Context Ġh 2 session : ĠSession , Ġname : ĠString , Ġvalue : ĠString , Ġttl : ĠInt Ġ= ĠInteger . MAX _ VALUE Ġ/ Ġ 2 ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġget Session ( h 2 session ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsession . config . get AndSet ( name , Ġvalue , Ġttl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Set Ġthe Ġconfig Ġproperty Ġassociated Ġby Ġname Ġwith Ġtime - to - life Ġof Ġthe Ġcalling Ġsession ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġset Conf (@ H 2 Context Ġh 2 session : ĠSession , Ġname : ĠString , Ġvalue : ĠString , Ġttl : ĠInt ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġset Config ( h 2 session , Ġname , Ġvalue , Ġttl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Set Ġthe Ġconfig Ġproperty Ġassociated Ġby Ġname Ġof Ġthe Ġcalling Ġsession ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġset Conf (@ H 2 Context Ġh 2 session : ĠSession , Ġname : ĠString , Ġvalue : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġset Config ( h 2 session , Ġname , Ġvalue , ĠInteger . MAX _ VALUE Ġ/ Ġ 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Unset Ġthe Ġconfig Ġproperty Ġof Ġthe Ġcalling Ġsession , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" so Ġit Ġfallback Ġto Ġthe Ġprocess 's Ġinitial Ġconfig ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġunset Conf (@ H 2 Context Ġh 2 session : ĠSession , Ġname : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġget Session ( h 2 session ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsession . config . get And Unset ( name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Unset Ġthe Ġconfig Ġproperty Ġof Ġthe Ġcalling Ġsession , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" so Ġit Ġfallback Ġto Ġthe Ġprocess 's Ġinitial Ġconfig ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġunset Config (@ H 2 Context Ġh 2 session : ĠSession , Ġname : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġget Session ( h 2 session ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsession . config . get And Unset ( name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Get Ġthe Ġvalue Ġassociated Ġby Ġthe Ġgiven Ġkey Ġof Ġthe Ġcalling Ġsession ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget Conf (@ H 2 Context Ġh 2 session : ĠSession , Ġname : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġget Session ( h 2 session ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsession . config . get ( name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Get Ġthe Ġvalue Ġassociated Ġby Ġthe Ġgiven Ġkey Ġof Ġthe Ġcalling Ġsession ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun ĠgetConfig (@ H 2 Context Ġh 2 session : ĠSession , Ġname : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Conf ( h 2 session , Ġname ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Get Ġthe Ġinitial Ġconfiguration Ġproperties Ġof Ġthe Ġprocess ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġconfig (): ĠSimple ResultSet Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrs Ġ= ĠSimple ResultSet () ĊĊĠĠĠĠĠĠĠ Ġrs . addColumn (" NAME ") ĊĠĠĠĠĠĠĠ Ġrs . addColumn (" VALUE ") ĊĊĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġun modified Config . un box ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrs . add Row ( key , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġrs ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Get Ġthe Ġconfiguration Ġproperties Ġof Ġthe Ġcalling Ġsession ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġsession Config (@ H 2 Context Ġh 2 session : ĠSession ): ĠSimple ResultSet Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrs Ġ= ĠSimple ResultSet () ĊĠĠĠĠĠĠĠ Ġrs . addColumn (" NAME ") ĊĠĠĠĠĠĠĠ Ġrs . addColumn (" VALUE ") ĊĊĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġget Session ( h 2 session ) ĊĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġsession . config . un box ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrs . add Row ( key , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġrs ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Get Ġthe Ġsystem Ġinfo ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġsys Info (@ H 2 Context Ġh 2 session : ĠSession ): ĠSimple ResultSet Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrs Ġ= ĠSimple ResultSet () ĊĠĠĠĠĠĠĠ Ġrs . addColumn (" NAME ") ĊĠĠĠĠĠĠĠ Ġrs . addColumn (" VALUE ") ĊĊĠĠĠĠĠĠĠ Ġ/* ĠTotal Ġnumber Ġof Ġprocessors Ġor Ġcores Ġavailable Ġto Ġthe ĠJVM Ġ*/ ĊĠĠĠĠĠĠĠ Ġrs . add Row (" Available Ġprocessors Ġ( cores )", ĠRuntime . get Runtime (). available Processors ()) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠTotal Ġamount Ġof Ġfree Ġmemory Ġavailable Ġto Ġthe ĠJVM Ġ*/ ĊĠĠĠĠĠĠĠ Ġrs . add Row (" Free Ġmemory Ġ( M bytes )", ĠRuntime . get Runtime (). free Memory () Ġ/ Ġ 1 0 2 4 Ġ/ Ġ 1 0 2 4 ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠThis Ġwill Ġreturn ĠLong . MAX _ VALUE Ġif Ġthere Ġis Ġno Ġpreset Ġlimit Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġmax Memory Ġ= ĠRuntime . get Runtime (). max Memory () ĊĠĠĠĠĠĠĠ Ġ/* ĠMaximum Ġamount Ġof Ġmemory Ġthe ĠJVM Ġwill Ġattempt Ġto Ġuse Ġ*/ ĊĠĠĠĠĠĠĠ Ġrs . add Row (" Maximum Ġmemory Ġ( M bytes )", Ġif Ġ( max Memory Ġ== ĠMAX _ VALUE ) Ġ" no Ġlimit " Ġelse Ġjava . lang . Long . toString ( max Memory Ġ/ Ġ 1 0 2 4 Ġ/ Ġ 1 0 2 4 )) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠTotal Ġmemory Ġcurrently Ġavailable Ġto Ġthe ĠJVM Ġ*/ ĊĠĠĠĠĠĠĠ Ġrs . add Row (" Total Ġmemory Ġavailable Ġto ĠJVM Ġ( M bytes )", ĠRuntime . get Runtime (). total Memory () Ġ/ Ġ 1 0 2 4 Ġ/ Ġ 1 0 2 4 ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠGet Ġa Ġlist Ġof Ġall Ġfilesystem Ġroots Ġon Ġthis Ġsystem Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġroots Ġ= ĠFile . list Roots () ĊĠĠĠĠĠĠĠ Ġfor Ġ( root Ġin Ġroots ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠFor Ġeach Ġfilesystem Ġroot , Ġprint Ġsome Ġinfo Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrs . add Row (" File Ġsystem Ġroot ", Ġroot . absolute Path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrs . add Row (" Total Ġspace Ġ( M bytes )", Ġroot . total Space Ġ/ Ġ 1 0 2 4 Ġ/ Ġ 1 0 2 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrs . add Row (" Free Ġspace Ġ( M bytes )", Ġroot . free Space Ġ/ Ġ 1 0 2 4 Ġ/ Ġ 1 0 2 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrs . add Row (" Us able Ġspace Ġ( M bytes )", Ġroot . usable Space Ġ/ Ġ 1 0 2 4 Ġ/ Ġ 1 0 2 4 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġrs ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Add Ġa Ġproxy Ġinto Ġthe Ġproxy Ġpool ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġadd Proxy ( ip Port : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproxy Entry Ġ= ĠProxy Entry . parse ( ip Port ) ĊĠĠĠĠĠĠĠ Ġif Ġ( proxy Entry Ġ!= Ġnull Ġ&& Ġproxy Entry . test Network ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġproxy Pool . offer ( proxy Entry ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Add Ġa Ġproxy Ġinto Ġthe Ġproxy Ġpool ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġadd Proxy ( ip : ĠString , Ġport : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( test Network ( ip , Ġport )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġproxy Pool . offer ( Proxy Entry ( ip , Ġport )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Add Ġa Ġlist Ġof Ġproxies Ġinto Ġthe Ġproxy Ġpool , Ġi . e . Ġcall Ġadd _ proxies ( array ( ip 1 , Ġip 2 , Ġip 3 )) ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġadd Prox ies ( ip Ports : ĠValue Array ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( value Ġin Ġip Ports . list ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( add Proxy ( value . string )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcount ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Add Ġa Ġproxy Ġinto Ġthe Ġproxy Ġpool Ġwithout Ġchecking Ġit 's Ġavailability ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġadd Prox ies Unchecked ( ip Ports : ĠValue Array ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( value Ġin Ġip Ports . list ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproxy Entry Ġ= ĠProxy Entry . parse ( value . string ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( proxy Entry Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproxy Pool . offer ( proxy Entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcount ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Recover Ġproxies Ġin Ġproxy Ġpool ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġrecover Proxy Pool ( n : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġproxy Pool . recover ( n ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Test Ġif Ġthe Ġgiven Ġstring Ġis Ġa Ġnumber ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġis Numeric ( str : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠStringUtils . is Numeric ( str ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Get Ġthe Ġdomain Ġof Ġa Ġurl ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget Domain ( url : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠURL Util . get DomainName ( url , Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Extract Ġthe Ġfirst Ġgroup Ġof Ġthe Ġresult Ġof Ġjava . util . regex . matcher () ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġre 1 ( text : ĠString , Ġregex : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRegex Extractor (). re 1 ( text , Ġregex ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Extract Ġthe Ġnth Ġgroup Ġof Ġthe Ġresult Ġof Ġjava . util . regex . matcher () ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġre 1 ( text : ĠString , Ġregex : ĠString , Ġgroup : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRegex Extractor (). re 1 ( text , Ġregex , Ġgroup ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Extract Ġtwo Ġgroups Ġof Ġthe Ġresult Ġof Ġjava . util . regex . matcher () ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġre 2 ( text : ĠString , Ġregex : ĠString ): ĠValue Array Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠRegex Extractor (). re 2 ( text , Ġregex ) ĊĠĠĠĠĠĠĠ Ġval Ġarray Ġ= ĠarrayOf ( Value String . get ( result . key ), ĠValue String . get ( result . value )) ĊĠĠĠĠĠĠĠ Ġreturn ĠValue Array . get ( array ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ( description Ġ= Ġ" Extract Ġtwo Ġgroups ( key Ġand Ġvalue ) Ġof Ġthe Ġresult Ġof Ġjava . util . regex . matcher () ") ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġre 2 ( text : ĠString , Ġregex : ĠString , Ġkey Group : ĠInt , Ġvalue Group : ĠInt ): ĠValue Array Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠRegex Extractor (). re 2 ( text , Ġregex , Ġkey Group , Ġvalue Group ) ĊĠĠĠĠĠĠĠ Ġval Ġarray Ġ= ĠarrayOf ( Value String . get ( result . key ), ĠValue String . get ( result . value )) ĊĠĠĠĠĠĠĠ Ġreturn ĠValue Array . get ( array ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ UD Function ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġarray ( var arg Ġvalues : ĠValue ): ĠValue Array Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠValue Array . get ( values ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġconfig Ġto Ġthe Ġgiven Ġvalue ĊĠĠĠĠ Ġ* Ġ@ param Ġh 2 session ĠH 2 Ġsession ĊĠĠĠĠ Ġ* Ġ@ param Ġname ĠThe Ġproperty Ġname Ġto Ġset ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĠThe Ġproperty Ġvalue Ġto Ġset ĊĠĠĠĠ Ġ* ĠIf Ġvalue Ġis Ġnull , Ġdo Ġnot Ġset Ġand Ġreturn Ġnull ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġold Ġvalue Ġor Ġnull Ġon Ġfailure ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget AndSet Conf (@ H 2 Context Ġh 2 session : ĠSession , Ġname : ĠString , Ġvalue : ĠString ?, Ġttl : ĠInt ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ ĠObjects . requireNonNull ( name ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġget Session ( h 2 session ) ĊĠĠĠĠĠĠĠ Ġval Ġold Ġ= Ġsession . config . get ( name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession . config . set ( name , Ġvalue , Ġttl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Session ( h 2 session : ĠSession ): ĠQuery Session Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠH 2 SessionFactory . getSession ( h 2 session . serial Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Duration ( duration : ĠString ): ĠDuration ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġd Ġ= Ġduration ĊĠĠĠĠĠĠĠ Ġ// Ġdefault Ġunit Ġis Ġsecond ĊĠĠĠĠĠĠĠ Ġif Ġ( StringUtils . is Numeric ( d )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd Ġ+= Ġ" s " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠS Parser . wrap ( d ). duration ĊĠĠĠ Ġ} Ċ } Ċ