summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2007-08-31 09:12:53 -0400
committerEike Stepper2007-08-31 09:12:53 -0400
commitb74434a54e748752337096bfeff4604edc120507 (patch)
treed2c6cf279acf1f37e93544e18a5d6c909736d4c2
parentbe097c966f461f5146535c7b546cbd4ee564dd2f (diff)
downloadcdo-b74434a54e748752337096bfeff4604edc120507.zip
cdo-b74434a54e748752337096bfeff4604edc120507.tar.gz
cdo-b74434a54e748752337096bfeff4604edc120507.tar.xz
[201839] Net4j/CDO Components must comform to incubation rules
https://bugs.eclipse.org/bugs/show_bug.cgi?id=201839
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/.classpath9
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/.cvsignore3
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/.project28
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/CDO2 AllTests.launch21
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/CDO2 ContainmentTest.launch21
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/CDO2 CrossReferenceTest.launch21
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/CDO2 InitialTest.launch21
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/CDO2 InvalidationTest.launch21
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/CDO2 TDD.launch19
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/META-INF/MANIFEST.MF17
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/embedded/net4j-embedded.properties6
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/embedded/net4j-embedded.xml64
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/net4j.properties4
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/net4j.xml56
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/My.ecore3
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/about.html42
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/build.properties9
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/copyright.txt8
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/ecore/Ecore.ecore498
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/ecore/XMLNamespace.ecore94
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/ecore/XMLType.ecore518
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/epl-v10.html319
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/license.html319
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/model1.ecore69
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/model2.ecore9
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/plugin.properties19
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AbstractCDOTest.java243
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/Activator.java60
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTests.java36
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ContainmentTest.java273
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/CrossReferenceTest.java263
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DymamicEcoreTest.java80
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DymamicUmlTest.java105
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/EMFTest.java73
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/GeneratedEcoreTest.java58
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InitialTest.java627
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InvalidationTest.java341
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/PackageRegistryTest.java112
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/TDD.java88
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/internal/CDOTestPlugin.java40
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/10536.uml42
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/10537.uml69
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/Ecore.uml977
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/Infrastructure.uml4818
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/L0.uml18
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/L1.uml45
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/L2.uml57
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/L3.uml57
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/LM.uml18
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/Superstructure.uml14306
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/UML.ecore15558
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/UML.merged.uml15806
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/UML.uml1947
54 files changed, 58172 insertions, 170 deletions
diff --git a/plugins/org.eclipse.emf.cdo.tests/.classpath b/plugins/org.eclipse.emf.cdo.tests/.classpath
new file mode 100644
index 0000000..9e7e4b0
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/.classpath
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/org.eclipse.net4j.db.derby"/>
+ <classpathentry kind="lib" path="/org.eclipse.net4j.db.derby/lib/derby.jar"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.emf.cdo.tests/.cvsignore b/plugins/org.eclipse.emf.cdo.tests/.cvsignore
new file mode 100644
index 0000000..f43b387
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/.cvsignore
@@ -0,0 +1,3 @@
+bin
+doc
+model1X.ecore
diff --git a/plugins/org.eclipse.emf.cdo.tests/.project b/plugins/org.eclipse.emf.cdo.tests/.project
new file mode 100644
index 0000000..e05af07
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.emf.cdo.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.emf.cdo.tests/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.emf.cdo.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..85dc5b8
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Sun Jan 07 14:27:04 CET 2007
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/plugins/org.eclipse.emf.cdo.tests/CDO2 AllTests.launch b/plugins/org.eclipse.emf.cdo.tests/CDO2 AllTests.launch
new file mode 100644
index 0000000..d13c4a9
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/CDO2 AllTests.launch
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/tdd/AllTests.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.cdo.tests.AllTests"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emf.cdo.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddebug=true"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.emf.cdo.tests/CDO2 ContainmentTest.launch b/plugins/org.eclipse.emf.cdo.tests/CDO2 ContainmentTest.launch
new file mode 100644
index 0000000..3a7041d
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/CDO2 ContainmentTest.launch
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/tdd/ContainmentTest.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.cdo.tests.ContainmentTest"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emf.cdo.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddebug=true"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.emf.cdo.tests/CDO2 CrossReferenceTest.launch b/plugins/org.eclipse.emf.cdo.tests/CDO2 CrossReferenceTest.launch
new file mode 100644
index 0000000..f3e604c
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/CDO2 CrossReferenceTest.launch
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/tdd/CrossReferenceTest.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.cdo.tests.CrossReferenceTest"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emf.cdo.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddebug=true"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.emf.cdo.tests/CDO2 InitialTest.launch b/plugins/org.eclipse.emf.cdo.tests/CDO2 InitialTest.launch
new file mode 100644
index 0000000..a431a65
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/CDO2 InitialTest.launch
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/tdd/InitialTest.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.cdo.tests.InitialTest"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emf.cdo.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddebug=true"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.emf.cdo.tests/CDO2 InvalidationTest.launch b/plugins/org.eclipse.emf.cdo.tests/CDO2 InvalidationTest.launch
new file mode 100644
index 0000000..5f6f90f
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/CDO2 InvalidationTest.launch
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/tdd/InvalidationTest.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.cdo.tests.InvalidationTest"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emf.cdo.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddebug=true"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.emf.cdo.tests/CDO2 TDD.launch b/plugins/org.eclipse.emf.cdo.tests/CDO2 TDD.launch
new file mode 100644
index 0000000..45c7601
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/CDO2 TDD.launch
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/tdd/TDD.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/>
+<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;folder nest=&amp;quot;false&amp;quot; path=&amp;quot;/org.eclipse.emf.cdo.weaver.ajdt/ecore&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.folder&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.cdo.tests.TDD"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emf.cdo.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddebug=true"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.emf.cdo.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a163542
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.emf.cdo.tests
+Bundle-Version: 0.8.0.qualifier
+Bundle-Activator: org.eclipse.emf.cdo.tests.Activator
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.net4j.tests,
+ org.eclipse.net4j.tcp,
+ org.eclipse.emf.cdo.server,
+ org.eclipse.emf.cdo.server.db,
+ org.eclipse.emf.cdo,
+ org.eclipse.emf.cdo.tests.model1,
+ org.eclipse.emf.ecore.xmi
+Eclipse-LazyStart: true
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/embedded/net4j-embedded.properties b/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/embedded/net4j-embedded.properties
deleted file mode 100644
index c79f2c2..0000000
--- a/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/embedded/net4j-embedded.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-# Service
-acceptor.listenAddr=0.0.0.0
-acceptor.listenPort=2037
-
-# Internal
-connectionManager.maxConnections=50
diff --git a/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/embedded/net4j-embedded.xml b/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/embedded/net4j-embedded.xml
deleted file mode 100644
index a5751d1..0000000
--- a/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/embedded/net4j-embedded.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
- "http://www.springframework.org/dtd/spring-beans.dtd">
-<beans>
-
- <!-- ######################################################## -->
- <bean id="propertyConfigurer"
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="locations">
- <list>
- <value> plugin:/META-INF/net4j/embedded/net4j-embedded.properties </value>
- </list>
- </property>
- </bean>
-
- <!-- ######################################################## -->
- <bean id="serverControlProtocol"
- class="org.eclipse.net4j.core.protocol.ServerControlProtocol">
- <property name="protocolManager">
- <ref bean="protocolManager"/>
- </property>
- </bean>
-
- <!-- ######################################################## -->
- <bean id="clientControlProtocol"
- class="org.eclipse.net4j.core.protocol.ClientControlProtocol">
- <property name="protocolManager">
- <ref bean="protocolManager"/>
- </property>
- </bean>
-
- <!-- ######################################################## -->
- <bean id="connectionManager"
- class="org.eclipse.net4j.core.impl.ConnectionManagerImpl">
- <property name="maxConnections">
- <value>${connectionManager.maxConnections}</value>
- </property>
- </bean>
-
- <!-- ######################################################## -->
- <bean id="connector" class="org.eclipse.net4j.embedded.impl.ActiveEmbeddedConnectorImpl">
- <property name="bufferPool">
- <ref bean="bufferPool"/>
- </property>
- <property name="protocolManager">
- <ref bean="protocolManager"/>
- </property>
- </bean>
-
- <!-- ######################################################## -->
- <bean id="slave" singleton="false"
- class="org.eclipse.net4j.embedded.impl.PassiveEmbeddedConnectorImpl">
- <property name="bufferPool">
- <ref bean="bufferPool"/>
- </property>
- <property name="connectionManager">
- <ref local="connectionManager"/>
- </property>
- <property name="protocolManager">
- <ref bean="protocolManager"/>
- </property>
- </bean>
-
-</beans>
diff --git a/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/net4j.properties b/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/net4j.properties
deleted file mode 100644
index 451c043..0000000
--- a/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/net4j.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-# Internal
-randomizer.algorithm=SHA1PRNG
-bufferPool.bufferSize=4096
-channel.responseTimeoutMillis=2000
diff --git a/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/net4j.xml b/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/net4j.xml
deleted file mode 100644
index c0ce91c..0000000
--- a/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/net4j.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
- "http://www.springframework.org/dtd/spring-beans.dtd">
-<beans>
-
- <!-- ######################################################## -->
- <bean id="propertyConfigurer"
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="locations">
- <list>
- <value> plugin:/META-INF/net4j/net4j.properties </value>
- </list>
- </property>
- </bean>
-
- <!-- ######################################################## -->
- <bean id="randomizer" class="org.eclipse.net4j.core.impl.RandomizerImpl">
- <property name="algorithmName">
- <value>${randomizer.algorithm}</value>
- </property>
- </bean>
-
- <!-- ######################################################## -->
- <bean id="bufferPool" class="org.eclipse.net4j.core.impl.BufferPoolImpl">
- <property name="bufferSize">
- <value>${bufferPool.bufferSize}</value>
- </property>
- </bean>
-
- <!-- ######################################################## -->
- <bean id="protocolManager"
- class="org.eclipse.net4j.core.impl.ProtocolManagerImpl"/>
-
- <!-- ######################################################## -->
- <bean id="multiplexer" class="org.eclipse.net4j.core.impl.MultiplexerImpl"/>
-
- <!-- ######################################################## -->
- <bean id="channel" singleton="false"
- class="org.eclipse.net4j.core.impl.ChannelImpl">
- <property name="multiplexer">
- <ref local="multiplexer"/>
- </property>
- <property name="responseTimeoutMillis">
- <value>${channel.responseTimeoutMillis}</value>
- </property>
- </bean>
-
- <!-- ######################################################## -->
- <bean id="selectorManager"
- class="org.eclipse.net4j.socket.impl.SelectorManagerImpl"/>
-
- <!-- ######################################################## -->
- <bean id="releaseExecutor"
- class="org.eclipse.net4j.core.impl.QueueingExecutorImpl"/>
-
-</beans>
diff --git a/plugins/org.eclipse.emf.cdo.tests/My.ecore b/plugins/org.eclipse.emf.cdo.tests/My.ecore
new file mode 100644
index 0000000..e9428b9
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/My.ecore
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"/>
diff --git a/plugins/org.eclipse.emf.cdo.tests/about.html b/plugins/org.eclipse.emf.cdo.tests/about.html
new file mode 100644
index 0000000..81a265f
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/about.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+
+ <head>
+
+ <meta content="text/html; charset=ISO-8859-1"
+ http-equiv="Content-Type"/>
+
+ <title>About</title>
+
+ </head>
+
+ <body lang="EN-US">
+
+ <h2>About This Content</h2>
+
+ <p>May 17, 2007</p>
+
+ <h3>License</h3>
+
+ <p>The Eclipse Foundation makes available all content in this
+ plug-in (&quot;Content&quot;). Unless otherwise indicated below,
+ the Content is provided to you under the terms and conditions of
+ the Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of
+ the EPL is available at
+ <a href="http://www.eclipse.org/legal/epl-v10.html">
+ http://www.eclipse.org/legal/epl-v10.html</a>. For purposes of the
+ EPL, &quot;Program&quot; will mean the Content.</p>
+
+ <p>If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor&apos;s license that was provided with the Content. If
+ no such license exists, contact the Redistributor. Unless otherwise
+ indicated below, the terms and conditions of the EPL still apply to
+ any source code in the Content.</p>
+
+ </body>
+
+</html>
+
diff --git a/plugins/org.eclipse.emf.cdo.tests/build.properties b/plugins/org.eclipse.emf.cdo.tests/build.properties
new file mode 100644
index 0000000..42d4758
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/build.properties
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ about.html,\
+ copyright.txt,\
+ epl-v10.html,\
+ license.html,\
+ plugin.properties
diff --git a/plugins/org.eclipse.emf.cdo.tests/copyright.txt b/plugins/org.eclipse.emf.cdo.tests/copyright.txt
new file mode 100644
index 0000000..025f152
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/copyright.txt
@@ -0,0 +1,8 @@
+Copyright (c) 2004 - 2007 Eike Stepper, Germany.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+ Eike Stepper - initial API and implementation \ No newline at end of file
diff --git a/plugins/org.eclipse.emf.cdo.tests/ecore/Ecore.ecore b/plugins/org.eclipse.emf.cdo.tests/ecore/Ecore.ecore
new file mode 100644
index 0000000..7e266df
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/ecore/Ecore.ecore
@@ -0,0 +1,498 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage 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" name="ecore"
+ nsURI="http://www.eclipse.org/emf/2002/Ecore" nsPrefix="ecore">
+ <eClassifiers xsi:type="ecore:EClass" name="EAttribute" eSuperTypes="#//EStructuralFeature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="ConsistentTransient"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="iD" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAttributeType" lowerBound="1"
+ eType="#//EDataType" changeable="false" volatile="true" transient="true" derived="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EAnnotation" eSuperTypes="#//EModelElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="WellFormedSourceURI"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="source" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="details" upperBound="-1"
+ eType="#//EStringToStringMapEntry" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eModelElement" eType="#//EModelElement"
+ transient="true" resolveProxies="false" eOpposite="#//EModelElement/eAnnotations"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="contents" upperBound="-1"
+ eType="#//EObject" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="references" upperBound="-1"
+ eType="#//EObject"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EClass" eSuperTypes="#//EClassifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="InterfaceIsAbstract AtMostOneID UniqueFeatureNames UniqueOperationSignatures NoCircularSuperTypes WellFormedMapEntryClass ConsistentSuperTypes"/>
+ </eAnnotations>
+ <eOperations name="isSuperTypeOf" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eParameters name="someClass" eType="#//EClass"/>
+ </eOperations>
+ <eOperations name="getFeatureCount" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eOperations name="getEStructuralFeature" eType="#//EStructuralFeature">
+ <eParameters name="featureID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="getFeatureID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
+ <eParameters name="feature" eType="#//EStructuralFeature"/>
+ </eOperations>
+ <eOperations name="getEStructuralFeature" eType="#//EStructuralFeature">
+ <eParameters name="featureName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="abstract" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="interface" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eSuperTypes" upperBound="-1"
+ eType="#//EClass" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eOperations" upperBound="-1"
+ eType="#//EOperation" containment="true" resolveProxies="false" eOpposite="#//EOperation/eContainingClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAllAttributes" upperBound="-1"
+ eType="#//EAttribute" changeable="false" volatile="true" transient="true"
+ derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAllReferences" upperBound="-1"
+ eType="#//EReference" changeable="false" volatile="true" transient="true"
+ derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eReferences" upperBound="-1"
+ eType="#//EReference" changeable="false" volatile="true" transient="true"
+ derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAttributes" upperBound="-1"
+ eType="#//EAttribute" changeable="false" volatile="true" transient="true"
+ derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAllContainments" upperBound="-1"
+ eType="#//EReference" changeable="false" volatile="true" transient="true"
+ derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAllOperations" upperBound="-1"
+ eType="#//EOperation" changeable="false" volatile="true" transient="true"
+ derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAllStructuralFeatures"
+ upperBound="-1" eType="#//EStructuralFeature" changeable="false" volatile="true"
+ transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAllSuperTypes" upperBound="-1"
+ eType="#//EClass" changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eIDAttribute" eType="#//EAttribute"
+ changeable="false" volatile="true" transient="true" derived="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eStructuralFeatures" upperBound="-1"
+ eType="#//EStructuralFeature" containment="true" resolveProxies="false" eOpposite="#//EStructuralFeature/eContainingClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eGenericSuperTypes" upperBound="-1"
+ eType="#//EGenericType" unsettable="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAllGenericSuperTypes"
+ upperBound="-1" eType="#//EGenericType" changeable="false" volatile="true"
+ transient="true" derived="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EClassifier" abstract="true" eSuperTypes="#//ENamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="WellFormedInstanceTypeName UniqueTypeParameterNames"/>
+ </eAnnotations>
+ <eOperations name="isInstance" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eParameters name="object" eType="#//EJavaObject"/>
+ </eOperations>
+ <eOperations name="getClassifierID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="instanceClassName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="instanceClass" changeable="false"
+ volatile="true" transient="true" derived="true">
+ <eGenericType eClassifier="#//EJavaClass">
+ <eTypeArguments/>
+ </eGenericType>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValue" eType="#//EJavaObject"
+ changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="instanceTypeName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ePackage" eType="#//EPackage"
+ changeable="false" transient="true" eOpposite="#//EPackage/eClassifiers"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eTypeParameters" upperBound="-1"
+ eType="#//ETypeParameter" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EDataType" eSuperTypes="#//EClassifier">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="serializable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EEnum" eSuperTypes="#//EDataType">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="UniqueEnumeratorNames UniqueEnumeratorLiterals"/>
+ </eAnnotations>
+ <eOperations name="getEEnumLiteral" eType="#//EEnumLiteral">
+ <eParameters name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getEEnumLiteral" eType="#//EEnumLiteral">
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="getEEnumLiteralByLiteral" eType="#//EEnumLiteral">
+ <eParameters name="literal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eLiterals" upperBound="-1"
+ eType="#//EEnumLiteral" containment="true" resolveProxies="false" eOpposite="#//EEnumLiteral/eEnum"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EEnumLiteral" eSuperTypes="#//ENamedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="instance" eType="#//EEnumerator"
+ transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="literal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eEnum" eType="#//EEnum"
+ changeable="false" transient="true" resolveProxies="false" eOpposite="#//EEnum/eLiterals"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EFactory" eSuperTypes="#//EModelElement">
+ <eOperations name="create" eType="#//EObject">
+ <eParameters name="eClass" eType="#//EClass"/>
+ </eOperations>
+ <eOperations name="createFromString" eType="#//EJavaObject">
+ <eParameters name="eDataType" eType="#//EDataType"/>
+ <eParameters name="literalValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="convertToString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+ <eParameters name="eDataType" eType="#//EDataType"/>
+ <eParameters name="instanceValue" eType="#//EJavaObject"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ePackage" lowerBound="1"
+ eType="#//EPackage" transient="true" resolveProxies="false" eOpposite="#//EPackage/eFactoryInstance"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EModelElement" abstract="true" eSuperTypes="#//EObject">
+ <eOperations name="getEAnnotation" eType="#//EAnnotation">
+ <eParameters name="source" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAnnotations" upperBound="-1"
+ eType="#//EAnnotation" containment="true" resolveProxies="false" eOpposite="#//EAnnotation/eModelElement"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ENamedElement" abstract="true" eSuperTypes="#//EModelElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="WellFormedName"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EObject">
+ <eOperations name="eClass" eType="#//EClass"/>
+ <eOperations name="eIsProxy" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eOperations name="eResource" eType="#//EResource"/>
+ <eOperations name="eContainer" eType="#//EObject"/>
+ <eOperations name="eContainingFeature" eType="#//EStructuralFeature"/>
+ <eOperations name="eContainmentFeature" eType="#//EReference"/>
+ <eOperations name="eContents">
+ <eGenericType eClassifier="#//EEList">
+ <eTypeArguments eClassifier="#//EObject"/>
+ </eGenericType>
+ </eOperations>
+ <eOperations name="eAllContents">
+ <eGenericType eClassifier="#//ETreeIterator">
+ <eTypeArguments eClassifier="#//EObject"/>
+ </eGenericType>
+ </eOperations>
+ <eOperations name="eCrossReferences">
+ <eGenericType eClassifier="#//EEList">
+ <eTypeArguments eClassifier="#//EObject"/>
+ </eGenericType>
+ </eOperations>
+ <eOperations name="eGet" eType="#//EJavaObject">
+ <eParameters name="feature" eType="#//EStructuralFeature"/>
+ </eOperations>
+ <eOperations name="eGet" eType="#//EJavaObject">
+ <eParameters name="feature" eType="#//EStructuralFeature"/>
+ <eParameters name="resolve" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eOperations>
+ <eOperations name="eSet">
+ <eParameters name="feature" eType="#//EStructuralFeature"/>
+ <eParameters name="newValue" eType="#//EJavaObject"/>
+ </eOperations>
+ <eOperations name="eIsSet" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eParameters name="feature" eType="#//EStructuralFeature"/>
+ </eOperations>
+ <eOperations name="eUnset">
+ <eParameters name="feature" eType="#//EStructuralFeature"/>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EOperation" eSuperTypes="#//ETypedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="UniqueParameterNames UniqueTypeParameterNames NoRepeatingVoid"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eContainingClass" eType="#//EClass"
+ changeable="false" transient="true" resolveProxies="false" eOpposite="#//EClass/eOperations"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eTypeParameters" upperBound="-1"
+ eType="#//ETypeParameter" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eParameters" upperBound="-1"
+ eType="#//EParameter" containment="true" resolveProxies="false" eOpposite="#//EParameter/eOperation"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eExceptions" upperBound="-1"
+ eType="#//EClassifier" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eGenericExceptions" upperBound="-1"
+ eType="#//EGenericType" unsettable="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EPackage" eSuperTypes="#//ENamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="WellFormedNsURI WellFormedNsPrefix UniqueSubpackageNames UniqueClassifierNames UniqueNsURIs"/>
+ </eAnnotations>
+ <eOperations name="getEClassifier" eType="#//EClassifier">
+ <eParameters name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="nsURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="nsPrefix" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eFactoryInstance" lowerBound="1"
+ eType="#//EFactory" transient="true" resolveProxies="false" eOpposite="#//EFactory/ePackage"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eClassifiers" upperBound="-1"
+ eType="#//EClassifier" containment="true" eOpposite="#//EClassifier/ePackage"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eSubpackages" upperBound="-1"
+ eType="#//EPackage" containment="true" eOpposite="#//EPackage/eSuperPackage"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eSuperPackage" eType="#//EPackage"
+ changeable="false" transient="true" eOpposite="#//EPackage/eSubpackages"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EParameter" eSuperTypes="#//ETypedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eOperation" eType="#//EOperation"
+ changeable="false" transient="true" resolveProxies="false" eOpposite="#//EOperation/eParameters"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EReference" eSuperTypes="#//EStructuralFeature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="ConsistentOpposite SingleContainer ConsistentKeys"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="containment" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="container" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="resolveProxies" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eOpposite" eType="#//EReference"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eReferenceType" lowerBound="1"
+ eType="#//EClass" changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eKeys" upperBound="-1"
+ eType="#//EAttribute"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EStructuralFeature" abstract="true"
+ eSuperTypes="#//ETypedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="ValidDefaultValueLiteral"/>
+ </eAnnotations>
+ <eOperations name="getFeatureID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eOperations name="getContainerClass">
+ <eGenericType eClassifier="#//EJavaClass">
+ <eTypeArguments/>
+ </eGenericType>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="changeable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="volatile" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="transient" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValueLiteral" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValue" eType="#//EJavaObject"
+ changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="unsettable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="derived" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eContainingClass" eType="#//EClass"
+ changeable="false" transient="true" resolveProxies="false" eOpposite="#//EClass/eStructuralFeatures"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ETypedElement" abstract="true" eSuperTypes="#//ENamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="ValidLowerBound ValidUpperBound ConsistentBounds ValidType"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="ordered" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="unique" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lowerBound" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="upperBound" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="1"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="many" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="required" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eType" eType="#//EClassifier"
+ volatile="true" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eGenericType" eType="#//EGenericType"
+ volatile="true" unsettable="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EBigDecimal" instanceClassName="java.math.BigDecimal">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#decimal"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EBigInteger" instanceClassName="java.math.BigInteger">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#integer"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EBoolean" instanceClassName="boolean">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#boolean"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EBooleanObject" instanceClassName="java.lang.Boolean">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="EBoolean"/>
+ <details key="name" value="EBoolean:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EByte" instanceClassName="byte">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#byte"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EByteArray" instanceClassName="byte[]">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#hexBinary"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EByteObject" instanceClassName="java.lang.Byte">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="EByte"/>
+ <details key="name" value="EByte:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EChar" instanceClassName="char"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="ECharacterObject" instanceClassName="java.lang.Character">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="EChar"/>
+ <details key="name" value="EChar:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EDate" instanceClassName="java.util.Date"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="EDiagnosticChain" instanceClassName="org.eclipse.emf.common.util.DiagnosticChain"
+ serializable="false"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="EDouble" instanceClassName="double">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#double"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EDoubleObject" instanceClassName="java.lang.Double">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="EDouble"/>
+ <details key="name" value="EDouble:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EEList" instanceClassName="org.eclipse.emf.common.util.EList"
+ serializable="false">
+ <eTypeParameters name="E"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EEnumerator" instanceClassName="org.eclipse.emf.common.util.Enumerator"
+ serializable="false"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="EFeatureMap" instanceClassName="org.eclipse.emf.ecore.util.FeatureMap"
+ serializable="false"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="EFeatureMapEntry" instanceClassName="org.eclipse.emf.ecore.util.FeatureMap$Entry"
+ serializable="false"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="EFloat" instanceClassName="float">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#float"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EFloatObject" instanceClassName="java.lang.Float">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="EFloat"/>
+ <details key="name" value="EFloat:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EInt" instanceClassName="int">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#int"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EIntegerObject" instanceClassName="java.lang.Integer">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="EInt"/>
+ <details key="name" value="EInt:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EJavaClass" instanceClassName="java.lang.Class">
+ <eTypeParameters name="T"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EJavaObject" instanceClassName="java.lang.Object"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="ELong" instanceClassName="long">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#long"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="ELongObject" instanceClassName="java.lang.Long">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="ELong"/>
+ <details key="name" value="ELong:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EMap" instanceClassName="java.util.Map"
+ serializable="false">
+ <eTypeParameters name="K"/>
+ <eTypeParameters name="V"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EResource" instanceClassName="org.eclipse.emf.ecore.resource.Resource"
+ serializable="false"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="EResourceSet" instanceClassName="org.eclipse.emf.ecore.resource.ResourceSet"
+ serializable="false"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="EShort" instanceClassName="short">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#short"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EShortObject" instanceClassName="java.lang.Short">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="EShort"/>
+ <details key="name" value="EShort:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EString" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#string"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EStringToStringMapEntry" instanceClassName="java.util.Map$Entry">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="ETreeIterator" instanceClassName="org.eclipse.emf.common.util.TreeIterator"
+ serializable="false">
+ <eTypeParameters name="E"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EGenericType" eSuperTypes="#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="ConsistentType ConsistentBounds ConsistentArguments"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eUpperBound" eType="#//EGenericType"
+ containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eTypeArguments" upperBound="-1"
+ eType="#//EGenericType" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eRawType" lowerBound="1"
+ eType="#//EClassifier" changeable="false" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eLowerBound" eType="#//EGenericType"
+ containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eTypeParameter" eType="#//ETypeParameter"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eClassifier" eType="#//EClassifier"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ETypeParameter" eSuperTypes="#//ENamedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eBounds" upperBound="-1"
+ eType="#//EGenericType" containment="true" resolveProxies="false"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.cdo.tests/ecore/XMLNamespace.ecore b/plugins/org.eclipse.emf.cdo.tests/ecore/XMLNamespace.ecore
new file mode 100644
index 0000000..ed4ba16
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/ecore/XMLNamespace.ecore
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage 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" name="namespace"
+ nsURI="http://www.w3.org/XML/1998/namespace" nsPrefix="xml">
+ <eAnnotations source="http://www.w3.org/XML/1998/namespace">
+ <details key="lang" value="en"/>
+ </eAnnotations>
+ <eClassifiers xsi:type="ecore:EDataType" name="LangType" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="lang_._type"/>
+ <details key="memberTypes" value="http://www.eclipse.org/emf/2003/XMLType#language lang_._type_._member_._1"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="LangTypeNull" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="lang_._type_._member_._1"/>
+ <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#string"/>
+ <details key="enumeration" value=""/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="SpaceType">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="space_._type"/>
+ </eAnnotations>
+ <eLiterals name="default"/>
+ <eLiterals name="preserve" value="1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="SpaceTypeObject" instanceClassName="org.eclipse.emf.common.util.Enumerator">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="space_._type:Object"/>
+ <details key="baseType" value="space_._type"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XMLNamespaceDocumentRoot">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value=""/>
+ <details key="kind" value="mixed"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mixed" unique="false" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="elementWildcard"/>
+ <details key="name" value=":mixed"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="xMLNSPrefixMap" upperBound="-1"
+ eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"
+ transient="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="xmlns:prefix"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="xSISchemaLocation" upperBound="-1"
+ eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"
+ transient="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="xsi:schemaLocation"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="base" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//AnyURI">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="base"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//ID"
+ iD="true">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="id"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lang" eType="#//LangType">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="lang"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="space" eType="#//SpaceType"
+ defaultValueLiteral="preserve" unsettable="true">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="space"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.cdo.tests/ecore/XMLType.ecore b/plugins/org.eclipse.emf.cdo.tests/ecore/XMLType.ecore
new file mode 100644
index 0000000..a24509b
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/ecore/XMLType.ecore
@@ -0,0 +1,518 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage 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" name="type"
+ nsURI="http://www.eclipse.org/emf/2003/XMLType" nsPrefix="ecore.xml.type">
+ <eClassifiers xsi:type="ecore:EDataType" name="AnySimpleType" instanceClassName="java.lang.Object">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="anySimpleType"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AnyType">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="anyType"/>
+ <details key="kind" value="mixed"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mixed" unique="false" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="elementWildcard"/>
+ <details key="name" value=":mixed"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="any" unique="false" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry"
+ volatile="true" transient="true" derived="true">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="elementWildcard"/>
+ <details key="wildcards" value="##any"/>
+ <details key="name" value=":1"/>
+ <details key="processing" value="lax"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="anyAttribute" unique="false"
+ upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attributeWildcard"/>
+ <details key="wildcards" value="##any"/>
+ <details key="name" value=":2"/>
+ <details key="processing" value="lax"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="AnyURI" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="anyURI"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Base64Binary" instanceClassName="byte[]">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="base64Binary"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Boolean" instanceClassName="boolean">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="boolean"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="BooleanObject" instanceClassName="java.lang.Boolean">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="boolean:Object"/>
+ <details key="baseType" value="boolean"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Byte" instanceClassName="byte">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="byte"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="ByteObject" instanceClassName="java.lang.Byte">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="byte:Object"/>
+ <details key="baseType" value="byte"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Date" instanceClassName="javax.xml.datatype.XMLGregorianCalendar">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="date"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="DateTime" instanceClassName="javax.xml.datatype.XMLGregorianCalendar">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="dateTime"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Decimal" instanceClassName="java.math.BigDecimal">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="decimal"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Double" instanceClassName="double">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="double"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="DoubleObject" instanceClassName="java.lang.Double">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="double:Object"/>
+ <details key="baseType" value="double"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Duration" instanceClassName="javax.xml.datatype.Duration">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="duration"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="ENTITIES" instanceClassName="java.util.List">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="ENTITIES"/>
+ <details key="baseType" value="ENTITIES_._base"/>
+ <details key="minLength" value="1"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="ENTITIESBase" instanceClassName="java.util.List">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="ENTITIES_._base"/>
+ <details key="itemType" value="ENTITY"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="ENTITY" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="ENTITY"/>
+ <details key="baseType" value="NCName"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Float" instanceClassName="float">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="float"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="FloatObject" instanceClassName="java.lang.Float">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="float:Object"/>
+ <details key="baseType" value="float"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="GDay" instanceClassName="javax.xml.datatype.XMLGregorianCalendar">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="gDay"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="GMonth" instanceClassName="javax.xml.datatype.XMLGregorianCalendar">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="gMonth"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="GMonthDay" instanceClassName="javax.xml.datatype.XMLGregorianCalendar">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="gMonthDay"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="GYear" instanceClassName="javax.xml.datatype.XMLGregorianCalendar">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="gYear"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="GYearMonth" instanceClassName="javax.xml.datatype.XMLGregorianCalendar">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="gYearMonth"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="HexBinary" instanceClassName="byte[]">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="hexBinary"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="ID" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="ID"/>
+ <details key="baseType" value="NCName"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="IDREF" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="IDREF"/>
+ <details key="baseType" value="NCName"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="IDREFS" instanceClassName="java.util.List">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="IDREFS"/>
+ <details key="baseType" value="IDREFS_._base"/>
+ <details key="minLength" value="1"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="IDREFSBase" instanceClassName="java.util.List">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="IDREFS_._base"/>
+ <details key="itemType" value="IDREF"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Int" instanceClassName="int">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="int"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Integer" instanceClassName="java.math.BigInteger">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="integer"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="IntObject" instanceClassName="java.lang.Integer">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="int:Object"/>
+ <details key="baseType" value="int"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Language" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="language"/>
+ <details key="baseType" value="token"/>
+ <details key="pattern" value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Long" instanceClassName="long">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="long"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="LongObject" instanceClassName="java.lang.Long">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="long:Object"/>
+ <details key="baseType" value="long"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Name" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="Name"/>
+ <details key="baseType" value="token"/>
+ <details key="pattern" value="\i\c*"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="NCName" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="NCName"/>
+ <details key="baseType" value="Name"/>
+ <details key="pattern" value="[\i-[:]][\c-[:]]*"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="NegativeInteger" instanceClassName="java.math.BigInteger">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="negativeInteger"/>
+ <details key="baseType" value="nonPositiveInteger"/>
+ <details key="maxInclusive" value="-1"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="NMTOKEN" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="NMTOKEN"/>
+ <details key="baseType" value="token"/>
+ <details key="pattern" value="\c+"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="NMTOKENS" instanceClassName="java.util.List">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="NMTOKENS"/>
+ <details key="baseType" value="NMTOKENS_._base"/>
+ <details key="minLength" value="1"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="NMTOKENSBase" instanceClassName="java.util.List">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="NMTOKENS_._base"/>
+ <details key="itemType" value="NMTOKEN"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="NonNegativeInteger" instanceClassName="java.math.BigInteger">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="nonNegativeInteger"/>
+ <details key="baseType" value="integer"/>
+ <details key="minInclusive" value="0"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="NonPositiveInteger" instanceClassName="java.math.BigInteger">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="nonPositiveInteger"/>
+ <details key="baseType" value="integer"/>
+ <details key="maxInclusive" value="0"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="NormalizedString" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="normalizedString"/>
+ <details key="baseType" value="string"/>
+ <details key="whiteSpace" value="replace"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="NOTATION" instanceClassName="javax.xml.namespace.QName">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="NOTATION"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="PositiveInteger" instanceClassName="java.math.BigInteger">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="positiveInteger"/>
+ <details key="baseType" value="nonNegativeInteger"/>
+ <details key="minInclusive" value="1"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ProcessingInstruction">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="processingInstruction_._type"/>
+ <details key="kind" value="empty"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="data" eType="#//String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="data"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="target" lowerBound="1"
+ eType="#//String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="target"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="QName" instanceClassName="javax.xml.namespace.QName">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="QName"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Short" instanceClassName="short">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="short"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="ShortObject" instanceClassName="java.lang.Short">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="short:Object"/>
+ <details key="baseType" value="short"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SimpleAnyType" eSuperTypes="#//AnyType">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="simpleAnyType"/>
+ <details key="kind" value="simple"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="rawValue" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"
+ volatile="true" transient="true" derived="true">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value=":3"/>
+ <details key="kind" value="simple"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//AnySimpleType"
+ volatile="true" transient="true" derived="true">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value=":4"/>
+ <details key="kind" value="simple"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="instanceType" lowerBound="1"
+ eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EDataType" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value=":5"/>
+ <details key="kind" value="simple"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="String" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="string"/>
+ <details key="whiteSpace" value="preserve"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Time" instanceClassName="javax.xml.datatype.XMLGregorianCalendar">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="time"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Token" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="token"/>
+ <details key="baseType" value="normalizedString"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="UnsignedByte" instanceClassName="short">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="unsignedByte"/>
+ <details key="maxInclusive" value="255"/>
+ <details key="minInclusive" value="0"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="UnsignedByteObject" instanceClassName="java.lang.Short">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="unsignedByte:Object"/>
+ <details key="baseType" value="unsignedByte"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="UnsignedInt" instanceClassName="long">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="unsignedInt"/>
+ <details key="maxInclusive" value="4294967295"/>
+ <details key="minInclusive" value="0"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="UnsignedIntObject" instanceClassName="java.lang.Long">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="unsignedInt:Object"/>
+ <details key="baseType" value="unsignedInt"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="UnsignedLong" instanceClassName="java.math.BigInteger">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="unsignedLong"/>
+ <details key="baseType" value="nonNegativeInteger"/>
+ <details key="maxInclusive" value="18446744073709551615"/>
+ <details key="minInclusive" value="0"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="UnsignedShort" instanceClassName="int">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="unsignedShort"/>
+ <details key="maxInclusive" value="65535"/>
+ <details key="minInclusive" value="0"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="UnsignedShortObject" instanceClassName="java.lang.Integer">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="unsignedShort:Object"/>
+ <details key="baseType" value="unsignedShort"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XMLTypeDocumentRoot">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value=""/>
+ <details key="kind" value="mixed"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mixed" unique="false" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="elementWildcard"/>
+ <details key="name" value=":mixed"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="xMLNSPrefixMap" upperBound="-1"
+ eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"
+ transient="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="xmlns:prefix"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="xSISchemaLocation" upperBound="-1"
+ eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"
+ transient="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="xsi:schemaLocation"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="cDATA" unique="false" upperBound="-2"
+ eType="#//String" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="cDATA"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedGetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="comment" unique="false"
+ upperBound="-2" eType="#//String" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="comment"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedGetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="processingInstruction"
+ upperBound="-2" eType="#//ProcessingInstruction" volatile="true" transient="true"
+ derived="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="processingInstruction"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedGetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="text" unique="false" upperBound="-2"
+ eType="#//String" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="text"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedGetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.cdo.tests/epl-v10.html b/plugins/org.eclipse.emf.cdo.tests/epl-v10.html
new file mode 100644
index 0000000..d7b88e9
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/epl-v10.html
@@ -0,0 +1,319 @@
+<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="ProgId" content="Word.Document">
+<meta name="Generator" content="Microsoft Word 9">
+<meta name="Originator" content="Microsoft Word 9">
+<link rel="File-List" href="http://www.eclipse.org/org/documents/Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml"><title>Eclipse Public License - Version 1.0</title><!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+ <o:Revision>2</o:Revision>
+ <o:TotalTime>3</o:TotalTime>
+ <o:Created>2004-03-05T23:03:00Z</o:Created>
+ <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
+ <o:Pages>4</o:Pages>
+ <o:Words>1626</o:Words>
+ <o:Characters>9270</o:Characters>
+ <o:Lines>77</o:Lines>
+ <o:Paragraphs>18</o:Paragraphs>
+ <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
+ <o:Version>9.4402</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+ <w:TrackRevisions/>
+ </w:WordDocument>
+</xml><![endif]-->
+
+
+<style>
+<!--
+ /* Font Definitions */
+@font-face
+ {font-family:Tahoma;
+ panose-1:2 11 6 4 3 5 4 4 2 4;
+ mso-font-charset:0;
+ mso-generic-font-family:swiss;
+ mso-font-pitch:variable;
+ mso-font-signature:553679495 -2147483648 8 0 66047 0;}
+ /* Style Definitions */
+p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-parent:"";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+p
+ {margin-right:0in;
+ mso-margin-top-alt:auto;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+p.BalloonText, li.BalloonText, div.BalloonText
+ {mso-style-name:"Balloon Text";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:8.0pt;
+ font-family:Tahoma;
+ mso-fareast-font-family:"Times New Roman";}
+@page Section1
+ {size:8.5in 11.0in;
+ margin:1.0in 1.25in 1.0in 1.25in;
+ mso-header-margin:.5in;
+ mso-footer-margin:.5in;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+-->
+</style></head>
+
+<body style="" lang="EN-US">
+
+<div class="Section1">
+
+<p style="text-align: center;" align="center"><b>Eclipse Public License - v 1.0</b>
+</p>
+
+<p><span style="font-size: 10pt;">THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
+THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE,
+REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
+OF THIS AGREEMENT.</span> </p>
+
+<p><b><span style="font-size: 10pt;">1. DEFINITIONS</span></b> </p>
+
+<p><span style="font-size: 10pt;">"Contribution" means:</span> </p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+in the case of the initial Contributor, the initial code and documentation
+distributed under this Agreement, and<br clear="left">
+b) in the case of each subsequent Contributor:</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">i)
+changes to the Program, and</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">ii)
+additions to the Program;</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">where
+such changes and/or additions to the Program originate from and are distributed
+by that particular Contributor. A Contribution 'originates' from a Contributor
+if it was added to the Program by such Contributor itself or anyone acting on
+such Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in conjunction
+with the Program under their own license agreement, and (ii) are not derivative
+works of the Program. </span></p>
+
+<p><span style="font-size: 10pt;">"Contributor" means any person or
+entity that distributes the Program.</span> </p>
+
+<p><span style="font-size: 10pt;">"Licensed Patents " mean patent
+claims licensable by a Contributor which are necessarily infringed by the use
+or sale of its Contribution alone or when combined with the Program. </span></p>
+
+<p><span style="font-size: 10pt;">"Program" means the Contributions
+distributed in accordance with this Agreement.</span> </p>
+
+<p><span style="font-size: 10pt;">"Recipient" means anyone who
+receives the Program under this Agreement, including all Contributors.</span> </p>
+
+<p><b><span style="font-size: 10pt;">2. GRANT OF RIGHTS</span></b> </p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+Subject to the terms of this Agreement, each Contributor hereby grants Recipient
+a non-exclusive, worldwide, royalty-free copyright license to<span style="color: red;"> </span>reproduce, prepare derivative works of, publicly
+display, publicly perform, distribute and sublicense the Contribution of such
+Contributor, if any, and such derivative works, in source code and object code
+form.</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">b)
+Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide,<span style="color: green;"> </span>royalty-free
+patent license under Licensed Patents to make, use, sell, offer to sell, import
+and otherwise transfer the Contribution of such Contributor, if any, in source
+code and object code form. This patent license shall apply to the combination
+of the Contribution and the Program if, at the time the Contribution is added
+by the Contributor, such addition of the Contribution causes such combination
+to be covered by the Licensed Patents. The patent license shall not apply to
+any other combinations which include the Contribution. No hardware per se is
+licensed hereunder. </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">c)
+Recipient understands that although each Contributor grants the licenses to its
+Contributions set forth herein, no assurances are provided by any Contributor
+that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient
+for claims brought by any other entity based on infringement of intellectual
+property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility
+to secure any other intellectual property rights needed, if any. For example,
+if a third party patent license is required to allow Recipient to distribute
+the Program, it is Recipient's responsibility to acquire that license before
+distributing the Program.</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">d)
+Each Contributor represents that to its knowledge it has sufficient copyright
+rights in its Contribution, if any, to grant the copyright license set forth in
+this Agreement. </span></p>
+
+<p><b><span style="font-size: 10pt;">3. REQUIREMENTS</span></b> </p>
+
+<p><span style="font-size: 10pt;">A Contributor may choose to distribute the
+Program in object code form under its own license agreement, provided that:</span>
+</p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+it complies with the terms and conditions of this Agreement; and</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">b)
+its license agreement:</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">i)
+effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title
+and non-infringement, and implied warranties or conditions of merchantability
+and fitness for a particular purpose; </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">ii)
+effectively excludes on behalf of all Contributors all liability for damages,
+including direct, indirect, special, incidental and consequential damages, such
+as lost profits; </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">iii)
+states that any provisions which differ from this Agreement are offered by that
+Contributor alone and not by any other party; and</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">iv)
+states that source code for the Program is available from such Contributor, and
+informs licensees how to obtain it in a reasonable manner on or through a
+medium customarily used for software exchange.<span style="color: blue;"> </span></span></p>
+
+<p><span style="font-size: 10pt;">When the Program is made available in source
+code form:</span> </p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+it must be made available under this Agreement; and </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">b) a
+copy of this Agreement must be included with each copy of the Program. </span></p>
+
+<p><span style="font-size: 10pt;">Contributors may not remove or alter any
+copyright notices contained within the Program. </span></p>
+
+<p><span style="font-size: 10pt;">Each Contributor must identify itself as the
+originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution. </span></p>
+
+<p><b><span style="font-size: 10pt;">4. COMMERCIAL DISTRIBUTION</span></b> </p>
+
+<p><span style="font-size: 10pt;">Commercial distributors of software may
+accept certain responsibilities with respect to end users, business partners
+and the like. While this license is intended to facilitate the commercial use
+of the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create potential
+liability for other Contributors. Therefore, if a Contributor includes the
+Program in a commercial product offering, such Contributor ("Commercial
+Contributor") hereby agrees to defend and indemnify every other
+Contributor ("Indemnified Contributor") against any losses, damages and
+costs (collectively "Losses") arising from claims, lawsuits and other
+legal actions brought by a third party against the Indemnified Contributor to
+the extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor
+to control, and cooperate with the Commercial Contributor in, the defense and
+any related settlement negotiations. The Indemnified Contributor may participate
+in any such claim at its own expense.</span> </p>
+
+<p><span style="font-size: 10pt;">For example, a Contributor might include the
+Program in a commercial product offering, Product X. That Contributor is then a
+Commercial Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance claims and
+warranties are such Commercial Contributor's responsibility alone. Under this
+section, the Commercial Contributor would have to defend claims against the
+other Contributors related to those performance claims and warranties, and if a
+court requires any other Contributor to pay any damages as a result, the
+Commercial Contributor must pay those damages.</span> </p>
+
+<p><b><span style="font-size: 10pt;">5. NO WARRANTY</span></b> </p>
+
+<p><span style="font-size: 10pt;">EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and distributing the
+Program and assumes all risks associated with its exercise of rights under this
+Agreement , including but not limited to the risks and costs of program errors,
+compliance with applicable laws, damage to or loss of data, programs or
+equipment, and unavailability or interruption of operations. </span></p>
+
+<p><b><span style="font-size: 10pt;">6. DISCLAIMER OF LIABILITY</span></b> </p>
+
+<p><span style="font-size: 10pt;">EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
+THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
+
+<p><b><span style="font-size: 10pt;">7. GENERAL</span></b> </p>
+
+<p><span style="font-size: 10pt;">If any provision of this Agreement is invalid
+or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without
+further action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.</span> </p>
+
+<p><span style="font-size: 10pt;">If Recipient institutes patent litigation
+against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with
+other software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the date
+such litigation is filed. </span></p>
+
+<p><span style="font-size: 10pt;">All Recipient's rights under this Agreement
+shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable
+period of time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive. </span></p>
+
+<p><span style="font-size: 10pt;">Everyone is permitted to copy and distribute
+copies of this Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The Agreement
+Steward reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement Steward has
+the right to modify this Agreement. The Eclipse Foundation is the initial
+Agreement Steward. The Eclipse Foundation may assign the responsibility to
+serve as the Agreement Steward to a suitable separate entity. Each new version
+of the Agreement will be given a distinguishing version number. The Program
+(including Contributions) may always be distributed subject to the version of
+the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program
+(including its Contributions) under the new version. Except as expressly stated
+in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.</span> </p>
+
+<p><span style="font-size: 10pt;">This Agreement is governed by the laws of the
+State of New York and the intellectual property laws of the United States of
+America. No party to this Agreement will bring a legal action under this
+Agreement more than one year after the cause of action arose. Each party waives
+its rights to a jury trial in any resulting litigation.</span> </p>
+
+<p class="MsoNormal"><!--[if !supportEmptyParas]-->&nbsp;<!--[endif]--><o:p></o:p></p>
+
+</div>
+
+</body></html> \ No newline at end of file
diff --git a/plugins/org.eclipse.emf.cdo.tests/license.html b/plugins/org.eclipse.emf.cdo.tests/license.html
new file mode 100644
index 0000000..d7b88e9
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/license.html
@@ -0,0 +1,319 @@
+<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="ProgId" content="Word.Document">
+<meta name="Generator" content="Microsoft Word 9">
+<meta name="Originator" content="Microsoft Word 9">
+<link rel="File-List" href="http://www.eclipse.org/org/documents/Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml"><title>Eclipse Public License - Version 1.0</title><!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+ <o:Revision>2</o:Revision>
+ <o:TotalTime>3</o:TotalTime>
+ <o:Created>2004-03-05T23:03:00Z</o:Created>
+ <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
+ <o:Pages>4</o:Pages>
+ <o:Words>1626</o:Words>
+ <o:Characters>9270</o:Characters>
+ <o:Lines>77</o:Lines>
+ <o:Paragraphs>18</o:Paragraphs>
+ <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
+ <o:Version>9.4402</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+ <w:TrackRevisions/>
+ </w:WordDocument>
+</xml><![endif]-->
+
+
+<style>
+<!--
+ /* Font Definitions */
+@font-face
+ {font-family:Tahoma;
+ panose-1:2 11 6 4 3 5 4 4 2 4;
+ mso-font-charset:0;
+ mso-generic-font-family:swiss;
+ mso-font-pitch:variable;
+ mso-font-signature:553679495 -2147483648 8 0 66047 0;}
+ /* Style Definitions */
+p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-parent:"";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+p
+ {margin-right:0in;
+ mso-margin-top-alt:auto;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+p.BalloonText, li.BalloonText, div.BalloonText
+ {mso-style-name:"Balloon Text";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:8.0pt;
+ font-family:Tahoma;
+ mso-fareast-font-family:"Times New Roman";}
+@page Section1
+ {size:8.5in 11.0in;
+ margin:1.0in 1.25in 1.0in 1.25in;
+ mso-header-margin:.5in;
+ mso-footer-margin:.5in;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+-->
+</style></head>
+
+<body style="" lang="EN-US">
+
+<div class="Section1">
+
+<p style="text-align: center;" align="center"><b>Eclipse Public License - v 1.0</b>
+</p>
+
+<p><span style="font-size: 10pt;">THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
+THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE,
+REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
+OF THIS AGREEMENT.</span> </p>
+
+<p><b><span style="font-size: 10pt;">1. DEFINITIONS</span></b> </p>
+
+<p><span style="font-size: 10pt;">"Contribution" means:</span> </p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+in the case of the initial Contributor, the initial code and documentation
+distributed under this Agreement, and<br clear="left">
+b) in the case of each subsequent Contributor:</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">i)
+changes to the Program, and</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">ii)
+additions to the Program;</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">where
+such changes and/or additions to the Program originate from and are distributed
+by that particular Contributor. A Contribution 'originates' from a Contributor
+if it was added to the Program by such Contributor itself or anyone acting on
+such Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in conjunction
+with the Program under their own license agreement, and (ii) are not derivative
+works of the Program. </span></p>
+
+<p><span style="font-size: 10pt;">"Contributor" means any person or
+entity that distributes the Program.</span> </p>
+
+<p><span style="font-size: 10pt;">"Licensed Patents " mean patent
+claims licensable by a Contributor which are necessarily infringed by the use
+or sale of its Contribution alone or when combined with the Program. </span></p>
+
+<p><span style="font-size: 10pt;">"Program" means the Contributions
+distributed in accordance with this Agreement.</span> </p>
+
+<p><span style="font-size: 10pt;">"Recipient" means anyone who
+receives the Program under this Agreement, including all Contributors.</span> </p>
+
+<p><b><span style="font-size: 10pt;">2. GRANT OF RIGHTS</span></b> </p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+Subject to the terms of this Agreement, each Contributor hereby grants Recipient
+a non-exclusive, worldwide, royalty-free copyright license to<span style="color: red;"> </span>reproduce, prepare derivative works of, publicly
+display, publicly perform, distribute and sublicense the Contribution of such
+Contributor, if any, and such derivative works, in source code and object code
+form.</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">b)
+Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide,<span style="color: green;"> </span>royalty-free
+patent license under Licensed Patents to make, use, sell, offer to sell, import
+and otherwise transfer the Contribution of such Contributor, if any, in source
+code and object code form. This patent license shall apply to the combination
+of the Contribution and the Program if, at the time the Contribution is added
+by the Contributor, such addition of the Contribution causes such combination
+to be covered by the Licensed Patents. The patent license shall not apply to
+any other combinations which include the Contribution. No hardware per se is
+licensed hereunder. </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">c)
+Recipient understands that although each Contributor grants the licenses to its
+Contributions set forth herein, no assurances are provided by any Contributor
+that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient
+for claims brought by any other entity based on infringement of intellectual
+property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility
+to secure any other intellectual property rights needed, if any. For example,
+if a third party patent license is required to allow Recipient to distribute
+the Program, it is Recipient's responsibility to acquire that license before
+distributing the Program.</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">d)
+Each Contributor represents that to its knowledge it has sufficient copyright
+rights in its Contribution, if any, to grant the copyright license set forth in
+this Agreement. </span></p>
+
+<p><b><span style="font-size: 10pt;">3. REQUIREMENTS</span></b> </p>
+
+<p><span style="font-size: 10pt;">A Contributor may choose to distribute the
+Program in object code form under its own license agreement, provided that:</span>
+</p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+it complies with the terms and conditions of this Agreement; and</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">b)
+its license agreement:</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">i)
+effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title
+and non-infringement, and implied warranties or conditions of merchantability
+and fitness for a particular purpose; </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">ii)
+effectively excludes on behalf of all Contributors all liability for damages,
+including direct, indirect, special, incidental and consequential damages, such
+as lost profits; </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">iii)
+states that any provisions which differ from this Agreement are offered by that
+Contributor alone and not by any other party; and</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">iv)
+states that source code for the Program is available from such Contributor, and
+informs licensees how to obtain it in a reasonable manner on or through a
+medium customarily used for software exchange.<span style="color: blue;"> </span></span></p>
+
+<p><span style="font-size: 10pt;">When the Program is made available in source
+code form:</span> </p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+it must be made available under this Agreement; and </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">b) a
+copy of this Agreement must be included with each copy of the Program. </span></p>
+
+<p><span style="font-size: 10pt;">Contributors may not remove or alter any
+copyright notices contained within the Program. </span></p>
+
+<p><span style="font-size: 10pt;">Each Contributor must identify itself as the
+originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution. </span></p>
+
+<p><b><span style="font-size: 10pt;">4. COMMERCIAL DISTRIBUTION</span></b> </p>
+
+<p><span style="font-size: 10pt;">Commercial distributors of software may
+accept certain responsibilities with respect to end users, business partners
+and the like. While this license is intended to facilitate the commercial use
+of the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create potential
+liability for other Contributors. Therefore, if a Contributor includes the
+Program in a commercial product offering, such Contributor ("Commercial
+Contributor") hereby agrees to defend and indemnify every other
+Contributor ("Indemnified Contributor") against any losses, damages and
+costs (collectively "Losses") arising from claims, lawsuits and other
+legal actions brought by a third party against the Indemnified Contributor to
+the extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor
+to control, and cooperate with the Commercial Contributor in, the defense and
+any related settlement negotiations. The Indemnified Contributor may participate
+in any such claim at its own expense.</span> </p>
+
+<p><span style="font-size: 10pt;">For example, a Contributor might include the
+Program in a commercial product offering, Product X. That Contributor is then a
+Commercial Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance claims and
+warranties are such Commercial Contributor's responsibility alone. Under this
+section, the Commercial Contributor would have to defend claims against the
+other Contributors related to those performance claims and warranties, and if a
+court requires any other Contributor to pay any damages as a result, the
+Commercial Contributor must pay those damages.</span> </p>
+
+<p><b><span style="font-size: 10pt;">5. NO WARRANTY</span></b> </p>
+
+<p><span style="font-size: 10pt;">EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and distributing the
+Program and assumes all risks associated with its exercise of rights under this
+Agreement , including but not limited to the risks and costs of program errors,
+compliance with applicable laws, damage to or loss of data, programs or
+equipment, and unavailability or interruption of operations. </span></p>
+
+<p><b><span style="font-size: 10pt;">6. DISCLAIMER OF LIABILITY</span></b> </p>
+
+<p><span style="font-size: 10pt;">EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
+THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
+
+<p><b><span style="font-size: 10pt;">7. GENERAL</span></b> </p>
+
+<p><span style="font-size: 10pt;">If any provision of this Agreement is invalid
+or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without
+further action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.</span> </p>
+
+<p><span style="font-size: 10pt;">If Recipient institutes patent litigation
+against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with
+other software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the date
+such litigation is filed. </span></p>
+
+<p><span style="font-size: 10pt;">All Recipient's rights under this Agreement
+shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable
+period of time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive. </span></p>
+
+<p><span style="font-size: 10pt;">Everyone is permitted to copy and distribute
+copies of this Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The Agreement
+Steward reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement Steward has
+the right to modify this Agreement. The Eclipse Foundation is the initial
+Agreement Steward. The Eclipse Foundation may assign the responsibility to
+serve as the Agreement Steward to a suitable separate entity. Each new version
+of the Agreement will be given a distinguishing version number. The Program
+(including Contributions) may always be distributed subject to the version of
+the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program
+(including its Contributions) under the new version. Except as expressly stated
+in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.</span> </p>
+
+<p><span style="font-size: 10pt;">This Agreement is governed by the laws of the
+State of New York and the intellectual property laws of the United States of
+America. No party to this Agreement will bring a legal action under this
+Agreement more than one year after the cause of action arose. Each party waives
+its rights to a jury trial in any resulting litigation.</span> </p>
+
+<p class="MsoNormal"><!--[if !supportEmptyParas]-->&nbsp;<!--[endif]--><o:p></o:p></p>
+
+</div>
+
+</body></html> \ No newline at end of file
diff --git a/plugins/org.eclipse.emf.cdo.tests/model1.ecore b/plugins/org.eclipse.emf.cdo.tests/model1.ecore
new file mode 100644
index 0000000..9c39d34
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/model1.ecore
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage 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" name="model1"
+ nsURI="http://www.eclipse.org/emf/CDO/tests/model1/1.0.0" nsPrefix="model1">
+ <eClassifiers xsi:type="ecore:EClass" name="Company">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="test" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="street" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="city" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="categories" upperBound="-1"
+ eType="#//Category" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="suppliers" upperBound="-1"
+ eType="#//Supplier" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="customers" upperBound="-1"
+ eType="#//Customer" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="purchaseOrders" upperBound="-1"
+ eType="#//PurchaseOrder" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="salesOrders" upperBound="-1"
+ eType="#//SalesOrder" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Supplier">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="street" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="city" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="purchaseOrders" upperBound="-1"
+ eType="#//PurchaseOrder" eOpposite="#//PurchaseOrder/supplier"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Customer">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="street" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="city" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="salesOrders" upperBound="-1"
+ eType="#//SalesOrder" eOpposite="#//SalesOrder/customer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Order">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="orderDetails" upperBound="-1"
+ eType="#//OrderDetail" containment="true" eOpposite="#//OrderDetail/order"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OrderDetail">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="order" lowerBound="1" eType="#//Order"
+ eOpposite="#//Order/orderDetails"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="product" eType="#//Product"
+ eOpposite="#//Product/orderDetails"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="price" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PurchaseOrder" eSuperTypes="#//Order">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="date" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="supplier" lowerBound="1"
+ eType="#//Supplier" eOpposite="#//Supplier/purchaseOrders"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SalesOrder" eSuperTypes="#//Order">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="customer" lowerBound="1"
+ eType="#//Customer" eOpposite="#//Customer/salesOrders"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Category">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="categories" upperBound="-1"
+ eType="#//Category" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="products" upperBound="-1"
+ eType="#//Product" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Product">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="orderDetails" upperBound="-1"
+ eType="#//OrderDetail" eOpposite="#//OrderDetail/product"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.cdo.tests/model2.ecore b/plugins/org.eclipse.emf.cdo.tests/model2.ecore
new file mode 100644
index 0000000..c193111
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/model2.ecore
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage 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" name="model2"
+ nsURI="http://model2" nsPrefix="model2">
+ <eClassifiers xsi:type="ecore:EClass" name="CompanyProxy">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="company" eType="ecore:EClass model1.ecore#//Company"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.cdo.tests/plugin.properties b/plugins/org.eclipse.emf.cdo.tests/plugin.properties
new file mode 100644
index 0000000..3e4b337
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/plugin.properties
@@ -0,0 +1,19 @@
+# <copyright>
+# </copyright>
+#
+# $Id$
+
+# ====================================================================
+# To code developer:
+# Do NOT change the properties between this line and the
+# "%%% END OF TRANSLATED PROPERTIES %%%" line.
+# Make a new property name, append to the end of the file and change
+# the code to use the new property.
+# ====================================================================
+
+# ====================================================================
+# %%% END OF TRANSLATED PROPERTIES %%%
+# ====================================================================
+
+pluginName = CDO Tests TDD (Incubation)
+providerName = Eclipse.org
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AbstractCDOTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AbstractCDOTest.java
new file mode 100644
index 0000000..53fa877
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AbstractCDOTest.java
@@ -0,0 +1,243 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.emf.cdo.CDOObject;
+import org.eclipse.emf.cdo.CDOSession;
+import org.eclipse.emf.cdo.CDOState;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.internal.server.ContainerRepositoryProvider;
+import org.eclipse.emf.cdo.internal.server.Repository;
+import org.eclipse.emf.cdo.server.CDOServerUtil;
+import org.eclipse.emf.cdo.server.db.IMappingStrategy;
+import org.eclipse.emf.cdo.server.internal.db.DBStore;
+import org.eclipse.emf.cdo.server.internal.db.HorizontalMappingStrategy;
+import org.eclipse.emf.cdo.tests.model1.Model1Package;
+import org.eclipse.emf.cdo.util.CDOUtil;
+
+import org.eclipse.net4j.db.ConnectionProvider;
+import org.eclipse.net4j.db.DBUtil;
+import org.eclipse.net4j.db.IDBAdapter;
+import org.eclipse.net4j.db.internal.derby.DerbyAdapter;
+import org.eclipse.net4j.tests.AbstractTransportTest;
+import org.eclipse.net4j.util.container.IManagedContainer;
+
+import org.eclipse.emf.internal.cdo.util.FSMUtil;
+
+import javax.sql.DataSource;
+
+import java.util.Properties;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.locks.Condition;
+import java.util.concurrent.locks.Lock;
+
+/**
+ * @author Eike Stepper
+ */
+public abstract class AbstractCDOTest extends AbstractTransportTest
+{
+ public static final String REPOSITORY_NAME = "repo1";
+
+ @Override
+ protected IManagedContainer createContainer()
+ {
+ IManagedContainer container = super.createContainer();
+ CDOUtil.prepareContainer(container);
+ CDOServerUtil.prepareContainer(container, new ContainerRepositoryProvider(container));
+ CDOServerUtil.addRepository(container, createRepository());
+ return container;
+ }
+
+ protected Repository createRepository()
+ {
+ IMappingStrategy mappingStrategy = new HorizontalMappingStrategy();
+ IDBAdapter dbAdapter = new DerbyAdapter();
+
+ Properties properties = new Properties();
+ properties.put("driverClass", "org.apache.derby.jdbc.EmbeddedDataSource");
+ properties.put("databaseName", "C:/temp/cdo-repo1");
+ properties.put("createDatabase", "create");
+ DataSource dataSource = DBUtil.createDataSource(properties);
+ ConnectionProvider connectionProvider = DBUtil.createConnectionProvider(dataSource);
+
+ DBStore store = new DBStore(mappingStrategy, dbAdapter, connectionProvider);
+ mappingStrategy.setStore(store);
+
+ Repository repository = new Repository();
+ repository.setName(REPOSITORY_NAME);
+ repository.setStore(store);
+
+ store.setRepository(repository);
+ return repository;
+ }
+
+ @Override
+ protected void doSetUp() throws Exception
+ {
+ super.doSetUp();
+ startTransport();
+ }
+
+ protected CDOSession openModel1Session()
+ {
+ CDOSession session = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ session.getPackageRegistry().putEPackage(Model1Package.eINSTANCE);
+ return session;
+ }
+
+ protected void assertTransient(CDOObject object)
+ {
+ assertTrue(FSMUtil.isTransient(object));
+ assertEquals(null, object.cdoID());
+ assertEquals(null, object.cdoRevision());
+ assertEquals(null, object.cdoView());
+ assertEquals(object.eResource(), object.cdoResource());
+ }
+
+ protected void assertNotTransient(CDOObject object)
+ {
+ assertFalse(FSMUtil.isTransient(object));
+ assertNotNull(object.cdoID());
+ assertNotNull(object.cdoRevision());
+ assertNotNull(object.cdoView());
+ assertNotNull(object.cdoResource());
+ assertNotNull(object.eResource());
+ assertEquals(object.eResource(), object.cdoResource());
+ }
+
+ protected void assertNew(CDOObject object)
+ {
+ assertNotTransient(object);
+ assertEquals(CDOState.NEW, object.cdoState());
+ }
+
+ protected void assertDirty(CDOObject object)
+ {
+ assertNotTransient(object);
+ assertEquals(CDOState.DIRTY, object.cdoState());
+ }
+
+ protected void assertClean(CDOObject object)
+ {
+ assertNotTransient(object);
+ assertEquals(CDOState.CLEAN, object.cdoState());
+ }
+
+ protected void assertProxy(CDOObject object)
+ {
+ assertFalse(FSMUtil.isTransient(object));
+ assertNotNull(object.cdoID());
+ assertNotNull(object.cdoView());
+ assertNotNull(object.cdoResource());
+ assertNotNull(object.eResource());
+ assertEquals(object.eResource(), object.cdoResource());
+ assertEquals(CDOState.PROXY, object.cdoState());
+ }
+
+ protected void assertContent(CDOObject container, CDOObject contained)
+ {
+ assertEquals(container.eResource(), contained.eResource());
+ assertEquals(container.cdoResource(), contained.cdoResource());
+ assertTrue(container.eContents().contains(contained));
+ if (container instanceof CDOResource)
+ {
+ assertEquals(null, contained.eContainer());
+ assertTrue(((CDOResource)container).getContents().contains(contained));
+ }
+ else
+ {
+ assertEquals(container, contained.eContainer());
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public static interface ITimeOuter
+ {
+ public boolean timedOut() throws InterruptedException;
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public static abstract class PollingTimeOuter implements ITimeOuter
+ {
+ private int retries;
+
+ private long interval;
+
+ public PollingTimeOuter(int retries, long interval)
+ {
+ this.retries = retries;
+ this.interval = interval;
+ }
+
+ public int getRetries()
+ {
+ return retries;
+ }
+
+ public long getInterval()
+ {
+ return interval;
+ }
+
+ public boolean timedOut() throws InterruptedException
+ {
+ for (int i = 0; i < retries; i++)
+ {
+ if (successful())
+ {
+ return false;
+ }
+
+ Thread.sleep(interval);
+ }
+
+ return true;
+ }
+
+ protected abstract boolean successful();
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public static class LockTimeOuter implements ITimeOuter
+ {
+ private Lock lock;
+
+ private long millis;
+
+ public LockTimeOuter(Lock lock, long millis)
+ {
+ this.lock = lock;
+ this.millis = millis;
+ }
+
+ public Lock getLock()
+ {
+ return lock;
+ }
+
+ public long getMillis()
+ {
+ return millis;
+ }
+
+ public boolean timedOut() throws InterruptedException
+ {
+ Condition condition = lock.newCondition();
+ return !condition.await(millis, TimeUnit.MILLISECONDS);
+ }
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/Activator.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/Activator.java
new file mode 100644
index 0000000..1c67941
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/Activator.java
@@ -0,0 +1,60 @@
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.core.runtime.Plugin;
+
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends Plugin
+{
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.emf.cdo.tests";
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator()
+ {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void start(BundleContext context) throws Exception
+ {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void stop(BundleContext context) throws Exception
+ {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault()
+ {
+ return plugin;
+ }
+
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTests.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTests.java
new file mode 100644
index 0000000..ceac314
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTests.java
@@ -0,0 +1,36 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author Eike Stepper
+ */
+public class AllTests
+{
+ public static Test suite()
+ {
+ TestSuite suite = new TestSuite("Tests for CDO");
+
+ // $JUnit-BEGIN$
+ suite.addTestSuite(InitialTest.class);
+ suite.addTestSuite(ContainmentTest.class);
+ suite.addTestSuite(InvalidationTest.class);
+ suite.addTestSuite(CrossReferenceTest.class);
+ suite.addTestSuite(PackageRegistryTest.class);
+ suite.addTestSuite(GeneratedEcoreTest.class);
+ // $JUnit-END$
+
+ return suite;
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ContainmentTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ContainmentTest.java
new file mode 100644
index 0000000..8c7427f
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ContainmentTest.java
@@ -0,0 +1,273 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.emf.cdo.CDOSession;
+import org.eclipse.emf.cdo.CDOTransaction;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.tests.model1.Category;
+import org.eclipse.emf.cdo.tests.model1.Company;
+import org.eclipse.emf.cdo.tests.model1.Model1Factory;
+import org.eclipse.emf.cdo.tests.model1.Supplier;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+/**
+ * @author Eike Stepper
+ */
+public class ContainmentTest extends AbstractCDOTest
+{
+ public void testTransientContainment() throws Exception
+ {
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Creating company");
+ Company company = Model1Factory.eINSTANCE.createCompany();
+
+ msg("Adding supplier");
+ company.getSuppliers().add(supplier);
+
+ assertTransient(company);
+ assertTransient(supplier);
+ assertContent(company, supplier);
+ }
+
+ public void testBasicContainment() throws Exception
+ {
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Creating company");
+ Company company = Model1Factory.eINSTANCE.createCompany();
+
+ msg("Adding supplier");
+ company.getSuppliers().add(supplier);
+
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Adding company");
+ resource.getContents().add(company);
+
+ msg("Committing");
+ transaction.commit();
+
+ assertClean(resource);
+ assertClean(company);
+ assertClean(supplier);
+ assertContent(resource, company);
+ assertContent(company, supplier);
+ }
+
+ public void test3Levels() throws Exception
+ {
+ msg("Creating category1");
+ Category category1 = Model1Factory.eINSTANCE.createCategory();
+ category1.setName("category1");
+
+ msg("Creating category2");
+ Category category2 = Model1Factory.eINSTANCE.createCategory();
+ category2.setName("category2");
+
+ msg("Creating category3");
+ Category category3 = Model1Factory.eINSTANCE.createCategory();
+ category3.setName("category3");
+
+ msg("Creating company");
+ Company company = Model1Factory.eINSTANCE.createCompany();
+
+ msg("Adding categories");
+ company.getCategories().add(category1);
+ category1.getCategories().add(category2);
+ category2.getCategories().add(category3);
+
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Adding company");
+ resource.getContents().add(company);
+
+ msg("Committing");
+ transaction.commit();
+
+ assertClean(resource);
+ assertClean(company);
+ assertClean(category1);
+ assertClean(category2);
+ assertClean(category3);
+ assertContent(resource, company);
+ assertContent(company, category1);
+ assertContent(category1, category2);
+ assertContent(category2, category3);
+ }
+
+ public void testSeparateView() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ {
+ msg("Creating category1");
+ Category category1 = Model1Factory.eINSTANCE.createCategory();
+ category1.setName("category1");
+
+ msg("Creating category2");
+ Category category2 = Model1Factory.eINSTANCE.createCategory();
+ category2.setName("category2");
+
+ msg("Creating category3");
+ Category category3 = Model1Factory.eINSTANCE.createCategory();
+ category3.setName("category3");
+
+ msg("Creating company");
+ Company company = Model1Factory.eINSTANCE.createCompany();
+
+ msg("Adding categories");
+ company.getCategories().add(category1);
+ category1.getCategories().add(category2);
+ category2.getCategories().add(category3);
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Adding company");
+ resource.getContents().add(company);
+
+ msg("Committing");
+ transaction.commit();
+ }
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Loading resource");
+ CDOResource resource = transaction.getResource("/test1");
+ assertProxy(resource);
+
+ EList<EObject> contents = resource.getContents();
+ Company company = (Company)contents.get(0);
+ assertClean(company);
+ assertClean(resource);
+ assertContent(resource, company);
+
+ Category category1 = company.getCategories().get(0);
+ assertClean(category1);
+ assertClean(company);
+ assertContent(company, category1);
+
+ Category category2 = category1.getCategories().get(0);
+ assertClean(category2);
+ assertClean(category1);
+ assertContent(category1, category2);
+
+ Category category3 = category2.getCategories().get(0);
+ assertClean(category3);
+ assertClean(category2);
+ assertContent(category2, category3);
+ assertClean(category3);
+ }
+
+ public void testSeparateSession() throws Exception
+ {
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Creating category1");
+ Category category1 = Model1Factory.eINSTANCE.createCategory();
+ category1.setName("category1");
+
+ msg("Creating category2");
+ Category category2 = Model1Factory.eINSTANCE.createCategory();
+ category2.setName("category2");
+
+ msg("Creating category3");
+ Category category3 = Model1Factory.eINSTANCE.createCategory();
+ category3.setName("category3");
+
+ msg("Creating company");
+ Company company = Model1Factory.eINSTANCE.createCompany();
+
+ msg("Adding categories");
+ company.getCategories().add(category1);
+ category1.getCategories().add(category2);
+ category2.getCategories().add(category3);
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Adding company");
+ resource.getContents().add(company);
+
+ msg("Committing");
+ transaction.commit();
+ }
+
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Loading resource");
+ CDOResource resource = transaction.getResource("/test1");
+ assertProxy(resource);
+
+ EList<EObject> contents = resource.getContents();
+ Company company = (Company)contents.get(0);
+ assertClean(company);
+ assertClean(resource);
+ assertContent(resource, company);
+
+ Category category1 = company.getCategories().get(0);
+ assertClean(category1);
+ assertClean(company);
+ assertContent(company, category1);
+
+ Category category2 = category1.getCategories().get(0);
+ assertClean(category2);
+ assertClean(category1);
+ assertContent(category1, category2);
+
+ Category category3 = category2.getCategories().get(0);
+ assertClean(category3);
+ assertClean(category2);
+ assertContent(category2, category3);
+ assertClean(category3);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/CrossReferenceTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/CrossReferenceTest.java
new file mode 100644
index 0000000..b69d25a
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/CrossReferenceTest.java
@@ -0,0 +1,263 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.emf.cdo.CDOSession;
+import org.eclipse.emf.cdo.CDOTransaction;
+import org.eclipse.emf.cdo.CDOView;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.tests.model1.Company;
+import org.eclipse.emf.cdo.tests.model1.Customer;
+import org.eclipse.emf.cdo.tests.model1.Model1Factory;
+import org.eclipse.emf.cdo.tests.model1.SalesOrder;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+/**
+ * @author Eike Stepper
+ */
+public class CrossReferenceTest extends AbstractCDOTest
+{
+ public void testLoadViaContainment() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ // ************************************************************* //
+
+ msg("Creating customer");
+ Customer customerA = Model1Factory.eINSTANCE.createCustomer();
+ customerA.setName("customer");
+
+ msg("Creating salesOrder1");
+ SalesOrder salesOrder1A = Model1Factory.eINSTANCE.createSalesOrder();
+ salesOrder1A.setId(1);
+ salesOrder1A.setCustomer(customerA);
+
+ msg("Creating salesOrder2");
+ SalesOrder salesOrder2A = Model1Factory.eINSTANCE.createSalesOrder();
+ salesOrder2A.setId(2);
+ salesOrder2A.setCustomer(customerA);
+
+ msg("Creating company");
+ Company companyA = Model1Factory.eINSTANCE.createCompany();
+ companyA.getCustomers().add(customerA);
+ companyA.getSalesOrders().add(salesOrder1A);
+ companyA.getSalesOrders().add(salesOrder2A);
+
+ msg("Attaching transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resourceA = transaction.createResource("/test1");
+
+ msg("Adding company");
+ resourceA.getContents().add(companyA);
+
+ msg("Committing");
+ transaction.commit();
+
+ assertEquals(2, customerA.getSalesOrders().size());
+
+ // ************************************************************* //
+
+ msg("Attaching viewB");
+ CDOView viewB = session.openTransaction(new ResourceSetImpl());
+
+ msg("Loading resource");
+ CDOResource resourceB = viewB.getResource("/test1");
+ assertProxy(resourceB);
+
+ EList<EObject> contents = resourceB.getContents();
+ Company companyB = (Company)contents.get(0);
+ assertClean(companyB);
+ assertClean(resourceB);
+ assertContent(resourceB, companyB);
+
+ Customer customerB = companyB.getCustomers().get(0);
+ assertClean(customerB);
+ assertClean(companyB);
+ assertContent(companyB, customerB);
+
+ SalesOrder salesOrder1B = companyB.getSalesOrders().get(0);
+ assertClean(salesOrder1B);
+ assertClean(companyB);
+ assertContent(companyB, salesOrder1B);
+
+ SalesOrder salesOrder2B = companyB.getSalesOrders().get(1);
+ assertClean(salesOrder2B);
+ assertClean(companyB);
+ assertContent(companyB, salesOrder2B);
+ assertClean(salesOrder2B);
+
+ assertEquals(2, customerB.getSalesOrders().size());
+ }
+
+ public void testLoadViaXRef() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ // ************************************************************* //
+
+ msg("Creating customer");
+ Customer customerA = Model1Factory.eINSTANCE.createCustomer();
+ customerA.setName("customer");
+
+ msg("Creating salesOrder1");
+ SalesOrder salesOrder1A = Model1Factory.eINSTANCE.createSalesOrder();
+ salesOrder1A.setId(1);
+ salesOrder1A.setCustomer(customerA);
+
+ msg("Creating salesOrder2");
+ SalesOrder salesOrder2A = Model1Factory.eINSTANCE.createSalesOrder();
+ salesOrder2A.setId(2);
+ salesOrder2A.setCustomer(customerA);
+
+ msg("Creating company");
+ Company companyA = Model1Factory.eINSTANCE.createCompany();
+ companyA.getCustomers().add(customerA);
+ companyA.getSalesOrders().add(salesOrder1A);
+ companyA.getSalesOrders().add(salesOrder2A);
+
+ msg("Attaching transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resourceA = transaction.createResource("/test1");
+
+ msg("Adding company");
+ resourceA.getContents().add(companyA);
+
+ msg("Committing");
+ transaction.commit();
+
+ assertEquals(2, customerA.getSalesOrders().size());
+
+ // ************************************************************* //
+
+ msg("Attaching viewB");
+ CDOView viewB = session.openTransaction(new ResourceSetImpl());
+
+ msg("Loading resource");
+ CDOResource resourceB = viewB.getResource("/test1");
+ assertProxy(resourceB);
+
+ EList<EObject> contents = resourceB.getContents();
+ Company companyB = (Company)contents.get(0);
+ assertClean(companyB);
+ assertClean(resourceB);
+ assertContent(resourceB, companyB);
+
+ Customer customerB = companyB.getCustomers().get(0);
+ assertClean(customerB);
+ assertClean(companyB);
+ assertContent(companyB, customerB);
+
+ SalesOrder salesOrder1B = customerB.getSalesOrders().get(0);
+ assertClean(salesOrder1B);
+ assertClean(companyB);
+ assertContent(companyB, salesOrder1B);
+
+ SalesOrder salesOrder2B = customerB.getSalesOrders().get(1);
+ assertClean(salesOrder2B);
+ assertClean(companyB);
+ assertContent(companyB, salesOrder2B);
+ assertClean(salesOrder2B);
+ }
+
+ public void testTwoResources() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Attaching transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ // ************************************************************* //
+
+ msg("Creating customer");
+ Customer customerA = Model1Factory.eINSTANCE.createCustomer();
+ customerA.setName("customer");
+
+ msg("Creating company1");
+ Company company1A = Model1Factory.eINSTANCE.createCompany();
+ company1A.getCustomers().add(customerA);
+
+ msg("Creating resource1");
+ CDOResource resource1A = transaction.createResource("/test1");
+
+ msg("Adding company1");
+ resource1A.getContents().add(company1A);
+
+ // ************************************************************* //
+
+ msg("Creating salesOrder1");
+ SalesOrder salesOrder1A = Model1Factory.eINSTANCE.createSalesOrder();
+ assertTransient(salesOrder1A);
+ salesOrder1A.setId(1);
+ salesOrder1A.setCustomer(customerA);
+ assertTransient(salesOrder1A);
+
+ msg("Creating salesOrder2");
+ SalesOrder salesOrder2A = Model1Factory.eINSTANCE.createSalesOrder();
+ assertTransient(salesOrder2A);
+ salesOrder2A.setId(2);
+ salesOrder2A.setCustomer(customerA);
+ assertTransient(salesOrder2A);
+
+ msg("Creating company2");
+ Company company2A = Model1Factory.eINSTANCE.createCompany();
+ company2A.getSalesOrders().add(salesOrder1A);
+ company2A.getSalesOrders().add(salesOrder2A);
+
+ msg("Creating resource2");
+ CDOResource resource2A = transaction.createResource("/test2");
+
+ msg("Adding company");
+ resource2A.getContents().add(company2A);
+
+ // ************************************************************* //
+
+ msg("Committing");
+ transaction.commit();
+
+ assertEquals(2, customerA.getSalesOrders().size());
+
+ // ************************************************************* //
+
+ msg("Attaching viewB");
+ CDOView viewB = session.openTransaction(new ResourceSetImpl());
+
+ msg("Loading resource1");
+ CDOResource resource1B = viewB.getResource("/test1");
+ assertProxy(resource1B);
+
+ EList<EObject> contents = resource1B.getContents();
+ Company company1B = (Company)contents.get(0);
+ assertClean(company1B);
+ assertClean(resource1B);
+ assertContent(resource1B, company1B);
+
+ Customer customerB = company1B.getCustomers().get(0);
+ assertClean(customerB);
+ assertClean(company1B);
+ assertContent(company1B, customerB);
+
+ SalesOrder salesOrder1B = customerB.getSalesOrders().get(0);
+ assertClean(salesOrder1B);
+
+ SalesOrder salesOrder2B = customerB.getSalesOrders().get(1);
+ assertClean(salesOrder2B);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DymamicEcoreTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DymamicEcoreTest.java
new file mode 100644
index 0000000..f01010c
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DymamicEcoreTest.java
@@ -0,0 +1,80 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.emf.cdo.CDOSession;
+import org.eclipse.emf.cdo.CDOTransaction;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.util.CDOUtil;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+
+import java.io.IOException;
+
+/**
+ * @author Eike Stepper
+ */
+public class DymamicEcoreTest extends AbstractCDOTest
+{
+ public void testDynamicEcore() throws Exception
+ {
+ {
+ // Obtain model
+ EPackage ecore = (EPackage)loadModel("ecore/Ecore.ecore", EPackage.Registry.INSTANCE);
+
+ // Create resource in session 1
+ CDOSession session = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ session.getPackageRegistry().putEPackage(ecore);
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource res = transaction.createResource("/res");
+
+ EObject root = loadModel("model1.ecore", session.getPackageRegistry());
+ res.getContents().add(root);
+ transaction.commit();
+ }
+
+ {
+ // Load resource in session 2
+ CDOSession session = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource res = transaction.getResource("/res");
+
+ EObject root = res.getContents().get(0);
+ saveModel("model1X.ecore", root);
+ }
+ }
+
+ private static EObject loadModel(String fileName, EPackage.Registry packageRegistry) throws IOException
+ {
+ ResourceSet resourceSet = new ResourceSetImpl();
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl());
+ resourceSet.setPackageRegistry(packageRegistry);
+
+ Resource resource = resourceSet.getResource(URI.createFileURI(fileName), true);
+ return resource.getContents().get(0);
+ }
+
+ private static void saveModel(String fileName, EObject root) throws IOException
+ {
+ ResourceSet resourceSet = new ResourceSetImpl();
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl());
+ Resource resource = resourceSet.getResource(URI.createFileURI(fileName), true);
+ resource.getContents().add(EcoreUtil.copy(root));
+ resource.save(null);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DymamicUmlTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DymamicUmlTest.java
new file mode 100644
index 0000000..f3594c5
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DymamicUmlTest.java
@@ -0,0 +1,105 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.emf.cdo.CDOObject;
+import org.eclipse.emf.cdo.CDOSession;
+import org.eclipse.emf.cdo.CDOTransaction;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.tests.model1.Company;
+import org.eclipse.emf.cdo.tests.model1.Model1Factory;
+import org.eclipse.emf.cdo.tests.model1.Model1Package;
+import org.eclipse.emf.cdo.util.CDOUtil;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+
+import java.io.IOException;
+
+/**
+ * @author Eike Stepper
+ */
+public class DymamicUmlTest extends AbstractCDOTest
+{
+ public void testGeneratedPackage() throws Exception
+ {
+ {
+ // Create resource in session 1
+ CDOSession session = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ session.getPackageRegistry().putEPackage(Model1Package.eINSTANCE);
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource res = transaction.createResource("/res");
+
+ Company company = Model1Factory.eINSTANCE.createCompany();
+ company.setName("Eike");
+ res.getContents().add(company);
+ transaction.commit();
+ }
+
+ {
+ // Load resource in session 2
+ CDOSession session = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource res = transaction.getResource("/res");
+
+ Company company = (Company)res.getContents().get(0);
+ assertEquals("Eike", company.getName());
+ }
+ }
+
+ public void testDynamicPackage() throws Exception
+ {
+ {
+ // Obtain model
+ EPackage model1 = loadModel("model1.ecore");
+ EClass companyClass = (EClass)model1.getEClassifier("Company");
+ EAttribute nameAttribute = (EAttribute)companyClass.getEStructuralFeature("name");
+
+ // Create resource in session 1
+ CDOSession session = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ session.getPackageRegistry().putEPackage(model1);
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource res = transaction.createResource("/res");
+
+ CDOObject company = transaction.newInstance(companyClass);
+ company.eSet(nameAttribute, "Eike");
+ res.getContents().add(company);
+ transaction.commit();
+ }
+
+ {
+ // Load resource in session 2
+ CDOSession session = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource res = transaction.getResource("/res");
+
+ CDOObject company = (CDOObject)res.getContents().get(0);
+ EClass companyClass = company.eClass();
+ EAttribute nameAttribute = (EAttribute)companyClass.getEStructuralFeature("name");
+ String name = (String)company.eGet(nameAttribute);
+ assertEquals("Eike", name);
+ }
+ }
+
+ private static EPackage loadModel(String fileName) throws IOException
+ {
+ ResourceSet resourceSet = new ResourceSetImpl();
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl());
+ Resource resource = resourceSet.getResource(URI.createFileURI(fileName), true);
+ return (EPackage)resource.getContents().get(0);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/EMFTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/EMFTest.java
new file mode 100644
index 0000000..370d417
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/EMFTest.java
@@ -0,0 +1,73 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.emf.cdo.util.EMFUtil;
+
+import org.eclipse.net4j.util.tests.AbstractOMTest;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.InternalEObject;
+
+/**
+ * @author Eike Stepper
+ */
+public class EMFTest extends AbstractOMTest
+{
+ public EMFTest()
+ {
+ }
+
+ public void testProxy()
+ {
+ EPackage model2 = (EPackage)EMFUtil.loadXMI("model2.ecore");
+ EClass companyProxy = (EClass)model2.getEClassifier("CompanyProxy");
+ EReference reference = (EReference)companyProxy.getEStructuralFeature("company");
+
+ EClass type = (EClass)reference.getEType();
+ dumpProxy(type);
+ System.out.println(type.getName());
+ dumpProxy(type);
+
+ System.out.println();
+
+ if (false)
+ {
+ model2.eResource().getResourceSet().getResources().get(1).unload();
+ }
+ else
+ {
+ ((InternalEObject)type).eSetProxyURI(URI.createURI("model1.ecore#//Company"));
+ }
+
+ if (true)
+ {
+ type = (EClass)reference.getEType();
+ }
+
+ dumpProxy(type);
+ System.out.println(type.getName());
+ dumpProxy(type);
+ }
+
+ private void dumpProxy(EObject object)
+ {
+ InternalEObject eObject = (InternalEObject)object;
+ String label = eObject.eClass().getName();
+
+ System.out.println(label + ": " + eObject.eIsProxy());
+ System.out.println(label + ": " + eObject.eProxyURI());
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/GeneratedEcoreTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/GeneratedEcoreTest.java
new file mode 100644
index 0000000..cb362bd
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/GeneratedEcoreTest.java
@@ -0,0 +1,58 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.emf.cdo.CDOSession;
+import org.eclipse.emf.cdo.CDOTransaction;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.util.CDOUtil;
+import org.eclipse.emf.cdo.util.EMFUtil;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+
+/**
+ * @author Eike Stepper
+ */
+public class GeneratedEcoreTest extends AbstractCDOTest
+{
+ public void testGeneratedEcore() throws Exception
+ {
+ // Obtain model
+ EPackage ecore = EcorePackage.eINSTANCE;
+
+ // Create resource in session 1
+ CDOSession session1 = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ session1.getPackageRegistry().putEPackage(ecore);
+ CDOTransaction transaction1 = session1.openTransaction();
+ CDOResource res1 = transaction1.createResource("/res");
+
+ EPackage root1 = (EPackage)EMFUtil.loadEcore("model1.ecore", session1.getPackageRegistry());
+ res1.getContents().add(root1);
+ transaction1.commit();
+
+ // Load resource in session 2
+ CDOSession session2 = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ CDOTransaction transaction2 = session2.openTransaction();
+ CDOResource res2 = transaction2.getResource("/res");
+
+ EList<EObject> contents = res2.getContents();
+ EPackage root2 = (EPackage)contents.get(0);
+ assertFalse("Unresolved proxy", root2.eIsProxy());
+ assertEquals(res2, root2.eResource());
+
+ CDOUtil.load(root2, transaction2);// FIXME
+ EMFUtil.saveEcore("model1X.ecore", root2);
+ // assertTrue("Models differ", EcoreUtil.equals(root1, root2));
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InitialTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InitialTest.java
new file mode 100644
index 0000000..03591e9
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InitialTest.java
@@ -0,0 +1,627 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.emf.cdo.CDOSession;
+import org.eclipse.emf.cdo.CDOState;
+import org.eclipse.emf.cdo.CDOTransaction;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.tests.model1.Model1Factory;
+import org.eclipse.emf.cdo.tests.model1.PurchaseOrder;
+import org.eclipse.emf.cdo.tests.model1.Supplier;
+import org.eclipse.emf.cdo.util.CDOUtil;
+
+import org.eclipse.net4j.IBufferHandler;
+import org.eclipse.net4j.IChannel;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import java.util.Date;
+
+/**
+ * @author Eike Stepper
+ */
+public class InitialTest extends AbstractCDOTest
+{
+ public void testTransientObject() throws Exception
+ {
+ final Date date = new Date();
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+ assertTransient(supplier);
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+ assertTransient(supplier);
+
+ msg("Verifying name");
+ assertEquals("Stepper", supplier.getName());
+ assertTransient(supplier);
+
+ msg("Creating purchaseOrder");
+ PurchaseOrder purchaseOrder = Model1Factory.eINSTANCE.createPurchaseOrder();
+ assertTransient(purchaseOrder);
+
+ msg("Setting date");
+ purchaseOrder.setDate(date);
+ assertTransient(purchaseOrder);
+
+ msg("Verifying date");
+ assertEquals(date, purchaseOrder.getDate());
+ assertTransient(purchaseOrder);
+
+ msg("Setting supplier");
+ purchaseOrder.setSupplier(supplier);
+ assertTransient(supplier);
+ assertTransient(purchaseOrder);
+
+ msg("Verifying supplier");
+ assertEquals(supplier, purchaseOrder.getSupplier());
+ assertTransient(supplier);
+ assertTransient(purchaseOrder);
+ }
+
+ public void testTransientResource() throws Exception
+ {
+ final URI uri = URI.createURI("cdo:/test1");
+
+ msg("Creating resourceSet");
+ ResourceSet resourceSet = new ResourceSetImpl();
+ CDOUtil.prepareResourceSet(resourceSet);
+
+ msg("Creating resource");
+ CDOResource resource = (CDOResource)resourceSet.createResource(uri);
+ assertTransient(resource);
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+ assertTransient(supplier);
+ assertEquals(null, supplier.eContainer());
+
+ msg("Verifying contents");
+ EList<EObject> contents = resource.getContents();
+ assertNotNull(contents);
+ assertTrue(contents.isEmpty());
+ assertEquals(0, contents.size());
+ assertTransient(resource);
+
+ msg("Adding supplier");
+ contents.add(supplier);
+ assertTransient(resource);
+ assertTransient(supplier);
+ assertContent(resource, supplier);
+ }
+
+ public void testOpenSession() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+ assertNotNull(session);
+
+ IChannel channel = session.getChannel();
+ assertNotNull(channel);
+
+ IBufferHandler receiveHandler = channel.getReceiveHandler();
+ assertNotNull(receiveHandler);
+ }
+
+ public void testStartTransaction() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+ assertNotNull(transaction);
+ assertEquals(session, transaction.getSession());
+ }
+
+ public void testAttachResource() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+ assertNew(resource);
+ assertEquals(URI.createURI("cdo:/test1"), resource.getURI());
+ ResourceSet expected = transaction.getResourceSet();
+ ResourceSet actual = resource.getResourceSet();
+ assertEquals(expected, actual);
+
+ }
+
+ public void testAttachView() throws Exception
+ {
+ final URI uri = URI.createURI("cdo:/test1");
+
+ msg("Creating resourceSet");
+ ResourceSet resourceSet = new ResourceSetImpl();
+ CDOUtil.prepareResourceSet(resourceSet);
+
+ msg("Creating resource");
+ CDOResource resource = (CDOResource)resourceSet.createResource(uri);
+ assertTransient(resource);
+
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(resourceSet);
+
+ msg("Verifying resource");
+ assertNew(resource);
+ assertEquals(uri, resource.getURI());
+ assertEquals(transaction.getResourceSet(), resource.getResourceSet());
+ }
+
+ public void testAttachViewWithObject() throws Exception
+ {
+ final URI uri = URI.createURI("cdo:/test1");
+
+ msg("Creating resourceSet");
+ ResourceSet resourceSet = new ResourceSetImpl();
+ CDOUtil.prepareResourceSet(resourceSet);
+
+ msg("Creating resource");
+ CDOResource resource = (CDOResource)resourceSet.createResource(uri);
+ assertTransient(resource);
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+ assertTransient(supplier);
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+ assertTransient(supplier);
+
+ msg("Verifying name");
+ assertEquals("Stepper", supplier.getName());
+ assertTransient(supplier);
+
+ msg("Adding supplier");
+ EList<EObject> contents = resource.getContents();
+ contents.add(supplier);
+ assertTransient(resource);
+ assertTransient(supplier);
+ assertContent(resource, supplier);
+
+ msg("Verifying supplier");
+ contents = resource.getContents();
+ assertNotNull(contents);
+ assertEquals(1, contents.size());
+
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(resourceSet);
+
+ msg("Verifying resource");
+ assertNew(resource);
+ assertEquals(uri, resource.getURI());
+ assertEquals(transaction.getResourceSet(), resource.getResourceSet());
+
+ msg("Verifying contents");
+ contents = resource.getContents();
+ assertNotNull(contents);
+ assertEquals(1, contents.size());
+
+ msg("Verifying supplier");
+ Supplier s = (Supplier)contents.get(0);
+ assertNew(supplier);
+ assertNew(resource);
+ assertEquals(supplier, s);
+ assertEquals(resource, s.cdoResource());
+ assertEquals(null, s.eContainer());
+ }
+
+ public void testAttachObject() throws Exception
+ {
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Getting contents");
+ EList<EObject> contents = resource.getContents();
+
+ msg("Adding supplier");
+ contents.add(supplier);
+ assertNew(supplier);
+ assertEquals(transaction, supplier.cdoView());
+ assertEquals(resource, supplier.cdoResource());
+ assertEquals(resource, supplier.eResource());
+ assertEquals(null, supplier.eContainer());
+ }
+
+ public void testCommitNew() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Adding supplier");
+ resource.getContents().add(supplier);
+
+ msg("Committing");
+ transaction.commit();
+ assertEquals(CDOState.CLEAN, resource.cdoState());
+ assertEquals(CDOState.CLEAN, supplier.cdoState());
+ }
+
+ public void testReadResourceClean() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Adding supplier");
+ resource.getContents().add(supplier);
+
+ msg("Committing");
+ transaction.commit();
+
+ msg("Getting supplier");
+ EList<EObject> contents = resource.getContents();
+ Supplier s = (Supplier)contents.get(0);
+ assertEquals(supplier, s);
+ }
+
+ public void testReadObjectClean() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Adding supplier");
+ resource.getContents().add(supplier);
+
+ msg("Committing");
+ transaction.commit();
+
+ msg("Getting supplier");
+ Supplier s = (Supplier)resource.getContents().get(0);
+
+ msg("Verifying name");
+ assertEquals("Stepper", s.getName());
+ }
+
+ public void testWriteClean() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Adding supplier");
+ resource.getContents().add(supplier);
+
+ msg("Committing");
+ transaction.commit();
+
+ msg("Getting supplier");
+ Supplier s = (Supplier)resource.getContents().get(0);
+
+ msg("Setting name");
+ s.setName("Eike");
+ assertEquals("Eike", s.getName());
+ assertEquals(CDOState.DIRTY, supplier.cdoState());
+ assertEquals(CDOState.CLEAN, resource.cdoState());
+ }
+
+ public void testCommitDirty() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Adding supplier");
+ resource.getContents().add(supplier);
+
+ msg("Committing");
+ transaction.commit();
+
+ msg("Setting name");
+ supplier.setName("Eike");
+
+ msg("Committing");
+ transaction.commit();
+ assertEquals(CDOState.CLEAN, resource.cdoState());
+ assertEquals(CDOState.CLEAN, supplier.cdoState());
+ }
+
+ public void testGetResource() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ {
+ disableConsole();
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Adding supplier");
+ resource.getContents().add(supplier);
+
+ msg("Committing");
+ transaction.commit();
+ enableConsole();
+ }
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Getting resource");
+ CDOResource resource = transaction.getResource("/test1");
+ assertNotNull(resource);
+ assertEquals(URI.createURI("cdo:/test1"), resource.getURI());
+ assertEquals(transaction.getResourceSet(), resource.getResourceSet());
+ assertEquals(CDOState.PROXY, resource.cdoState());
+ assertEquals(transaction, resource.cdoView());
+ assertNull(resource.cdoRevision());
+ }
+
+ public void testGetContents() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ {
+ disableConsole();
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Adding supplier");
+ resource.getContents().add(supplier);
+
+ msg("Committing");
+ transaction.commit();
+ enableConsole();
+ }
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Getting resource");
+ CDOResource resource = transaction.getResource("/test1");
+
+ msg("Getting contents");
+ EList<EObject> contents = resource.getContents();
+ assertNotNull(contents);
+ }
+
+ public void testReadObjectProxy() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ {
+ disableConsole();
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Adding supplier");
+ resource.getContents().add(supplier);
+
+ msg("Committing");
+ transaction.commit();
+ enableConsole();
+ }
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Getting resource");
+ CDOResource resource = transaction.getResource("/test1");
+
+ msg("Getting contents");
+ EList<EObject> contents = resource.getContents();
+
+ msg("Getting supplier");
+ Supplier s = (Supplier)contents.get(0);
+ assertNotNull(s);
+
+ msg("Verifying name");
+ assertEquals("Stepper", s.getName());
+ }
+
+ public void testLoadResource() throws Exception
+ {
+ {
+ // disableConsole();
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Adding supplier");
+ resource.getContents().add(supplier);
+
+ msg("Committing");
+ transaction.commit();
+ // XXX session.close();
+ // enableConsole();
+ }
+
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Getting resource");
+ CDOResource resource = transaction.getResource("/test1");
+ assertNotNull(resource);
+ assertEquals(URI.createURI("cdo:/test1"), resource.getURI());
+ assertEquals(transaction.getResourceSet(), resource.getResourceSet());
+ assertEquals(CDOState.PROXY, resource.cdoState());
+ assertEquals(transaction, resource.cdoView());
+ assertNull(resource.cdoRevision());
+ }
+
+ public void testLoadObject() throws Exception
+ {
+ {
+ // disableConsole();
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Adding supplier");
+ resource.getContents().add(supplier);
+
+ msg("Committing");
+ transaction.commit();
+ // XXX session.close();
+ enableConsole();
+ }
+
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Getting resource");
+ CDOResource resource = transaction.getResource("/test1");
+
+ msg("Getting contents");
+ EList<EObject> contents = resource.getContents();
+
+ msg("Getting supplier");
+ Supplier s = (Supplier)contents.get(0);
+ assertNotNull(s);
+
+ msg("Verifying name");
+ assertEquals("Stepper", s.getName());
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InvalidationTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InvalidationTest.java
new file mode 100644
index 0000000..c860c2b
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InvalidationTest.java
@@ -0,0 +1,341 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.emf.cdo.CDOSession;
+import org.eclipse.emf.cdo.CDOSessionInvalidationEvent;
+import org.eclipse.emf.cdo.CDOTransaction;
+import org.eclipse.emf.cdo.CDOView;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.tests.model1.Category;
+import org.eclipse.emf.cdo.tests.model1.Company;
+import org.eclipse.emf.cdo.tests.model1.Model1Factory;
+
+import org.eclipse.net4j.util.event.IEvent;
+import org.eclipse.net4j.util.event.IListener;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+
+/**
+ * @author Eike Stepper
+ */
+public class InvalidationTest extends AbstractCDOTest
+{
+ public void testSeparateView() throws Exception
+ {
+ msg("Opening session");
+ final CDOSession session = openModel1Session();
+
+ // ************************************************************* //
+
+ msg("Creating category1");
+ final Category category1A = Model1Factory.eINSTANCE.createCategory();
+ category1A.setName("category1");
+
+ msg("Creating category2");
+ final Category category2A = Model1Factory.eINSTANCE.createCategory();
+ category2A.setName("category2");
+
+ msg("Creating category3");
+ final Category category3A = Model1Factory.eINSTANCE.createCategory();
+ category3A.setName("category3");
+
+ msg("Creating company");
+ final Company companyA = Model1Factory.eINSTANCE.createCompany();
+
+ msg("Adding categories");
+ companyA.getCategories().add(category1A);
+ category1A.getCategories().add(category2A);
+ category2A.getCategories().add(category3A);
+
+ msg("Attaching transaction");
+ final CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ final CDOResource resourceA = transaction.createResource("/test1");
+
+ msg("Adding company");
+ resourceA.getContents().add(companyA);
+
+ msg("Committing");
+ transaction.commit();
+
+ // ************************************************************* //
+
+ msg("Attaching viewB");
+ final CDOView viewB = session.openTransaction(new ResourceSetImpl());
+
+ msg("Loading resource");
+ final CDOResource resourceB = viewB.getResource("/test1");
+ assertProxy(resourceB);
+
+ EList<EObject> contents = resourceB.getContents();
+ final Company companyB = (Company)contents.get(0);
+ assertClean(companyB);
+ assertClean(resourceB);
+ assertContent(resourceB, companyB);
+
+ final Category category1B = companyB.getCategories().get(0);
+ assertClean(category1B);
+ assertClean(companyB);
+ assertContent(companyB, category1B);
+
+ final Category category2B = category1B.getCategories().get(0);
+ assertClean(category2B);
+ assertClean(category1B);
+ assertContent(category1B, category2B);
+
+ final Category category3B = category2B.getCategories().get(0);
+ assertClean(category3B);
+ assertClean(category2B);
+ assertContent(category2B, category3B);
+ assertClean(category3B);
+
+ // ************************************************************* //
+
+ msg("Changing name");
+ category1A.setName("CHANGED NAME");
+ Thread.sleep(500);
+
+ msg("Checking before commit");
+ assertEquals("category1", category1B.getName());
+
+ msg("Committing");
+ transaction.commit();
+
+ msg("Checking after commit");
+ boolean timedOut = new PollingTimeOuter(4, 100)
+ {
+ @Override
+ protected boolean successful()
+ {
+ return "CHANGED NAME".equals(category1B.getName());
+ }
+ }.timedOut();
+
+ assertEquals(false, timedOut);
+ }
+
+ public void testSeparateViewNotification() throws Exception
+ {
+ msg("Opening session");
+ final CDOSession session = openModel1Session();
+
+ // ************************************************************* //
+
+ msg("Creating category1");
+ final Category category1A = Model1Factory.eINSTANCE.createCategory();
+ category1A.setName("category1");
+
+ msg("Creating category2");
+ final Category category2A = Model1Factory.eINSTANCE.createCategory();
+ category2A.setName("category2");
+
+ msg("Creating category3");
+ final Category category3A = Model1Factory.eINSTANCE.createCategory();
+ category3A.setName("category3");
+
+ msg("Creating company");
+ final Company companyA = Model1Factory.eINSTANCE.createCompany();
+
+ msg("Adding categories");
+ companyA.getCategories().add(category1A);
+ category1A.getCategories().add(category2A);
+ category2A.getCategories().add(category3A);
+
+ msg("Attaching transaction");
+ final CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ final CDOResource resourceA = transaction.createResource("/test1");
+
+ msg("Adding company");
+ resourceA.getContents().add(companyA);
+
+ msg("Committing");
+ transaction.commit();
+
+ // ************************************************************* //
+
+ msg("Attaching viewB");
+ final CDOView viewB = session.openTransaction(new ResourceSetImpl());
+
+ msg("Loading resource");
+ final CDOResource resourceB = viewB.getResource("/test1");
+ assertProxy(resourceB);
+
+ EList<EObject> contents = resourceB.getContents();
+ final Company companyB = (Company)contents.get(0);
+ assertClean(companyB);
+ assertClean(resourceB);
+ assertContent(resourceB, companyB);
+
+ final Category category1B = companyB.getCategories().get(0);
+ assertClean(category1B);
+ assertClean(companyB);
+ assertContent(companyB, category1B);
+
+ final Category category2B = category1B.getCategories().get(0);
+ assertClean(category2B);
+ assertClean(category1B);
+ assertContent(category1B, category2B);
+
+ final Category category3B = category2B.getCategories().get(0);
+ assertClean(category3B);
+ assertClean(category2B);
+ assertContent(category2B, category3B);
+ assertClean(category3B);
+
+ // ************************************************************* //
+
+ final boolean unlocked[] = { false };
+ final Lock lock = new ReentrantLock();
+ lock.lock();
+ viewB.getSession().addListener(new IListener()
+ {
+ public void notifyEvent(IEvent event)
+ {
+ if (event instanceof CDOSessionInvalidationEvent)
+ {
+ CDOSessionInvalidationEvent e = (CDOSessionInvalidationEvent)event;
+ if (e.getView() == viewB)
+ {
+ msg("CDOSessionInvalidationEvent: " + e);
+ // TODO This code has no influence
+ unlocked[0] = true;
+ lock.unlock();
+ }
+ }
+ }
+ });
+
+ msg("Changing name");
+ category1A.setName("CHANGED NAME");
+
+ msg("Checking before commit");
+ LockTimeOuter timeOuter = new LockTimeOuter(lock, 500);
+ boolean timedOut = timeOuter.timedOut();
+ assertEquals(true, timedOut);
+ assertEquals(false, unlocked[0]);
+
+ msg("Committing");
+ transaction.commit();
+
+ msg("Checking after commit");
+ if (!unlocked[0])
+ {
+ timedOut = timeOuter.timedOut();
+ assertEquals(true, timedOut);
+ }
+ }
+
+ public void testSeparateSession() throws Exception
+ {
+ msg("Creating category1");
+ final Category category1A = Model1Factory.eINSTANCE.createCategory();
+ category1A.setName("category1");
+
+ msg("Creating category2");
+ final Category category2A = Model1Factory.eINSTANCE.createCategory();
+ category2A.setName("category2");
+
+ msg("Creating category3");
+ final Category category3A = Model1Factory.eINSTANCE.createCategory();
+ category3A.setName("category3");
+
+ msg("Creating company");
+ final Company companyA = Model1Factory.eINSTANCE.createCompany();
+
+ msg("Adding categories");
+ companyA.getCategories().add(category1A);
+ category1A.getCategories().add(category2A);
+ category2A.getCategories().add(category3A);
+
+ msg("Opening sessionA");
+ final CDOSession sessionA = openModel1Session();
+
+ msg("Attaching transaction");
+ final CDOTransaction transaction = sessionA.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ final CDOResource resourceA = transaction.createResource("/test1");
+
+ msg("Adding company");
+ resourceA.getContents().add(companyA);
+
+ msg("Committing");
+ transaction.commit();
+
+ // ************************************************************* //
+
+ msg("Opening sessionB");
+ final CDOSession sessionB = openModel1Session();
+
+ msg("Attaching viewB");
+ final CDOView viewB = sessionB.openTransaction(new ResourceSetImpl());
+
+ msg("Loading resource");
+ final CDOResource resourceB = viewB.getResource("/test1");
+ assertProxy(resourceB);
+
+ EList<EObject> contents = resourceB.getContents();
+ final Company companyB = (Company)contents.get(0);
+ assertClean(companyB);
+ assertClean(resourceB);
+ assertContent(resourceB, companyB);
+
+ final Category category1B = companyB.getCategories().get(0);
+ assertClean(category1B);
+ assertClean(companyB);
+ assertContent(companyB, category1B);
+
+ final Category category2B = category1B.getCategories().get(0);
+ assertClean(category2B);
+ assertClean(category1B);
+ assertContent(category1B, category2B);
+
+ final Category category3B = category2B.getCategories().get(0);
+ assertClean(category3B);
+ assertClean(category2B);
+ assertContent(category2B, category3B);
+ assertClean(category3B);
+
+ // ************************************************************* //
+
+ msg("Changing name");
+ category1A.setName("CHANGED NAME");
+
+ ITimeOuter timeOuter = new PollingTimeOuter(4, 100)
+ {
+ @Override
+ protected boolean successful()
+ {
+ return "CHANGED NAME".equals(category1B.getName());
+ }
+ };
+
+ msg("Checking before commit");
+ boolean timedOut = timeOuter.timedOut();
+ assertEquals(true, timedOut);
+
+ msg("Committing");
+ transaction.commit();
+
+ msg("Checking after commit");
+ timedOut = timeOuter.timedOut();
+ assertEquals(false, timedOut);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/PackageRegistryTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/PackageRegistryTest.java
new file mode 100644
index 0000000..26983e1
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/PackageRegistryTest.java
@@ -0,0 +1,112 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.emf.cdo.CDOObject;
+import org.eclipse.emf.cdo.CDOSession;
+import org.eclipse.emf.cdo.CDOTransaction;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.tests.model1.Company;
+import org.eclipse.emf.cdo.tests.model1.Model1Factory;
+import org.eclipse.emf.cdo.tests.model1.Model1Package;
+import org.eclipse.emf.cdo.util.CDOUtil;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl;
+
+import java.io.IOException;
+
+/**
+ * @author Eike Stepper
+ */
+public class PackageRegistryTest extends AbstractCDOTest
+{
+ public void testGeneratedPackage() throws Exception
+ {
+ {
+ // Create resource in session 1
+ CDOSession session = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ session.getPackageRegistry().putEPackage(Model1Package.eINSTANCE);
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource res = transaction.createResource("/res");
+
+ Company company = Model1Factory.eINSTANCE.createCompany();
+ company.setName("Eike");
+ res.getContents().add(company);
+ transaction.commit();
+ }
+
+ {
+ // Load resource in session 2
+ CDOSession session = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource res = transaction.getResource("/res");
+
+ Company company = (Company)res.getContents().get(0);
+ assertEquals("Eike", company.getName());
+ }
+ }
+
+ /**
+ * TODO Fix testDynamicPackage()
+ */
+ public void _testDynamicPackage() throws Exception
+ {
+ {
+ // Obtain model
+ EPackage model1 = loadModel("model1.ecore");
+ // EClass supplierClass = (EClass)model1.getEClassifier("Supplier");
+ // EStructuralFeature firstFeature =
+ // supplierClass.getEStructuralFeatures().get(0);
+
+ EClass companyClass = (EClass)model1.getEClassifier("Company");
+ EAttribute nameAttribute = (EAttribute)companyClass.getEStructuralFeature("name");
+
+ // Create resource in session 1
+ CDOSession session = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ session.getPackageRegistry().putEPackage(model1);
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource res = transaction.createResource("/res");
+
+ CDOObject company = transaction.newInstance(companyClass);
+ company.eSet(nameAttribute, "Eike");
+ res.getContents().add(company);
+ transaction.commit();
+ }
+
+ {
+ // Load resource in session 2
+ CDOSession session = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource res = transaction.getResource("/res");
+
+ CDOObject company = (CDOObject)res.getContents().get(0);
+ EClass companyClass = company.eClass();
+ EAttribute nameAttribute = (EAttribute)companyClass.getEStructuralFeature("name");
+ String name = (String)company.eGet(nameAttribute);
+ assertEquals("Eike", name);
+ }
+ }
+
+ private static EPackage loadModel(String fileName) throws IOException
+ {
+ ResourceSet resourceSet = new ResourceSetImpl();
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new EcoreResourceFactoryImpl());
+ Resource resource = resourceSet.getResource(URI.createFileURI(fileName), true);
+ return (EPackage)resource.getContents().get(0);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/TDD.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/TDD.java
new file mode 100644
index 0000000..469d67e
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/TDD.java
@@ -0,0 +1,88 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.net4j.util.tests.AbstractOMTest;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+/**
+ * @author Eike Stepper
+ */
+public class TDD
+{
+ private static final AbstractOMTest test = new PackageRegistryTest();
+
+ private static final String METHOD_NAME = "testDynamicPackage";
+
+ public static void main(String[] args) throws Throwable
+ {
+ if (METHOD_NAME != null && METHOD_NAME.length() != 0)
+ {
+ runTest(test, METHOD_NAME);
+ }
+ else
+ {
+ Method[] methods = test.getClass().getMethods();
+ for (Method method : methods)
+ {
+
+ String methodName = method.getName();
+ if (methodName.startsWith("test"))
+ {
+ runTest(test, methodName);
+ }
+ }
+ }
+
+ System.out.println("******* COMPLETED *******");
+ }
+
+ private static void runTest(AbstractOMTest test, String methodName) throws Exception, Throwable
+ {
+ test.setName(methodName);
+ test.setUp();
+ callMethod(test, methodName);
+ test.tearDown();
+ }
+
+ private static void callMethod(Object object, String methodName) throws Throwable
+ {
+ try
+ {
+ Method method = object.getClass().getMethod(methodName, new Class[0]);
+ method.invoke(object, new Object[0]);
+ }
+ catch (InvocationTargetException ex)
+ {
+ throw filterException(ex.getTargetException(), object.getClass());
+ }
+ }
+
+ private static Throwable filterException(Throwable t, Class entry)
+ {
+ StackTraceElement[] stackTrace = t.getStackTrace();
+ int len;
+ for (len = stackTrace.length - 1; len >= 0; len--)
+ {
+ if (stackTrace[len].getClassName().equals(entry.getName()))
+ {
+ StackTraceElement[] filtered = new StackTraceElement[++len];
+ System.arraycopy(stackTrace, 0, filtered, 0, len);
+ t.setStackTrace(filtered);
+ break;
+ }
+ }
+
+ return t;
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/internal/CDOTestPlugin.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/internal/CDOTestPlugin.java
deleted file mode 100644
index dceb8de..0000000
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/internal/CDOTestPlugin.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/***************************************************************************
- * Copyright (c) 2004, 2005, 2006 Eike Stepper, Germany.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- **************************************************************************/
-package org.eclipse.emf.cdo.tests.internal;
-
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-
-public class CDOTestPlugin implements BundleActivator
-{
- private static CDOTestPlugin instance;
-
- public CDOTestPlugin()
- {
- super();
- instance = this;
- }
-
- public static CDOTestPlugin getPlugin()
- {
- return instance;
- }
-
- public void start(BundleContext context) throws Exception
- {
- }
-
- public void stop(BundleContext context) throws Exception
- {
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/10536.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/10536.uml
new file mode 100644
index 0000000..7c50b81
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/10536.uml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="_y16xIPnhEdunWsS3se92JQ" name="10536">
+ <packagedElement xmi:type="uml:Class" xmi:id="_0dB44PnhEdunWsS3se92JQ" name="ConnectableElement" isAbstract="true">
+ <ownedAttribute xmi:id="_5fDBQPnhEdunWsS3se92JQ" name="end" visibility="public" type="_2UPSIPnhEdunWsS3se92JQ" isDerived="true" association="_5e5QQPnhEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5fDBQvnhEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5fDBQfnhEdunWsS3se92JQ"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_tL_ewPniEdunWsS3se92JQ" name="getEnds" visibility="protected">
+ <ownedParameter xmi:id="_uvsGIPniEdunWsS3se92JQ" name="" type="_2UPSIPnhEdunWsS3se92JQ" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xsLscfniEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xsLscPniEdunWsS3se92JQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_2UPSIPnhEdunWsS3se92JQ" name="ConnectorEnd">
+ <ownedAttribute xmi:id="_81UZgfnhEdunWsS3se92JQ" name="role" visibility="public" type="_0dB44PnhEdunWsS3se92JQ" association="_81UZgPnhEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_81UZg_nhEdunWsS3se92JQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_81UZgvnhEdunWsS3se92JQ" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_5e5QQPnhEdunWsS3se92JQ" name="A_connectableElement_end" memberEnd="_5fDBQPnhEdunWsS3se92JQ _5fDBQ_nhEdunWsS3se92JQ">
+ <ownedEnd xmi:id="_5fDBQ_nhEdunWsS3se92JQ" name="" visibility="private" type="_0dB44PnhEdunWsS3se92JQ" association="_5e5QQPnhEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5fDBRfnhEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5fDBRPnhEdunWsS3se92JQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_81UZgPnhEdunWsS3se92JQ" name="A_end_role" memberEnd="_81UZgfnhEdunWsS3se92JQ _81UZhPnhEdunWsS3se92JQ">
+ <ownedEnd xmi:id="_81UZhPnhEdunWsS3se92JQ" name="end" visibility="private" type="_2UPSIPnhEdunWsS3se92JQ" association="_81UZgPnhEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_81UZhvnhEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_81UZhfnhEdunWsS3se92JQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <profileApplication xmi:id="_vz32QPn-EduCCoNWMwSrOA">
+ <eAnnotations xmi:id="_v2Qb4Pn-EduCCoNWMwSrOA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EReference xmi:id="_yzfpEPn-EduCCoNWMwSrOA" isTransient="true" isVolatile="true" base_Property="_5fDBQPnhEdunWsS3se92JQ"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/10537.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/10537.uml
new file mode 100644
index 0000000..bd271b4
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/10537.uml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="_udv6MPnlEdunWsS3se92JQ" name="10537">
+ <packagedElement xmi:type="uml:Class" xmi:id="_xM1WoPnlEdunWsS3se92JQ" name="Vertex" isAbstract="true">
+ <ownedAttribute xmi:id="_R1FbMfnmEdunWsS3se92JQ" name="incoming" visibility="public" type="_ykKV8PnlEdunWsS3se92JQ" isDerived="true" association="_R1FbMPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_R1FbM_nmEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_R1FbMvnmEdunWsS3se92JQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_X_OCMPnmEdunWsS3se92JQ" name="outgoing" visibility="public" type="_ykKV8PnlEdunWsS3se92JQ" isDerived="true" association="_X_E4QPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_X_OCMvnmEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_X_OCMfnmEdunWsS3se92JQ"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_RqYxoPnnEdunWsS3se92JQ" name="getIncomings" visibility="protected">
+ <ownedParameter xmi:id="_UvruoPnnEdunWsS3se92JQ" name="" type="_ykKV8PnlEdunWsS3se92JQ" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YahosfnnEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YahosPnnEdunWsS3se92JQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_aHv_gPnnEdunWsS3se92JQ" name="getOutgoings" visibility="protected">
+ <ownedParameter xmi:id="_aHv_gfnnEdunWsS3se92JQ" name="" type="_ykKV8PnlEdunWsS3se92JQ" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aHv_gvnnEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aHv_g_nnEdunWsS3se92JQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ykKV8PnlEdunWsS3se92JQ" name="Transition">
+ <ownedAttribute xmi:id="_EhVtMPnmEdunWsS3se92JQ" name="target" visibility="public" type="_xM1WoPnlEdunWsS3se92JQ" association="_EhL8MPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EhVtMvnmEdunWsS3se92JQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EhVtMfnmEdunWsS3se92JQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_JPYJofnmEdunWsS3se92JQ" name="source" visibility="public" type="_xM1WoPnlEdunWsS3se92JQ" association="_JPYJoPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JPYJo_nmEdunWsS3se92JQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JPYJovnmEdunWsS3se92JQ" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_EhL8MPnmEdunWsS3se92JQ" name="A_incoming_target" memberEnd="_EhVtMPnmEdunWsS3se92JQ _EhVtM_nmEdunWsS3se92JQ">
+ <ownedEnd xmi:id="_EhVtM_nmEdunWsS3se92JQ" name="incoming" visibility="private" type="_ykKV8PnlEdunWsS3se92JQ" association="_EhL8MPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EhVtNfnmEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EhVtNPnmEdunWsS3se92JQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_JPYJoPnmEdunWsS3se92JQ" name="A_outgoing_source" memberEnd="_JPYJofnmEdunWsS3se92JQ _JPh6oPnmEdunWsS3se92JQ">
+ <ownedEnd xmi:id="_JPh6oPnmEdunWsS3se92JQ" name="outgoing" visibility="private" type="_ykKV8PnlEdunWsS3se92JQ" association="_JPYJoPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JPh6ovnmEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JPh6ofnmEdunWsS3se92JQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_R1FbMPnmEdunWsS3se92JQ" name="A_vertex_incoming" memberEnd="_R1FbMfnmEdunWsS3se92JQ _R1FbNPnmEdunWsS3se92JQ">
+ <ownedEnd xmi:id="_R1FbNPnmEdunWsS3se92JQ" name="" visibility="private" type="_xM1WoPnlEdunWsS3se92JQ" association="_R1FbMPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_R1FbNvnmEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_R1FbNfnmEdunWsS3se92JQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_X_E4QPnmEdunWsS3se92JQ" name="A_vertex_outgoing" memberEnd="_X_OCMPnmEdunWsS3se92JQ _X_OCM_nmEdunWsS3se92JQ">
+ <ownedEnd xmi:id="_X_OCM_nmEdunWsS3se92JQ" name="" visibility="private" type="_xM1WoPnlEdunWsS3se92JQ" association="_X_E4QPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_X_OCNfnmEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_X_OCNPnmEdunWsS3se92JQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <profileApplication xmi:id="_3zuBsPn-EduCCoNWMwSrOA">
+ <eAnnotations xmi:id="_3zuBsfn-EduCCoNWMwSrOA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EReference xmi:id="_5aiOgPn-EduCCoNWMwSrOA" isTransient="true" isVolatile="true" base_Property="_R1FbMfnmEdunWsS3se92JQ"/>
+ <Ecore:EReference xmi:id="_8M5BYPn-EduCCoNWMwSrOA" isTransient="true" isVolatile="true" base_Property="_X_OCMPnmEdunWsS3se92JQ"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/Ecore.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/Ecore.uml
new file mode 100644
index 0000000..ca43ec6
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/Ecore.uml
@@ -0,0 +1,977 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="_SeWiQMX_EduPJbEsMYXjUQ" name="Ecore">
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWj6cX_EduPJbEsMYXjUQ" name="EAnnotation">
+ <eAnnotations xmi:id="_SeWj6sX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWj68X_EduPJbEsMYXjUQ" key="constraints" value="WellFormedSourceURI"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWj7MX_EduPJbEsMYXjUQ" general="_SeWihMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWj7cX_EduPJbEsMYXjUQ" name="source" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWj7sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWj78X_EduPJbEsMYXjUQ" name="details" type="_SeWj-sX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWj_8X_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWj8MX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWj8cX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWj8sX_EduPJbEsMYXjUQ" name="eModelElement" type="_SeWihMX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWkAcX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWj88X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWj9MX_EduPJbEsMYXjUQ" name="contents" type="_SeWijsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWkAsX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWj9cX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWj9sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWj98X_EduPJbEsMYXjUQ" name="references" type="_SeWijsX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWkBMX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWj-MX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWj-cX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWiQcX_EduPJbEsMYXjUQ" name="EAttribute">
+ <eAnnotations xmi:id="_SeWiQsX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWiQ8X_EduPJbEsMYXjUQ" key="constraints" value="ConsistentTransient"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWiRMX_EduPJbEsMYXjUQ" general="_SeWiSMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWiRcX_EduPJbEsMYXjUQ" name="id" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiRsX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWiR8X_EduPJbEsMYXjUQ" name="eAttributeType" type="_SeWjasX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWkCsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWizcX_EduPJbEsMYXjUQ" name="EClass">
+ <eAnnotations xmi:id="_SeWizsX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWiz8X_EduPJbEsMYXjUQ" key="constraints" value="InterfaceIsAbstract AtMostOneID UniqueFeatureNames UniqueOperationSignatures NoCircularSuperTypes WellFormedMapEntryClass ConsistentSuperTypes"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWi0MX_EduPJbEsMYXjUQ" general="_SeWjG8X_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWi0cX_EduPJbEsMYXjUQ" name="abstract" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi0sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi08X_EduPJbEsMYXjUQ" name="interface" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi1MX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi1cX_EduPJbEsMYXjUQ" name="eSuperTypes" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWjlsX_EduPJbEsMYXjUQ">
+ <eAnnotations xmi:id="_SeWi1sX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_SeWi18X_EduPJbEsMYXjUQ" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_SeWi2MX_EduPJbEsMYXjUQ" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi2cX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi2sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi28X_EduPJbEsMYXjUQ" name="eOperations" type="_SeWjmMX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjsMX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi3MX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi3cX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi3sX_EduPJbEsMYXjUQ" name="eAllAttributes" type="_SeWiQcX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWjvMX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi38X_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi4MX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi4cX_EduPJbEsMYXjUQ" name="eAllReferences" type="_SeWjvsX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj1MX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi4sX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi48X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi5MX_EduPJbEsMYXjUQ" name="eReferences" type="_SeWjvsX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj1sX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi5cX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi5sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi58X_EduPJbEsMYXjUQ" name="eAttributes" type="_SeWiQcX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj2MX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi6MX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi6cX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi6sX_EduPJbEsMYXjUQ" name="eAllContainments" type="_SeWjvsX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj2sX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi68X_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi7MX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi7cX_EduPJbEsMYXjUQ" name="eAllOperations" type="_SeWjmMX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj3MX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi7sX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi78X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi8MX_EduPJbEsMYXjUQ" name="eAllStructuralFeatures" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj3sX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi8cX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi8sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi88X_EduPJbEsMYXjUQ" name="eAllSuperTypes" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj4MX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi9MX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi9cX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi9sX_EduPJbEsMYXjUQ" name="eIDAttribute" type="_SeWiQcX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj4sX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi98X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi-MX_EduPJbEsMYXjUQ" name="eStructuralFeatures" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWj5MX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi-cX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi-sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi-8X_EduPJbEsMYXjUQ" name="eGenericSuperTypes" type="_SeWjdsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWj5cX_EduPJbEsMYXjUQ">
+ <eAnnotations xmi:id="_SeWi_MX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_SeWi_cX_EduPJbEsMYXjUQ" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_SeWi_sX_EduPJbEsMYXjUQ" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi_8X_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjAMX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjAcX_EduPJbEsMYXjUQ" name="eAllGenericSuperTypes" type="_SeWjdsX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj58X_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjAsX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjA8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_SeWjBMX_EduPJbEsMYXjUQ" name="isSuperTypeOf" visibility="public">
+ <ownedParameter xmi:id="_SeWjBcX_EduPJbEsMYXjUQ" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjBsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjB8X_EduPJbEsMYXjUQ" name="someClass" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjCMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWjCcX_EduPJbEsMYXjUQ" name="getFeatureCount" visibility="public">
+ <ownedParameter xmi:id="_SeWjCsX_EduPJbEsMYXjUQ" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjC8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWjDMX_EduPJbEsMYXjUQ" name="getEStructuralFeature" visibility="public">
+ <ownedParameter xmi:id="_SeWjDcX_EduPJbEsMYXjUQ" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjDsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjD8X_EduPJbEsMYXjUQ" name="featureID" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjEMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWjEcX_EduPJbEsMYXjUQ" name="getFeatureID" visibility="public">
+ <ownedParameter xmi:id="_SeWjEsX_EduPJbEsMYXjUQ" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjE8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjFMX_EduPJbEsMYXjUQ" name="feature" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjFcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWjFsX_EduPJbEsMYXjUQ" name="getEStructuralFeature" visibility="public">
+ <ownedParameter xmi:id="_SeWjF8X_EduPJbEsMYXjUQ" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjGMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjGcX_EduPJbEsMYXjUQ" name="featureName" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjGsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjG8X_EduPJbEsMYXjUQ" name="EClassifier" isAbstract="true">
+ <eAnnotations xmi:id="_SeWjHMX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWjHcX_EduPJbEsMYXjUQ" key="constraints" value="WellFormedInstanceTypeName UniqueTypeParameterNames"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWjHsX_EduPJbEsMYXjUQ" general="_SeWifsX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjH8X_EduPJbEsMYXjUQ" name="instanceClassName" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <eAnnotations xmi:id="_SeWjIMX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_SeWjIcX_EduPJbEsMYXjUQ" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_SeWjIsX_EduPJbEsMYXjUQ" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjI8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjJMX_EduPJbEsMYXjUQ" name="instanceClass" visibility="public" type="_SeWjM8X_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjJcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjJsX_EduPJbEsMYXjUQ" name="defaultValue" visibility="public" type="_SeWkccX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjJ8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjKMX_EduPJbEsMYXjUQ" name="instanceTypeName" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <eAnnotations xmi:id="_SeWjKcX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_SeWjKsX_EduPJbEsMYXjUQ" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_SeWjK8X_EduPJbEsMYXjUQ" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjLMX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjLcX_EduPJbEsMYXjUQ" name="ePackage" type="_SeWjPsX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" association="_SeWjb8X_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjLsX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjL8X_EduPJbEsMYXjUQ" name="eTypeParameters" type="_SeWjccX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjlMX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjMMX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjMcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_SeWjMsX_EduPJbEsMYXjUQ" name="Wildcard"/>
+ <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_SeWjM8X_EduPJbEsMYXjUQ" name="EJavaClass_Wildcard">
+ <templateBinding xmi:id="_SeWjNMX_EduPJbEsMYXjUQ" signature="_SeWkbsX_EduPJbEsMYXjUQ">
+ <parameterSubstitution xmi:id="_SeWjNcX_EduPJbEsMYXjUQ" formal="_SeWkb8X_EduPJbEsMYXjUQ" actual="_SeWjMsX_EduPJbEsMYXjUQ"/>
+ </templateBinding>
+ </nestedClassifier>
+ <ownedOperation xmi:id="_SeWjNsX_EduPJbEsMYXjUQ" name="isInstance" visibility="public">
+ <ownedParameter xmi:id="_SeWjN8X_EduPJbEsMYXjUQ" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjOMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjOcX_EduPJbEsMYXjUQ" name="object" type="_SeWkccX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjOsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWjO8X_EduPJbEsMYXjUQ" name="getClassifierID" visibility="public">
+ <ownedParameter xmi:id="_SeWjPMX_EduPJbEsMYXjUQ" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjPcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjasX_EduPJbEsMYXjUQ" name="EDataType">
+ <generalization xmi:id="_SeWja8X_EduPJbEsMYXjUQ" general="_SeWjG8X_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjbMX_EduPJbEsMYXjUQ" name="serializable" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjbcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWkDMX_EduPJbEsMYXjUQ" name="EEnum">
+ <eAnnotations xmi:id="_SeWkDcX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWkDsX_EduPJbEsMYXjUQ" key="constraints" value="UniqueEnumeratorNames UniqueEnumeratorLiterals"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWkD8X_EduPJbEsMYXjUQ" general="_SeWjasX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWkEMX_EduPJbEsMYXjUQ" name="eLiterals" type="_SeWkIsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWkLMX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWkEcX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkEsX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_SeWkE8X_EduPJbEsMYXjUQ" name="getEEnumLiteral" visibility="public">
+ <ownedParameter xmi:id="_SeWkFMX_EduPJbEsMYXjUQ" type="_SeWkIsX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkFcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWkFsX_EduPJbEsMYXjUQ" name="name" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkF8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWkGMX_EduPJbEsMYXjUQ" name="getEEnumLiteral" visibility="public">
+ <ownedParameter xmi:id="_SeWkGcX_EduPJbEsMYXjUQ" type="_SeWkIsX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkGsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWkG8X_EduPJbEsMYXjUQ" name="value" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkHMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWkHcX_EduPJbEsMYXjUQ" name="getEEnumLiteralByLiteral" visibility="public">
+ <ownedParameter xmi:id="_SeWkHsX_EduPJbEsMYXjUQ" type="_SeWkIsX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkH8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWkIMX_EduPJbEsMYXjUQ" name="literal" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkIcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWkIsX_EduPJbEsMYXjUQ" name="EEnumLiteral">
+ <generalization xmi:id="_SeWkI8X_EduPJbEsMYXjUQ" general="_SeWifsX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWkJMX_EduPJbEsMYXjUQ" name="value" visibility="public" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkJcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWkJsX_EduPJbEsMYXjUQ" name="instance" visibility="public" type="_SeWkWsX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkJ8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWkKMX_EduPJbEsMYXjUQ" name="literal" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkKcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWkKsX_EduPJbEsMYXjUQ" name="eEnum" type="_SeWkDMX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" association="_SeWkLMX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkK8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjVMX_EduPJbEsMYXjUQ" name="EFactory">
+ <generalization xmi:id="_SeWjVcX_EduPJbEsMYXjUQ" general="_SeWihMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjVsX_EduPJbEsMYXjUQ" name="ePackage" type="_SeWjPsX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWjbsX_EduPJbEsMYXjUQ"/>
+ <ownedOperation xmi:id="_SeWjV8X_EduPJbEsMYXjUQ" name="create" visibility="public">
+ <ownedParameter xmi:id="_SeWjWMX_EduPJbEsMYXjUQ" type="_SeWijsX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjWcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjWsX_EduPJbEsMYXjUQ" name="eClass" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjW8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWjXMX_EduPJbEsMYXjUQ" name="createFromString" visibility="public">
+ <ownedParameter xmi:id="_SeWjXcX_EduPJbEsMYXjUQ" type="_SeWkccX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjXsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjX8X_EduPJbEsMYXjUQ" name="eDataType" type="_SeWjasX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjYMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjYcX_EduPJbEsMYXjUQ" name="literalValue" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjYsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWjY8X_EduPJbEsMYXjUQ" name="convertToString" visibility="public">
+ <ownedParameter xmi:id="_SeWjZMX_EduPJbEsMYXjUQ" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjZcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjZsX_EduPJbEsMYXjUQ" name="eDataType" type="_SeWjasX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjZ8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjaMX_EduPJbEsMYXjUQ" name="instanceValue" type="_SeWkccX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjacX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjdsX_EduPJbEsMYXjUQ" name="EGenericType">
+ <eAnnotations xmi:id="_SeWjd8X_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWjeMX_EduPJbEsMYXjUQ" key="constraints" value="ConsistentType ConsistentBounds ConsistentArguments"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWjecX_EduPJbEsMYXjUQ" general="_SeWijsX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjesX_EduPJbEsMYXjUQ" name="eUpperBound" type="_SeWjdsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjhsX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWje8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjfMX_EduPJbEsMYXjUQ" name="eTypeArguments" type="_SeWjdsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjiMX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjfcX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjfsX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjf8X_EduPJbEsMYXjUQ" name="eRawType" type="_SeWjG8X_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWjisX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjgMX_EduPJbEsMYXjUQ" name="eLowerBound" type="_SeWjdsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjjMX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjgcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjgsX_EduPJbEsMYXjUQ" name="eTypeParameter" type="_SeWjccX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWjjsX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjg8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjhMX_EduPJbEsMYXjUQ" name="eClassifier" type="_SeWjG8X_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWjkMX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjhcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWihMX_EduPJbEsMYXjUQ" name="EModelElement" isAbstract="true">
+ <generalization xmi:id="_SeWihcX_EduPJbEsMYXjUQ" general="_SeWijsX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWihsX_EduPJbEsMYXjUQ" name="eAnnotations" type="_SeWj6cX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWkAcX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWih8X_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiiMX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_SeWiicX_EduPJbEsMYXjUQ" name="getEAnnotation" visibility="public">
+ <ownedParameter xmi:id="_SeWiisX_EduPJbEsMYXjUQ" type="_SeWj6cX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWii8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWijMX_EduPJbEsMYXjUQ" name="source" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWijcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWifsX_EduPJbEsMYXjUQ" name="ENamedElement" isAbstract="true">
+ <eAnnotations xmi:id="_SeWif8X_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWigMX_EduPJbEsMYXjUQ" key="constraints" value="WellFormedName"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWigcX_EduPJbEsMYXjUQ" general="_SeWihMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWigsX_EduPJbEsMYXjUQ" name="name" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWig8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWijsX_EduPJbEsMYXjUQ" name="EObject">
+ <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_SeWij8X_EduPJbEsMYXjUQ" name="EEList_EObject">
+ <templateBinding xmi:id="_SeWikMX_EduPJbEsMYXjUQ" signature="_SeWkV8X_EduPJbEsMYXjUQ">
+ <parameterSubstitution xmi:id="_SeWikcX_EduPJbEsMYXjUQ" formal="_SeWkWMX_EduPJbEsMYXjUQ" actual="_SeWijsX_EduPJbEsMYXjUQ"/>
+ </templateBinding>
+ </nestedClassifier>
+ <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_SeWiksX_EduPJbEsMYXjUQ" name="ETreeIterator_EObject">
+ <templateBinding xmi:id="_SeWik8X_EduPJbEsMYXjUQ" signature="_SeWkjsX_EduPJbEsMYXjUQ">
+ <parameterSubstitution xmi:id="_SeWilMX_EduPJbEsMYXjUQ" formal="_SeWkj8X_EduPJbEsMYXjUQ" actual="_SeWijsX_EduPJbEsMYXjUQ"/>
+ </templateBinding>
+ </nestedClassifier>
+ <ownedOperation xmi:id="_SeWilcX_EduPJbEsMYXjUQ" name="eClass" visibility="public">
+ <ownedParameter xmi:id="_SeWilsX_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWil8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWimMX_EduPJbEsMYXjUQ" name="eIsProxy" visibility="public">
+ <ownedParameter xmi:id="_SeWimcX_EduPJbEsMYXjUQ" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWimsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWim8X_EduPJbEsMYXjUQ" name="eResource" visibility="public">
+ <ownedParameter xmi:id="_SeWinMX_EduPJbEsMYXjUQ" type="_SeWkgMX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWincX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWinsX_EduPJbEsMYXjUQ" name="eContainer" visibility="public">
+ <ownedParameter xmi:id="_SeWin8X_EduPJbEsMYXjUQ" type="_SeWijsX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWioMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWiocX_EduPJbEsMYXjUQ" name="eContainingFeature" visibility="public">
+ <ownedParameter xmi:id="_SeWiosX_EduPJbEsMYXjUQ" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWio8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWipMX_EduPJbEsMYXjUQ" name="eContainmentFeature" visibility="public">
+ <ownedParameter xmi:id="_SeWipcX_EduPJbEsMYXjUQ" type="_SeWjvsX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWipsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWip8X_EduPJbEsMYXjUQ" name="eContents" visibility="public">
+ <ownedParameter xmi:id="_SeWiqMX_EduPJbEsMYXjUQ" type="_SeWij8X_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiqcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWiqsX_EduPJbEsMYXjUQ" name="eAllContents" visibility="public">
+ <ownedParameter xmi:id="_SeWiq8X_EduPJbEsMYXjUQ" type="_SeWiksX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWirMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWircX_EduPJbEsMYXjUQ" name="eCrossReferences" visibility="public">
+ <ownedParameter xmi:id="_SeWirsX_EduPJbEsMYXjUQ" type="_SeWij8X_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWir8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWisMX_EduPJbEsMYXjUQ" name="eGet" visibility="public">
+ <ownedParameter xmi:id="_SeWiscX_EduPJbEsMYXjUQ" type="_SeWkccX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWissX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWis8X_EduPJbEsMYXjUQ" name="feature" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWitMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWitcX_EduPJbEsMYXjUQ" name="eGet" visibility="public">
+ <ownedParameter xmi:id="_SeWitsX_EduPJbEsMYXjUQ" type="_SeWkccX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWit8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWiuMX_EduPJbEsMYXjUQ" name="feature" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiucX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWiusX_EduPJbEsMYXjUQ" name="resolve" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiu8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWivMX_EduPJbEsMYXjUQ" name="eSet" visibility="public">
+ <ownedParameter xmi:id="_SeWivcX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWivsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWiv8X_EduPJbEsMYXjUQ" name="feature" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiwMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWiwcX_EduPJbEsMYXjUQ" name="newValue" type="_SeWkccX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiwsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWiw8X_EduPJbEsMYXjUQ" name="eIsSet" visibility="public">
+ <ownedParameter xmi:id="_SeWixMX_EduPJbEsMYXjUQ" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWixcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWixsX_EduPJbEsMYXjUQ" name="feature" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWix8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWiyMX_EduPJbEsMYXjUQ" name="eUnset" visibility="public">
+ <ownedParameter xmi:id="_SeWiycX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiysX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWiy8X_EduPJbEsMYXjUQ" name="feature" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWizMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjmMX_EduPJbEsMYXjUQ" name="EOperation">
+ <eAnnotations xmi:id="_SeWjmcX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWjmsX_EduPJbEsMYXjUQ" key="constraints" value="UniqueParameterNames UniqueTypeParameterNames NoRepeatingVoid"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWjm8X_EduPJbEsMYXjUQ" general="_SeWiZMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjnMX_EduPJbEsMYXjUQ" name="eContainingClass" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" association="_SeWjsMX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjncX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjnsX_EduPJbEsMYXjUQ" name="eTypeParameters" type="_SeWjccX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjscX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjn8X_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjoMX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjocX_EduPJbEsMYXjUQ" name="eParameters" type="_SeWjs8X_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjt8X_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjosX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjo8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjpMX_EduPJbEsMYXjUQ" name="eExceptions" type="_SeWjG8X_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWjuMX_EduPJbEsMYXjUQ">
+ <eAnnotations xmi:id="_SeWjpcX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_SeWjpsX_EduPJbEsMYXjUQ" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_SeWjp8X_EduPJbEsMYXjUQ" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjqMX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjqcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjqsX_EduPJbEsMYXjUQ" name="eGenericExceptions" type="_SeWjdsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjusX_EduPJbEsMYXjUQ">
+ <eAnnotations xmi:id="_SeWjq8X_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_SeWjrMX_EduPJbEsMYXjUQ" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_SeWjrcX_EduPJbEsMYXjUQ" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjrsX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjr8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjPsX_EduPJbEsMYXjUQ" name="EPackage">
+ <eAnnotations xmi:id="_SeWjP8X_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWjQMX_EduPJbEsMYXjUQ" key="constraints" value="WellFormedNsURI WellFormedNsPrefix UniqueSubpackageNames UniqueClassifierNames UniqueNsURIs"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWjQcX_EduPJbEsMYXjUQ" general="_SeWifsX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjQsX_EduPJbEsMYXjUQ" name="nsURI" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjQ8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjRMX_EduPJbEsMYXjUQ" name="nsPrefix" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjRcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjRsX_EduPJbEsMYXjUQ" name="eFactoryInstance" type="_SeWjVMX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWjbsX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjR8X_EduPJbEsMYXjUQ" name="eClassifiers" type="_SeWjG8X_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjb8X_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjSMX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjScX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjSsX_EduPJbEsMYXjUQ" name="eSubpackages" type="_SeWjPsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjcMX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjS8X_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjTMX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjTcX_EduPJbEsMYXjUQ" name="eSuperPackage" type="_SeWjPsX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" association="_SeWjcMX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjTsX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_SeWjT8X_EduPJbEsMYXjUQ" name="getEClassifier" visibility="public">
+ <ownedParameter xmi:id="_SeWjUMX_EduPJbEsMYXjUQ" type="_SeWjG8X_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjUcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjUsX_EduPJbEsMYXjUQ" name="name" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjU8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjs8X_EduPJbEsMYXjUQ" name="EParameter">
+ <generalization xmi:id="_SeWjtMX_EduPJbEsMYXjUQ" general="_SeWiZMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjtcX_EduPJbEsMYXjUQ" name="eOperation" type="_SeWjmMX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" association="_SeWjt8X_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjtsX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjvsX_EduPJbEsMYXjUQ" name="EReference">
+ <eAnnotations xmi:id="_SeWjv8X_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWjwMX_EduPJbEsMYXjUQ" key="constraints" value="ConsistentOpposite SingleContainer ConsistentKeys"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWjwcX_EduPJbEsMYXjUQ" general="_SeWiSMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjwsX_EduPJbEsMYXjUQ" name="containment" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjw8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjxMX_EduPJbEsMYXjUQ" name="container" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjxcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjxsX_EduPJbEsMYXjUQ" name="resolveProxies" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjx8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjyMX_EduPJbEsMYXjUQ" name="eOpposite" type="_SeWjvsX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWjzsX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjycX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjysX_EduPJbEsMYXjUQ" name="eReferenceType" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj0MX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjy8X_EduPJbEsMYXjUQ" name="eKeys" type="_SeWiQcX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWj0sX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjzMX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjzcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWj-sX_EduPJbEsMYXjUQ" name="EStringToStringMapEntry">
+ <ownedAttribute xmi:id="_SeWj-8X_EduPJbEsMYXjUQ" name="key" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWj_MX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWj_cX_EduPJbEsMYXjUQ" name="value" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWj_sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWiSMX_EduPJbEsMYXjUQ" name="EStructuralFeature" isAbstract="true">
+ <generalization xmi:id="_SeWiScX_EduPJbEsMYXjUQ" general="_SeWiZMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWiSsX_EduPJbEsMYXjUQ" name="eContainingClass" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" association="_SeWj5MX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiS8X_EduPJbEsMYXjUQ"/>
+