summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2006-10-31 14:07:53 (EST)
committerEike Stepper2006-10-31 14:07:53 (EST)
commitd0c26771aa84bb84a6da73d8209b159e2452b6c0 (patch)
tree20b857774dd04a564f03e95513e38f0540d79f26
parent03b955bc60d8250f2b5671819af5fbed7f4b2e4a (diff)
downloadcdo-d0c26771aa84bb84a6da73d8209b159e2452b6c0.zip
cdo-d0c26771aa84bb84a6da73d8209b159e2452b6c0.tar.gz
cdo-d0c26771aa84bb84a6da73d8209b159e2452b6c0.tar.bz2
[162961] CDO objects not loading correctly - https://bugs.eclipse.org/bugs/show_bug.cgi?id=162961
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/launches/CDO All Tests.launch5
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/model/TestModel1.ecore4
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/model1/AllTests.java1
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/model1/Bugzilla162961Test.java303
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/topology/AbstractTopologyTest.java18
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/testmodel1/TestModel1Package.java120
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/testmodel1/TreeNode.java48
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/testmodel1/impl/TestModel1FactoryImpl.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/testmodel1/impl/TestModel1PackageImpl.java36
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/testmodel1/impl/TreeNodeImpl.java112
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/testmodel1/util/TestModel1AdapterFactory.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/testmodel1/util/TestModel1Switch.java2
12 files changed, 640 insertions, 13 deletions
diff --git a/plugins/org.eclipse.emf.cdo.tests/launches/CDO All Tests.launch b/plugins/org.eclipse.emf.cdo.tests/launches/CDO All Tests.launch
index 6264660..3bee233 100644
--- a/plugins/org.eclipse.emf.cdo.tests/launches/CDO All Tests.launch
+++ b/plugins/org.eclipse.emf.cdo.tests/launches/CDO All Tests.launch
@@ -12,7 +12,6 @@
</listAttribute>
<stringAttribute key="selected_target_plugins" value="com.ibm.icu,org.apache.ant,org.apache.xerces,org.eclipse.ant.core,org.eclipse.core.contenttype,org.eclipse.core.expressions,org.eclipse.core.filesystem,org.eclipse.core.filesystem.win32.x86,org.eclipse.core.jobs,org.eclipse.core.resources,org.eclipse.core.resources.compatibility,org.eclipse.core.resources.win32,org.eclipse.core.runtime,org.eclipse.core.runtime.compatibility,org.eclipse.core.runtime.compatibility.auth,org.eclipse.core.runtime.compatibility.registry,org.eclipse.core.variables,org.eclipse.emf.common,org.eclipse.emf.ecore,org.eclipse.emf.ecore.change,org.eclipse.emf.ecore.edit,org.eclipse.emf.ecore.xmi,org.eclipse.emf.edit,org.eclipse.emf.ocl,org.eclipse.equinox.common,org.eclipse.equinox.preferences,org.eclipse.equinox.registry,org.eclipse.osgi,org.eclipse.update.configurator,org.junit"/>
<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
-<stringAttribute key="org.eclipse.debug.ui.ATTR_CAPTURE_IN_FILE" value="/AllTests.txt"/>
<booleanAttribute key="automaticValidate" value="true"/>
<booleanAttribute key="org.eclipse.hyades.trace.ui.ATTR_SHOW_HEAP_INSTANCES" value="true"/>
<stringAttribute key="org.eclipse.hyades.trace.ui.ATTR_DESTINATION_FILE" value=""/>
@@ -21,15 +20,15 @@
<booleanAttribute key="automaticAdd" value="false"/>
<stringAttribute key="checked" value="[NONE]"/>
<booleanAttribute key="org.eclipse.hyades.trace.ui.ATTR_PROFILE_TO_FILE" value="false"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.cdo.jdbc,org.eclipse.net4j.spring,org.eclipse.net4j.socket,org.eclipse.net4j.core,org.eclipse.net4j.spring.db,org.eclipse.emf.cdo.dbgen,org.eclipse.emf.cdo.tests,org.eclipse.emf.cdo.mapping,org.eclipse.emf.cdo.core,org.eclipse.emf.cdo.client,org.eclipse.net4j.util,org.eclipse.emf.cdo.client.ocl,org.eclipse.emf.cdo.server,org.eclipse.net4j.embedded,org.eclipse.emf.cdo.jdbc.derby,org.eclipse.emf.cdo.dbgen.derby,org.eclipse.emf.cdo.dbgen.oracle,org.eclipse.emf.cdo.jdbc.hsqldb,org.eclipse.emf.cdo.jdbc.mysql,org.eclipse.emf.cdo.dbgen.ansi92,org.eclipse.emf.cdo.dbgen.mysql,org.eclipse.emf.cdo.dbgen.hsqldb"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.cdo.jdbc,org.eclipse.net4j.spring,org.eclipse.net4j.socket,org.eclipse.net4j.core,org.eclipse.net4j.spring.db,org.eclipse.emf.cdo.dbgen,org.eclipse.emf.cdo.tests,org.eclipse.emf.cdo.mapping,org.eclipse.emf.cdo.core,org.eclipse.emf.cdo.client,org.eclipse.net4j.util,org.eclipse.emf.cdo.server,org.eclipse.emf.cdo.client.ocl,org.eclipse.net4j.embedded,org.eclipse.emf.cdo.jdbc.derby,org.eclipse.emf.cdo.dbgen.derby,org.eclipse.emf.cdo.dbgen.oracle,org.eclipse.emf.cdo.jdbc.hsqldb,org.eclipse.emf.cdo.jdbc.mysql,org.eclipse.emf.cdo.dbgen.ansi92,org.eclipse.emf.cdo.dbgen.mysql,org.eclipse.emf.cdo.dbgen.hsqldb"/>
<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
<stringAttribute key="application" value="org.eclipse.pde.junit.runtime.coretestapplication"/>
<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
<booleanAttribute key="clearws" value="true"/>
<stringAttribute key="org.eclipse.hyades.trace.ui.ATTR_DESTINATION_MONITOR" value="DefaultMonitor"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.cdo.tests.model1.AllTests"/>
-<booleanAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_OUTPUT_ON" value="false"/>
<stringAttribute key="pde.version" value="3.2a"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dcdo.test.mode=Client-Server"/>
<stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/>
<booleanAttribute key="default" value="false"/>
<booleanAttribute key="clearConfig" value="true"/>
diff --git a/plugins/org.eclipse.emf.cdo.tests/model/TestModel1.ecore b/plugins/org.eclipse.emf.cdo.tests/model/TestModel1.ecore
index b010a1e..7581af6 100644
--- a/plugins/org.eclipse.emf.cdo.tests/model/TestModel1.ecore
+++ b/plugins/org.eclipse.emf.cdo.tests/model/TestModel1.ecore
@@ -8,6 +8,10 @@
eOpposite="#//TreeNode/children"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"
eType="#//TreeNode" containment="true" eOpposite="#//TreeNode/parent"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parent2" eType="#//TreeNode"
+ eOpposite="#//TreeNode/children2"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="children2" upperBound="-1"
+ eType="#//TreeNode" containment="true" eOpposite="#//TreeNode/parent2"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="references" upperBound="-1"
eType="#//TreeNode"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="booleanFeature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/model1/AllTests.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/model1/AllTests.java
index cf250fc..c7aab30 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/model1/AllTests.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/model1/AllTests.java
@@ -32,6 +32,7 @@ public class AllTests
suite.addTestSuite(Bugzilla154389Test.class);
suite.addTestSuite(Bugzilla155899Test.class);
suite.addTestSuite(Bugzilla162017Test.class);
+ suite.addTestSuite(Bugzilla162961Test.class);
return suite;
}
}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/model1/Bugzilla162961Test.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/model1/Bugzilla162961Test.java
new file mode 100644
index 0000000..210d7ac
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/model1/Bugzilla162961Test.java
@@ -0,0 +1,303 @@
+/***************************************************************************
+ * 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.model1;
+
+
+import org.eclipse.emf.common.util.EList;
+
+import testmodel1.ExtendedNode;
+import testmodel1.TreeNode;
+
+
+/**
+ * CDO objects not loading correctly.
+ *
+ * If I can use the analogy of the library that will help.
+ * Assume that I have a class for Library which 'contains' all books.
+ * I also have a class, or classes, for genre that may have non-containment
+ * references to books. So a book could have references to-from a genre,
+ * and always has a reference to the Library, which is containment.
+ *
+ * Now I want to load all the books so I call library.getBooks().
+ * This works consistently. And if I subsequently, during the same session,
+ * load a genre with a call to fiction.getBooks() that works as well.
+ *
+ * However, if I restart to create a new session, and do the genre load
+ * first I will see the books in the genre loaded correctly,
+ * but a subsequent call to load all the books in the library will not
+ * have any of the books initially loaded in the genre.
+ *
+ * This is happening consistently, every time.
+ *
+ * It appears that loading the containment references from Library is doing
+ * something a bit different than the load of non-containment references
+ * for the genre. If the initial load is via containment all the non-containment
+ * references are correct. However, if the initial load is via non-containment
+ * references then the other references, specifically the containment reference,
+ * is not correct.
+ *
+ * I suspect this is strictly a client side issue since the object is
+ * loaded from the server. It seems to be the handling of setting all
+ * the references for an object is not correct.
+ *
+ * See https://bugs.eclipse.org/bugs/show_bug.cgi?id=162961
+ */
+public class Bugzilla162961Test extends AbstractModel1Test
+{
+ public void testViaContainment() throws Exception
+ {
+ {
+ TreeNode root = createNode("root");
+ TreeNode books = createNode("books", root);
+ TreeNode genres = createNode("genres", root);
+
+ ExtendedNode book0 = createExtended("book0", books);
+ ExtendedNode book1 = createExtended("book1", books);
+ ExtendedNode book2 = createExtended("book2", books);
+ ExtendedNode book3 = createExtended("book3", books);
+
+ ExtendedNode genre0 = createExtended("genre0", genres);
+ ExtendedNode genre1 = createExtended("genre1", genres);
+ ExtendedNode genre2 = createExtended("genre2", genres);
+ ExtendedNode genre3 = createExtended("genre3", genres);
+
+ book0.getBidiSource().add(genre0);
+ book0.getBidiSource().add(genre1);
+ book0.getBidiSource().add(genre2);
+ book0.getBidiSource().add(genre3);
+
+ book1.getBidiSource().add(genre0);
+ book1.getBidiSource().add(genre1);
+ book1.getBidiSource().add(genre2);
+
+ book2.getBidiSource().add(genre0);
+ book2.getBidiSource().add(genre1);
+
+ book3.getBidiSource().add(genre0);
+ saveRoot(root, "/test/res");
+ }
+
+ {
+ TreeNode root = (TreeNode) loadRoot("/test/res");
+ TreeNode books = findChild("books", root);
+ EList children = books.getChildren();
+ assertEquals("book0", ((ExtendedNode) children.get(0)).getStringFeature());
+ assertEquals("book1", ((ExtendedNode) children.get(1)).getStringFeature());
+ assertEquals("book2", ((ExtendedNode) children.get(2)).getStringFeature());
+ assertEquals("book3", ((ExtendedNode) children.get(3)).getStringFeature());
+ }
+ }
+
+ public void testViaXRef() throws Exception
+ {
+ {
+ TreeNode root = createNode("root");
+ TreeNode books = createNode("books", root);
+ TreeNode genres = createNode("genres", root);
+
+ ExtendedNode book0 = createExtended("book0", books);
+ ExtendedNode book1 = createExtended("book1", books);
+ ExtendedNode book2 = createExtended("book2", books);
+ ExtendedNode book3 = createExtended("book3", books);
+
+ ExtendedNode genre0 = createExtended("genre0", genres);
+ ExtendedNode genre1 = createExtended("genre1", genres);
+ ExtendedNode genre2 = createExtended("genre2", genres);
+ ExtendedNode genre3 = createExtended("genre3", genres);
+
+ book0.getBidiSource().add(genre0);
+ book0.getBidiSource().add(genre1);
+ book0.getBidiSource().add(genre2);
+ book0.getBidiSource().add(genre3);
+
+ book1.getBidiSource().add(genre0);
+ book1.getBidiSource().add(genre1);
+ book1.getBidiSource().add(genre2);
+
+ book2.getBidiSource().add(genre0);
+ book2.getBidiSource().add(genre1);
+
+ book3.getBidiSource().add(genre0);
+ saveRoot(root, "/test/res");
+ }
+
+ {
+ TreeNode root = (TreeNode) loadRoot("/test/res");
+ TreeNode genres = findChild("genres", root);
+ ExtendedNode genre0 = (ExtendedNode) genres.getChildren().get(0);
+ assertEquals("book0", ((ExtendedNode) genre0.getBidiTarget().get(0)).getStringFeature());
+ assertEquals("book1", ((ExtendedNode) genre0.getBidiTarget().get(1)).getStringFeature());
+ assertEquals("book2", ((ExtendedNode) genre0.getBidiTarget().get(2)).getStringFeature());
+ assertEquals("book3", ((ExtendedNode) genre0.getBidiTarget().get(3)).getStringFeature());
+
+ TreeNode books = findChild("books", root);
+ EList children = books.getChildren();
+ assertEquals("book0", ((ExtendedNode) children.get(0)).getStringFeature());
+ assertEquals("book1", ((ExtendedNode) children.get(1)).getStringFeature());
+ assertEquals("book2", ((ExtendedNode) children.get(2)).getStringFeature());
+ assertEquals("book3", ((ExtendedNode) children.get(3)).getStringFeature());
+ }
+ }
+
+ public void testViaXRefBooksFirst() throws Exception
+ {
+ {
+ TreeNode root = createNode("root");
+ TreeNode books = createNode("books", root);
+ TreeNode genres = createNode("genres", root);
+
+ ExtendedNode book0 = createExtended("book0", books);
+ ExtendedNode book1 = createExtended("book1", books);
+ ExtendedNode book2 = createExtended("book2", books);
+ ExtendedNode book3 = createExtended("book3", books);
+
+ ExtendedNode genre0 = createExtended("genre0", genres);
+ ExtendedNode genre1 = createExtended("genre1", genres);
+ ExtendedNode genre2 = createExtended("genre2", genres);
+ ExtendedNode genre3 = createExtended("genre3", genres);
+
+ book0.getBidiSource().add(genre0);
+ book0.getBidiSource().add(genre1);
+ book0.getBidiSource().add(genre2);
+ book0.getBidiSource().add(genre3);
+
+ book1.getBidiSource().add(genre0);
+ book1.getBidiSource().add(genre1);
+ book1.getBidiSource().add(genre2);
+
+ book2.getBidiSource().add(genre0);
+ book2.getBidiSource().add(genre1);
+
+ book3.getBidiSource().add(genre0);
+ saveRoot(root, "/test/res");
+ }
+
+ {
+ TreeNode root = (TreeNode) loadRoot("/test/res");
+ TreeNode books = findChild("books", root);
+ TreeNode genres = findChild("genres", root);
+
+ ExtendedNode genre0 = (ExtendedNode) genres.getChildren().get(0);
+ assertEquals("book0", ((ExtendedNode) genre0.getBidiTarget().get(0)).getStringFeature());
+ assertEquals("book1", ((ExtendedNode) genre0.getBidiTarget().get(1)).getStringFeature());
+ assertEquals("book2", ((ExtendedNode) genre0.getBidiTarget().get(2)).getStringFeature());
+ assertEquals("book3", ((ExtendedNode) genre0.getBidiTarget().get(3)).getStringFeature());
+
+ EList children = books.getChildren();
+ assertEquals("book0", ((ExtendedNode) children.get(0)).getStringFeature());
+ assertEquals("book1", ((ExtendedNode) children.get(1)).getStringFeature());
+ assertEquals("book2", ((ExtendedNode) children.get(2)).getStringFeature());
+ assertEquals("book3", ((ExtendedNode) children.get(3)).getStringFeature());
+ }
+ }
+
+ public void testViaXRefSharedRoot() throws Exception
+ {
+ {
+ TreeNode root = createNode("root");
+
+ ExtendedNode book0 = createExtended("book0", root);
+ ExtendedNode book1 = createExtended("book1", root);
+ ExtendedNode book2 = createExtended("book2", root);
+ ExtendedNode book3 = createExtended("book3", root);
+
+ ExtendedNode genre0 = createExtended("genre0", root);
+ ExtendedNode genre1 = createExtended("genre1", root);
+ ExtendedNode genre2 = createExtended("genre2", root);
+ ExtendedNode genre3 = createExtended("genre3", root);
+
+ book0.getBidiSource().add(genre0);
+ book0.getBidiSource().add(genre1);
+ book0.getBidiSource().add(genre2);
+ book0.getBidiSource().add(genre3);
+
+ book1.getBidiSource().add(genre0);
+ book1.getBidiSource().add(genre1);
+ book1.getBidiSource().add(genre2);
+
+ book2.getBidiSource().add(genre0);
+ book2.getBidiSource().add(genre1);
+
+ book3.getBidiSource().add(genre0);
+ saveRoot(root, "/test/res");
+ }
+
+ {
+ TreeNode root = (TreeNode) loadRoot("/test/res");
+
+ ExtendedNode genre0 = (ExtendedNode) root.getChildren().get(4);
+ assertEquals("book0", ((ExtendedNode) genre0.getBidiTarget().get(0)).getStringFeature());
+ assertEquals("book1", ((ExtendedNode) genre0.getBidiTarget().get(1)).getStringFeature());
+ assertEquals("book2", ((ExtendedNode) genre0.getBidiTarget().get(2)).getStringFeature());
+ assertEquals("book3", ((ExtendedNode) genre0.getBidiTarget().get(3)).getStringFeature());
+
+ EList children = root.getChildren();
+ assertEquals("book0", ((ExtendedNode) children.get(0)).getStringFeature());
+ assertEquals("book1", ((ExtendedNode) children.get(1)).getStringFeature());
+ assertEquals("book2", ((ExtendedNode) children.get(2)).getStringFeature());
+ assertEquals("book3", ((ExtendedNode) children.get(3)).getStringFeature());
+ }
+ }
+
+ public void testViaXRefChildren2() throws Exception
+ {
+ {
+ TreeNode root = createNode("root");
+
+ // Insert books into children
+ ExtendedNode book0 = createExtended("book0", root);
+ ExtendedNode book1 = createExtended("book1", root);
+ ExtendedNode book2 = createExtended("book2", root);
+ ExtendedNode book3 = createExtended("book3", root);
+
+ // Insert genres into children2
+ ExtendedNode genre0 = createExtended("genre0");
+ genre0.setParent2(root);
+ ExtendedNode genre1 = createExtended("genre1");
+ genre1.setParent2(root);
+ ExtendedNode genre2 = createExtended("genre2");
+ genre2.setParent2(root);
+ ExtendedNode genre3 = createExtended("genre3");
+ genre3.setParent2(root);
+
+ book0.getBidiSource().add(genre0);
+ book0.getBidiSource().add(genre1);
+ book0.getBidiSource().add(genre2);
+ book0.getBidiSource().add(genre3);
+
+ book1.getBidiSource().add(genre0);
+ book1.getBidiSource().add(genre1);
+ book1.getBidiSource().add(genre2);
+
+ book2.getBidiSource().add(genre0);
+ book2.getBidiSource().add(genre1);
+
+ book3.getBidiSource().add(genre0);
+ saveRoot(root, "/test/res");
+ }
+
+ {
+ TreeNode root = (TreeNode) loadRoot("/test/res");
+
+ ExtendedNode genre0 = (ExtendedNode) root.getChildren2().get(0);
+ assertEquals("book0", ((ExtendedNode) genre0.getBidiTarget().get(0)).getStringFeature());
+ assertEquals("book1", ((ExtendedNode) genre0.getBidiTarget().get(1)).getStringFeature());
+ assertEquals("book2", ((ExtendedNode) genre0.getBidiTarget().get(2)).getStringFeature());
+ assertEquals("book3", ((ExtendedNode) genre0.getBidiTarget().get(3)).getStringFeature());
+
+ EList children = root.getChildren();
+ assertEquals("book0", ((ExtendedNode) children.get(0)).getStringFeature());
+ assertEquals("book1", ((ExtendedNode) children.get(1)).getStringFeature());
+ assertEquals("book2", ((ExtendedNode) children.get(2)).getStringFeature());
+ assertEquals("book3", ((ExtendedNode) children.get(3)).getStringFeature());
+ }
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/topology/AbstractTopologyTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/topology/AbstractTopologyTest.java
index 10f71ef..b390ccb 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/topology/AbstractTopologyTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/topology/AbstractTopologyTest.java
@@ -37,6 +37,10 @@ public abstract class AbstractTopologyTest extends TestCase implements ITopology
private long startMemory;
+ private long startTime;
+
+ private long runTime;
+
private String label;
private static int run;
@@ -64,6 +68,8 @@ public abstract class AbstractTopologyTest extends TestCase implements ITopology
@Override
protected void setUp() throws Exception
{
+ startTime = System.currentTimeMillis();
+
System.gc();
startMemory = getUsedMemory();
@@ -75,11 +81,17 @@ public abstract class AbstractTopologyTest extends TestCase implements ITopology
super.setUp();
topology.start();
+
+ startTime = System.currentTimeMillis() - startTime;
+ runTime = System.currentTimeMillis();
}
@Override
protected void tearDown() throws Exception
{
+ runTime = System.currentTimeMillis() - runTime;
+ long stopTime = System.currentTimeMillis();
+
Thread.sleep(200);
JdbcTemplate jdbc = jdbc();
wipeDatabase(jdbc);
@@ -90,8 +102,12 @@ public abstract class AbstractTopologyTest extends TestCase implements ITopology
System.gc();
long endMemory = getUsedMemory();
+ stopTime = System.currentTimeMillis() - stopTime;
- System.out.println("Memory-Delta " + getRun() + "\t " + (endMemory - startMemory));
+ String run = getRun();
+ System.out.println("Runtime-Stat " + run + "\t " + startTime + "\t " + runTime + "\t "
+ + stopTime);
+ System.out.println("Memory-Delta " + run + "\t " + (endMemory - startMemory));
System.out.println("=========================================================================");
System.out.println("TC_END " + label);
System.out.println("=========================================================================");
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/TestModel1Package.java b/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/TestModel1Package.java
index aca26ad..6eb9dbd 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/TestModel1Package.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/TestModel1Package.java
@@ -93,13 +93,31 @@ public interface TestModel1Package extends EPackage
int TREE_NODE__CHILDREN = CDOPackage.CDO_PERSISTENT_FEATURE_COUNT + 1;
/**
+ * The feature id for the '<em><b>Parent2</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TREE_NODE__PARENT2 = CDOPackage.CDO_PERSISTENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Children2</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TREE_NODE__CHILDREN2 = CDOPackage.CDO_PERSISTENT_FEATURE_COUNT + 3;
+
+ /**
* The feature id for the '<em><b>References</b></em>' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
- int TREE_NODE__REFERENCES = CDOPackage.CDO_PERSISTENT_FEATURE_COUNT + 2;
+ int TREE_NODE__REFERENCES = CDOPackage.CDO_PERSISTENT_FEATURE_COUNT + 4;
/**
* The feature id for the '<em><b>Boolean Feature</b></em>' attribute.
@@ -108,7 +126,7 @@ public interface TestModel1Package extends EPackage
* @generated
* @ordered
*/
- int TREE_NODE__BOOLEAN_FEATURE = CDOPackage.CDO_PERSISTENT_FEATURE_COUNT + 3;
+ int TREE_NODE__BOOLEAN_FEATURE = CDOPackage.CDO_PERSISTENT_FEATURE_COUNT + 5;
/**
* The feature id for the '<em><b>Int Feature</b></em>' attribute.
@@ -117,7 +135,7 @@ public interface TestModel1Package extends EPackage
* @generated
* @ordered
*/
- int TREE_NODE__INT_FEATURE = CDOPackage.CDO_PERSISTENT_FEATURE_COUNT + 4;
+ int TREE_NODE__INT_FEATURE = CDOPackage.CDO_PERSISTENT_FEATURE_COUNT + 6;
/**
* The feature id for the '<em><b>String Feature</b></em>' attribute.
@@ -126,7 +144,7 @@ public interface TestModel1Package extends EPackage
* @generated
* @ordered
*/
- int TREE_NODE__STRING_FEATURE = CDOPackage.CDO_PERSISTENT_FEATURE_COUNT + 5;
+ int TREE_NODE__STRING_FEATURE = CDOPackage.CDO_PERSISTENT_FEATURE_COUNT + 7;
/**
* The number of structural features of the '<em>Tree Node</em>' class.
@@ -135,7 +153,7 @@ public interface TestModel1Package extends EPackage
* @generated
* @ordered
*/
- int TREE_NODE_FEATURE_COUNT = CDOPackage.CDO_PERSISTENT_FEATURE_COUNT + 6;
+ int TREE_NODE_FEATURE_COUNT = CDOPackage.CDO_PERSISTENT_FEATURE_COUNT + 8;
/**
* The meta object id for the '{@link testmodel1.impl.ExtendedNodeImpl <em>Extended Node</em>}' class.
@@ -166,6 +184,24 @@ public interface TestModel1Package extends EPackage
int EXTENDED_NODE__CHILDREN = TREE_NODE__CHILDREN;
/**
+ * The feature id for the '<em><b>Parent2</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENDED_NODE__PARENT2 = TREE_NODE__PARENT2;
+
+ /**
+ * The feature id for the '<em><b>Children2</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENDED_NODE__CHILDREN2 = TREE_NODE__CHILDREN2;
+
+ /**
* The feature id for the '<em><b>References</b></em>' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -266,6 +302,24 @@ public interface TestModel1Package extends EPackage
int EMPTY_NODE__CHILDREN = TREE_NODE__CHILDREN;
/**
+ * The feature id for the '<em><b>Parent2</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EMPTY_NODE__PARENT2 = TREE_NODE__PARENT2;
+
+ /**
+ * The feature id for the '<em><b>Children2</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EMPTY_NODE__CHILDREN2 = TREE_NODE__CHILDREN2;
+
+ /**
* The feature id for the '<em><b>References</b></em>' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -339,6 +393,24 @@ public interface TestModel1Package extends EPackage
int EMPTY_REF_NODE__CHILDREN = TREE_NODE__CHILDREN;
/**
+ * The feature id for the '<em><b>Parent2</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EMPTY_REF_NODE__PARENT2 = TREE_NODE__PARENT2;
+
+ /**
+ * The feature id for the '<em><b>Children2</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EMPTY_REF_NODE__CHILDREN2 = TREE_NODE__CHILDREN2;
+
+ /**
* The feature id for the '<em><b>References</b></em>' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -425,6 +497,28 @@ public interface TestModel1Package extends EPackage
EReference getTreeNode_Children();
/**
+ * Returns the meta object for the container reference '{@link testmodel1.TreeNode#getParent2 <em>Parent2</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the container reference '<em>Parent2</em>'.
+ * @see testmodel1.TreeNode#getParent2()
+ * @see #getTreeNode()
+ * @generated
+ */
+ EReference getTreeNode_Parent2();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link testmodel1.TreeNode#getChildren2 <em>Children2</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Children2</em>'.
+ * @see testmodel1.TreeNode#getChildren2()
+ * @see #getTreeNode()
+ * @generated
+ */
+ EReference getTreeNode_Children2();
+
+ /**
* Returns the meta object for the reference list '{@link testmodel1.TreeNode#getReferences <em>References</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -593,6 +687,22 @@ public interface TestModel1Package extends EPackage
EReference TREE_NODE__CHILDREN = eINSTANCE.getTreeNode_Children();
/**
+ * The meta object literal for the '<em><b>Parent2</b></em>' container reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TREE_NODE__PARENT2 = eINSTANCE.getTreeNode_Parent2();
+
+ /**
+ * The meta object literal for the '<em><b>Children2</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TREE_NODE__CHILDREN2 = eINSTANCE.getTreeNode_Children2();
+
+ /**
* The meta object literal for the '<em><b>References</b></em>' reference list feature.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/TreeNode.java b/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/TreeNode.java
index ca1f0e1..b25ae55 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/TreeNode.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/TreeNode.java
@@ -22,6 +22,8 @@ import org.eclipse.emf.common.util.EList;
* <ul>
* <li>{@link testmodel1.TreeNode#getParent <em>Parent</em>}</li>
* <li>{@link testmodel1.TreeNode#getChildren <em>Children</em>}</li>
+ * <li>{@link testmodel1.TreeNode#getParent2 <em>Parent2</em>}</li>
+ * <li>{@link testmodel1.TreeNode#getChildren2 <em>Children2</em>}</li>
* <li>{@link testmodel1.TreeNode#getReferences <em>References</em>}</li>
* <li>{@link testmodel1.TreeNode#isBooleanFeature <em>Boolean Feature</em>}</li>
* <li>{@link testmodel1.TreeNode#getIntFeature <em>Int Feature</em>}</li>
@@ -82,6 +84,52 @@ public interface TreeNode extends CDOPersistent
EList getChildren();
/**
+ * Returns the value of the '<em><b>Parent2</b></em>' container reference.
+ * It is bidirectional and its opposite is '{@link testmodel1.TreeNode#getChildren2 <em>Children2</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Parent2</em>' container reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Parent2</em>' container reference.
+ * @see #setParent2(TreeNode)
+ * @see testmodel1.TestModel1Package#getTreeNode_Parent2()
+ * @see testmodel1.TreeNode#getChildren2
+ * @model opposite="children2"
+ * @generated
+ */
+ TreeNode getParent2();
+
+ /**
+ * Sets the value of the '{@link testmodel1.TreeNode#getParent2 <em>Parent2</em>}' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Parent2</em>' container reference.
+ * @see #getParent2()
+ * @generated
+ */
+ void setParent2(TreeNode value);
+
+ /**
+ * Returns the value of the '<em><b>Children2</b></em>' containment reference list.
+ * The list contents are of type {@link testmodel1.TreeNode}.
+ * It is bidirectional and its opposite is '{@link testmodel1.TreeNode#getParent2 <em>Parent2</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Children2</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Children2</em>' containment reference list.
+ * @see testmodel1.TestModel1Package#getTreeNode_Children2()
+ * @see testmodel1.TreeNode#getParent2
+ * @model type="testmodel1.TreeNode" opposite="parent2" containment="true"
+ * @generated
+ */
+ EList getChildren2();
+
+ /**
* Returns the value of the '<em><b>References</b></em>' reference list.
* The list contents are of type {@link testmodel1.TreeNode}.
* <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/impl/TestModel1FactoryImpl.java b/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/impl/TestModel1FactoryImpl.java
index 3751ffa..2441616 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/impl/TestModel1FactoryImpl.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/impl/TestModel1FactoryImpl.java
@@ -13,6 +13,8 @@ import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.impl.EFactoryImpl;
import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import testmodel1.*;
+
import testmodel1.EmptyNode;
import testmodel1.EmptyRefNode;
import testmodel1.ExtendedNode;
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/impl/TestModel1PackageImpl.java b/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/impl/TestModel1PackageImpl.java
index 78af6e0..28bc58c 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/impl/TestModel1PackageImpl.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/impl/TestModel1PackageImpl.java
@@ -170,7 +170,7 @@ public class TestModel1PackageImpl extends EPackageImpl implements TestModel1Pac
* <!-- end-user-doc -->
* @generated
*/
- public EReference getTreeNode_References()
+ public EReference getTreeNode_Parent2()
{
return (EReference) treeNodeEClass.getEStructuralFeatures().get(2);
}
@@ -180,9 +180,29 @@ public class TestModel1PackageImpl extends EPackageImpl implements TestModel1Pac
* <!-- end-user-doc -->
* @generated
*/
+ public EReference getTreeNode_Children2()
+ {
+ return (EReference) treeNodeEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTreeNode_References()
+ {
+ return (EReference) treeNodeEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public EAttribute getTreeNode_BooleanFeature()
{
- return (EAttribute) treeNodeEClass.getEStructuralFeatures().get(3);
+ return (EAttribute) treeNodeEClass.getEStructuralFeatures().get(5);
}
/**
@@ -192,7 +212,7 @@ public class TestModel1PackageImpl extends EPackageImpl implements TestModel1Pac
*/
public EAttribute getTreeNode_IntFeature()
{
- return (EAttribute) treeNodeEClass.getEStructuralFeatures().get(4);
+ return (EAttribute) treeNodeEClass.getEStructuralFeatures().get(6);
}
/**
@@ -202,7 +222,7 @@ public class TestModel1PackageImpl extends EPackageImpl implements TestModel1Pac
*/
public EAttribute getTreeNode_StringFeature()
{
- return (EAttribute) treeNodeEClass.getEStructuralFeatures().get(5);
+ return (EAttribute) treeNodeEClass.getEStructuralFeatures().get(7);
}
/**
@@ -308,6 +328,8 @@ public class TestModel1PackageImpl extends EPackageImpl implements TestModel1Pac
treeNodeEClass = createEClass(TREE_NODE);
createEReference(treeNodeEClass, TREE_NODE__PARENT);
createEReference(treeNodeEClass, TREE_NODE__CHILDREN);
+ createEReference(treeNodeEClass, TREE_NODE__PARENT2);
+ createEReference(treeNodeEClass, TREE_NODE__CHILDREN2);
createEReference(treeNodeEClass, TREE_NODE__REFERENCES);
createEAttribute(treeNodeEClass, TREE_NODE__BOOLEAN_FEATURE);
createEAttribute(treeNodeEClass, TREE_NODE__INT_FEATURE);
@@ -367,6 +389,12 @@ public class TestModel1PackageImpl extends EPackageImpl implements TestModel1Pac
initEReference(getTreeNode_Children(), this.getTreeNode(), this.getTreeNode_Parent(),
"children", null, 0, -1, TreeNode.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getTreeNode_Parent2(), this.getTreeNode(), this.getTreeNode_Children2(),
+ "parent2", null, 0, 1, TreeNode.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+ !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getTreeNode_Children2(), this.getTreeNode(), this.getTreeNode_Parent2(),
+ "children2", null, 0, -1, TreeNode.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+ IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getTreeNode_References(), this.getTreeNode(), null, "references", null, 0, -1,
TreeNode.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/impl/TreeNodeImpl.java b/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/impl/TreeNodeImpl.java
index b5f4a20..8cef87e 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/impl/TreeNodeImpl.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/impl/TreeNodeImpl.java
@@ -35,6 +35,8 @@ import java.util.Collection;
* <ul>
* <li>{@link testmodel1.impl.TreeNodeImpl#getParent <em>Parent</em>}</li>
* <li>{@link testmodel1.impl.TreeNodeImpl#getChildren <em>Children</em>}</li>
+ * <li>{@link testmodel1.impl.TreeNodeImpl#getParent2 <em>Parent2</em>}</li>
+ * <li>{@link testmodel1.impl.TreeNodeImpl#getChildren2 <em>Children2</em>}</li>
* <li>{@link testmodel1.impl.TreeNodeImpl#getReferences <em>References</em>}</li>
* <li>{@link testmodel1.impl.TreeNodeImpl#isBooleanFeature <em>Boolean Feature</em>}</li>
* <li>{@link testmodel1.impl.TreeNodeImpl#getIntFeature <em>Int Feature</em>}</li>
@@ -57,6 +59,16 @@ public class TreeNodeImpl extends CDOPersistentImpl implements TreeNode
protected EList children = null;
/**
+ * The cached value of the '{@link #getChildren2() <em>Children2</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getChildren2()
+ * @generated
+ * @ordered
+ */
+ protected EList children2 = null;
+
+ /**
* The cached value of the '{@link #getReferences() <em>References</em>}' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -218,6 +230,73 @@ public class TreeNodeImpl extends CDOPersistentImpl implements TreeNode
* <!-- end-user-doc -->
* @generated
*/
+ public TreeNode getParent2()
+ {
+ cdoLoad();
+ if (eContainerFeatureID != TestModel1Package.TREE_NODE__PARENT2) return null;
+ return (TreeNode) eContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetParent2(TreeNode newParent2, NotificationChain msgs)
+ {
+ cdoLoad();
+ msgs = eBasicSetContainer((InternalEObject) newParent2, TestModel1Package.TREE_NODE__PARENT2,
+ msgs);
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParent2(TreeNode newParent2)
+ {
+
+ if (newParent2 != eInternalContainer()
+ || (eContainerFeatureID != TestModel1Package.TREE_NODE__PARENT2 && newParent2 != null))
+ {
+ if (EcoreUtil.isAncestor(this, newParent2))
+ throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+ NotificationChain msgs = null;
+ if (eInternalContainer() != null) msgs = eBasicRemoveFromContainer(msgs);
+ if (newParent2 != null)
+ msgs = ((InternalEObject) newParent2).eInverseAdd(this,
+ TestModel1Package.TREE_NODE__CHILDREN2, TreeNode.class, msgs);
+ msgs = basicSetParent2(newParent2, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, TestModel1Package.TREE_NODE__PARENT2,
+ newParent2, newParent2));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList getChildren2()
+ {
+ cdoLoad();
+ if (children2 == null)
+ {
+ children2 = new EObjectContainmentWithInverseEList(TreeNode.class, this,
+ TestModel1Package.TREE_NODE__CHILDREN2, TestModel1Package.TREE_NODE__PARENT2);
+ }
+ return children2;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public EList getReferences()
{
cdoLoad();
@@ -322,6 +401,11 @@ public class TreeNodeImpl extends CDOPersistentImpl implements TreeNode
return basicSetParent((TreeNode) otherEnd, msgs);
case TestModel1Package.TREE_NODE__CHILDREN:
return ((InternalEList) getChildren()).basicAdd(otherEnd, msgs);
+ case TestModel1Package.TREE_NODE__PARENT2:
+ if (eInternalContainer() != null) msgs = eBasicRemoveFromContainer(msgs);
+ return basicSetParent2((TreeNode) otherEnd, msgs);
+ case TestModel1Package.TREE_NODE__CHILDREN2:
+ return ((InternalEList) getChildren2()).basicAdd(otherEnd, msgs);
}
return super.eInverseAdd(otherEnd, featureID, msgs);
}
@@ -340,6 +424,10 @@ public class TreeNodeImpl extends CDOPersistentImpl implements TreeNode
return basicSetParent(null, msgs);
case TestModel1Package.TREE_NODE__CHILDREN:
return ((InternalEList) getChildren()).basicRemove(otherEnd, msgs);
+ case TestModel1Package.TREE_NODE__PARENT2:
+ return basicSetParent2(null, msgs);
+ case TestModel1Package.TREE_NODE__CHILDREN2:
+ return ((InternalEList) getChildren2()).basicRemove(otherEnd, msgs);
}
return super.eInverseRemove(otherEnd, featureID, msgs);
}
@@ -356,6 +444,9 @@ public class TreeNodeImpl extends CDOPersistentImpl implements TreeNode
case TestModel1Package.TREE_NODE__PARENT:
return eInternalContainer().eInverseRemove(this, TestModel1Package.TREE_NODE__CHILDREN,
TreeNode.class, msgs);
+ case TestModel1Package.TREE_NODE__PARENT2:
+ return eInternalContainer().eInverseRemove(this, TestModel1Package.TREE_NODE__CHILDREN2,
+ TreeNode.class, msgs);
}
return super.eBasicRemoveFromContainerFeature(msgs);
}
@@ -373,6 +464,10 @@ public class TreeNodeImpl extends CDOPersistentImpl implements TreeNode
return getParent();
case TestModel1Package.TREE_NODE__CHILDREN:
return getChildren();
+ case TestModel1Package.TREE_NODE__PARENT2:
+ return getParent2();
+ case TestModel1Package.TREE_NODE__CHILDREN2:
+ return getChildren2();
case TestModel1Package.TREE_NODE__REFERENCES:
return getReferences();
case TestModel1Package.TREE_NODE__BOOLEAN_FEATURE:
@@ -401,6 +496,13 @@ public class TreeNodeImpl extends CDOPersistentImpl implements TreeNode
getChildren().clear();
getChildren().addAll((Collection) newValue);
return;
+ case TestModel1Package.TREE_NODE__PARENT2:
+ setParent2((TreeNode) newValue);
+ return;
+ case TestModel1Package.TREE_NODE__CHILDREN2:
+ getChildren2().clear();
+ getChildren2().addAll((Collection) newValue);
+ return;
case TestModel1Package.TREE_NODE__REFERENCES:
getReferences().clear();
getReferences().addAll((Collection) newValue);
@@ -433,6 +535,12 @@ public class TreeNodeImpl extends CDOPersistentImpl implements TreeNode
case TestModel1Package.TREE_NODE__CHILDREN:
getChildren().clear();
return;
+ case TestModel1Package.TREE_NODE__PARENT2:
+ setParent2((TreeNode) null);
+ return;
+ case TestModel1Package.TREE_NODE__CHILDREN2:
+ getChildren2().clear();
+ return;
case TestModel1Package.TREE_NODE__REFERENCES:
getReferences().clear();
return;
@@ -462,6 +570,10 @@ public class TreeNodeImpl extends CDOPersistentImpl implements TreeNode
return getParent() != null;
case TestModel1Package.TREE_NODE__CHILDREN:
return children != null && !children.isEmpty();
+ case TestModel1Package.TREE_NODE__PARENT2:
+ return getParent2() != null;
+ case TestModel1Package.TREE_NODE__CHILDREN2:
+ return children2 != null && !children2.isEmpty();
case TestModel1Package.TREE_NODE__REFERENCES:
return references != null && !references.isEmpty();
case TestModel1Package.TREE_NODE__BOOLEAN_FEATURE:
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/util/TestModel1AdapterFactory.java b/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/util/TestModel1AdapterFactory.java
index 8d813a4..6531ff5 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/util/TestModel1AdapterFactory.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/util/TestModel1AdapterFactory.java
@@ -15,6 +15,8 @@ import org.eclipse.emf.common.notify.Notifier;
import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
import org.eclipse.emf.ecore.EObject;
+import testmodel1.*;
+
import testmodel1.EmptyNode;
import testmodel1.EmptyRefNode;
import testmodel1.ExtendedNode;
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/util/TestModel1Switch.java b/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/util/TestModel1Switch.java
index b48228a..546df88 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/util/TestModel1Switch.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/testmodel1/util/TestModel1Switch.java
@@ -13,6 +13,8 @@ import org.eclipse.emf.cdo.client.CDOPersistent;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
+import testmodel1.*;
+
import testmodel1.EmptyNode;
import testmodel1.EmptyRefNode;
import testmodel1.ExtendedNode;