package Ġcom . tester um . file _ service . file Ċ Ċ import Ġcom . fasterxml . jackson . annotation . JsonInclude Ċ import Ġcom . fasterxml . jackson . core . util . Default Ind enter Ċ import Ġcom . fasterxml . jackson . core . util . Default PrettyPrinter Ċ import Ġcom . fasterxml . jackson . databind . Deserialization Feature Ċ import Ġcom . fasterxml . jackson . databind . Mapper Feature Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . fasterxml . jackson . databind . Serialization Feature Ċ import Ġcom . fasterxml . jackson . datatype . gu ava . Gu ava Module Ċ import Ġcom . fasterxml . jackson . datatype . js r 3 1 0 . Java Time Module Ċ import Ġcom . fasterxml . jackson . module . after burn er . After burn er Module Ċ import Ġcom . fasterxml . jackson . module . kotlin . Kotlin Module Ċ import Ġcom . fasterxml . jackson . module . kotlin . readValue Ċ import Ġcom . tester um . common _ kotlin . create Directories Ċ import Ġcom . tester um . common _ kotlin . does NotExist Ċ import Ġcom . tester um . file _ service . mapper . business _ to _ file . Business ToFile Run Config Mapper Ċ import Ġcom . tester um . file _ service . mapper . file _ to _ business . File To Business Run Config Mapper Ċ import Ġcom . tester um . model . runner . config . FilePath With Scenario Indexes Ċ import Ġcom . tester um . model . runner . config . File Run Config Ċ import Ġcom . tester um . model . runner . config . File Run Config V 1 Ċ import Ġcom . tester um . model . runner . config . Run Config Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Standard Open Option Ċ import Ġjava . nio . file . Path Ġas ĠJava Path Ċ Ċ class ĠRun ConfigFile Service ( private Ġval Ġfile To Business Mapper : ĠFile To Business Run Config Mapper , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġbusiness ToFile Mapper : ĠBusiness ToFile Run Config Mapper ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOG Ġ= ĠLoggerFactory . getLogger ( Run ConfigFile Service :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠRUN _ CONFIG S _ FILENAME Ġ= Ġ" run - configurations . json " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠOBJECT _ MAP PER : ĠObjectMapper Ġ= ĠObjectMapper (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetDefault PrettyPrinter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDefault PrettyPrinter (). with Array Ind enter ( Default Ind enter . SYSTEM _ LINE FEED _ INSTANCE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Module ( After burn er Module ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Module ( Kotlin Module ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Module ( Java Time Module ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Module ( Gu ava Module ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable ( Mapper Feature . SORT _ PROPERTIES _ ALPH AB ET IC ALLY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable ( Serialization Feature . ORDER _ MAP _ ENTR IES _ BY _ KEYS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable ( Serialization Feature . IND ENT _ OUTPUT ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Serialization In clusion ( JsonInclude . Include . NON _ NULL ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisable ( Serialization Feature . WRITE _ DAT ES _ AS _ TIMESTAMP S ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable ( Serialization Feature . WRITE _ DAT ES _ WITH _ ZONE _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisable ( Deserialization Feature . ADJ UST _ DAT ES _ TO _ CONTEXT _ TIME _ ZONE ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable ( Deserialization Feature . FAIL _ ON _ UNKNOWN _ PROPERTIES ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Run Configs ( source Directory : ĠJava Path ): ĠList < Run Config > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġload Run Configs ( source Directory ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . error (" could Ġnot Ġload Ġrun Ġconfigurations Ġat Ġ[ ${ source Directory . to AbsolutePath (). normalize ()} ]", Ġe ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Run Configs ( source Directory : ĠJava Path ): ĠList < Run Config > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile : ĠJava Path Ġ= Ġsource Directory . resolve ( RUN _ CONFIG S _ FILENAME ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( file . does NotExist ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġfirst Ġtry Ġto Ġload Ġthe Ġcurrent Ġversion ĊĠĠĠĠĠĠĠ Ġval Ġfile Run Configs Ġ= Ġload Run Config Current Version S af ely ( file ) ĊĠĠĠĠĠĠĠ Ġif Ġ( file Run Configs Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfile Run Configs . map Ġ{ Ġfile To Business Mapper . map ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġfailed Ġto Ġload Ġcurrent Ġversion , Ġtry Ġto Ġload Ġold Ġversion Ġand Ġconvert ĊĠĠĠĠĠĠĠ Ġval Ġfile Run Configs V 1 Ġ= Ġload Run Configs V 1 ( file ) ĊĠĠĠĠĠĠĠ Ġval Ġconverted File Run Configs Ġ= Ġconvert Old To New Run Config Format ( file Run Configs V 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġsave Ġin Ġthe Ġnew Ġformat , Ġto Ġmake Ġsure Ġit Ġwon 't Ġfail Ġnext Ġtime ĊĠĠĠĠĠĠĠ Ġval Ġrun Configs Ġ= Ġconverted File Run Configs . map Ġ{ Ġfile To Business Mapper . map ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġsave ( run Configs , Ġsource Directory ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġrun Configs ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Run Config Current Version S af ely ( file : ĠJava Path ): ĠList < File Run Config >? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOBJECT _ MAP PER . readValue ( file . to File ()) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Run Configs V 1 ( file : ĠJava Path ): ĠList < File Run Config V 1 > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠOBJECT _ MAP PER . readValue ( file . to File ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconvert Old To New Run Config Format ( file Run Configs V 1 : ĠList < File Run Config V 1 >): ĠList < File Run Config > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfile Run Configs V 1 . map Ġ{ Ġfile Run Config V 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Run Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġfile Run Config V 1 . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings Ġ= Ġfile Run Config V 1 . settings , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtags To Include Ġ= Ġfile Run Config V 1 . tags To Include , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtags To Exclude Ġ= Ġfile Run Config V 1 . tags To Exclude , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaths To Include Ġ= Ġfile Run Config V 1 . paths To Include . map Ġ{ Ġpath To Include Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilePath With Scenario Indexes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġpath To Include , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscenario Indexes Ġ= Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave ( configs : ĠList < Run Config >, ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġdestination Directory : ĠJava Path ): ĠList < Run Config > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Run Configs Ġ= Ġconfigs . map Ġ{ Ġbusiness ToFile Mapper . map ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġserialized Ġ= ĠOBJECT _ MAP PER . writeValue AsString ( file Run Configs ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfile : ĠJava Path Ġ= Ġdestination Directory . resolve ( RUN _ CONFIG S _ FILENAME ) ĊĊĠĠĠĠĠĠĠ Ġfile . parent ?. create Directories () ĊĊĠĠĠĠĠĠĠ ĠFiles . write ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserialized . toByteArray ( Charsets . UTF _ 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStandard Open Option . WRITE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStandard Open Option . CREATE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStandard Open Option . TRUNC ATE _ EXIST ING ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġconfigs ĊĠĠĠ Ġ} Ċ Ċ } Ċ