package Ġde . un ia . se . plant est ic Ċ Ċ import Ġio . kot lint est . specs . String Spec Ċ import Ġorg . eclipse . emf . common . util . URI Ċ import Ġorg . eclipse . emf . ecore . resource . impl . Resource Set Impl Ċ import Ġorg . jo or . Reflect Ċ import Ġjava . io . File Ċ Ċ class ĠAc ce leo Generator Test Ġ: ĠString Spec ({ ĊĠĠĠ Ġ" Transform Ġa ĠRest ĠAss ured ĠE Object Ġinput Ġto ĠJava ĠCode Ġfor Ġminimal Ġhello " Ġ{ ĊĠĠĠĠĠĠĠ ĠMeta Model Setup . do Setup () ĊĊĠĠĠĠĠĠĠ Ġval Ġp uml Input Model URI Ġ= ĠURI . create File URI ( MIN IMAL _ EXAMPLE _ INPUT _ FILE . path ) ĊĠĠĠĠĠĠĠ Ġval Ġp uml Input Model Ġ= ĠResource Set Impl (). getResource ( p uml Input Model URI , Ġtrue ). contents [ 0 ] ĊĊĠĠĠĠĠĠĠ ĠAc ce leo Code Generator . generate Code ( p uml Input Model , ĠOUTPUT _ FOLDER ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠNow Ġcompile Ġthe Ġresulting Ġcode Ġto Ġcheck Ġfor Ġsyntax Ġerrors ĊĠĠĠĠĠĠĠ Ġval Ġgenerated SourceFile Ġ= ĠOUTPUT _ FOLDER . list Files () !!. first Ġ{ Ġf Ġ-> Ġf . name Ġ== Ġ" Test _ minimal _ hello . java " Ġ} ĊĠĠĠĠĠĠĠ Ġprint Code ( generated SourceFile ) ĊĠĠĠĠĠĠĠ Ġval Ġcompiled Test Ġ= ĠReflect . compile ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerated SourceFile . name Without Extension , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerated SourceFile . read Text () ĊĠĠĠĠĠĠĠ Ġ) !!. create () !! ĊĠĠĠĠĠĠĠ Ġinvoke Creation ( compiled Test , ĠMIN IMAL _ EXAMPLE _ CONFIG _ FILE . path ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Transform Ġa ĠRest ĠAss ured ĠE Object Ġinput Ġto ĠJava ĠCode Ġfor Ġcomplex Ġhello " Ġ{ ĊĠĠĠĠĠĠĠ ĠMeta Model Setup . do Setup () ĊĊĠĠĠĠĠĠĠ Ġval Ġp uml Input Model URI Ġ= ĠURI . create File URI ( COMPLEX _ HEL LO _ INPUT _ FILE . path ) ĊĠĠĠĠĠĠĠ Ġval Ġp uml Input Model Ġ= ĠResource Set Impl (). getResource ( p uml Input Model URI , Ġtrue ). contents [ 0 ] ĊĊĠĠĠĠĠĠĠ ĠAc ce leo Code Generator . generate Code ( p uml Input Model , ĠOUTPUT _ FOLDER ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠNow Ġcompile Ġthe Ġresulting Ġcode Ġto Ġcheck Ġfor Ġsyntax Ġerrors ĊĠĠĠĠĠĠĠ Ġval Ġgenerated SourceFile Ġ= ĠOUTPUT _ FOLDER . list Files () !!. first Ġ{ Ġf Ġ-> Ġf . name Ġ== Ġ" Test _ complex _ hello . java " Ġ} ĊĠĠĠĠĠĠĠ Ġprint Code ( generated SourceFile ) ĊĠĠĠĠĠĠĠ Ġval Ġcompiled Test Ġ= ĠReflect . compile ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerated SourceFile . name Without Extension , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerated SourceFile . read Text () ĊĠĠĠĠĠĠĠ Ġ) !!. create () !! ĊĠĠĠĠĠĠĠ Ġinvoke Creation ( compiled Test , ĠCOMP LEX _ HEL LO _ CONFIG _ FILE . path ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Transform Ġa ĠRest ĠAss ured ĠE Object Ġinput Ġto ĠJava ĠCode Ġfor Ġrer out ing " Ġ{ ĊĠĠĠĠĠĠĠ ĠMeta Model Setup . do Setup () ĊĊĠĠĠĠĠĠĠ Ġval Ġp uml Input Model URI Ġ= ĠURI . create File URI ( R ER OUT E _ INPUT _ FILE . path ) ĊĠĠĠĠĠĠĠ Ġval Ġp uml Input Model Ġ= ĠResource Set Impl (). getResource ( p uml Input Model URI , Ġtrue ). contents [ 0 ] ĊĊĠĠĠĠĠĠĠ ĠAc ce leo Code Generator . generate Code ( p uml Input Model , ĠOUTPUT _ FOLDER ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠNow Ġcompile Ġthe Ġresulting Ġcode Ġto Ġcheck Ġfor Ġsyntax Ġerrors ĊĠĠĠĠĠĠĠ Ġval Ġgenerated SourceFile Ġ= ĠOUTPUT _ FOLDER . list Files () !!. first Ġ{ Ġf Ġ-> Ġf . name Ġ== Ġ" Test _ rer out ing . java " Ġ} ĊĠĠĠĠĠĠĠ Ġprint Code ( generated SourceFile ) ĊĠĠĠĠĠĠĠ Ġval Ġcompiled Test Ġ= ĠReflect . compile ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerated SourceFile . name Without Extension , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerated SourceFile . read Text () ĊĠĠĠĠĠĠĠ Ġ) !!. create () !! ĊĠĠĠĠĠĠĠ Ġinvoke Creation ( compiled Test , ĠR ER OUT E _ CONFIG _ FILE . path ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Transform Ġa ĠRest ĠAss ured ĠE Object Ġinput Ġto ĠJava ĠCode Ġfor Ġx call " Ġ{ ĊĠĠĠĠĠĠĠ ĠMeta Model Setup . do Setup () ĊĊĠĠĠĠĠĠĠ Ġval Ġp uml Input Model URI Ġ= ĠURI . create File URI ( X CALL _ INPUT _ FILE . path ) ĊĠĠĠĠĠĠĠ Ġval Ġp uml Input Model Ġ= ĠResource Set Impl (). getResource ( p uml Input Model URI , Ġtrue ). contents [ 0 ] ĊĊĠĠĠĠĠĠĠ ĠAc ce leo Code Generator . generate Code ( p uml Input Model , ĠOUTPUT _ FOLDER ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠNow Ġcompile Ġthe Ġresulting Ġcode Ġto Ġcheck Ġfor Ġsyntax Ġerrors ĊĠĠĠĠĠĠĠ Ġval Ġgenerated SourceFile Ġ= ĠOUTPUT _ FOLDER . list Files () !!. first Ġ{ Ġf Ġ-> Ġf . name Ġ== Ġ" Test _ x call . java " Ġ} ĊĠĠĠĠĠĠĠ Ġprint Code ( generated SourceFile ) ĊĠĠĠĠĠĠĠ Ġval Ġcompiled Test Ġ= ĠReflect . compile ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerated SourceFile . name Without Extension , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerated SourceFile . read Text () ĊĠĠĠĠĠĠĠ Ġ) !!. create () !! ĊĠĠĠĠĠĠĠ Ġinvoke Creation ( compiled Test , ĠX CALL _ CONFIG _ FILE . path ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Transform Ġa ĠRest ĠAss ured ĠE Object Ġinput Ġto ĠJava ĠCode Ġfor Ġrequest body " Ġ{ ĊĠĠĠĠĠĠĠ ĠMeta Model Setup . do Setup () ĊĊĠĠĠĠĠĠĠ Ġval Ġp uml Input Model URI Ġ= ĠURI . create File URI ( REQUEST BODY _ INPUT _ FILE . path ) ĊĠĠĠĠĠĠĠ Ġval Ġp uml Input Model Ġ= ĠResource Set Impl (). getResource ( p uml Input Model URI , Ġtrue ). contents [ 0 ] ĊĊĠĠĠĠĠĠĠ ĠAc ce leo Code Generator . generate Code ( p uml Input Model , ĠOUTPUT _ FOLDER ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠNow Ġcompile Ġthe Ġresulting Ġcode Ġto Ġcheck Ġfor Ġsyntax Ġerrors ĊĠĠĠĠĠĠĠ Ġval Ġgenerated SourceFile Ġ= ĠOUTPUT _ FOLDER . list Files () !!. first Ġ{ Ġf Ġ-> Ġf . name Ġ== Ġ" Test _ x call . java " Ġ} ĊĠĠĠĠĠĠĠ Ġprint Code ( generated SourceFile ) ĊĠĠĠĠĠĠĠ Ġval Ġcompiled Test Ġ= ĠReflect . compile ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerated SourceFile . name Without Extension , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerated SourceFile . read Text () ĊĠĠĠĠĠĠĠ Ġ) !!. create () !! ĊĠĠĠĠĠĠĠ Ġinvoke Creation ( compiled Test , ĠREQUEST BODY _ CONFIG _ FILE . path ) ĊĠĠĠ Ġ} Ċ }) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠMIN IMAL _ EXAMPLE _ INPUT _ FILE Ġ= ĠFile ( Thread . currentThread (). context ClassLoader ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getResource (" minimal _ hello _ rest ass ured . x mi ") !!. to URI ()) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠMIN IMAL _ EXAMPLE _ CONFIG _ FILE Ġ= ĠFile ( Thread . currentThread (). context ClassLoader ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getResource (" minimal _ hello _ config . toml ") !!. to URI ()) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠCOMP LEX _ HEL LO _ INPUT _ FILE Ġ= ĠFile ( Thread . currentThread (). context ClassLoader ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getResource (" complex _ hello _ rest ass ured . x mi ") !!. to URI ()) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠCOMP LEX _ HEL LO _ CONFIG _ FILE Ġ= ĠFile ( Thread . currentThread (). context ClassLoader ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getResource (" complex _ hello _ config . toml ") !!. to URI ()) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠR ER OUT E _ INPUT _ FILE Ġ= ĠFile ( Thread . currentThread (). context ClassLoader ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getResource (" rer out ing _ rest ass ured . x mi ") !!. to URI ()) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠR ER OUT E _ CONFIG _ FILE Ġ= ĠFile ( Thread . currentThread (). context ClassLoader ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getResource (" rer out ing _ config . toml ") !!. to URI ()) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠX CALL _ INPUT _ FILE Ġ= ĠFile ( Thread . currentThread (). context ClassLoader ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getResource (" x call _ rest ass ured . x mi ") !!. to URI ()) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠX CALL _ CONFIG _ FILE Ġ= ĠFile ( Thread . currentThread (). context ClassLoader ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getResource (" x call _ config . toml ") !!. to URI ()) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠREQUEST BODY _ INPUT _ FILE Ġ= ĠFile ( Thread . currentThread (). context ClassLoader ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getResource (" request body _ rest ass ured . x mi ") !!. to URI ()) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠREQUEST BODY _ CONFIG _ FILE Ġ= ĠFile ( Thread . currentThread (). context ClassLoader ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getResource (" request body _ config . toml ") !!. to URI ()) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠOUTPUT _ FOLDER Ġ= ĠFile ( Thread . currentThread (). context ClassLoader ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getResource (" code - generation ") !!. file , Ġ" Ac ce leo Generator Test / GeneratedCode ") ĊĊĠĠĠĠĠĠĠ Ġfun Ġprint Code ( file : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . read Lines (). forEach Ġ{ Ġline Ġ-> Ġprintln ( line ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġinvoke Creation ( compiled Test : ĠReflect , Ġconfig FilePath : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompiled Test . call (" set Config FilePath ", Ġconfig FilePath ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompiled Test . call (" setup Config ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