package Ġcom . strument a . kol as u . emf Ċ Ċ import Ġcom . strument a . kol as u . emf . serialization . Json Generator Ċ import Ġcom . strument a . kol as u . model . Point Ċ import Ġcom . strument a . kol as u . model . Position Ċ import Ġcom . strument a . kol as u . validation . Issue Ċ import Ġcom . strument a . kol as u . validation . Issue Type Ċ import Ġcom . strument a . kol as u . validation . Result Ċ import Ġorg . eclipse . emf . common . util . E List Ċ import Ġorg . eclipse . emf . common . util . URI Ċ import Ġorg . eclipse . emf . ecore . EClass Ċ import Ġorg . eclipse . emf . ecore . EObject Ċ import Ġorg . eclipse . emf . ecore . resource . Resource Ċ import Ġorg . eclipse . emf . ecore . resource . impl . Resource Set Impl Ċ import Ġorg . eclipse . emf cloud . jackson . resource . Json Resource Factory Ċ import Ġorg . junit . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertFalse Ċ import Ġkotlin . test . assertTrue Ċ Ċ class ĠResult Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgenerate Simple Model Result () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcu Ġ= ĠCompilation Unit ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVar Declaration ( Visibility . PUBLIC , Ġ" a ", ĠString Literal (" foo ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVar Declaration ( Visibility . PRIVATE , Ġ" b ", ĠString Literal (" bar ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġns URI Ġ= Ġ" https :// strument a . com / simp lem m " ĊĠĠĠĠĠĠĠ Ġval Ġmet amodel Builder Ġ= ĠMet amodel Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName ( Compilation Unit :: class ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġns URI , Ġ" simp lem m " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġmet amodel Builder . provide Class ( Compilation Unit :: class ) ĊĠĠĠĠĠĠĠ Ġval Ġe Package Ġ= Ġmet amodel Builder . generate () ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠResult ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIssue ( Issue Type . LEX ICAL , Ġ" lex ", Ġposition Ġ= ĠPosition ( Point ( 1 , Ġ 1 ), ĠPoint ( 2 , Ġ 1 0 ))), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIssue ( Issue Type . SEM ANT IC , Ġ" foo ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcu ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġe o Ġ= Ġresult . to EObject ( e Package ) ĊĠĠĠĠĠĠĠ Ġ// Ġe o . save X MI ( java . io . File (" simple model . x mi ")) ĊĠĠĠĠĠĠĠ Ġval Ġem f String Ġ= ĠJson Generator (). generate EM F String ( result , Ġe Package ) ĊĠĠĠĠĠĠĠ Ġprintln ( emf String ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresource Set Ġ= ĠResource Set Impl () ĊĠĠĠĠĠĠĠ Ġresource Set . resource Factory Registry . extension To Factory Map [" json "] Ġ= ĠJson Resource Factory () ĊĠĠĠĠĠĠĠ Ġresource Set . resource Factory Registry . protocol To Factory Map [" https "] Ġ= ĠJson Resource Factory () ĊĠĠĠĠĠĠĠ Ġval Ġkol as u URI Ġ= ĠURI . create URI ( K OL AS U _ MET AMO DEL . ns URI ) ĊĠĠĠĠĠĠĠ Ġval Ġkol as u Res Ġ= Ġresource Set . create Resource ( kol as u URI ) ĊĠĠĠĠĠĠĠ Ġkol as u Res . contents . add ( K OL AS U _ MET AMO DEL ) ĊĠĠĠĠĠĠĠ Ġval Ġmeta URI Ġ= ĠURI . create URI ( ns URI ) ĊĠĠĠĠĠĠĠ Ġval Ġmeta Res Ġ= Ġresource Set . create Resource ( meta URI ) ĊĠĠĠĠĠĠĠ Ġmeta Res . contents . add ( e Package ) ĊĠĠĠĠĠĠĠ Ġval Ġuri : ĠURI Ġ= ĠURI . create URI (" file :/// emf String . json ") ĊĠĠĠĠĠĠĠ Ġval Ġresource : ĠResource Ġ= Ġresource Set . create Resource ( uri ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( resource . is Loaded ) ĊĠĠĠĠĠĠĠ Ġem f String . byte InputStream (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresource . load ( it , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġresource . contents . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( resource . contents [ 0 ] Ġis ĠE Object ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult EO Ġ= Ġresource . contents [ 0 ] Ġas ĠE Object ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe Object Ġ= Ġresult EO . e Get ( result EO . e Class (). get ES tr uct ural Feature (" root ")) Ġas ĠE Object ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcu Class Ġ= Ġe Package . e Class ifiers . find Ġ{ Ġc Ġ-> Ġc . name . equals (" Compilation Unit ") Ġ} Ġas ĠE Class ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( cu Class , Ġe Object . e Class ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstm ts Ġ= Ġe Object . e Get ( cu Class . get ES tr uct ural Feature (" statements ")) Ġas ĠE List < *> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġstm ts . size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