rgen 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +15 -0
- data/lib/instantiators/ea_instantiator.rb +5 -2
- data/lib/metamodels/uml13_metamodel.rb +10 -10
- data/lib/mmgen/templates/annotations.tpl +1 -1
- data/lib/mmgen/templates/metamodel_generator.tpl +1 -1
- data/lib/rgen/ecore/ecore.rb +2 -2
- data/lib/rgen/ecore/ecore_instantiator.rb +4 -2
- data/lib/rgen/ecore/ecore_transformer.rb +6 -1
- data/lib/rgen/environment.rb +5 -0
- data/lib/rgen/environment.rb.bak +42 -0
- data/lib/rgen/instantiator/abstract_xml_instantiator.rb +40 -5
- data/lib/rgen/instantiator/ecore_xml_instantiator.rb +1 -1
- data/lib/rgen/instantiator/xmi11_instantiator.rb +1 -1
- data/lib/rgen/metamodel_builder/builder_extensions.rb +57 -39
- data/lib/rgen/serializer/xmi20_serializer.rb +60 -0
- data/lib/rgen/serializer/xml_serializer.rb +61 -0
- data/lib/rgen/template_language/output_handler.rb +15 -27
- data/lib/rgen/template_language/template_container.rb +1 -1
- data/lib/rgen/transformer.rb +50 -8
- data/test/metamodel_builder_test.rb +22 -0
- data/test/metamodel_roundtrip_test.rb +10 -0
- data/test/metamodel_roundtrip_test/TestModel.rb +2 -0
- data/test/metamodel_roundtrip_test/TestModel_Regenerated.rb +10 -8
- data/test/metamodel_roundtrip_test/houseMetamodel.ecore +8 -0
- data/test/metamodel_roundtrip_test/houseMetamodel_Regenerated.ecore +268 -0
- data/test/metamodel_roundtrip_test/houseMetamodel_from_ecore.rb +8 -5
- data/test/output_handler_test.rb +10 -0
- data/test/transformer_test.rb +13 -1
- metadata +7 -3
- data/lib/rgen/metamodel_builder/build_helper.rb +0 -51
@@ -0,0 +1,268 @@
|
|
1
|
+
<ecore:EPackage xmi:version="2.0" name="HouseMetamodel" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore">
|
2
|
+
<eClassifiers name="House" abstract="false" instanceClassName="HouseMetamodel::House" interface="false" ePackage="#/" xsi:type="ecore:EClass">
|
3
|
+
<eStructuralFeatures name="size" derived="false" transient="false" changeable="true" eContainingClass="#//House" unsettable="false" iD="false" xsi:type="ecore:EAttribute" upperBound="1" ordered="true" volatile="false" lowerBound="0" unique="true">
|
4
|
+
</eStructuralFeatures>
|
5
|
+
<eStructuralFeatures name="module" derived="false" transient="false" changeable="true" eContainingClass="#//House" unsettable="false" iD="false" xsi:type="ecore:EAttribute" upperBound="1" ordered="true" volatile="false" lowerBound="0" unique="true">
|
6
|
+
</eStructuralFeatures>
|
7
|
+
<eStructuralFeatures name="address" derived="false" transient="false" changeable="false" eContainingClass="#//House" unsettable="false" iD="false" xsi:type="ecore:EAttribute" upperBound="1" ordered="true" volatile="false" lowerBound="0" unique="true">
|
8
|
+
<eAnnotations eModelElement="#//House/address" xsi:type="ecore:EAnnotation">
|
9
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="0" key="derived">
|
10
|
+
</details>
|
11
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Not Specified" key="containment">
|
12
|
+
</details>
|
13
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="{A8DF581B-9AC6-4f75-AB48-8FAEDFC6E068}" key="ea_guid">
|
14
|
+
</details>
|
15
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="0" key="duplicates">
|
16
|
+
</details>
|
17
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="false" key="collection">
|
18
|
+
</details>
|
19
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="String" key="type">
|
20
|
+
</details>
|
21
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="volatile=0;" key="styleex">
|
22
|
+
</details>
|
23
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="1" key="upperBound">
|
24
|
+
</details>
|
25
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="0" key="ordered">
|
26
|
+
</details>
|
27
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="1" key="lowerBound">
|
28
|
+
</details>
|
29
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="0" key="position">
|
30
|
+
</details>
|
31
|
+
</eAnnotations>
|
32
|
+
</eStructuralFeatures>
|
33
|
+
<eStructuralFeatures name="bathroom" derived="false" containment="false" transient="true" changeable="true" resolveProxies="true" eContainingClass="#//House" unsettable="false" xsi:type="ecore:EReference" upperBound="1" ordered="true" volatile="false" lowerBound="1" eType="#//Rooms/Bathroom" unique="true">
|
34
|
+
</eStructuralFeatures>
|
35
|
+
<eStructuralFeatures name="kitchen" derived="false" containment="false" transient="false" changeable="true" resolveProxies="true" eContainingClass="#//House" eOpposite="#//Rooms/Kitchen/house" unsettable="false" xsi:type="ecore:EReference" upperBound="1" ordered="true" volatile="false" lowerBound="1" eType="#//Rooms/Kitchen" unique="true">
|
36
|
+
<eAnnotations eModelElement="#//House/kitchen" xsi:type="ecore:EAnnotation">
|
37
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Unspecified" key="containment">
|
38
|
+
</details>
|
39
|
+
</eAnnotations>
|
40
|
+
</eStructuralFeatures>
|
41
|
+
<eStructuralFeatures name="room" derived="false" containment="true" transient="false" changeable="true" resolveProxies="true" eContainingClass="#//House" eOpposite="#//Rooms/Room/house" unsettable="false" xsi:type="ecore:EReference" upperBound="-1" ordered="true" volatile="false" lowerBound="1" eType="#//Rooms/Room" unique="true">
|
42
|
+
</eStructuralFeatures>
|
43
|
+
<eAnnotations eModelElement="#//House" xsi:type="ecore:EAnnotation">
|
44
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="dummy" key="stereotype">
|
45
|
+
</details>
|
46
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Proposed" key="status">
|
47
|
+
</details>
|
48
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="2005-09-16 19:52:18" key="date_created">
|
49
|
+
</details>
|
50
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Class" key="ea_stype">
|
51
|
+
</details>
|
52
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="2006-02-28 08:29:19" key="date_modified">
|
53
|
+
</details>
|
54
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="0" key="tagged">
|
55
|
+
</details>
|
56
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="0" key="ea_ntype">
|
57
|
+
</details>
|
58
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="1.0" key="version">
|
59
|
+
</details>
|
60
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="EAPK_A1B83D59_CAE1_422c_BA5F_D3624D7156AD" key="package">
|
61
|
+
</details>
|
62
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="false" key="isSpecification">
|
63
|
+
</details>
|
64
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="HouseMetamodel" key="package_name">
|
65
|
+
</details>
|
66
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="1" key="complexity">
|
67
|
+
</details>
|
68
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="1.0" key="phase">
|
69
|
+
</details>
|
70
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="BackColor=-1;BorderColor=-1;BorderWidth=-1;FontColor=-1;VSwimLanes=0;HSwimLanes=0;BorderStyle=0;" key="style">
|
71
|
+
</details>
|
72
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Java" key="gentype">
|
73
|
+
</details>
|
74
|
+
</eAnnotations>
|
75
|
+
</eClassifiers>
|
76
|
+
<eClassifiers name="Person" abstract="false" instanceClassName="HouseMetamodel::Person" interface="false" ePackage="#/" xsi:type="ecore:EClass">
|
77
|
+
<eStructuralFeatures name="sex" derived="false" transient="false" changeable="true" eContainingClass="#//Person" unsettable="false" iD="false" xsi:type="ecore:EAttribute" upperBound="1" ordered="true" volatile="false" lowerBound="0" eType="#//SexEnum" unique="true">
|
78
|
+
</eStructuralFeatures>
|
79
|
+
<eStructuralFeatures name="home" derived="false" containment="false" transient="false" changeable="true" resolveProxies="true" eContainingClass="#//Person" unsettable="false" xsi:type="ecore:EReference" upperBound="-1" ordered="true" volatile="false" lowerBound="0" eType="#//House" unique="true">
|
80
|
+
<eAnnotations eModelElement="#//Person/home" xsi:type="ecore:EAnnotation">
|
81
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Unspecified" key="containment">
|
82
|
+
</details>
|
83
|
+
</eAnnotations>
|
84
|
+
</eStructuralFeatures>
|
85
|
+
<eAnnotations eModelElement="#//Person" xsi:type="ecore:EAnnotation">
|
86
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Proposed" key="status">
|
87
|
+
</details>
|
88
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="2006-06-27 08:34:23" key="date_created">
|
89
|
+
</details>
|
90
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Class" key="ea_stype">
|
91
|
+
</details>
|
92
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="2006-06-27 08:34:26" key="date_modified">
|
93
|
+
</details>
|
94
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="0" key="tagged">
|
95
|
+
</details>
|
96
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="0" key="ea_ntype">
|
97
|
+
</details>
|
98
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="1.0" key="version">
|
99
|
+
</details>
|
100
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="EAPK_A1B83D59_CAE1_422c_BA5F_D3624D7156AD" key="package">
|
101
|
+
</details>
|
102
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="false" key="isSpecification">
|
103
|
+
</details>
|
104
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="HouseMetamodel" key="package_name">
|
105
|
+
</details>
|
106
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="1" key="complexity">
|
107
|
+
</details>
|
108
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="1.0" key="phase">
|
109
|
+
</details>
|
110
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="BackColor=-1;BorderColor=-1;BorderWidth=-1;FontColor=-1;VSwimLanes=0;HSwimLanes=0;BorderStyle=0;" key="style">
|
111
|
+
</details>
|
112
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Java" key="gentype">
|
113
|
+
</details>
|
114
|
+
</eAnnotations>
|
115
|
+
</eClassifiers>
|
116
|
+
<eClassifiers name="SexEnum" instanceClassName="HouseMetamodel::SexEnum" ePackage="#/" xsi:type="ecore:EEnum">
|
117
|
+
<eLiterals name="male" xsi:type="ecore:EEnumLiteral" eEnum="#//SexEnum">
|
118
|
+
</eLiterals>
|
119
|
+
<eLiterals name="female" xsi:type="ecore:EEnumLiteral" eEnum="#//SexEnum">
|
120
|
+
</eLiterals>
|
121
|
+
</eClassifiers>
|
122
|
+
<eClassifiers name="MeetingPlace" abstract="false" instanceClassName="HouseMetamodel::MeetingPlace" interface="false" ePackage="#/" xsi:type="ecore:EClass">
|
123
|
+
<eAnnotations eModelElement="#//MeetingPlace" xsi:type="ecore:EAnnotation" source="testmodel">
|
124
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Proposed" key="status">
|
125
|
+
</details>
|
126
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="2006-07-12 08:40:46" key="date_created">
|
127
|
+
</details>
|
128
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Class" key="ea_stype">
|
129
|
+
</details>
|
130
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="2006-07-12 08:44:02" key="date_modified">
|
131
|
+
</details>
|
132
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="0" key="tagged">
|
133
|
+
</details>
|
134
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="0" key="ea_ntype">
|
135
|
+
</details>
|
136
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="1.0" key="version">
|
137
|
+
</details>
|
138
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="EAPK_A1B83D59_CAE1_422c_BA5F_D3624D7156AD" key="package">
|
139
|
+
</details>
|
140
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="false" key="isSpecification">
|
141
|
+
</details>
|
142
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="HouseMetamodel" key="package_name">
|
143
|
+
</details>
|
144
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="1" key="complexity">
|
145
|
+
</details>
|
146
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="1.0" key="phase">
|
147
|
+
</details>
|
148
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="BackColor=-1;BorderColor=-1;BorderWidth=-1;FontColor=-1;VSwimLanes=0;HSwimLanes=0;BorderStyle=0;" key="style">
|
149
|
+
</details>
|
150
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Java" key="gentype">
|
151
|
+
</details>
|
152
|
+
</eAnnotations>
|
153
|
+
</eClassifiers>
|
154
|
+
<eSubpackages name="Rooms" xsi:type="ecore:EPackage" eSuperPackage="#/">
|
155
|
+
<eClassifiers name="Bathroom" abstract="false" instanceClassName="HouseMetamodel::Rooms::Bathroom" interface="false" ePackage="#//Rooms" xsi:type="ecore:EClass" eSuperTypes="#//Rooms/Room">
|
156
|
+
<eAnnotations eModelElement="#//Rooms/Bathroom" xsi:type="ecore:EAnnotation">
|
157
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Proposed" key="status">
|
158
|
+
</details>
|
159
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="2006-06-27 08:32:25" key="date_created">
|
160
|
+
</details>
|
161
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Class" key="ea_stype">
|
162
|
+
</details>
|
163
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="2006-06-27 08:34:23" key="date_modified">
|
164
|
+
</details>
|
165
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="0" key="tagged">
|
166
|
+
</details>
|
167
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="0" key="ea_ntype">
|
168
|
+
</details>
|
169
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="1.0" key="version">
|
170
|
+
</details>
|
171
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="EAPK_F9D8C6E3_4DAD_4aa2_AD47_D0ABA4E93E08" key="package">
|
172
|
+
</details>
|
173
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="false" key="isSpecification">
|
174
|
+
</details>
|
175
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Rooms" key="package_name">
|
176
|
+
</details>
|
177
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="1" key="complexity">
|
178
|
+
</details>
|
179
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="1.0" key="phase">
|
180
|
+
</details>
|
181
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="BackColor=-1;BorderColor=-1;BorderWidth=-1;FontColor=-1;VSwimLanes=0;HSwimLanes=0;BorderStyle=0;" key="style">
|
182
|
+
</details>
|
183
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Java" key="gentype">
|
184
|
+
</details>
|
185
|
+
</eAnnotations>
|
186
|
+
</eClassifiers>
|
187
|
+
<eClassifiers name="Room" abstract="false" instanceClassName="HouseMetamodel::Rooms::Room" interface="false" ePackage="#//Rooms" xsi:type="ecore:EClass">
|
188
|
+
<eStructuralFeatures name="house" derived="false" containment="false" transient="false" changeable="true" resolveProxies="true" eContainingClass="#//Rooms/Room" eOpposite="#//House/room" unsettable="false" xsi:type="ecore:EReference" upperBound="1" ordered="true" volatile="false" lowerBound="0" eType="#//House" unique="true">
|
189
|
+
<eAnnotations eModelElement="#//Rooms/Room/house" xsi:type="ecore:EAnnotation">
|
190
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Unspecified" key="containment">
|
191
|
+
</details>
|
192
|
+
</eAnnotations>
|
193
|
+
</eStructuralFeatures>
|
194
|
+
<eAnnotations eModelElement="#//Rooms/Room" xsi:type="ecore:EAnnotation">
|
195
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Proposed" key="status">
|
196
|
+
</details>
|
197
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="2005-09-16 19:52:28" key="date_created">
|
198
|
+
</details>
|
199
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Class" key="ea_stype">
|
200
|
+
</details>
|
201
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="2006-06-22 21:15:25" key="date_modified">
|
202
|
+
</details>
|
203
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="0" key="tagged">
|
204
|
+
</details>
|
205
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="0" key="ea_ntype">
|
206
|
+
</details>
|
207
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="1.0" key="version">
|
208
|
+
</details>
|
209
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="EAPK_F9D8C6E3_4DAD_4aa2_AD47_D0ABA4E93E08" key="package">
|
210
|
+
</details>
|
211
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="false" key="isSpecification">
|
212
|
+
</details>
|
213
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Rooms" key="package_name">
|
214
|
+
</details>
|
215
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="1" key="complexity">
|
216
|
+
</details>
|
217
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="1.0" key="phase">
|
218
|
+
</details>
|
219
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="BackColor=-1;BorderColor=-1;BorderWidth=-1;FontColor=-1;VSwimLanes=0;HSwimLanes=0;BorderStyle=0;" key="style">
|
220
|
+
</details>
|
221
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Java" key="gentype">
|
222
|
+
</details>
|
223
|
+
</eAnnotations>
|
224
|
+
</eClassifiers>
|
225
|
+
<eClassifiers name="Kitchen" abstract="false" instanceClassName="HouseMetamodel::Rooms::Kitchen" interface="false" ePackage="#//Rooms" xsi:type="ecore:EClass" eSuperTypes="#//MeetingPlace #//Rooms/Room">
|
226
|
+
<eStructuralFeatures name="house" derived="false" containment="false" transient="false" changeable="true" resolveProxies="true" eContainingClass="#//Rooms/Kitchen" eOpposite="#//House/kitchen" unsettable="false" xsi:type="ecore:EReference" upperBound="1" ordered="true" volatile="false" lowerBound="1" eType="#//House" unique="true">
|
227
|
+
<eAnnotations eModelElement="#//Rooms/Kitchen/house" xsi:type="ecore:EAnnotation">
|
228
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Unspecified" key="containment">
|
229
|
+
</details>
|
230
|
+
</eAnnotations>
|
231
|
+
</eStructuralFeatures>
|
232
|
+
<eAnnotations eModelElement="#//Rooms/Kitchen" xsi:type="ecore:EAnnotation">
|
233
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Proposed" key="status">
|
234
|
+
</details>
|
235
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="2005-11-30 19:26:13" key="date_created">
|
236
|
+
</details>
|
237
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Class" key="ea_stype">
|
238
|
+
</details>
|
239
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="2006-06-22 21:15:34" key="date_modified">
|
240
|
+
</details>
|
241
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="0" key="tagged">
|
242
|
+
</details>
|
243
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="0" key="ea_ntype">
|
244
|
+
</details>
|
245
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="1.0" key="version">
|
246
|
+
</details>
|
247
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="EAPK_F9D8C6E3_4DAD_4aa2_AD47_D0ABA4E93E08" key="package">
|
248
|
+
</details>
|
249
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="false" key="isSpecification">
|
250
|
+
</details>
|
251
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Rooms" key="package_name">
|
252
|
+
</details>
|
253
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="1" key="complexity">
|
254
|
+
</details>
|
255
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="1.0" key="phase">
|
256
|
+
</details>
|
257
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="BackColor=-1;BorderColor=-1;BorderWidth=-1;FontColor=-1;VSwimLanes=0;HSwimLanes=0;BorderStyle=0;" key="style">
|
258
|
+
</details>
|
259
|
+
<details xsi:type="ecore:EStringToStringMapEntry" value="Java" key="gentype">
|
260
|
+
</details>
|
261
|
+
</eAnnotations>
|
262
|
+
</eClassifiers>
|
263
|
+
</eSubpackages>
|
264
|
+
<eSubpackages name="DependingOnRooms" xsi:type="ecore:EPackage" eSuperPackage="#/">
|
265
|
+
<eClassifiers name="RoomSub" abstract="false" instanceClassName="HouseMetamodel::DependingOnRooms::RoomSub" interface="false" ePackage="#//DependingOnRooms" xsi:type="ecore:EClass" eSuperTypes="#//Rooms/Room">
|
266
|
+
</eClassifiers>
|
267
|
+
</eSubpackages>
|
268
|
+
</ecore:EPackage>
|
@@ -4,15 +4,18 @@ module HouseMetamodel
|
|
4
4
|
extend RGen::MetamodelBuilder::ModuleExtension
|
5
5
|
include RGen::MetamodelBuilder::DataTypes
|
6
6
|
|
7
|
+
SexEnum = Enum.new(:name => 'SexEnum', :literals =>[ :male, :female ])
|
7
8
|
|
8
9
|
class House < RGen::MetamodelBuilder::MMBase
|
9
|
-
|
10
|
+
annotation :source => "bla", :details => {'a' => 'b'}
|
11
|
+
has_attr 'address', String, :changeable => false
|
10
12
|
end
|
11
13
|
|
12
14
|
class MeetingPlace < RGen::MetamodelBuilder::MMBase
|
13
15
|
end
|
14
16
|
|
15
17
|
class Person < RGen::MetamodelBuilder::MMBase
|
18
|
+
has_attr 'sex', HouseMetamodel::SexEnum
|
16
19
|
end
|
17
20
|
|
18
21
|
|
@@ -33,7 +36,7 @@ module HouseMetamodel
|
|
33
36
|
end
|
34
37
|
end
|
35
38
|
|
36
|
-
HouseMetamodel::House.
|
37
|
-
HouseMetamodel::
|
38
|
-
HouseMetamodel::
|
39
|
-
HouseMetamodel::Person.
|
39
|
+
HouseMetamodel::House.has_one 'bathroom', HouseMetamodel::Rooms::Bathroom, :lowerBound => 1
|
40
|
+
HouseMetamodel::House.one_to_one 'kitchen', HouseMetamodel::Rooms::Kitchen, 'house', :lowerBound => 1
|
41
|
+
HouseMetamodel::House.contains_many 'room', HouseMetamodel::Rooms::Room, 'house'
|
42
|
+
HouseMetamodel::Person.has_many 'house', HouseMetamodel::House
|
data/test/output_handler_test.rb
CHANGED
@@ -37,4 +37,14 @@ class MetamodelBuilderTest < Test::Unit::TestCase
|
|
37
37
|
h << "Start \n\n"
|
38
38
|
assert_equal " Start\n", h.to_s
|
39
39
|
end
|
40
|
+
def test_performance
|
41
|
+
h = RGen::TemplateLanguage::OutputHandler.new
|
42
|
+
h.mode = :explicit
|
43
|
+
h.indent = 1
|
44
|
+
line = (1..50).collect{|w| "someword"}.join(" ")+"\n"
|
45
|
+
# repeat more often to make performance differences visible
|
46
|
+
20.times do
|
47
|
+
h << line
|
48
|
+
end
|
49
|
+
end
|
40
50
|
end
|
data/test/transformer_test.rb
CHANGED
@@ -14,6 +14,9 @@ class TransformerTest < Test::Unit::TestCase
|
|
14
14
|
class ModelIn
|
15
15
|
attr_accessor :name
|
16
16
|
end
|
17
|
+
|
18
|
+
class ModelInSub < ModelIn
|
19
|
+
end
|
17
20
|
|
18
21
|
class ModelAIn
|
19
22
|
attr_accessor :name
|
@@ -110,6 +113,15 @@ class TransformerTest < Test::Unit::TestCase
|
|
110
113
|
assert_equal 1, t.modelInTrans_count
|
111
114
|
end
|
112
115
|
|
116
|
+
def test_transformer_subclass
|
117
|
+
from = ModelInSub.new
|
118
|
+
from.name = "TestName"
|
119
|
+
t = MyTransformer.new
|
120
|
+
assert t.trans(from).is_a?(ModelOut)
|
121
|
+
assert_equal "TestName", t.trans(from).name
|
122
|
+
assert_equal 1, t.modelInTrans_count
|
123
|
+
end
|
124
|
+
|
113
125
|
def test_transformer_array
|
114
126
|
froms = [ModelIn.new, ModelIn.new]
|
115
127
|
froms[0].name = "M1"
|
@@ -186,7 +198,7 @@ class TransformerTest < Test::Unit::TestCase
|
|
186
198
|
end
|
187
199
|
UML13.ecore.eClassifiers.each do |c|
|
188
200
|
copy c.instanceClass
|
189
|
-
|
201
|
+
end
|
190
202
|
end
|
191
203
|
|
192
204
|
MODEL_DIR = File.join(File.dirname(__FILE__),"testmodel")
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: rgen
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.4.
|
7
|
-
date: 2007-
|
6
|
+
version: 0.4.1
|
7
|
+
date: 2007-11-25 00:00:00 +01:00
|
8
8
|
summary: Ruby Modelling and Generator Framework
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -48,6 +48,7 @@ files:
|
|
48
48
|
- lib/rgen/auto_class_creator.rb
|
49
49
|
- lib/rgen/ecore
|
50
50
|
- lib/rgen/environment.rb
|
51
|
+
- lib/rgen/environment.rb.bak
|
51
52
|
- lib/rgen/find_helper.rb
|
52
53
|
- lib/rgen/instantiator
|
53
54
|
- lib/rgen/metamodel_builder
|
@@ -55,6 +56,7 @@ files:
|
|
55
56
|
- lib/rgen/model_comparator.rb
|
56
57
|
- lib/rgen/model_dumper.rb
|
57
58
|
- lib/rgen/name_helper.rb
|
59
|
+
- lib/rgen/serializer
|
58
60
|
- lib/rgen/template_language
|
59
61
|
- lib/rgen/template_language.rb
|
60
62
|
- lib/rgen/transformer.rb
|
@@ -69,13 +71,14 @@ files:
|
|
69
71
|
- lib/rgen/instantiator/xmi11_instantiator.rb
|
70
72
|
- lib/rgen/metamodel_builder/builder_extensions.rb
|
71
73
|
- lib/rgen/metamodel_builder/builder_runtime.rb
|
72
|
-
- lib/rgen/metamodel_builder/build_helper.rb
|
73
74
|
- lib/rgen/metamodel_builder/data_types.rb
|
74
75
|
- lib/rgen/metamodel_builder/intermediate
|
75
76
|
- lib/rgen/metamodel_builder/metamodel_description.rb
|
76
77
|
- lib/rgen/metamodel_builder/mm_multiple.rb
|
77
78
|
- lib/rgen/metamodel_builder/module_extension.rb
|
78
79
|
- lib/rgen/metamodel_builder/intermediate/annotation.rb
|
80
|
+
- lib/rgen/serializer/xmi20_serializer.rb
|
81
|
+
- lib/rgen/serializer/xml_serializer.rb
|
79
82
|
- lib/rgen/template_language/directory_template_container.rb
|
80
83
|
- lib/rgen/template_language/output_handler.rb
|
81
84
|
- lib/rgen/template_language/template_container.rb
|
@@ -98,6 +101,7 @@ files:
|
|
98
101
|
- test/xml_instantiator_test.rb
|
99
102
|
- test/metamodel_roundtrip_test/houseMetamodel.ecore
|
100
103
|
- test/metamodel_roundtrip_test/houseMetamodel_from_ecore.rb
|
104
|
+
- test/metamodel_roundtrip_test/houseMetamodel_Regenerated.ecore
|
101
105
|
- test/metamodel_roundtrip_test/TestModel.rb
|
102
106
|
- test/metamodel_roundtrip_test/TestModel_Regenerated.rb
|
103
107
|
- test/template_language_test/expected_result.txt
|
@@ -1,51 +0,0 @@
|
|
1
|
-
# RGen Framework
|
2
|
-
# (c) Martin Thiede, 2006
|
3
|
-
|
4
|
-
require 'rgen/name_helper'
|
5
|
-
|
6
|
-
module RGen
|
7
|
-
|
8
|
-
module MetamodelBuilder
|
9
|
-
|
10
|
-
class BuildHelper
|
11
|
-
include NameHelper
|
12
|
-
|
13
|
-
def self.build(mod,bnd,tpl)
|
14
|
-
mod.module_eval ERB.new(tpl).result(BuildHelper.new(mod, bnd).bnd)
|
15
|
-
end
|
16
|
-
def initialize(mod, bnd)
|
17
|
-
@outer_binding = bnd
|
18
|
-
@mod = mod
|
19
|
-
end
|
20
|
-
def bnd
|
21
|
-
binding
|
22
|
-
end
|
23
|
-
def method_missing(m, *args)
|
24
|
-
if args.empty?
|
25
|
-
eval("#{m}",@outer_binding)
|
26
|
-
else
|
27
|
-
@mod.instance_eval do
|
28
|
-
send(m,*args)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
def type_check_code(varname, props)
|
33
|
-
code = ""
|
34
|
-
if props.impl_type.is_a?(Class)
|
35
|
-
code << "unless #{varname}.nil? or #{varname}.is_a? #{props.impl_type}\n"
|
36
|
-
expected = props.impl_type.to_s
|
37
|
-
elsif props.impl_type.is_a?(RGen::MetamodelBuilder::DataTypes::Enum)
|
38
|
-
code << "unless #{varname}.nil? or [#{props.impl_type.literals_as_strings.join(',')}].include?(#{varname})\n"
|
39
|
-
expected = "["+props.impl_type.literals_as_strings.join(',')+"]"
|
40
|
-
else
|
41
|
-
raise StandardError.new("Unkown type "+props.impl_type.to_s)
|
42
|
-
end
|
43
|
-
code << "raise _assignmentTypeError(self,#{varname},\"#{expected}\")\n"
|
44
|
-
code << "end"
|
45
|
-
code
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
end
|
50
|
-
|
51
|
-
end
|