1313
1414import com .fasterxml .jackson .databind .ObjectMapper ;
1515import org .eclipse .emf .common .util .URI ;
16- import org .eclipse .emf .ecore .*;
16+ import org .eclipse .emf .ecore .EPackage ;
17+ import org .eclipse .emf .ecore .EcorePackage ;
1718import org .eclipse .emf .ecore .resource .Resource ;
1819import org .eclipse .emf .ecore .resource .ResourceSet ;
1920import org .eclipse .emf .ecore .resource .impl .ResourceSetImpl ;
2223import org .emfjson .jackson .junit .model .ModelPackage ;
2324import org .emfjson .jackson .module .EMFModule ;
2425import org .emfjson .jackson .resource .JsonResourceFactory ;
26+ import org .junit .After ;
2527import org .junit .Before ;
2628
27- import java .net .URL ;
2829import java .text .SimpleDateFormat ;
2930import java .util .HashMap ;
3031import java .util .Locale ;
3536
3637public abstract class TestSupport {
3738
38- protected final URL testURI = getClass ().getResource ("/tests" );
3939 protected final Map <String , Object > options = new HashMap <>();
40- protected URI baseTestFilesFileDirectory = URI .createFileURI (testURI . getFile ()). appendSegment ( " " );
40+ protected URI baseTestFilesFileDirectory = URI .createFileURI ("src/test/resources/tests/ " );
4141 protected String baseURI = "http://eclipselabs.org/emfjson/tests/" ;
4242 protected ResourceSet resourceSet ;
4343 protected ObjectMapper mapper = new ObjectMapper ();
@@ -46,7 +46,9 @@ public abstract class TestSupport {
4646 public void setUp () {
4747 URI baseURI = URI .createURI ("http://eclipselabs.org/emfjson/tests/" );
4848
49+ EPackage .Registry .INSTANCE .put (EcorePackage .eNS_URI , EcorePackage .eINSTANCE );
4950 EPackage .Registry .INSTANCE .put (ModelPackage .eNS_URI , ModelPackage .eINSTANCE );
51+
5052 Resource .Factory .Registry .INSTANCE .getExtensionToFactoryMap ().put ("*" , new JsonResourceFactory ());
5153 Resource .Factory .Registry .INSTANCE .getExtensionToFactoryMap ().put ("xmi" , new XMIResourceFactoryImpl ());
5254
@@ -63,6 +65,12 @@ public void setUp() {
6365 createDynamicModel ();
6466 }
6567
68+ @ After
69+ public void tearDown () {
70+ EPackage .Registry .INSTANCE .clear ();
71+ Resource .Factory .Registry .INSTANCE .getExtensionToFactoryMap ().clear ();
72+ }
73+
6674 protected ObjectMapper mapper (JacksonOptions options ) {
6775 ObjectMapper mapper = new ObjectMapper ();
6876 mapper .registerModule (new EMFModule (resourceSet , options ));
@@ -76,165 +84,15 @@ protected URI uri(String fileName) {
7684 }
7785
7886 protected void createDynamicModel () {
79- EPackage p = EcoreFactory .eINSTANCE .createEPackage ();
80- p .setName ("model" );
81- p .setNsPrefix ("model" );
82- p .setNsURI ("http://emfjson/dynamic/model" );
83-
84- // classes a, b, c, d
85- // a
86- // b > a
87- // c > b > a
88-
89- EClass a = EcoreFactory .eINSTANCE .createEClass ();
90- a .setName ("A" );
91-
92- EClass b = EcoreFactory .eINSTANCE .createEClass ();
93- b .setName ("B" );
94-
95- EClass c = EcoreFactory .eINSTANCE .createEClass ();
96- c .setName ("C" );
97-
98- EClass d = EcoreFactory .eINSTANCE .createEClass ();
99- d .setName ("D" );
100-
101- b .getESuperTypes ().add (a );
102- c .getESuperTypes ().add (b );
103- d .getESuperTypes ().add (b );
104-
105- // dataTypes
106- //
107- // Kind: Enum
108- // - e1
109- // - e2: E2
110-
111- EEnum kind = EcoreFactory .eINSTANCE .createEEnum ();
112- kind .setName ("Kind" );
113-
114- EEnumLiteral e1 = EcoreFactory .eINSTANCE .createEEnumLiteral ();
115- e1 .setName ("e1" );
116-
117- EEnumLiteral e2 = EcoreFactory .eINSTANCE .createEEnumLiteral ();
118- e2 .setName ("e2" );
119- e2 .setLiteral ("E2" );
120-
121- kind .getELiterals ().add (e1 );
122- kind .getELiterals ().add (e2 );
123-
124- // CustomType
125- EDataType customDataType = EcoreFactory .eINSTANCE .createEDataType ();
126- customDataType .setName ("CustomType" );
127- customDataType .setSerializable (true );
128-
129- p .getEClassifiers ().add (a );
130- p .getEClassifiers ().add (b );
131- p .getEClassifiers ().add (c );
132- p .getEClassifiers ().add (d );
133- p .getEClassifiers ().add (kind );
134- p .getEClassifiers ().add (customDataType );
135-
136- // attributes
137- //
138- // a:
139- // stringValue: string
140- // intValue: int
141- // stringValues: string[]
142- // intValues: int[]
143- // dateValue: date
144- // someKind: kind
145- // custom: CustomType
146-
147- EAttribute stringValue = EcoreFactory .eINSTANCE .createEAttribute ();
148- stringValue .setName ("stringValue" );
149- stringValue .setUnsettable (true );
150- stringValue .setEType (EcorePackage .Literals .ESTRING );
151-
152- EAttribute stringValues = EcoreFactory .eINSTANCE .createEAttribute ();
153- stringValues .setName ("stringValues" );
154- stringValues .setUpperBound (-1 );
155- stringValues .setEType (EcorePackage .Literals .ESTRING );
156-
157- EAttribute intValue = EcoreFactory .eINSTANCE .createEAttribute ();
158- intValue .setName ("intValue" );
159- intValue .setEType (EcorePackage .Literals .EINT );
160-
161- EAttribute intValues = EcoreFactory .eINSTANCE .createEAttribute ();
162- intValues .setName ("intValues" );
163- intValues .setUpperBound (-1 );
164- intValues .setEType (EcorePackage .Literals .EINT );
165-
166- EAttribute dateValue = EcoreFactory .eINSTANCE .createEAttribute ();
167- dateValue .setName ("dateValue" );
168- dateValue .setEType (EcorePackage .Literals .EDATE );
169-
170- EAttribute someKind = EcoreFactory .eINSTANCE .createEAttribute ();
171- someKind .setName ("someKind" );
172- someKind .setEType (kind );
173-
174- EAttribute customValue = EcoreFactory .eINSTANCE .createEAttribute ();
175- customValue .setName ("customValue" );
176- customValue .setEType (customDataType );
177-
178- EAttribute javaType = EcoreFactory .eINSTANCE .createEAttribute ();
179- javaType .setName ("javaType" );
180- javaType .setEType (EcorePackage .Literals .EJAVA_OBJECT );
181-
182- EAttribute javaClass = EcoreFactory .eINSTANCE .createEAttribute ();
183- javaClass .setName ("javaClass" );
184- javaClass .setEType (EcorePackage .Literals .EJAVA_CLASS );
185-
186- a .getEStructuralFeatures ().add (stringValue );
187- a .getEStructuralFeatures ().add (stringValues );
188- a .getEStructuralFeatures ().add (intValue );
189- a .getEStructuralFeatures ().add (intValues );
190- a .getEStructuralFeatures ().add (dateValue );
191- a .getEStructuralFeatures ().add (someKind );
192- a .getEStructuralFeatures ().add (customValue );
193- a .getEStructuralFeatures ().add (javaType );
194- a .getEStructuralFeatures ().add (javaClass );
195-
196- // references
197- // a:
198- // containB: B
199- // containBs: B[]
200- // refTo: A
201- // refToMany: A[]
202-
203- EReference containB = EcoreFactory .eINSTANCE .createEReference ();
204- containB .setName ("containB" );
205- containB .setContainment (true );
206- containB .setEType (b );
207-
208- EReference containBs = EcoreFactory .eINSTANCE .createEReference ();
209- containBs .setName ("containBs" );
210- containBs .setContainment (true );
211- containBs .setUpperBound (-1 );
212- containBs .setEType (b );
213-
214- EReference parent = EcoreFactory .eINSTANCE .createEReference ();
215- parent .setName ("parent" );
216- parent .setEOpposite (containB );
217- parent .setLowerBound (1 );
218- parent .setUpperBound (1 );
219- parent .setEType (a );
220-
221- EReference refTo = EcoreFactory .eINSTANCE .createEReference ();
222- refTo .setName ("refTo" );
223- refTo .setEType (a );
224-
225- EReference refToMany = EcoreFactory .eINSTANCE .createEReference ();
226- refToMany .setName ("refTo" );
227- refToMany .setUpperBound (-1 );
228- refToMany .setEType (a );
229-
230- a .getEStructuralFeatures ().add (containB );
231- a .getEStructuralFeatures ().add (containBs );
232- a .getEStructuralFeatures ().add (parent );
233- a .getEStructuralFeatures ().add (refTo );
234- a .getEStructuralFeatures ().add (refToMany );
235-
236- Resource model = resourceSet .createResource (URI .createURI ("http://emfjson/dynamic/model" ));
237- model .getContents ().add (p );
87+ resourceSet .getURIConverter ()
88+ .getURIMap ()
89+ .put (
90+ URI .createURI ("http://emfjson/dynamic/model" ),
91+ URI .createURI ("src/test/resources/model/dynamic/model.json" ));
92+
93+ Resource model = resourceSet .getResource (URI .createURI ("http://emfjson/dynamic/model" ), true );
94+ EPackage ePackage = (EPackage ) model .getContents ().get (0 );
95+ resourceSet .getPackageRegistry ().put (ePackage .getNsURI (), ePackage );
23896 }
23997
24098}
0 commit comments