/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠZ UP ĠIT ĠSER V IC OS ĠEM ĠT EC NO LOG IA ĠE ĠIN OV AC AO ĠSA Ċ Ġ* Ċ Ġ* Ġ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 Ġbr . com . z up . be agle . mic ronaut . configuration Ċ Ċ import Ġbr . com . z up . be agle . cache . Be agle Cache Handler Ċ import Ġbr . com . z up . be agle . constants . BE AG LE _ CACHE _ EXCL UDE S Ċ import Ġbr . com . z up . be agle . constants . BE AG LE _ CACHE _ INCLUDES Ċ import Ġbr . com . z up . be agle . constants . BE AG LE _ CACHE _ TTL Ċ import Ġbr . com . z up . be agle . mic ronaut . contains Beans Ċ import Ġbr . com . z up . be agle . mic ronaut . getProperty Ċ import Ġio . mic ronaut . context . ApplicationContext Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . time . Duration Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertTrue Ċ Ċ internal Ġclass ĠBe agle Cache Configuration Test Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠBL ANK _ LIST Ġ= ĠlistOf ("") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠSO ME _ LIST Ġ= ĠlistOf (" test 1 ", Ġ" test 2 ") ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠEND POINT Ġ= Ġ"/ test % d " Ġ Ġ// ĠTODO Ġsupport ĠKotlin ĠRegex Ġsyntax Ġwith Ġescap es , Ġsimilar Ġto ĠSpring ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Test Ġbe agle Cache Configuration Ġsets Ġup Ġbe agle Cache Handler Ġin Ġcontext `() Ġ{ ĊĠĠĠĠĠĠĠ ĠApplication Context . run (). also Ġ{ Ġthis . validate Context ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Test Ġbe agle Cache Configuration Ġsets Ġup Ġbe agle Cache Handler Ġin Ġcontext Ġwith Ġincludes `() Ġ= ĊĠĠĠĠĠĠĠ Ġthis . test With In clusion And Ex clusion Properties ( SO ME _ LIST , ĠBL ANK _ LIST ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Test Ġbe agle Cache Configuration Ġsets Ġup Ġbe agle Cache Handler Ġin Ġcontext Ġwith Ġexclude s `() Ġ= ĊĠĠĠĠĠĠĠ Ġthis . test With In clusion And Ex clusion Properties ( BLANK _ LIST , ĠSO ME _ LIST ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Test Ġbe agle Cache Configuration Ġsets Ġup Ġbe agle Cache Handler Ġin Ġcontext Ġwith Ġincludes Ġand Ġexclude s `() Ġ= ĊĠĠĠĠĠĠĠ Ġthis . test With In clusion And Ex clusion Properties ( SO ME _ LIST , ĠSO ME _ LIST ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Test Ġbe agle Cache Configuration Ġsets Ġup Ġbe agle Cache Handler Ġin Ġcontext Ġwith ĠTTL Ġmap `() Ġ{ ĊĠĠĠĠĠĠĠ ĠApplication Context . build ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ BE AG LE _ CACHE _ TTL .${ ENDPOINT . format ( 1 )}" Ġto Ġ" 1 5 ns ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ BE AG LE _ CACHE _ TTL .${ ENDPOINT . format ( 2 )}" Ġto Ġ" 1 5 ms ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ BE AG LE _ CACHE _ TTL .${ ENDPOINT . format ( 3 )}" Ġto Ġ" 1 5 s " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). start (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . validate Context ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġttl Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEND POINT . format ( 1 ) Ġto ĠDuration . of Nan os ( 1 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEND POINT . format ( 2 ) Ġto ĠDuration . of Millis ( 1 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEND POINT . format ( 3 ) Ġto ĠDuration . of Seconds ( 1 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Test Ġbe agle Cache Configuration Ġsets Ġup Ġbe agle Cache Handler Ġin Ġcontext Ġwith ĠTTL Ġmap Ġover writing Ġkeys Ġfor Ġdifferent Ġprofiles `() Ġ{ ĊĠĠĠĠĠĠĠ ĠApplication Context . build ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ BE AG LE _ CACHE _ TTL .${ ENDPOINT . format ( 1 )}" Ġto Ġ" 1 0 ns ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ BE AG LE _ CACHE _ TTL .${ ENDPOINT . format ( 3 )}" Ġto Ġ" 1 5 s " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). properties ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ BE AG LE _ CACHE _ TTL .${ ENDPOINT . format ( 1 )}" Ġto Ġ" 1 5 ns ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ BE AG LE _ CACHE _ TTL .${ ENDPOINT . format ( 2 )}" Ġto Ġ" 1 5 ms " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). start (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . validate Context ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġttl Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEND POINT . format ( 1 ) Ġto ĠDuration . of Nan os ( 1 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEND POINT . format ( 2 ) Ġto ĠDuration . of Millis ( 1 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEND POINT . format ( 3 ) Ġto ĠDuration . of Seconds ( 1 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Test Ġbe agle Cache Configuration Ġsets Ġup Ġbe agle Cache Handler Ġin Ġcontext Ġwith ĠTTL Ġmap Ġwhen Ġduration Ġhas Ġno Ġtime Ġunit `() Ġ{ ĊĠĠĠĠĠĠĠ ĠApplication Context . build ( map Of ("$ BE AG LE _ CACHE _ TTL .` ${ ENDPOINT . format ( 1 )} `" Ġto Ġ" 1 5 ")). start (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . validate Context ( context Ġ= Ġit , Ġttl Ġ= Ġempty Map ()) ĠĠĠ Ġ// ĠTODO Ġsupport Ġreading Ġduration Ġwithout ĠTimeUnit , Ġdefine Ġa ĠBe agle Ġstandard ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtest With In clusion And Ex clusion Properties ( includes : ĠList < String >, Ġexclude s : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproperties Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBE AG LE _ CACHE _ INCLUDES Ġto Ġincludes . join ToString ("," ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBE AG LE _ CACHE _ EXCL UDE S Ġto Ġexclude s . join ToString (",") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠApplication Context . build ( properties ). start (). also Ġ{ Ġthis . validate Context ( it , Ġincludes , Ġexclude s ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate Context ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠApplication Context , ĊĠĠĠĠĠĠĠ Ġincludes : ĠList < String > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġexclude s : ĠList < String > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġttl : ĠMap < String , ĠDuration > Ġ= Ġempty Map () ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġcontext . contains Beans ( Be agle Cache Configuration :: class , ĠBe agle Cache Handler :: class ) Ġ} ĊĠĠĠĠĠĠĠ Ġcontext . getBean ( Be agle Cache Configuration :: class . java ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproperties Ġ= Ġit . getProperty (" properties ") Ġas ĠBe agle Mic ronaut Cache Properties ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( includes , Ġproperties . include ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( exclude s , Ġproperties . exclude ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ttl , Ġproperties . ttl ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }