rgen 0.5.4 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (125) hide show
  1. data/CHANGELOG +28 -0
  2. data/Rakefile +3 -4
  3. data/lib/ea_support/uml13_ea_metamodel.rb +3 -3
  4. data/lib/ea_support/uml13_ea_to_uml13.rb +33 -2
  5. data/lib/ea_support/uml13_to_uml13_ea.rb +7 -0
  6. data/lib/mmgen/mm_ext/ecore_mmgen_ext.rb +4 -4
  7. data/lib/mmgen/templates/metamodel_generator.tpl +143 -143
  8. data/lib/rgen/ecore/ecore.rb +11 -1
  9. data/lib/rgen/ecore/ecore_interface.rb +47 -0
  10. data/lib/rgen/ecore/ecore_to_ruby.rb +166 -0
  11. data/lib/rgen/ecore/{ecore_transformer.rb → ruby_to_ecore.rb} +11 -11
  12. data/lib/rgen/environment.rb +15 -2
  13. data/lib/rgen/fragment/dump_file_cache.rb +63 -0
  14. data/lib/rgen/fragment/fragmented_model.rb +139 -0
  15. data/lib/rgen/fragment/model_fragment.rb +268 -0
  16. data/lib/rgen/instantiator/abstract_xml_instantiator.rb +44 -72
  17. data/lib/rgen/instantiator/default_xml_instantiator.rb +2 -2
  18. data/lib/rgen/instantiator/ecore_xml_instantiator.rb +16 -1
  19. data/lib/rgen/instantiator/json_instantiator.rb +16 -2
  20. data/lib/rgen/instantiator/nodebased_xml_instantiator.rb +118 -138
  21. data/lib/rgen/instantiator/qualified_name_resolver.rb +5 -1
  22. data/lib/rgen/instantiator/reference_resolver.rb +126 -24
  23. data/lib/rgen/instantiator/xmi11_instantiator.rb +6 -2
  24. data/lib/rgen/metamodel_builder.rb +18 -6
  25. data/lib/rgen/metamodel_builder/builder_extensions.rb +431 -407
  26. data/lib/rgen/metamodel_builder/builder_runtime.rb +8 -8
  27. data/lib/rgen/metamodel_builder/constant_order_helper.rb +4 -4
  28. data/lib/rgen/metamodel_builder/data_types.rb +5 -1
  29. data/lib/rgen/metamodel_builder/intermediate/feature.rb +167 -0
  30. data/lib/rgen/metamodel_builder/module_extension.rb +2 -2
  31. data/lib/rgen/model_builder.rb +10 -5
  32. data/lib/rgen/model_builder/builder_context.rb +17 -1
  33. data/lib/rgen/serializer/opposite_reference_filter.rb +18 -0
  34. data/lib/rgen/serializer/qualified_name_provider.rb +45 -0
  35. data/lib/rgen/template_language/template_container.rb +3 -1
  36. data/lib/rgen/{auto_class_creator.rb → util/auto_class_creator.rb} +6 -1
  37. data/lib/rgen/util/cached_glob.rb +67 -0
  38. data/lib/rgen/util/file_cache_map.rb +104 -0
  39. data/lib/rgen/util/file_change_detector.rb +78 -0
  40. data/lib/rgen/{method_delegation.rb → util/method_delegation.rb} +18 -3
  41. data/lib/rgen/{model_comparator.rb → util/model_comparator.rb} +17 -5
  42. data/lib/rgen/{model_comparator_base.rb → util/model_comparator_base.rb} +6 -1
  43. data/lib/rgen/{model_dumper.rb → util/model_dumper.rb} +6 -1
  44. data/lib/rgen/{name_helper.rb → util/name_helper.rb} +6 -1
  45. data/lib/rgen/util/pattern_matcher.rb +329 -0
  46. data/lib/transformers/uml13_to_ecore.rb +103 -60
  47. data/test/ecore_self_test.rb +43 -42
  48. data/test/json_test.rb +15 -0
  49. data/test/metamodel_builder_test.rb +361 -206
  50. data/test/metamodel_from_ecore_test.rb +45 -0
  51. data/test/metamodel_order_test.rb +10 -4
  52. data/test/metamodel_roundtrip_test.rb +2 -2
  53. data/test/metamodel_roundtrip_test/TestModel_Regenerated.rb +1 -1
  54. data/test/metamodel_roundtrip_test/houseMetamodel_Regenerated.ecore +50 -50
  55. data/test/method_delegation_test.rb +9 -9
  56. data/test/model_builder/ecore_internal.rb +19 -9
  57. data/test/model_builder/serializer_test.rb +1 -1
  58. data/test/reference_resolver_test.rb +79 -12
  59. data/test/rgen_test.rb +2 -0
  60. data/test/template_language_test.rb +7 -0
  61. data/test/template_language_test/templates/callback_indent_test/a.tpl +12 -0
  62. data/test/template_language_test/templates/callback_indent_test/b.tpl +5 -0
  63. data/test/testmodel/ea_testmodel_regenerated.xml +588 -583
  64. data/test/transformer_test.rb +3 -3
  65. data/test/util/file_cache_map_test.rb +91 -0
  66. data/test/util/file_cache_map_test/testdir/fileA +1 -0
  67. data/test/util_test.rb +4 -0
  68. data/test/xml_instantiator_test.rb +139 -135
  69. metadata +49 -104
  70. data/lib/rgen/ecore/ecore_instantiator.rb +0 -31
  71. data/lib/rgen/metamodel_builder/metamodel_description.rb +0 -232
  72. data/redist/xmlscan/ChangeLog +0 -1301
  73. data/redist/xmlscan/README +0 -34
  74. data/redist/xmlscan/THANKS +0 -11
  75. data/redist/xmlscan/doc/changes.html +0 -74
  76. data/redist/xmlscan/doc/changes.rd +0 -80
  77. data/redist/xmlscan/doc/en/conformance.html +0 -136
  78. data/redist/xmlscan/doc/en/conformance.rd +0 -152
  79. data/redist/xmlscan/doc/en/manual.html +0 -356
  80. data/redist/xmlscan/doc/en/manual.rd +0 -402
  81. data/redist/xmlscan/doc/ja/conformance.ja.html +0 -118
  82. data/redist/xmlscan/doc/ja/conformance.ja.rd +0 -134
  83. data/redist/xmlscan/doc/ja/manual.ja.html +0 -325
  84. data/redist/xmlscan/doc/ja/manual.ja.rd +0 -370
  85. data/redist/xmlscan/doc/src/Makefile +0 -41
  86. data/redist/xmlscan/doc/src/conformance.rd.src +0 -256
  87. data/redist/xmlscan/doc/src/langsplit.rb +0 -110
  88. data/redist/xmlscan/doc/src/manual.rd.src +0 -614
  89. data/redist/xmlscan/install.rb +0 -41
  90. data/redist/xmlscan/lib/xmlscan/encoding.rb +0 -311
  91. data/redist/xmlscan/lib/xmlscan/htmlscan.rb +0 -289
  92. data/redist/xmlscan/lib/xmlscan/namespace.rb +0 -352
  93. data/redist/xmlscan/lib/xmlscan/parser.rb +0 -299
  94. data/redist/xmlscan/lib/xmlscan/scanner.rb +0 -1109
  95. data/redist/xmlscan/lib/xmlscan/version.rb +0 -22
  96. data/redist/xmlscan/lib/xmlscan/visitor.rb +0 -158
  97. data/redist/xmlscan/lib/xmlscan/xmlchar.rb +0 -441
  98. data/redist/xmlscan/memo/CONFORMANCE +0 -1249
  99. data/redist/xmlscan/memo/PRODUCTIONS +0 -195
  100. data/redist/xmlscan/memo/contentspec.ry +0 -335
  101. data/redist/xmlscan/samples/chibixml.rb +0 -105
  102. data/redist/xmlscan/samples/getxmlchar.rb +0 -122
  103. data/redist/xmlscan/samples/rexml.rb +0 -159
  104. data/redist/xmlscan/samples/xmlbench.rb +0 -88
  105. data/redist/xmlscan/samples/xmlbench/parser/chibixml.rb +0 -22
  106. data/redist/xmlscan/samples/xmlbench/parser/nqxml.rb +0 -29
  107. data/redist/xmlscan/samples/xmlbench/parser/rexml.rb +0 -62
  108. data/redist/xmlscan/samples/xmlbench/parser/xmlparser.rb +0 -22
  109. data/redist/xmlscan/samples/xmlbench/parser/xmlscan-0.0.10.rb +0 -62
  110. data/redist/xmlscan/samples/xmlbench/parser/xmlscan-chibixml.rb +0 -22
  111. data/redist/xmlscan/samples/xmlbench/parser/xmlscan-rexml.rb +0 -22
  112. data/redist/xmlscan/samples/xmlbench/parser/xmlscan.rb +0 -99
  113. data/redist/xmlscan/samples/xmlbench/xmlbench-lib.rb +0 -116
  114. data/redist/xmlscan/samples/xmlconftest.rb +0 -200
  115. data/redist/xmlscan/test.rb +0 -7
  116. data/redist/xmlscan/tests/deftestcase.rb +0 -73
  117. data/redist/xmlscan/tests/runtest.rb +0 -47
  118. data/redist/xmlscan/tests/testall.rb +0 -14
  119. data/redist/xmlscan/tests/testencoding.rb +0 -438
  120. data/redist/xmlscan/tests/testhtmlscan.rb +0 -752
  121. data/redist/xmlscan/tests/testnamespace.rb +0 -457
  122. data/redist/xmlscan/tests/testparser.rb +0 -591
  123. data/redist/xmlscan/tests/testscanner.rb +0 -1749
  124. data/redist/xmlscan/tests/testxmlchar.rb +0 -143
  125. data/redist/xmlscan/tests/visitor.rb +0 -34
