/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠAutom ate ĠThe ĠPlan et ĠLtd . Ċ Ġ* ĠAuthor : ĠAnt on ĠAnge lov Ċ Ġ* Ġ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 Ġsolutions . bell at rix . core . configuration Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . Json Parser Ċ import Ġorg . apache . commons . io . IO Utils Ċ import Ġjava . io . IOException Ċ import Ġjava . nio . charset . StandardCharsets Ċ import Ġjava . util .* Ċ Ċ object ĠConfiguration Service Ġ{ ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Config Section > Ġget (): ĠT Config Section Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġenvironment : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġmapped Object : ĠT Config Section Ġ= ĠT Config Section :: class . java . getDeclared Constructor (). newInstance () Ġas ĠT Config Section ĊĠĠĠĠĠĠĠ Ġif Ġ( environment Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenvironment Override Ġ= ĠSystem . getProperty (" environment ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( environment Override Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= ĠConfiguration Service :: class . java . getResource AsStream ("/ application . properties ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp Ġ= ĠProperties () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp . load ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmapped Object ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenvironment Ġ= Ġp . getProperty (" environment ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenvironment Ġ= Ġenvironment Override ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠfileName Ġ= ĠString . format (" test Framework Settings .% s . json ", Ġenvironment ) ĊĠĠĠĠĠĠĠ Ġval Ġjson FileContent Ġ= ĠgetFile AsString ( fileName ) ĊĠĠĠĠĠĠĠ Ġval Ġsection Name Ġ= Ġget Section Name ( T Config Section :: class . java ) ĊĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= ĠJson Parser . parse String ( json FileContent ). as JsonObject [ section Name ]. toString () ĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson () ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmapped Object Ġ= Ġgson . fromJson ( jsonObject , ĠT Config Section :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmapped Object ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Section Name ( config Section : ĠClass < *> ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder ( config Section . simple Name ) ĊĠĠĠĠĠĠĠ Ġsb . set Char At ( 0 , ĠCharacter . toLowerCase ( sb [ 0 ])) ĊĠĠĠĠĠĠĠ Ġreturn Ġsb . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetFile AsString ( fileName : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= ĠConfiguration Service :: class . java . getResource AsStream ("/ $ fileName ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Utils . toString ( input , ĠStandard Charsets . UTF _ 8 ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }