This repository has been archived by the owner on Jun 26, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 23
/
model.xcore
153 lines (132 loc) · 3.62 KB
/
model.xcore
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
@Ecore(nsURI="http://www.emfjson.org/jackson/model")
@GenModel(
modelDirectory="emfjson-jackson/src/test/java-gen",
updateClasspath="false",
bundleManifest="false",
rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl",
complianceLevel="7.0"
)
package org.emfjson.jackson.junit.model
import org.eclipse.emf.ecore.EByteArray
import org.eclipse.emf.ecore.EFeatureMapEntry
import org.eclipse.emf.ecore.EStringToStringMapEntry
import java.util.Map
annotation "JSON" as JSON @JSON(root="true")
class User {
id String userId
String name
Date birthDate
Sex sex
refers local User[] friends
refers local User uniqueFriend
contains resolving Address address
}
enum Sex {
MALE = 0
FEMALE = 1
}
class Address {
id String addId
String city
String street
Integer number
}
class ETypes {
String eString
unique String[] eStrings
boolean eBoolean
unique Boolean[] eBooleans
int eInt
unique int[] eInts
Double doubleValue
double eDouble
unique Double[] eDoubles
BigDecimal eBigDecimal
BigInteger eBigInteger
byte eByte
EByteArray eByteArray
char eChar
Date eDate
float eFloat
long eLong
short eShort
contains TMap[*] values
unique URI[] uris
}
class TMap wraps Map.Entry {
contains Type key
contains Value value
}
class Type {
String name
}
class Value {
int value
}
type URI wraps org.eclipse.emf.common.util.URI
class PrimaryObject {
String name
id String idAttribute
unsettable String unsettableAttribute
unsettable String unsettableAttributeWithNonNullDefault = "junit"
refers unsettable TargetObject unsettableReference
contains resolving PrimaryObject containmentReferenceSameCollection
refers TargetObject singleNonContainmentReference
refers TargetObject[] multipleNonContainmentReference
contains TargetObject singleContainmentReferenceNoProxies
contains TargetObject[] multipleContainmentReferenceNoProxies
contains resolving TargetObject singleContainmentReferenceProxies
contains resolving TargetObject[] multipleContainmentReferenceProxies
refers local TargetObject singleNonContainmentReferenceNoProxies
@ExtendedMetaData(group="#featureMapReferenceCollection")
refers local transient volatile derived TargetObject[] featureMapReferenceType1
@ExtendedMetaData(group="#featureMapReferenceCollection")
contains transient volatile derived TargetObject[] featureMapReferenceType2
@ExtendedMetaData(kind="group")
unique EFeatureMapEntry featureMapReferenceCollection
@ExtendedMetaData(group="#featureMapAttributeCollection")
unique transient volatile derived String[] featureMapAttributeType1
@ExtendedMetaData(group="#featureMapAttributeCollection")
unique transient volatile derived String[] featureMapAttributeType2
@ExtendedMetaData(kind="group")
unique EFeatureMapEntry[] featureMapAttributeCollection
SomeKind kind
}
class Container {
contains resolving AbstractType[] elements
}
class TargetObject {
String singleAttribute
unique String[] arrayAttribute
}
abstract class AbstractType {
id String[1] name
refers AbstractType[] refProperty
}
class ConcreteTypeOne extends AbstractType {
String propTypeOne
}
class ConcreteTypeTwo extends AbstractType {
String propTypeTwo
}
class Node {
String label
refers local Node target opposite source
refers local Node source opposite target
refers local Node[] manyRef
contains resolving Node[] child
contains resolving Node uniqueChild
}
enum SomeKind {
one = 0
Two as "two" = 1
Three as "Three-is-Three" = 3
}
class GenericContainer {
contains resolving GenericType<?>[] values
}
abstract class GenericType<T> {
T value
}
class SpecialTypeOne extends GenericType<String> {}
class SpecialTypeTwo extends GenericType<Boolean> {}