@@ -0,0 +1,45 @@
1
+ $:.unshift File.join(File.dirname(__FILE__),"..","test")
2
+
3
+ require 'metamodel_builder_test'
4
+ require 'rgen/ecore/ecore_to_ruby'
5
+
6
+ # this test suite runs all the tests of MetamodelBuilderTest with the TestMetamodel
7
+ # replaced by the result of feeding its ecore model through ECoreToRuby
8
+ #
9
+ class MetamodelFromEcoreTest < MetamodelBuilderTest
10
+
11
+ # clone the ecore model, because it will be modified below
12
+ test_ecore = Marshal.load(Marshal.dump(TestMetamodel.ecore))
13
+ # some EEnum types are not hooked into the EPackage because they do not
14
+ # appear with a constant assignment in TestMetamodel
15
+ # fix this by explicitly assigning the ePackage
16
+ # also fix the name of anonymous enums
17
+ test_ecore.eClassifiers.find{|c| c.name == "SimpleClass"}.
18
+ eAttributes.select{|a| a.name == "kind" || a.name == "kindWithDefault"}.each{|a|
19
+ a.eType.name = "KindType"
20
+ a.eType.ePackage = test_ecore}
21
+ test_ecore.eClassifiers.find{|c| c.name == "ManyAttrClass"}.
22
+ eAttributes.select{|a| a.name == "enums"}.each{|a|
23
+ a.eType.name = "ABCEnum"
24
+ a.eType.ePackage = test_ecore}
25
+
26
+ MetamodelFromEcore = RGen::ECore::ECoreToRuby.new.create_module(test_ecore)
27
+
28
+ def mm
29
+ MetamodelFromEcore
30
+ end
31
+
32
+ # alternative implementation for dynamic variant
33
+ def test_bad_default_value_literal
34
+ package = RGen::ECore::EPackage.new(:name => "Package1", :eClassifiers => [
35
+ RGen::ECore::EClass.new(:name => "Class1", :eStructuralFeatures => [
36
+ RGen::ECore::EAttribute.new(:name => "value", :eType => RGen::ECore::EInt, :defaultValueLiteral => "x")])])
37
+ mod = RGen::ECore::ECoreToRuby.new.create_module(package)
38
+ obj = mod::Class1.new
39
+ # the error is raised only when the feature is lazily constructed
40
+ assert_raise StandardError do
41
+ obj.value
42
+ end
43
+ end
44
+ end
45
+
@@ -4,7 +4,7 @@ require 'test/unit'
4
4
  require 'rgen/ecore/ecore'
5
5
  require 'rgen/array_extensions'
6
6
 
7
- class MetamodelReflectionTest < Test::Unit::TestCase
7
+ class MetamodelOrderTest < Test::Unit::TestCase
8
8
  include RGen::ECore
