rgen 0.5.4 → 0.6.0

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.
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"