package Ġk of iko Ċ Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġk of iko . parsers .* Ċ Ċ /** Ċ Ġ* ĠCustom ization Ġoptions Ġfor Ġthe Ġconfiguration Ġmanager . Ċ Ġ*/ Ċ class ĠK of iko Settings () Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew Ġinstance . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġproviders ĠList Ġof Ġconfiguration Ġsources . ĊĠĠĠĠ Ġ* ĠTypically , Ġat Ġleast Ġone Ġconfiguration Ġprovider Ġshall Ġbe Ġspecified . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( var arg Ġproviders : ĠK of iko Config Provider ) Ġ: Ġthis () Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig Providers . addAll ( providers ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProvides Ġalternatives Ġfor Ġsearch Ġof Ġconfig Ġsection Ġnames Ġand Ġconfig Ġoptions Ġnames Ġin Ġconfig Ġsources . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġname Lookup Ġ= ĠDefault Name Lookup Provider () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠList Ġof Ġconfiguration Ġsource Ġproviders . ĠThose Ġwill Ġbe Ġevaluated Ġin Ġlist Ġorder Ġuntil Ġfirst Ġmatch Ġis Ġfound . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġconfig Providers Ġ= Ġmutable ListOf < K of iko Config Provider >() ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDefines Ġthe Ġseparator Ġstring Ġbetween Ġitems Ġwhen Ġparsing Ġ[ List ], Ġ[ Map ], Ġ[ Set ] Ġdata Ġtypes . ĊĠĠĠĠ Ġ* ĠDefault Ġis Ġ", ". ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠFor Ġexample : Ġ` red , green , orange `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġlist Separator Ġ= Ġ"," ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDefines Ġthe Ġseparator Ġstring Ġbetween Ġkey Ġand Ġvalue Ġwhen Ġparsing Ġ[ Map ] Ġdata Ġtype . ĊĠĠĠĠ Ġ* ĠDefault Ġis Ġ":" . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠFor Ġexample : Ġ` logs : 1 0 0 , alerts : 2 0 0 `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġkey To Val Separator Ġ= Ġ":" ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFor Ġ[ List ] Ġtype , Ġwhether Ġto Ġappend Ġto Ġdefault Ġlist Ġvalue Ġor Ġreplace Ġentire Ġlist . ĊĠĠĠĠ Ġ* ĠDefault Ġis Ġfalse Ġ( replace ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġappend To Maps Ġ= Ġtrue ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFor Ġ[ Set ] Ġtype , Ġwhether Ġto Ġappend Ġto Ġdefault Ġset Ġvalue Ġor Ġreplace Ġentire Ġset . ĊĠĠĠĠ Ġ* ĠDefault Ġis Ġfalse Ġ( replace ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġappend To Sets Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFor Ġ[ Map ] Ġtype , Ġwhether Ġto Ġappend / overwrite Ġdefault Ġmap Ġkeys Ġvalue Ġor Ġreplace Ġentire Ġmap . ĊĠĠĠĠ Ġ* ĠDefault Ġis Ġtrue Ġ( append / overwrite ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġappend To Lists Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReg ard less Ġof Ġthe Ġ` appendTo *` Ġsetting , Ġwhen Ġoverride Ġstring Ġis Ġprefixed Ġby Ġthis Ġstring , ĊĠĠĠĠ Ġ* ĠK of iko Ġwill Ġclear Ġthe Ġcontainer Ġbefore Ġadding Ġnew Ġelements . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠDefault Ġprefix Ġis Ġ` ^ C | `. ĠFor Ġexample Ġ`" ^ C | item 1 , item 2 " `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġclear Container Prefix Ġ= Ġ"^ C |" ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReg ard less Ġof Ġthe Ġ` appendTo *` Ġsetting , Ġwhen Ġoverride Ġstring Ġis Ġprefixed Ġby Ġthis Ġstring , ĊĠĠĠĠ Ġ* ĠK of iko Ġwill Ġappend / overwrite Ġelements Ġin Ġthe Ġcontainer . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠDefault Ġprefix Ġis Ġ` ^ A | `. ĠFor Ġexample Ġ`" ^ A | key 1 : val 1 , key 2 : val 2 " `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġappend Container Prefix Ġ= Ġ"^ A |" ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAn Ġaction Ġto Ġperform Ġwhen Ġa Ġfield Ġvalue Ġis Ġchanged Ġfrom Ġdefault Ġvalue . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠDefault Ġaction Ġdoes Ġnothing . ĠIt Ġis Ġpossible Ġto Ġset Ġto Ġ[ Print Override Notifier ] Ġor Ġ[ Log Override Notifier ] ĊĠĠĠĠ Ġ* Ġin Ġorder Ġto Ġprint Ġmessage Ġto Ġstdout / log Ġrespectively . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġon Override : ĠOverride Notifier Ġ= ĠOverride Notifier Ġ{ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhen Ġparsing Ġ` Boolean ` Ġtype , Ġdefines Ġthe Ġstrings Ġthat Ġwill Ġbe Ġparsed Ġto Ġtrue . ĠCase Ġins ensitive . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġboolean True States Ġ= Ġmutable Set Of (" true ", Ġ" 1 ", Ġ" on ", Ġ" yes ", Ġ" t ", Ġ" y ") ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhen Ġparsing Ġ` Boolean ` Ġtype , Ġdefines Ġthe Ġstrings Ġthat Ġwill Ġbe Ġparsed Ġto Ġfalse . ĠCase Ġins ensitive . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġboolean False States Ġ= Ġmutable Set Of (" false ", Ġ" 0 ", Ġ" off ", Ġ" no ", Ġ" f ", Ġ" n ") ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠList Ġof Ġtest Ġparsers . ĠThose Ġwill Ġbe Ġinvoked Ġin Ġthe Ġlist Ġorder Ġwhen Ġtrying Ġto Ġparse Ġa Ġstring Ġinto Ġa Ġtyped Ġfield ĊĠĠĠĠ Ġ* Ġuntil Ġthe Ġfirst Ġreturns Ġa Ġnon - null Ġvalue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġtext Parsers Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠBoolean Parser ( this ), ĊĠĠĠĠĠĠĠ ĠLogLevel Parser (), ĊĠĠĠĠĠĠĠ ĠCon c ise List Parser ( this ), ĊĠĠĠĠĠĠĠ ĠCon c ise Map Parser ( this ), ĊĠĠĠĠĠĠĠ ĠCon c ise Set Parser ( this ), ĊĠĠĠĠĠĠĠ ĠJson Parser ( this ), ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhen Ġset Ġto Ġtrue , Ġallow Ġoverriding Ġof Ġfinal Ġnon - static ĠKotlin ĠProperties Ġ( val ), ĠKotlin Ġproperties Ġwithout Ġa Ġpublic Ġsetter ĊĠĠĠĠ Ġ* Ġand Ġfinal ĠJVM Ġfields . ĊĠĠĠĠ Ġ* Ġ** Important Ġnote **: ĠThis Ġsettings Ġstill Ġdoes Ġnot Ġallow Ġoverriding Ġval Ġproperties Ġin ĠKotlin Ġ` object ` ĊĠĠĠĠ Ġ* Ġand Ġstatic Ġfinal Ġjava Ġfields Ġdue Ġto ĠJVM Ġlimitation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠWhen Ġset Ġto Ġfalse , Ġconfiguration Ġwill Ġbe Ġapplicable Ġonly Ġto Ġnon - final ĠKotlin ĠProperties Ġ( var ) Ġwith Ġpublic ĊĠĠĠĠ Ġ* Ġgetter Ġand Ġsetter Ġand Ġto Ġpublic Ġnon - final ĠJVM Ġfields . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠConfiguration Ġis Ġnever Ġapplied Ġto ĠKotlin Ġproperties Ġwhere Ġboth Ġgetter Ġand Ġsetter Ġare Ġprivate / protected , ĊĠĠĠĠ Ġ* Ġand Ġto Ġprivate / protected ĠJVM Ġfields . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġconfigure Readonly Properties Ġ= Ġtrue ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ[ ObjectMapper ] Ġthat Ġwill Ġbe Ġused Ġby Ġ[ Json Parser ] Ġwhen Ġtrying Ġto Ġparse Ġstrings Ġto Ġtyped Ġfields . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar ĠobjectMapper Ġ= ĠObjectMapper () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġa Ġconfiguration Ġprovider . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd ( provider : ĠK of iko Config Provider ) Ġ= Ġapply Ġ{ Ġconfig Providers . add ( provider ) Ġ} Ċ } ĊĊĊ