9
9
 
10
10
  module TestMM1
@@ -77,7 +77,7 @@ class MetamodelReflectionTest < Test::Unit::TestCase
77
77
 
78
78
  TestMM1::Module11.extend(RGen::MetamodelBuilder::ModuleExtension)
79
79
  # this is a critical case: because of the previous extension of Module11 which is in a different
80
- # hierarchy, DataType7 is looked for in Module11 and its parents; finally it is not
80
+ # hierarchy, DataType21 is looked for in Module11 and its parents; finally it is not
81
81
  # found and the definition is ignored for order calculation
82
82
  DataType21 = RGen::MetamodelBuilder::DataTypes::Enum.new(:name => "DataType21", :literals => {:b => 1})
83
83
 
@@ -95,6 +95,8 @@ class MetamodelReflectionTest < Test::Unit::TestCase
95
95
 
96
96
  # if there is no other class or module after the last datatype, it won't show up in _constantOrder
97
97
  # however, the order of eClassifiers can still be reconstructed
98
+ # note that this can not be tested if the test is executed as part of the whole testsuite
99
+ # since there will be classes and modules created within other test files
98
100
  DataType22 = RGen::MetamodelBuilder::DataTypes::Enum.new(:name => "DataType22", :literals => {:b => 1})
99
101
  end
100
102
 
@@ -102,7 +104,10 @@ class MetamodelReflectionTest < Test::Unit::TestCase
102
104
  assert_equal ["Class11", "Module11", "DataType11", "Class12", "Class13"], TestMM1._constantOrder
103
105
  assert_equal ["DataType111", "DataType112", "Class111", "DataType113", "Module112", "DataType114", "DataType115", "DataType116"], TestMM1::Module11._constantOrder
104
106
  assert_equal ["Class1122"], TestMM1::Module11::Module112._constantOrder
105
- assert_equal ["Module21", "Module22", "Module23"], TestMM2._constantOrder
107
+ if File.basename($0) == "metamodel_order_test.rb"
108
+ # this won't work if run in the whole test suite (see comment at DataType22)
109
+ assert_equal ["Module21", "Module22", "Module23"], TestMM2._constantOrder
110
+ end
106
111
  end
107
112
 
108
113
  def test_classifier_order
@@ -111,7 +116,8 @@ class MetamodelReflectionTest < Test::Unit::TestCase
111
116
  assert_equal ["Class11", "DataType11", "Class12", "Class13"], TestMM1.ecore.eClassifiers.name
112
117
  assert_equal ["DataType111", "DataType112", "Class111", "DataType113", "DataType114", "DataType115", "DataType116", "Class112"], TestMM1::Module11.ecore.eClassifiers.name
113
118
  assert_equal ["Class1122", "Class1121"], TestMM1::Module11::Module112.ecore.eClassifiers.name
114
- assert_equal ["DataType22", "DataType21"], TestMM2.ecore.eClassifiers.name
119
+ # no classifiers in TestMM2._constantOrder, so the datatypes can appear in arbitrary order
120
+ assert_equal ["DataType21","DataType22"], TestMM2.ecore.eClassifiers.name.sort
115
121
  end
116
122
 
117
123
  def test_subpackage_order
@@ -2,7 +2,7 @@ $:.unshift File.join(File.dirname(__FILE__),"..","lib")
2
2
 
3
3
  require 'test/unit'
4
4
  require 'rgen/array_extensions'
5
- require 'rgen/model_comparator'
5
+ require 'rgen/util/model_comparator'
6
6
  require 'mmgen/metamodel_generator'
7
7
  require 'rgen/instantiator/ecore_xml_instantiator'
8
8
  require 'rgen/serializer/xmi20_serializer'
@@ -12,7 +12,7 @@ class MetamodelRoundtripTest < Test::Unit::TestCase
12
12
  TEST_DIR = File.dirname(__FILE__)+"/metamodel_roundtrip_test"
13
13
 
14
14
  include MMGen::MetamodelGenerator
15
- include RGen::ModelComparator
15
+ include RGen::Util::ModelComparator
16
16
 
17
17
  module Regenerated
18
18
  Inside = binding
@@ -60,7 +60,7 @@ end
60
60
  HouseMetamodel::Person.has_many 'home', HouseMetamodel::House do
61
61
  annotation 'containment' => 'Unspecified'
62
62
  end
63
- HouseMetamodel::House.has_one 'bathroom', HouseMetamodel::Rooms::Bathroom, :transient => true, :lowerBound => 1
63
+ HouseMetamodel::House.has_one 'bathroom', HouseMetamodel::Rooms::Bathroom, :lowerBound => 1, :transient => true
64
64
  HouseMetamodel::House.one_to_one 'kitchen', HouseMetamodel::Rooms::Kitchen, 'house', :lowerBound => 1, :opposite_lowerBound => 1 do
65
65
  annotation 'containment' => 'Unspecified'
66
66
  opposite_annotation 'containment' => 'Unspecified'
@@ -1,20 +1,20 @@
1
1
  <ecore:EPackage name="HouseMetamodel" xmi:version="2.0" 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
2
  <eClassifiers abstract="false" interface="false" instanceClassName="HouseMetamodel::MeetingPlace" name="MeetingPlace" eSubTypes="#//Rooms/Kitchen" xsi:type="ecore:EClass">
3
3
  <eAnnotations source="testmodel" xsi:type="ecore:EAnnotation">
4
- <details key="status" value="Proposed" xsi:type="ecore:EStringToStringMapEntry"/>
4
+ <details key="complexity" value="1" xsi:type="ecore:EStringToStringMapEntry"/>
5
5
  <details key="date_created" value="2006-07-12 08:40:46" xsi:type="ecore:EStringToStringMapEntry"/>
6
- <details key="ea_stype" value="Class" xsi:type="ecore:EStringToStringMapEntry"/>
7
6
  <details key="date_modified" value="2006-07-12 08:44:02" xsi:type="ecore:EStringToStringMapEntry"/>
8
- <details key="tagged" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
9
7
  <details key="ea_ntype" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
