package Ġorg . cq fn . di kt at . common . config . rules Ċ Ċ import Ġcom . fasterxml . jackson . annotation . JsonIgnore Properties Ċ import Ġcom . fasterxml . jackson . module . kotlin . jackson ObjectMapper Ċ import Ġcom . fasterxml . jackson . module . kotlin . readValue Ċ import Ġorg . cq fn . di kt at . common . config . reader . Json Resource Config Reader Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . io . File Ċ import Ġjava . lang . IllegalArgumentException Ċ import Ġjava . net . URL Ċ Ċ interface ĠRule Ġ{ ĊĠĠĠ Ġfun Ġrule Name (): ĠString Ċ } Ċ Ċ @ JsonIgnore Properties ( ignore Unknown Ġ= Ġtrue ) Ċ data Ġclass ĠRules Config ( ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġenabled : ĠBoolean , ĊĠĠĠ Ġval Ġconfiguration : ĠMap < String , ĠString > Ċ ) Ċ Ċ open Ġclass ĠRule Configuration ( protected Ġval Ġconfig : ĠMap < String , ĠString >) Ċ object ĠEmpty Configuration : ĠRule Configuration ( map Of ()) Ċ Ċ /** Ċ Ġ* Ġclass Ġreturns Ġthe Ġlist Ġof Ġconfigurations Ġthat Ġwe Ġhave Ġread Ġfrom Ġa Ġjson : Ġrules - config . json Ċ Ġ*/ Ċ class ĠRules Config Reader Ġ: ĠJson Resource Config Reader < List < Rules Config >>() Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlog : ĠLogger Ġ= ĠLoggerFactory . getLogger ( Rules Config Reader :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġparse Resource ( file : ĠFile ): ĠList < Rules Config > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmapper Ġ= Ġj ack son ObjectMapper () ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( file . exists ()) Ġmapper . readValue ( file ) Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" Cannot Ġread Ġjson Ġconfiguration Ġof Ġrules Ġ- Ġfile Ġ${ file . absolute Path } Ġdoes Ġnot Ġexist ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġinstead Ġof Ġreading Ġthe Ġresource Ġas Ġit Ġis Ġdone Ġin Ġthe Ġinterface Ġwe Ġwill Ġread Ġa Ġfile Ġby Ġthe Ġabsolute Ġpath Ġhere ĊĠĠĠĠ Ġ* Ġif Ġthe Ġpath Ġis Ġprovided , Ġelse Ġwill Ġread Ġthe Ġhardcoded Ġfile Ġ' rules - config . json ' Ġfrom Ġthe Ġpackage ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget ConfigFile ( resource FileName : ĠString ): ĠURL ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFile ( resource FileName ). to URI (). to URL () ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ // Ġ================= = Ġutils Ġfor ĠList < Rules Config > Ġfrom Ġjson Ġconfig Ċ Ċ fun ĠList < Rules Config >. get Rule Config ( rule : ĠRule ): ĠRules Config ? Ġ{ ĊĠĠĠ Ġreturn Ġthis . find Ġ{ Ġit . name Ġ== Ġrule . rule Name () Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġchecking Ġif Ġin Ġjson Ġconfig Ġparticular Ġrule Ġis Ġenabled Ġor Ġdisabled Ċ Ġ* Ġ(! ) Ġthe Ġdefault Ġvalue Ġis Ġ" true " Ġ( in Ġcase Ġthere Ġis Ġno Ġconfig Ġspecified ) Ċ Ġ*/ Ċ fun ĠList < Rules Config >. is Rule Enabled ( rule : ĠRule ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġrule Matched Ġ= Ġget Rule Config ( rule ) ĊĠĠĠ Ġreturn Ġrule Matched ?. enabled Ġ?: Ġtrue Ċ } Ċ