Skip to content
This repository was archived by the owner on Jun 26, 2021. It is now read-only.

Commit 85e501a

Browse files
committed
Move dynamic model definitions for tests into external json files.
1 parent df92c55 commit 85e501a

6 files changed

Lines changed: 357 additions & 198 deletions

File tree

src/test/java/org/emfjson/jackson/junit/support/TestSupport.java

Lines changed: 21 additions & 163 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313

1414
import com.fasterxml.jackson.databind.ObjectMapper;
1515
import 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;
1718
import org.eclipse.emf.ecore.resource.Resource;
1819
import org.eclipse.emf.ecore.resource.ResourceSet;
1920
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
@@ -22,9 +23,9 @@
2223
import org.emfjson.jackson.junit.model.ModelPackage;
2324
import org.emfjson.jackson.module.EMFModule;
2425
import org.emfjson.jackson.resource.JsonResourceFactory;
26+
import org.junit.After;
2527
import org.junit.Before;
2628

27-
import java.net.URL;
2829
import java.text.SimpleDateFormat;
2930
import java.util.HashMap;
3031
import java.util.Locale;
@@ -35,9 +36,8 @@
3536

3637
public 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
}

src/test/java/org/emfjson/jackson/junit/tests/DynamicInstanceTest.java

Lines changed: 16 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -33,49 +33,34 @@
3333
public class DynamicInstanceTest {
3434

3535
private ObjectMapper mapper = new ObjectMapper();
36-
private ResourceSet resourceSet;
3736

3837
private EClass a;
3938
private EClass b;
4039

4140
@Before
4241
public void setUp() {
43-
resourceSet = new ResourceSetImpl();
42+
final ResourceSet resourceSet = new ResourceSetImpl();
4443

45-
EPackage p = EcoreFactory.eINSTANCE.createEPackage();
46-
p.setNsURI("http://foo.org/p");
47-
p.setName("p");
48-
49-
a = EcoreFactory.eINSTANCE.createEClass();
50-
a.setName("A");
51-
52-
b = EcoreFactory.eINSTANCE.createEClass();
53-
b.setName("B");
54-
b.getESuperTypes().add(a);
55-
56-
EAttribute label = EcoreFactory.eINSTANCE.createEAttribute();
57-
label.setName("label");
58-
label.setEType(EcorePackage.Literals.ESTRING);
59-
60-
EReference bs = EcoreFactory.eINSTANCE.createEReference();
61-
bs.setName("bs");
62-
bs.setContainment(true);
63-
bs.setUpperBound(-1);
64-
bs.setEType(b);
44+
resourceSet.getResourceFactoryRegistry()
45+
.getExtensionToFactoryMap()
46+
.put("*", new JsonResourceFactory());
6547

66-
a.getEStructuralFeatures().add(label);
67-
a.getEStructuralFeatures().add(bs);
48+
resourceSet.getPackageRegistry()
49+
.put(EcorePackage.eNS_URI, EcorePackage.eINSTANCE);
6850

69-
p.getEClassifiers().add(a);
70-
p.getEClassifiers().add(b);
51+
resourceSet.getURIConverter()
52+
.getURIMap()
53+
.put(
54+
URI.createURI("http://foo.org/p"),
55+
URI.createURI("src/test/resources/model/dynamic/model-1.json"));
7156

72-
resourceSet.getResourceFactoryRegistry()
73-
.getExtensionToFactoryMap().put("*", new JsonResourceFactory());
57+
final Resource resource = resourceSet.getResource(URI.createURI("http://foo.org/p"), true);
58+
final EPackage ePackage = (EPackage) resource.getContents().get(0);
7459

75-
Resource r = resourceSet.createResource(URI.createURI("http://foo.org/p"));
76-
r.getContents().add(p);
60+
resourceSet.getPackageRegistry().put(ePackage.getNsURI(), ePackage);
7761

78-
resourceSet.getPackageRegistry().put(p.getNsURI(), p);
62+
a = (EClass) ePackage.getEClassifier("A");
63+
b = (EClass) ePackage.getEClassifier("B");
7964

8065
mapper.registerModule(new EMFModule(resourceSet));
8166
}

src/test/java/org/emfjson/jackson/junit/tests/DynamicPackageTest.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,9 @@
1010
*/
1111
package org.emfjson.jackson.junit.tests;
1212

13-
import org.eclipse.emf.ecore.EClass;
14-
import org.eclipse.emf.ecore.EObject;
15-
import org.eclipse.emf.ecore.EPackage;
16-
import org.eclipse.emf.ecore.EcoreFactory;
13+
import org.eclipse.emf.ecore.*;
1714
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
15+
import org.junit.After;
1816
import org.junit.Before;
1917
import org.junit.Test;
2018

@@ -33,9 +31,15 @@ public class DynamicPackageTest {
3331

3432
@Before
3533
public void setUp() {
34+
EPackage.Registry.INSTANCE.put(EcorePackage.eNS_URI, EcorePackage.eINSTANCE);
3635
mapper.registerModule(new EMFModule(new ResourceSetImpl()));
3736
}
3837

38+
@After
39+
public void tearDown() {
40+
EPackage.Registry.INSTANCE.clear();
41+
}
42+
3943
@Test
4044
public void testSavePackageWithTwoClasses() {
4145
JsonNode expected = mapper.createObjectNode()
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
{
2+
"eClass": "http://www.eclipse.org/emf/2002/Ecore#//EPackage",
3+
"name": "p",
4+
"nsPrefix": "p",
5+
"nsURI": "http://foo.org/p",
6+
"eClassifiers": [
7+
{
8+
"eClass": "http://www.eclipse.org/emf/2002/Ecore#//EClass",
9+
"name": "A",
10+
"eStructuralFeatures": [
11+
{
12+
"eClass": "http://www.eclipse.org/emf/2002/Ecore#//EAttribute",
13+
"name": "label",
14+
"eType": {
15+
"$ref": "http://www.eclipse.org/emf/2002/Ecore#//EString"
16+
}
17+
},
18+
{
19+
"eClass": "http://www.eclipse.org/emf/2002/Ecore#//EReference",
20+
"name": "bs",
21+
"containment": true,
22+
"upperBound": -1,
23+
"eType": {
24+
"$ref": "//B"
25+
}
26+
}
27+
]
28+
},
29+
{
30+
"eClass": "http://www.eclipse.org/emf/2002/Ecore#//EClass",
31+
"name": "B",
32+
"eSuperTypes": [
33+
{
34+
"$ref": "//A"
35+
}
36+
]
37+
}
38+
]
39+
}

0 commit comments

Comments
 (0)