10
- <details key="version" value="1.0" xsi:type="ecore:EStringToStringMapEntry"/>
11
- <details key="package" value="EAPK_A1B83D59_CAE1_422c_BA5F_D3624D7156AD" xsi:type="ecore:EStringToStringMapEntry"/>
8
+ <details key="ea_stype" value="Class" xsi:type="ecore:EStringToStringMapEntry"/>
9
+ <details key="gentype" value="Java" xsi:type="ecore:EStringToStringMapEntry"/>
12
10
  <details key="isSpecification" value="false" xsi:type="ecore:EStringToStringMapEntry"/>
11
+ <details key="package" value="EAPK_A1B83D59_CAE1_422c_BA5F_D3624D7156AD" xsi:type="ecore:EStringToStringMapEntry"/>
13
12
  <details key="package_name" value="HouseMetamodel" xsi:type="ecore:EStringToStringMapEntry"/>
14
- <details key="complexity" value="1" xsi:type="ecore:EStringToStringMapEntry"/>
15
13
  <details key="phase" value="1.0" xsi:type="ecore:EStringToStringMapEntry"/>
14
+ <details key="status" value="Proposed" xsi:type="ecore:EStringToStringMapEntry"/>
16
15
  <details key="style" value="BackColor=-1;BorderColor=-1;BorderWidth=-1;FontColor=-1;VSwimLanes=0;HSwimLanes=0;BorderStyle=0;" xsi:type="ecore:EStringToStringMapEntry"/>
17
- <details key="gentype" value="Java" xsi:type="ecore:EStringToStringMapEntry"/>
16
+ <details key="tagged" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
17
+ <details key="version" value="1.0" xsi:type="ecore:EStringToStringMapEntry"/>
18
18
  </eAnnotations>
19
19
  </eClassifiers>
20
20
  <eClassifiers abstract="false" interface="false" instanceClassName="HouseMetamodel::Person" name="Person" xsi:type="ecore:EClass">
@@ -26,20 +26,20 @@
26
26
  </eAnnotations>
27
27
  </eStructuralFeatures>
28
28
  <eAnnotations xsi:type="ecore:EAnnotation">
29
- <details key="status" value="Proposed" xsi:type="ecore:EStringToStringMapEntry"/>
29
+ <details key="complexity" value="1" xsi:type="ecore:EStringToStringMapEntry"/>
30
30
  <details key="date_created" value="2006-06-27 08:34:23" xsi:type="ecore:EStringToStringMapEntry"/>
31
- <details key="ea_stype" value="Class" xsi:type="ecore:EStringToStringMapEntry"/>
32
31
  <details key="date_modified" value="2006-06-27 08:34:26" xsi:type="ecore:EStringToStringMapEntry"/>
33
- <details key="tagged" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
34
32
  <details key="ea_ntype" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
35
- <details key="version" value="1.0" xsi:type="ecore:EStringToStringMapEntry"/>
36
- <details key="package" value="EAPK_A1B83D59_CAE1_422c_BA5F_D3624D7156AD" xsi:type="ecore:EStringToStringMapEntry"/>
33
+ <details key="ea_stype" value="Class" xsi:type="ecore:EStringToStringMapEntry"/>
34
+ <details key="gentype" value="Java" xsi:type="ecore:EStringToStringMapEntry"/>
37
35
  <details key="isSpecification" value="false" xsi:type="ecore:EStringToStringMapEntry"/>
36
+ <details key="package" value="EAPK_A1B83D59_CAE1_422c_BA5F_D3624D7156AD" xsi:type="ecore:EStringToStringMapEntry"/>
38
37
  <details key="package_name" value="HouseMetamodel" xsi:type="ecore:EStringToStringMapEntry"/>
39
- <details key="complexity" value="1" xsi:type="ecore:EStringToStringMapEntry"/>
40
38
  <details key="phase" value="1.0" xsi:type="ecore:EStringToStringMapEntry"/>
39
+ <details key="status" value="Proposed" xsi:type="ecore:EStringToStringMapEntry"/>
41
40
  <details key="style" value="BackColor=-1;BorderColor=-1;BorderWidth=-1;FontColor=-1;VSwimLanes=0;HSwimLanes=0;BorderStyle=0;" xsi:type="ecore:EStringToStringMapEntry"/>
42
- <details key="gentype" value="Java" xsi:type="ecore:EStringToStringMapEntry"/>
41
+ <details key="tagged" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
42
+ <details key="version" value="1.0" xsi:type="ecore:EStringToStringMapEntry"/>
43
43
  </eAnnotations>
44
44
  </eClassifiers>
45
45
  <eClassifiers abstract="false" interface="false" instanceClassName="HouseMetamodel::House" name="House" xsi:type="ecore:EClass">
@@ -47,17 +47,17 @@
47
47
  <eStructuralFeatures iD="false" changeable="true" derived="false" transient="false" unsettable="false" volatile="false" lowerBound="0" ordered="true" unique="true" upperBound="1" name="module" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" xsi:type="ecore:EAttribute"/>
48
48
  <eStructuralFeatures iD="false" changeable="false" derived="false" transient="false" unsettable="false" volatile="false" lowerBound="0" ordered="true" unique="true" upperBound="1" name="address" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" xsi:type="ecore:EAttribute">
49
49
  <eAnnotations xsi:type="ecore:EAnnotation">
50
- <details key="derived" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
50
+ <details key="collection" value="false" xsi:type="ecore:EStringToStringMapEntry"/>
51
51
  <details key="containment" value="Not Specified" xsi:type="ecore:EStringToStringMapEntry"/>
52
- <details key="ea_guid" value="{A8DF581B-9AC6-4f75-AB48-8FAEDFC6E068}" xsi:type="ecore:EStringToStringMapEntry"/>
52
+ <details key="derived" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
53
53
  <details key="duplicates" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
54
- <details key="collection" value="false" xsi:type="ecore:EStringToStringMapEntry"/>
55
- <details key="type" value="String" xsi:type="ecore:EStringToStringMapEntry"/>
56
- <details key="styleex" value="volatile=0;" xsi:type="ecore:EStringToStringMapEntry"/>
57
- <details key="upperBound" value="1" xsi:type="ecore:EStringToStringMapEntry"/>
58
- <details key="ordered" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
54
+ <details key="ea_guid" value="{A8DF581B-9AC6-4f75-AB48-8FAEDFC6E068}" xsi:type="ecore:EStringToStringMapEntry"/>
59
55
  <details key="lowerBound" value="1" xsi:type="ecore:EStringToStringMapEntry"/>
56
+ <details key="ordered" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
60
57
  <details key="position" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
58
+ <details key="styleex" value="volatile=0;" xsi:type="ecore:EStringToStringMapEntry"/>
59
+ <details key="type" value="String" xsi:type="ecore:EStringToStringMapEntry"/>
60
+ <details key="upperBound" value="1" xsi:type="ecore:EStringToStringMapEntry"/>
61
61
  </eAnnotations>
62
62
  </eStructuralFeatures>
63
63
  <eStructuralFeatures containment="false" resolveProxies="true" changeable="true" derived="false" transient="true" unsettable="false" volatile="false" lowerBound="1" ordered="true" unique="true" upperBound="1" name="bathroom" eType="#//Rooms/Bathroom" xsi:type="ecore:EReference"/>
@@ -68,21 +68,21 @@
68
68
  </eStructuralFeatures>
69
69
  <eStructuralFeatures containment="true" resolveProxies="true" changeable="true" derived="false" transient="false" unsettable="false" volatile="false" lowerBound="1" ordered="true" unique="true" upperBound="-1" name="room" eOpposite="#//Rooms/Room/house" eType="#//Rooms/Room" xsi:type="ecore:EReference"/>
70
70
  <eAnnotations xsi:type="ecore:EAnnotation">
71
- <details key="stereotype" value="dummy" xsi:type="ecore:EStringToStringMapEntry"/>
72
- <details key="status" value="Proposed" xsi:type="ecore:EStringToStringMapEntry"/>
71
+ <details key="complexity" value="1" xsi:type="ecore:EStringToStringMapEntry"/>
73
72
  <details key="date_created" value="2005-09-16 19:52:18" xsi:type="ecore:EStringToStringMapEntry"/>
74
- <details key="ea_stype" value="Class" xsi:type="ecore:EStringToStringMapEntry"/>
75
73
  <details key="date_modified" value="2006-02-28 08:29:19" xsi:type="ecore:EStringToStringMapEntry"/>
76
- <details key="tagged" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
77
74
  <details key="ea_ntype" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
78
- <details key="version" value="1.0" xsi:type="ecore:EStringToStringMapEntry"/>
79
- <details key="package" value="EAPK_A1B83D59_CAE1_422c_BA5F_D3624D7156AD" xsi:type="ecore:EStringToStringMapEntry"/>
75
+ <details key="ea_stype" value="Class" xsi:type="ecore:EStringToStringMapEntry"/>
76
+ <details key="gentype" value="Java" xsi:type="ecore:EStringToStringMapEntry"/>
80
77
  <details key="isSpecification" value="false" xsi:type="ecore:EStringToStringMapEntry"/>
78
+ <details key="package" value="EAPK_A1B83D59_CAE1_422c_BA5F_D3624D7156AD" xsi:type="ecore:EStringToStringMapEntry"/>
81
79
  <details key="package_name" value="HouseMetamodel" xsi:type="ecore:EStringToStringMapEntry"/>
82
- <details key="complexity" value="1" xsi:type="ecore:EStringToStringMapEntry"/>
83
80
  <details key="phase" value="1.0" xsi:type="ecore:EStringToStringMapEntry"/>
81
+ <details key="status" value="Proposed" xsi:type="ecore:EStringToStringMapEntry"/>
82
+ <details key="stereotype" value="dummy" xsi:type="ecore:EStringToStringMapEntry"/>
84
83
  <details key="style" value="BackColor=-1;BorderColor=-1;BorderWidth=-1;FontColor=-1;VSwimLanes=0;HSwimLanes=0;BorderStyle=0;" xsi:type="ecore:EStringToStringMapEntry"/>
85
- <details key="gentype" value="Java" xsi:type="ecore:EStringToStringMapEntry"/>
84
+ <details key="tagged" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
85
+ <details key="version" value="1.0" xsi:type="ecore:EStringToStringMapEntry"/>
86
86
  </eAnnotations>
87
87
  </eClassifiers>
88
88
  <eClassifiers instanceClassName="HouseMetamodel::SexEnum" name="SexEnum" xsi:type="ecore:EEnum">
@@ -97,38 +97,38 @@
97
97
  </eAnnotations>
98
98
  </eStructuralFeatures>
99
99
  <eAnnotations xsi:type="ecore:EAnnotation">
100
- <details key="status" value="Proposed" xsi:type="ecore:EStringToStringMapEntry"/>
100
+ <details key="complexity" value="1" xsi:type="ecore:EStringToStringMapEntry"/>
101
101
  <details key="date_created" value="2005-09-16 19:52:28" xsi:type="ecore:EStringToStringMapEntry"/>
102
- <details key="ea_stype" value="Class" xsi:type="ecore:EStringToStringMapEntry"/>
103
102
  <details key="date_modified" value="2006-06-22 21:15:25" xsi:type="ecore:EStringToStringMapEntry"/>
104
- <details key="tagged" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
105
103
  <details key="ea_ntype" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
106
- <details key="version" value="1.0" xsi:type="ecore:EStringToStringMapEntry"/>
107
- <details key="package" value="EAPK_F9D8C6E3_4DAD_4aa2_AD47_D0ABA4E93E08" xsi:type="ecore:EStringToStringMapEntry"/>
104
+ <details key="ea_stype" value="Class" xsi:type="ecore:EStringToStringMapEntry"/>
105
+ <details key="gentype" value="Java" xsi:type="ecore:EStringToStringMapEntry"/>
108
106
  <details key="isSpecification" value="false" xsi:type="ecore:EStringToStringMapEntry"/>
107
+ <details key="package" value="EAPK_F9D8C6E3_4DAD_4aa2_AD47_D0ABA4E93E08" xsi:type="ecore:EStringToStringMapEntry"/>
109
108
  <details key="package_name" value="Rooms" xsi:type="ecore:EStringToStringMapEntry"/>
110
- <details key="complexity" value="1" xsi:type="ecore:EStringToStringMapEntry"/>
111
109
  <details key="phase" value="1.0" xsi:type="ecore:EStringToStringMapEntry"/>
110
+ <details key="status" value="Proposed" xsi:type="ecore:EStringToStringMapEntry"/>
112
111
  <details key="style" value="BackColor=-1;BorderColor=-1;BorderWidth=-1;FontColor=-1;VSwimLanes=0;HSwimLanes=0;BorderStyle=0;" xsi:type="ecore:EStringToStringMapEntry"/>
113
- <details key="gentype" value="Java" xsi:type="ecore:EStringToStringMapEntry"/>
112
+ <details key="tagged" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
113
+ <details key="version" value="1.0" xsi:type="ecore:EStringToStringMapEntry"/>
114
114
  </eAnnotations>
115
115
  </eClassifiers>
116
116
  <eClassifiers abstract="false" interface="false" instanceClassName="HouseMetamodel::Rooms::Bathroom" name="Bathroom" eSuperTypes="#//Rooms/Room" xsi:type="ecore:EClass">
117
117
  <eAnnotations xsi:type="ecore:EAnnotation">
118
- <details key="status" value="Proposed" xsi:type="ecore:EStringToStringMapEntry"/>
118
+ <details key="complexity" value="1" xsi:type="ecore:EStringToStringMapEntry"/>
119
119
  <details key="date_created" value="2006-06-27 08:32:25" xsi:type="ecore:EStringToStringMapEntry"/>
120
- <details key="ea_stype" value="Class" xsi:type="ecore:EStringToStringMapEntry"/>
121
120
  <details key="date_modified" value="2006-06-27 08:34:23" xsi:type="ecore:EStringToStringMapEntry"/>
122
- <details key="tagged" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
123
121
  <details key="ea_ntype" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
124
- <details key="version" value="1.0" xsi:type="ecore:EStringToStringMapEntry"/>
125
- <details key="package" value="EAPK_F9D8C6E3_4DAD_4aa2_AD47_D0ABA4E93E08" xsi:type="ecore:EStringToStringMapEntry"/>
122
+ <details key="ea_stype" value="Class" xsi:type="ecore:EStringToStringMapEntry"/>
123
+ <details key="gentype" value="Java" xsi:type="ecore:EStringToStringMapEntry"/>
126
124
  <details key="isSpecification" value="false" xsi:type="ecore:EStringToStringMapEntry"/>
125
+ <details key="package" value="EAPK_F9D8C6E3_4DAD_4aa2_AD47_D0ABA4E93E08" xsi:type="ecore:EStringToStringMapEntry"/>
127
126
  <details key="package_name" value="Rooms" xsi:type="ecore:EStringToStringMapEntry"/>
128
- <details key="complexity" value="1" xsi:type="ecore:EStringToStringMapEntry"/>
129
127
  <details key="phase" value="1.0" xsi:type="ecore:EStringToStringMapEntry"/>
128
+ <details key="status" value="Proposed" xsi:type="ecore:EStringToStringMapEntry"/>
130
129
  <details key="style" value="BackColor=-1;BorderColor=-1;BorderWidth=-1;FontColor=-1;VSwimLanes=0;HSwimLanes=0;BorderStyle=0;" xsi:type="ecore:EStringToStringMapEntry"/>
131
- <details key="gentype" value="Java" xsi:type="ecore:EStringToStringMapEntry"/>
130
+ <details key="tagged" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
131
+ <details key="version" value="1.0" xsi:type="ecore:EStringToStringMapEntry"/>
132
132
  </eAnnotations>
133
133
  </eClassifiers>
134
134
  <eClassifiers abstract="false" interface="false" instanceClassName="HouseMetamodel::Rooms::Kitchen" name="Kitchen" eSuperTypes="#//MeetingPlace #//Rooms/Room" xsi:type="ecore:EClass">
@@ -138,20 +138,20 @@
138
138
  </eAnnotations>
139
139
  </eStructuralFeatures>
140
140
  <eAnnotations xsi:type="ecore:EAnnotation">
141
- <details key="status" value="Proposed" xsi:type="ecore:EStringToStringMapEntry"/>
141
+ <details key="complexity" value="1" xsi:type="ecore:EStringToStringMapEntry"/>
142
142
  <details key="date_created" value="2005-11-30 19:26:13" xsi:type="ecore:EStringToStringMapEntry"/>
143
- <details key="ea_stype" value="Class" xsi:type="ecore:EStringToStringMapEntry"/>
144
143
  <details key="date_modified" value="2006-06-22 21:15:34" xsi:type="ecore:EStringToStringMapEntry"/>
145
- <details key="tagged" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
146
144
  <details key="ea_ntype" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
147
- <details key="version" value="1.0" xsi:type="ecore:EStringToStringMapEntry"/>
148
- <details key="package" value="EAPK_F9D8C6E3_4DAD_4aa2_AD47_D0ABA4E93E08" xsi:type="ecore:EStringToStringMapEntry"/>
145
+ <details key="ea_stype" value="Class" xsi:type="ecore:EStringToStringMapEntry"/>
146
+ <details key="gentype" value="Java" xsi:type="ecore:EStringToStringMapEntry"/>
149
147
  <details key="isSpecification" value="false" xsi:type="ecore:EStringToStringMapEntry"/>
148
+ <details key="package" value="EAPK_F9D8C6E3_4DAD_4aa2_AD47_D0ABA4E93E08" xsi:type="ecore:EStringToStringMapEntry"/>
150
149
  <details key="package_name" value="Rooms" xsi:type="ecore:EStringToStringMapEntry"/>
151
- <details key="complexity" value="1" xsi:type="ecore:EStringToStringMapEntry"/>
152
150
  <details key="phase" value="1.0" xsi:type="ecore:EStringToStringMapEntry"/>
151
+ <details key="status" value="Proposed" xsi:type="ecore:EStringToStringMapEntry"/>
153
152
  <details key="style" value="BackColor=-1;BorderColor=-1;BorderWidth=-1;FontColor=-1;VSwimLanes=0;HSwimLanes=0;BorderStyle=0;" xsi:type="ecore:EStringToStringMapEntry"/>
154
- <details key="gentype" value="Java" xsi:type="ecore:EStringToStringMapEntry"/>
153
+ <details key="tagged" value="0" xsi:type="ecore:EStringToStringMapEntry"/>
154
+ <details key="version" value="1.0" xsi:type="ecore:EStringToStringMapEntry"/>
155
155
  </eAnnotations>
156
156
  </eClassifiers>
157
157
  </eSubpackages>
@@ -1,7 +1,7 @@
1
1
  $:.unshift File.dirname(__FILE__) + "/../lib"
2
2
 
3
3
  require 'test/unit'
4
- require 'rgen/method_delegation'
4
+ require 'rgen/util/method_delegation'
5
5
 
6
6
  class MethodDelegationTest < Test::Unit::TestCase
7
7
  include RGen
@@ -82,12 +82,12 @@ class MethodDelegationTest < Test::Unit::TestCase
82
82
 
83
83
  def test_const_missing
84
84
  surroundingModule = Module.nesting.first
85
- MethodDelegation.registerDelegate(ConstPathElement, surroundingModule, "const_missing")
85
+ Util::MethodDelegation.registerDelegate(ConstPathElement, surroundingModule, "const_missing")
86
86
 
87
87
  assert_equal "SomeArbitraryConst", SomeArbitraryConst.to_s
88
88
  assert_equal "AnotherConst::A::B::C", AnotherConst::A::B::C.to_s
89
89
 
90
- MethodDelegation.unregisterDelegate(ConstPathElement, surroundingModule, "const_missing")
90
+ Util::MethodDelegation.unregisterDelegate(ConstPathElement, surroundingModule, "const_missing")
91
91
  assert_raise NameError do
92
92
  SomeArbitraryConst
93
93
  end
@@ -97,8 +97,8 @@ class MethodDelegationTest < Test::Unit::TestCase
97
97
  delegate1 = TestDelegate.new
98
98
  delegate2 = TestDelegate.new
99
99
 
100
- MethodDelegation.registerDelegate(delegate1, delegator, method)
101
- MethodDelegation.registerDelegate(delegate2, delegator, method)
100
+ Util::MethodDelegation.registerDelegate(delegate1, delegator, method)
101
+ Util::MethodDelegation.registerDelegate(delegate2, delegator, method)
102
102
 
103
103
  assert delegator.respond_to?(:_methodDelegates)
104
104
  if newMethod
@@ -145,8 +145,8 @@ class MethodDelegationTest < Test::Unit::TestCase
145
145
  assert_equal 2, delegate2.callcount
146
146
 
147
147
  # calling unregister with a non existing method has no effect
148
- MethodDelegation.unregisterDelegate(delegate1, delegator, "xxx")
149
- MethodDelegation.unregisterDelegate(delegate1, delegator, method)
148
+ Util::MethodDelegation.unregisterDelegate(delegate1, delegator, "xxx")
149
+ Util::MethodDelegation.unregisterDelegate(delegate1, delegator, method)
150
150
 
151
151
  checkCallOriginal(delegator, method, originalResult, newMethod)
152
152
  # delegate1 not called any more
@@ -154,7 +154,7 @@ class MethodDelegationTest < Test::Unit::TestCase
154
154
  # delegate2 is still called
155
155
  assert_equal 3, delegate2.callcount
156
156
 
157
- MethodDelegation.unregisterDelegate(delegate2, delegator, method)
157
+ Util::MethodDelegation.unregisterDelegate(delegate2, delegator, method)
158
158
 
159
159
  checkCallOriginal(delegator, method, originalResult, newMethod)
160
160
  # both delegates not called any more
@@ -175,4 +175,4 @@ class MethodDelegationTest < Test::Unit::TestCase
175
175
  assert_equal originalResult, result
176
176
  end
177
177
  end
178
- end
178
+ end
@@ -1,6 +1,6 @@
1
1
  ePackage "ECore", :eSuperPackage => "" do
2
2
  eClass "EObject", :abstract => false, :interface => false, :eSubTypes => ["EAnnotation"], :instanceClassName => "RGen::ECore::EObject"
3
- eClass "EModelElement", :abstract => false, :interface => false, :eSubTypes => ["EAnnotation", "ENamedElement", "EFactory"], :instanceClassName => "RGen::ECore::EModelElement" do
3
+ eClass "EModelElement", :abstract => false, :interface => false, :eSubTypes => ["EAnnotation", "ENamedElement", "ETypeArgument", "EFactory"], :instanceClassName => "RGen::ECore::EModelElement" do
4
4
  eReference "eAnnotations", :containment => true, :resolveProxies => false, :eOpposite => "EAnnotation.eModelElement", :upperBound => -1, :eType => "EAnnotation"
5
5
  end
6
6
  eClass "EAnnotation", :abstract => false, :interface => false, :instanceClassName => "RGen::ECore::EAnnotation" do
@@ -10,10 +10,10 @@ ePackage "ECore", :eSuperPackage => "" do
10
10
  eReference "contents", :containment => true, :resolveProxies => false, :upperBound => -1, :eType => "EObject"
11
11
  eReference "references", :upperBound => -1, :eType => "EObject"
12
12
  end
13
- eClass "ENamedElement", :abstract => false, :interface => false, :eSubTypes => ["ETypedElement", "EEnumLiteral", "EPackage"], :instanceClassName => "RGen::ECore::ENamedElement" do
13
+ eClass "ENamedElement", :abstract => false, :interface => false, :eSubTypes => ["EClassifier", "ETypedElement", "EEnumLiteral", "EPackage"], :instanceClassName => "RGen::ECore::ENamedElement" do
14
14
  eAttribute "name", :eType => ""
15
15
  end
16
- eClass "ETypedElement", :abstract => false, :interface => false, :eSubTypes => ["EParameter"], :instanceClassName => "RGen::ECore::ETypedElement" do
16
+ eClass "ETypedElement", :abstract => false, :interface => false, :eSubTypes => ["EOperation", "EStructuralFeature", "EParameter"], :instanceClassName => "RGen::ECore::ETypedElement" do
17
17
  eAttribute "lowerBound", :defaultValueLiteral => "0", :eType => ""
18
18
  eAttribute "ordered", :defaultValueLiteral => "true", :eType => ""
19
19
  eAttribute "unique", :defaultValueLiteral => "true", :eType => ""
@@ -22,7 +22,7 @@ ePackage "ECore", :eSuperPackage => "" do
22
22
  eAttribute "required", :changeable => false, :derived => true, :transient => true, :volatile => true, :eType => ""
23
23
  eReference "eType", :eType => "EClassifier"
24
24
  end
25
- eClass "EStructuralFeature", :abstract => false, :interface => false, :eSuperTypes => ["ETypedElement"], :instanceClassName => "RGen::ECore::EStructuralFeature" do
25
+ eClass "EStructuralFeature", :abstract => false, :interface => false, :eSubTypes => ["EAttribute"], :instanceClassName => "RGen::ECore::EStructuralFeature" do
26
26
  eAttribute "changeable", :defaultValueLiteral => "true", :eType => ""
27
27
  eAttribute "defaultValue", :changeable => false, :derived => true, :transient => true, :volatile => true, :eType => ""
28
28
  eAttribute "defaultValueLiteral", :eType => ""
@@ -32,19 +32,28 @@ ePackage "ECore", :eSuperPackage => "" do
32
32
  eAttribute "volatile", :defaultValueLiteral => "false", :eType => ""
33
33
  eReference "eContainingClass", :eOpposite => "EClass.eStructuralFeatures", :eType => "EClass"
34
34
  end
35
- eClass "EAttribute", :abstract => false, :interface => false, :eSuperTypes => ["EStructuralFeature"], :instanceClassName => "RGen::ECore::EAttribute" do
35
+ eClass "EAttribute", :abstract => false, :interface => false, :instanceClassName => "RGen::ECore::EAttribute" do
36
36
  eAttribute "iD", :defaultValueLiteral => "false", :eType => ""
37
37
  eReference "eAttributeType", :changeable => false, :derived => true, :transient => true, :volatile => true, :lowerBound => 1, :eType => "EDataType"
38
38
  end
39
- eClass "EClassifier", :abstract => false, :interface => false, :eSuperTypes => ["ENamedElement"], :eSubTypes => ["EDataType"], :instanceClassName => "RGen::ECore::EClassifier" do
39
+ eClass "EClassifier", :abstract => false, :interface => false, :eSubTypes => ["EClass"], :instanceClassName => "RGen::ECore::EClassifier" do
40
40
  eAttribute "defaultValue", :changeable => false, :derived => true, :transient => true, :volatile => true, :eType => ""
41
41
  eAttribute "instanceClass", :changeable => false, :derived => true, :transient => true, :volatile => true, :eType => ""
42
42
  eAttribute "instanceClassName", :eType => ""
43
43
  eReference "ePackage", :eOpposite => "EPackage.eClassifiers", :eType => "EPackage"
44
44
  end
45
- eClass "EDataType", :abstract => false, :interface => false, :eSubTypes => ["EEnum"], :instanceClassName => "RGen::ECore::EDataType" do
45
+ eClass "EDataType", :abstract => false, :interface => false, :eSuperTypes => ["EClassifier"], :eSubTypes => ["EGenericType", "EEnum"], :instanceClassName => "RGen::ECore::EDataType" do
46
46
  eAttribute "serializable", :eType => ""
47
47
  end
48
+ eClass "EGenericType", :abstract => false, :interface => false, :instanceClassName => "RGen::ECore::EGenericType" do
49
+ eReference "eClassifier", :eType => "EDataType"
50
+ eReference "eParameter", :eOpposite => "EParameter.eGenericType", :eType => "EParameter"
51
+ eReference "eTypeArguments", :containment => true, :eOpposite => "ETypeArgument.eGenericType", :upperBound => -1, :eType => "ETypeArgument"
52
+ end
53
+ eClass "ETypeArgument", :abstract => false, :interface => false, :instanceClassName => "RGen::ECore::ETypeArgument" do
54
+ eReference "eClassifier", :eType => "EDataType"
55
+ eReference "eGenericType", :eOpposite => "EGenericType.eTypeArguments", :eType => "EGenericType"
56
+ end
48
57
  eClass "EEnum", :abstract => false, :interface => false, :instanceClassName => "RGen::ECore::EEnum" do
49
58
  eReference "eLiterals", :containment => true, :resolveProxies => false, :eOpposite => "EEnumLiteral.eEnum", :upperBound => -1, :eType => "EEnumLiteral"
50
59
  end
@@ -56,7 +65,7 @@ ePackage "ECore", :eSuperPackage => "" do
56
65
  eClass "EFactory", :abstract => false, :interface => false, :instanceClassName => "RGen::ECore::EFactory" do
57
66
  eReference "ePackage", :resolveProxies => false, :eOpposite => "EPackage.eFactoryInstance", :transient => true, :lowerBound => 1, :eType => "EPackage"
58
67
  end
59
- eClass "EOperation", :abstract => false, :interface => false, :eSuperTypes => ["ETypedElement"], :instanceClassName => "RGen::ECore::EOperation" do
68
+ eClass "EOperation", :abstract => false, :interface => false, :instanceClassName => "RGen::ECore::EOperation" do
60
69
  eReference "eContainingClass", :eOpposite => "EClass.eOperations", :eType => "EClass"
61
70
  eReference "eParameters", :containment => true, :resolveProxies => false, :eOpposite => "EParameter.eOperation", :upperBound => -1, :eType => "EParameter"
62
71
  eReference "eExceptions", :upperBound => -1, :eType => "EClassifier"
@@ -71,6 +80,7 @@ ePackage "ECore", :eSuperPackage => "" do
71
80
  end
72
81
  eClass "EParameter", :abstract => false, :interface => false, :instanceClassName => "RGen::ECore::EParameter" do
73
82
  eReference "eOperation", :eOpposite => "EOperation.eParameters", :eType => "EOperation"
83
+ eReference "eGenericType", :containment => true, :eOpposite => "EGenericType.eParameter", :eType => "EGenericType"
74
84
  end
75
85
  eClass "EReference", :abstract => false, :interface => false, :eSuperTypes => ["EStructuralFeature"], :instanceClassName => "RGen::ECore::EReference" do
76
86
  eAttribute "container", :changeable => false, :derived => true, :transient => true, :volatile => true, :eType => ""
@@ -83,7 +93,7 @@ ePackage "ECore", :eSuperPackage => "" do
83
93
  eAttribute "key", :eType => ""
84
94
  eAttribute "value", :eType => ""
85
95
  end
86
- eClass "EClass", :abstract => false, :interface => false, :eSuperTypes => ["EClassifier"], :instanceClassName => "RGen::ECore::EClass" do
96
+ eClass "EClass", :abstract => false, :interface => false, :instanceClassName => "RGen::ECore::EClass" do
87
97
  eAttribute "abstract", :eType => ""
88
98
  eAttribute "interface", :eType => ""
89
99
  eReference "eIDAttribute", :resolveProxies => false, :changeable => false, :derived => true, :transient => true, :volatile => true, :eType => "EAttribute"