Refactor Multi Tier Project

Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/fb8660e7
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/fb8660e7
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/fb8660e7

Branch: refs/heads/CAY-1946
Commit: fb8660e76986335b9c77ffbe3cc15b78e2d7be96
Parents: 49dd104
Author: Savva Kolbechev <s.kolbac...@gmail.com>
Authored: Thu Nov 6 16:37:14 2014 +0300
Committer: Savva Kolbechev <s.kolbac...@gmail.com>
Committed: Thu Nov 6 16:37:15 2014 +0300

----------------------------------------------------------------------
 .../cayenne/CayenneContextDeleteRulesIT.java    |  26 +--
 .../CayenneContextMapRelationshipIT.java        |  44 ++--
 .../cayenne/CayenneContextMeaningfulPKIT.java   |  53 +++++
 .../cayenne/CayenneContextPrimitiveIT.java      |  34 ++--
 .../cayenne/CayenneContextReflexiveIT.java      |  74 +++++++
 .../CayenneContextWithDataContextIT.java        |  79 -------
 .../apache/cayenne/NestedCayenneContextIT.java  | 156 --------------
 .../cayenne/NestedCayenneContextTooneIT.java    | 204 +++++++++++++++++++
 .../cayenne/map/ClientEntityResolverIT.java     |  69 -------
 .../cayenne/map/ClientEntityResolverTest.java   |  66 ++++++
 .../cayenne/remote/LightSuperClassIT.java       |   2 +-
 .../cayenne/remote/ROPPrefetchToManyMapIT.java  |  19 +-
 .../cayenne/remote/RemoteCallbacksIT.java       |   8 +-
 .../cayenne/unit/di/client/ClientCase.java      |   8 +
 .../apache/cayenne/CDOMapRelationshipIT.java    |   8 +-
 .../testdo/deleterules/ClientDeleteCascade.java |  28 +++
 .../testdo/deleterules/ClientDeleteDeny.java    |  28 +++
 .../testdo/deleterules/ClientDeleteNullify.java |  28 +++
 .../testdo/deleterules/ClientDeleteRule.java    |  28 +++
 .../testdo/deleterules/DeleteCascade.java       |  28 +++
 .../cayenne/testdo/deleterules/DeleteDeny.java  |  28 +++
 .../testdo/deleterules/DeleteNullify.java       |  28 +++
 .../cayenne/testdo/deleterules/DeleteRule.java  |  28 +++
 .../deleterules/auto/_ClientDeleteCascade.java  |  56 +++++
 .../deleterules/auto/_ClientDeleteDeny.java     |  56 +++++
 .../deleterules/auto/_ClientDeleteNullify.java  |  56 +++++
 .../deleterules/auto/_ClientDeleteRule.java     | 114 +++++++++++
 .../testdo/deleterules/auto/_DeleteCascade.java |  35 ++++
 .../testdo/deleterules/auto/_DeleteDeny.java    |  35 ++++
 .../testdo/deleterules/auto/_DeleteNullify.java |  35 ++++
 .../testdo/deleterules/auto/_DeleteRule.java    |  68 +++++++
 .../testdo/lifecycles/ClientLifecycles.java     |  28 +++
 .../cayenne/testdo/lifecycles/Lifecycles.java   |  25 +++
 .../lifecycles/auto/_ClientLifecycles.java      |  37 ++++
 .../testdo/lifecycles/auto/_Lifecycles.java     |  24 +++
 .../testdo/map_to_many/ClientIdMapToMany.java   |  28 +++
 .../map_to_many/ClientIdMapToManyTarget.java    |  28 +++
 .../cayenne/testdo/map_to_many/IdMapToMany.java |  28 +++
 .../testdo/map_to_many/IdMapToManyTarget.java   |  28 +++
 .../cayenne/testdo/map_to_many/MapToMany.java   |  28 +++
 .../testdo/map_to_many/MapToManyTarget.java     |  28 +++
 .../map_to_many/auto/_ClientIdMapToMany.java    |  41 ++++
 .../auto/_ClientIdMapToManyTarget.java          |  33 +++
 .../testdo/map_to_many/auto/_IdMapToMany.java   |  32 +++
 .../map_to_many/auto/_IdMapToManyTarget.java    |  27 +++
 .../testdo/map_to_many/auto/_MapToMany.java     |  32 +++
 .../map_to_many/auto/_MapToManyTarget.java      |  35 ++++
 .../meaningful_pk/ClientMeaningfulPk.java       |  28 +++
 .../testdo/meaningful_pk/MeaningfulPk.java      |  25 +++
 .../meaningful_pk/auto/_ClientMeaningfulPk.java |  37 ++++
 .../meaningful_pk/auto/_MeaningfulPk.java       |  24 +++
 .../testdo/mt/ClientMtDeleteCascade.java        |  28 ---
 .../cayenne/testdo/mt/ClientMtDeleteDeny.java   |  28 ---
 .../testdo/mt/ClientMtDeleteNullify.java        |  28 ---
 .../cayenne/testdo/mt/ClientMtDeleteRule.java   |  28 ---
 .../cayenne/testdo/mt/ClientMtLifecycles.java   |  28 ---
 .../cayenne/testdo/mt/ClientMtMapToMany.java    |  28 ---
 .../testdo/mt/ClientMtMapToManyTarget.java      |  28 ---
 .../cayenne/testdo/mt/ClientMtMeaningfulPk.java |  28 ---
 .../cayenne/testdo/mt/ClientMtReflexive.java    |  28 ---
 .../testdo/mt/ClientMtTablePrimitives.java      |  28 ---
 .../cayenne/testdo/mt/ClientMtTooneDep.java     |  28 ---
 .../cayenne/testdo/mt/ClientMtTooneMaster.java  |  28 ---
 .../cayenne/testdo/mt/MtDeleteCascade.java      |  28 ---
 .../apache/cayenne/testdo/mt/MtDeleteDeny.java  |  28 ---
 .../cayenne/testdo/mt/MtDeleteNullify.java      |  28 ---
 .../apache/cayenne/testdo/mt/MtDeleteRule.java  |  28 ---
 .../apache/cayenne/testdo/mt/MtLifecycles.java  |  25 ---
 .../apache/cayenne/testdo/mt/MtMapToMany.java   |  28 ---
 .../cayenne/testdo/mt/MtMapToManyTarget.java    |  28 ---
 .../cayenne/testdo/mt/MtMeaningfulPk.java       |  25 ---
 .../apache/cayenne/testdo/mt/MtReflexive.java   |  28 ---
 .../cayenne/testdo/mt/MtTablePrimitives.java    |  25 ---
 .../apache/cayenne/testdo/mt/MtTooneDep.java    |  25 ---
 .../apache/cayenne/testdo/mt/MtTooneMaster.java |  25 ---
 .../testdo/mt/auto/_ClientMtDeleteCascade.java  |  56 -----
 .../testdo/mt/auto/_ClientMtDeleteDeny.java     |  56 -----
 .../testdo/mt/auto/_ClientMtDeleteNullify.java  |  56 -----
 .../testdo/mt/auto/_ClientMtDeleteRule.java     | 114 -----------
 .../testdo/mt/auto/_ClientMtLifecycles.java     |  37 ----
 .../testdo/mt/auto/_ClientMtMapToMany.java      |  41 ----
 .../mt/auto/_ClientMtMapToManyTarget.java       |  33 ---
 .../testdo/mt/auto/_ClientMtMeaningfulPk.java   |  37 ----
 .../testdo/mt/auto/_ClientMtReflexive.java      |  82 --------
 .../mt/auto/_ClientMtTablePrimitives.java       |  60 ------
 .../testdo/mt/auto/_ClientMtTooneDep.java       |  33 ---
 .../testdo/mt/auto/_ClientMtTooneMaster.java    |  33 ---
 .../testdo/mt/auto/_MtDeleteCascade.java        |  35 ----
 .../cayenne/testdo/mt/auto/_MtDeleteDeny.java   |  35 ----
 .../testdo/mt/auto/_MtDeleteNullify.java        |  35 ----
 .../cayenne/testdo/mt/auto/_MtDeleteRule.java   |  68 -------
 .../cayenne/testdo/mt/auto/_MtLifecycles.java   |  24 ---
 .../cayenne/testdo/mt/auto/_MtMapToMany.java    |  32 ---
 .../testdo/mt/auto/_MtMapToManyTarget.java      |  27 ---
 .../cayenne/testdo/mt/auto/_MtMeaningfulPk.java |  24 ---
 .../cayenne/testdo/mt/auto/_MtReflexive.java    |  50 -----
 .../testdo/mt/auto/_MtTablePrimitives.java      |  34 ----
 .../cayenne/testdo/mt/auto/_MtTooneDep.java     |  27 ---
 .../cayenne/testdo/mt/auto/_MtTooneMaster.java  |  27 ---
 .../testdo/reflexive/ClientReflexive.java       |  28 +++
 .../cayenne/testdo/reflexive/Reflexive.java     |  28 +++
 .../testdo/reflexive/auto/_ClientReflexive.java |  82 ++++++++
 .../testdo/reflexive/auto/_Reflexive.java       |  50 +++++
 .../testdo/relationship/IdMapToMany.java        |  28 ---
 .../testdo/relationship/IdMapToManyTarget.java  |  28 ---
 .../cayenne/testdo/relationship/MapToMany.java  |  28 ---
 .../testdo/relationship/MapToManyTarget.java    |  28 ---
 .../testdo/relationship/auto/_IdMapToMany.java  |  32 ---
 .../relationship/auto/_IdMapToManyTarget.java   |  27 ---
 .../testdo/relationship/auto/_MapToMany.java    |  32 ---
 .../relationship/auto/_MapToManyTarget.java     |  35 ----
 .../table_primitives/ClientTablePrimitives.java |  28 +++
 .../table_primitives/TablePrimitives.java       |  25 +++
 .../auto/_ClientTablePrimitives.java            |  60 ++++++
 .../table_primitives/auto/_TablePrimitives.java |  34 ++++
 .../cayenne/testdo/toone/ClientTooneDep.java    |  28 +++
 .../cayenne/testdo/toone/ClientTooneMaster.java |  28 +++
 .../apache/cayenne/testdo/toone/TooneDep.java   |  25 +++
 .../cayenne/testdo/toone/TooneMaster.java       |  25 +++
 .../testdo/toone/auto/_ClientTooneDep.java      |  33 +++
 .../testdo/toone/auto/_ClientTooneMaster.java   |  33 +++
 .../cayenne/testdo/toone/auto/_TooneDep.java    |  27 +++
 .../cayenne/testdo/toone/auto/_TooneMaster.java |  27 +++
 .../cayenne/unit/di/server/SchemaBuilder.java   |  28 +--
 .../cayenne/unit/di/server/ServerCase.java      |   1 +
 .../src/test/resources/cayenne-delete-rules.xml |   4 +
 .../src/test/resources/cayenne-lifecycles.xml   |   4 +
 .../src/test/resources/cayenne-map-to-many.xml  |   4 +
 .../test/resources/cayenne-meaningful-pk.xml    |   4 +
 .../src/test/resources/cayenne-persistent.xml   |   4 +
 .../src/test/resources/cayenne-reflexive.xml    |   4 +
 .../test/resources/cayenne-table-primitives.xml |   4 +
 .../src/test/resources/cayenne-toone.xml        |   4 +
 .../src/test/resources/delete-rules.map.xml     |  64 ++++++
 .../src/test/resources/lifecycles.map.xml       |  16 ++
 .../src/test/resources/map-to-many.map.xml      |  57 ++++++
 .../src/test/resources/meaningful-pk.map.xml    |  15 ++
 .../src/test/resources/multi-tier.map.xml       | 153 --------------
 .../src/test/resources/persistent.map.xml       |  32 +++
 .../src/test/resources/reflexive.map.xml        |  25 +++
 .../src/test/resources/relationships.map.xml    |  40 ----
 .../src/test/resources/table-primitives.map.xml |  18 ++
 cayenne-server/src/test/resources/toone.map.xml |  27 +++
 143 files changed, 2614 insertions(+), 2531 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextDeleteRulesIT.java
----------------------------------------------------------------------
diff --git 
a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextDeleteRulesIT.java
 
b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextDeleteRulesIT.java
index c4d6bc5..c43bac9 100644
--- 
a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextDeleteRulesIT.java
+++ 
b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextDeleteRulesIT.java
@@ -20,10 +20,10 @@
 package org.apache.cayenne;
 
 import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.testdo.mt.ClientMtDeleteCascade;
-import org.apache.cayenne.testdo.mt.ClientMtDeleteDeny;
-import org.apache.cayenne.testdo.mt.ClientMtDeleteNullify;
-import org.apache.cayenne.testdo.mt.ClientMtDeleteRule;
+import org.apache.cayenne.testdo.deleterules.ClientDeleteCascade;
+import org.apache.cayenne.testdo.deleterules.ClientDeleteDeny;
+import org.apache.cayenne.testdo.deleterules.ClientDeleteNullify;
+import org.apache.cayenne.testdo.deleterules.ClientDeleteRule;
 import org.apache.cayenne.unit.di.client.ClientCase;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
 import org.junit.Test;
@@ -34,7 +34,7 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
-@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT)
+@UseServerRuntime(ClientCase.DELETE_RULES_PROJECT)
 public class CayenneContextDeleteRulesIT extends ClientCase {
 
     @Inject
@@ -43,10 +43,10 @@ public class CayenneContextDeleteRulesIT extends ClientCase 
{
     @Test
     public void testNullifyToOne() {
 
-        ClientMtDeleteNullify object = 
context.newObject(ClientMtDeleteNullify.class);
+        ClientDeleteNullify object = 
context.newObject(ClientDeleteNullify.class);
         object.setName("object");
 
-        ClientMtDeleteRule related = 
context.newObject(ClientMtDeleteRule.class);
+        ClientDeleteRule related = context.newObject(ClientDeleteRule.class);
         object.setName("related");
 
         object.setNullify(related);
@@ -63,8 +63,8 @@ public class CayenneContextDeleteRulesIT extends ClientCase {
     @Test
     public void testDenyToOne() {
 
-        ClientMtDeleteDeny object = 
context.newObject(ClientMtDeleteDeny.class);
-        ClientMtDeleteRule related = 
context.newObject(ClientMtDeleteRule.class);
+        ClientDeleteDeny object = context.newObject(ClientDeleteDeny.class);
+        ClientDeleteRule related = context.newObject(ClientDeleteRule.class);
         object.setDeny(related);
         context.commitChanges();
 
@@ -84,10 +84,10 @@ public class CayenneContextDeleteRulesIT extends ClientCase 
{
     @Test
     public void testCascadeToOne() {
 
-        ClientMtDeleteCascade object = 
context.newObject(ClientMtDeleteCascade.class);
+        ClientDeleteCascade object = 
context.newObject(ClientDeleteCascade.class);
         object.setName("object");
 
-        ClientMtDeleteRule related = 
context.newObject(ClientMtDeleteRule.class);
+        ClientDeleteRule related = context.newObject(ClientDeleteRule.class);
         object.setName("related");
 
         object.setCascade(related);
@@ -104,10 +104,10 @@ public class CayenneContextDeleteRulesIT extends 
ClientCase {
     @Test
     public void testCascadeToOneNewObject() {
 
-        ClientMtDeleteRule related = 
context.newObject(ClientMtDeleteRule.class);
+        ClientDeleteRule related = context.newObject(ClientDeleteRule.class);
         context.commitChanges();
 
-        ClientMtDeleteCascade object = 
context.newObject(ClientMtDeleteCascade.class);
+        ClientDeleteCascade object = 
context.newObject(ClientDeleteCascade.class);
         object.setName("object");
         object.setCascade(related);
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMapRelationshipIT.java
----------------------------------------------------------------------
diff --git 
a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMapRelationshipIT.java
 
b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMapRelationshipIT.java
index 46fd918..7ae2dee 100644
--- 
a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMapRelationshipIT.java
+++ 
b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMapRelationshipIT.java
@@ -23,9 +23,9 @@ import org.apache.cayenne.query.ObjectIdQuery;
 import org.apache.cayenne.query.RefreshQuery;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
-import org.apache.cayenne.testdo.mt.ClientMtMapToMany;
-import org.apache.cayenne.testdo.mt.ClientMtMapToManyTarget;
-import org.apache.cayenne.testdo.mt.MtMapToMany;
+import org.apache.cayenne.testdo.map_to_many.ClientIdMapToMany;
+import org.apache.cayenne.testdo.map_to_many.ClientIdMapToManyTarget;
+import org.apache.cayenne.testdo.map_to_many.IdMapToMany;
 import org.apache.cayenne.unit.di.client.ClientCase;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
 import org.junit.Test;
@@ -37,7 +37,7 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 
-@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT)
+@UseServerRuntime(ClientCase.MAP_TO_MANY_PROJECT)
 public class CayenneContextMapRelationshipIT extends ClientCase {
 
     @Inject
@@ -46,36 +46,36 @@ public class CayenneContextMapRelationshipIT extends 
ClientCase {
     @Inject
     private DBHelper dbHelper;
 
-    private TableHelper tMtMapToMany;
-    private TableHelper tMtMapToManyTarget;
+    private TableHelper tMapToMany;
+    private TableHelper tMapToManyTarget;
 
     @Override
     protected void setUpAfterInjection() throws Exception {
-        dbHelper.deleteAll("MT_MAP_TO_MANY_TARGET");
-        dbHelper.deleteAll("MT_MAP_TO_MANY");
+        dbHelper.deleteAll("ID_MAP_TO_MANY_TARGET");
+        dbHelper.deleteAll("ID_MAP_TO_MANY");
 
-        tMtMapToMany = new TableHelper(dbHelper, "MT_MAP_TO_MANY");
-        tMtMapToMany.setColumns("ID");
+        tMapToMany = new TableHelper(dbHelper, "ID_MAP_TO_MANY");
+        tMapToMany.setColumns("ID");
 
-        tMtMapToManyTarget = new TableHelper(dbHelper, 
"MT_MAP_TO_MANY_TARGET");
-        tMtMapToManyTarget.setColumns("ID", "MAP_TO_MANY_ID");
+        tMapToManyTarget = new TableHelper(dbHelper, "ID_MAP_TO_MANY_TARGET");
+        tMapToManyTarget.setColumns("ID", "MAP_TO_MANY_ID");
     }
 
     private void createTwoMapToManysWithTargetsDataSet() throws Exception {
-        tMtMapToMany.insert(1).insert(2);
-        tMtMapToManyTarget.insert(1, 1).insert(2, 1).insert(3, 1).insert(4, 2);
+        tMapToMany.insert(1).insert(2);
+        tMapToManyTarget.insert(1, 1).insert(2, 1).insert(3, 1).insert(4, 2);
     }
 
     @Test
     public void testReadToMany() throws Exception {
         createTwoMapToManysWithTargetsDataSet();
 
-        ObjectId id = new ObjectId("MtMapToMany", MtMapToMany.ID_PK_COLUMN, 1);
-        ClientMtMapToMany o1 = (ClientMtMapToMany) Cayenne.objectForQuery(
+        ObjectId id = new ObjectId("IdMapToMany", IdMapToMany.ID_PK_COLUMN, 1);
+        ClientIdMapToMany o1 = (ClientIdMapToMany) Cayenne.objectForQuery(
                 context,
                 new ObjectIdQuery(id));
 
-        Map<Object, ClientMtMapToManyTarget> targets = o1.getTargets();
+        Map<Object, ClientIdMapToManyTarget> targets = o1.getTargets();
 
         assertTrue(((ValueHolder) targets).isFault());
 
@@ -90,17 +90,17 @@ public class CayenneContextMapRelationshipIT extends 
ClientCase {
     public void testAddToMany() throws Exception {
         createTwoMapToManysWithTargetsDataSet();
 
-        ObjectId id = new ObjectId("MtMapToMany", MtMapToMany.ID_PK_COLUMN, 1);
-        ClientMtMapToMany o1 = (ClientMtMapToMany) Cayenne.objectForQuery(
+        ObjectId id = new ObjectId("IdMapToMany", IdMapToMany.ID_PK_COLUMN, 1);
+        ClientIdMapToMany o1 = (ClientIdMapToMany) Cayenne.objectForQuery(
                 context,
                 new ObjectIdQuery(id));
 
-        Map<Object, ClientMtMapToManyTarget> targets = o1.getTargets();
+        Map<Object, ClientIdMapToManyTarget> targets = o1.getTargets();
         assertNotNull(targets);
         assertEquals(3, targets.size());
 
-        ClientMtMapToManyTarget newTarget = o1.getObjectContext().newObject(
-                ClientMtMapToManyTarget.class);
+        ClientIdMapToManyTarget newTarget = o1.getObjectContext().newObject(
+                ClientIdMapToManyTarget.class);
 
         o1.addToTargets(newTarget);
         assertEquals(4, targets.size());

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMeaningfulPKIT.java
----------------------------------------------------------------------
diff --git 
a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMeaningfulPKIT.java
 
b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMeaningfulPKIT.java
new file mode 100644
index 0000000..89dd47e
--- /dev/null
+++ 
b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMeaningfulPKIT.java
@@ -0,0 +1,53 @@
+package org.apache.cayenne;
+
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.query.SelectQuery;
+import org.apache.cayenne.query.SortOrder;
+import org.apache.cayenne.test.jdbc.DBHelper;
+import org.apache.cayenne.test.jdbc.TableHelper;
+import org.apache.cayenne.testdo.meaningful_pk.ClientMeaningfulPk;
+import org.apache.cayenne.unit.di.client.ClientCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
+import org.junit.Test;
+
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+
+@UseServerRuntime(ClientCase.MEANINGFUL_PK_PROJECT)
+public class CayenneContextMeaningfulPKIT extends ClientCase {
+
+    @Inject
+    private CayenneContext clientContext;
+
+    @Inject
+    private DBHelper dbHelper;
+
+    private TableHelper tMeaningfulPK;
+
+    @Override
+    protected void setUpAfterInjection() throws Exception {
+        dbHelper.deleteAll("MEANINGFUL_PK");
+
+        tMeaningfulPK = new TableHelper(dbHelper, "MEANINGFUL_PK");
+        tMeaningfulPK.setColumns("PK");
+    }
+
+    private void deleteAndCreateTwoMeaningfulPKsDataSet() throws Exception {
+        tMeaningfulPK.deleteAll();
+        tMeaningfulPK.insert("A");
+        tMeaningfulPK.insert("B");
+    }
+
+    @Test
+    public void testMeaningfulPK() throws Exception {
+        deleteAndCreateTwoMeaningfulPKsDataSet();
+
+        SelectQuery query = new SelectQuery(ClientMeaningfulPk.class);
+        query.addOrdering(ClientMeaningfulPk.PK_PROPERTY, 
SortOrder.DESCENDING);
+
+        List<?> results = clientContext.performQuery(query);
+        assertEquals(2, results.size());
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextPrimitiveIT.java
----------------------------------------------------------------------
diff --git 
a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextPrimitiveIT.java
 
b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextPrimitiveIT.java
index f75111c..0c402d5 100644
--- 
a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextPrimitiveIT.java
+++ 
b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextPrimitiveIT.java
@@ -23,8 +23,8 @@ import org.apache.cayenne.query.SelectQuery;
 import org.apache.cayenne.query.SortOrder;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
-import org.apache.cayenne.testdo.mt.ClientMtTablePrimitives;
-import org.apache.cayenne.testdo.mt.MtTablePrimitives;
+import org.apache.cayenne.testdo.table_primitives.ClientTablePrimitives;
+import org.apache.cayenne.testdo.table_primitives.TablePrimitives;
 import org.apache.cayenne.unit.UnitDbAdapter;
 import org.apache.cayenne.unit.di.client.ClientCase;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
@@ -37,7 +37,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
-@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT)
+@UseServerRuntime(ClientCase.TABLE_PRIMITIVES_PROJECT)
 public class CayenneContextPrimitiveIT extends ClientCase {
 
     @Inject
@@ -49,34 +49,34 @@ public class CayenneContextPrimitiveIT extends ClientCase {
     @Inject
     private DBHelper dbHelper;
 
-    private TableHelper tMtTablePrimitives;
+    private TableHelper tTablePrimitives;
 
     @Override
     protected void setUpAfterInjection() throws Exception {
-        dbHelper.deleteAll("MT_TABLE_PRIMITIVES");
+        dbHelper.deleteAll("TABLE_PRIMITIVES");
 
         int bool = accessStackAdapter.supportsBoolean() ? Types.BOOLEAN : 
Types.INTEGER;
         
-        tMtTablePrimitives = new TableHelper(dbHelper, "MT_TABLE_PRIMITIVES");
-        tMtTablePrimitives.setColumns("ID", "BOOLEAN_COLUMN", 
"INT_COLUMN").setColumnTypes(
+        tTablePrimitives = new TableHelper(dbHelper, "TABLE_PRIMITIVES");
+        tTablePrimitives.setColumns("ID", "BOOLEAN_COLUMN", 
"INT_COLUMN").setColumnTypes(
                 Types.INTEGER,
                 bool,
                 Types.INTEGER);
     }
 
     private void createTwoPrimitivesDataSet() throws Exception {
-        tMtTablePrimitives.insert(1, accessStackAdapter.supportsBoolean() ? 
true : 1, 0);
-        tMtTablePrimitives.insert(2, accessStackAdapter.supportsBoolean() ? 
false : 0, 5);
+        tTablePrimitives.insert(1, accessStackAdapter.supportsBoolean() ? true 
: 1, 0);
+        tTablePrimitives.insert(2, accessStackAdapter.supportsBoolean() ? 
false : 0, 5);
     }
 
     @Test
     public void testSelectPrimitives() throws Exception {
         createTwoPrimitivesDataSet();
 
-        SelectQuery query = new SelectQuery(ClientMtTablePrimitives.class);
-        query.addOrdering("db:" + MtTablePrimitives.ID_PK_COLUMN, 
SortOrder.ASCENDING);
+        SelectQuery query = new SelectQuery(ClientTablePrimitives.class);
+        query.addOrdering("db:" + TablePrimitives.ID_PK_COLUMN, 
SortOrder.ASCENDING);
 
-        List<ClientMtTablePrimitives> results = context.performQuery(query);
+        List<ClientTablePrimitives> results = context.performQuery(query);
         assertTrue(results.get(0).isBooleanColumn());
         assertFalse(results.get(1).isBooleanColumn());
 
@@ -87,21 +87,21 @@ public class CayenneContextPrimitiveIT extends ClientCase {
     @Test
     public void testCommitChangesPrimitives() throws Exception {
 
-        ClientMtTablePrimitives object = 
context.newObject(ClientMtTablePrimitives.class);
+        ClientTablePrimitives object = 
context.newObject(ClientTablePrimitives.class);
 
         object.setBooleanColumn(true);
         object.setIntColumn(3);
 
         context.commitChanges();
 
-        assertTrue(tMtTablePrimitives.getBoolean("BOOLEAN_COLUMN"));
-        assertEquals(3, tMtTablePrimitives.getInt("INT_COLUMN"));
+        assertTrue(tTablePrimitives.getBoolean("BOOLEAN_COLUMN"));
+        assertEquals(3, tTablePrimitives.getInt("INT_COLUMN"));
 
         object.setBooleanColumn(false);
         object.setIntColumn(8);
         context.commitChanges();
 
-        assertFalse(tMtTablePrimitives.getBoolean("BOOLEAN_COLUMN"));
-        assertEquals(8, tMtTablePrimitives.getInt("INT_COLUMN"));
+        assertFalse(tTablePrimitives.getBoolean("BOOLEAN_COLUMN"));
+        assertEquals(8, tTablePrimitives.getInt("INT_COLUMN"));
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextReflexiveIT.java
----------------------------------------------------------------------
diff --git 
a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextReflexiveIT.java
 
b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextReflexiveIT.java
new file mode 100644
index 0000000..04fb4e2
--- /dev/null
+++ 
b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextReflexiveIT.java
@@ -0,0 +1,74 @@
+package org.apache.cayenne;
+
+import org.apache.cayenne.access.ClientServerChannel;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.reflect.LifecycleCallbackRegistry;
+import org.apache.cayenne.testdo.reflexive.ClientReflexive;
+import org.apache.cayenne.testdo.reflexive.Reflexive;
+import org.apache.cayenne.unit.di.client.ClientCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
+import org.junit.Test;
+
+@UseServerRuntime(ClientCase.REFLEXIVE_PROJECT)
+public class CayenneContextReflexiveIT extends ClientCase {
+
+    @Inject
+    private CayenneContext clientContext;
+
+    @Inject
+    private ClientServerChannel clientServerChannel;
+
+    @Test
+    public void testCAY830() throws Exception {
+
+        // an exception was triggered within POST_LOAD callback
+        LifecycleCallbackRegistry callbackRegistry = clientServerChannel
+                .getEntityResolver()
+                .getCallbackRegistry();
+
+        try {
+            callbackRegistry.addListener(Reflexive.class, new 
LifecycleListener() {
+
+                public void postLoad(Object entity) {
+                }
+
+                public void postPersist(Object entity) {
+                }
+
+                public void postRemove(Object entity) {
+                }
+
+                public void postUpdate(Object entity) {
+                }
+
+                public void postAdd(Object entity) {
+                }
+
+                public void preRemove(Object entity) {
+                }
+
+                public void preUpdate(Object entity) {
+                }
+
+                public void prePersist(Object entity) {
+                }
+            });
+
+            ClientReflexive o1 = 
clientContext.newObject(ClientReflexive.class);
+            o1.setName("parent");
+
+            ClientReflexive o2 = 
clientContext.newObject(ClientReflexive.class);
+            o2.setName("child");
+            o2.setToParent(o1);
+            clientContext.commitChanges();
+
+            clientContext.deleteObjects(o1);
+            clientContext.deleteObjects(o2);
+            clientContext.commitChanges();
+            // per CAY-830 an exception is thrown here
+        }
+        finally {
+            callbackRegistry.clear();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextWithDataContextIT.java
----------------------------------------------------------------------
diff --git 
a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextWithDataContextIT.java
 
b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextWithDataContextIT.java
index ed19ebe..69676c7 100644
--- 
a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextWithDataContextIT.java
+++ 
b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextWithDataContextIT.java
@@ -32,11 +32,8 @@ import org.apache.cayenne.remote.RemoteIncrementalFaultList;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.test.parallel.ParallelTestContainer;
-import org.apache.cayenne.testdo.mt.ClientMtMeaningfulPk;
-import org.apache.cayenne.testdo.mt.ClientMtReflexive;
 import org.apache.cayenne.testdo.mt.ClientMtTable1;
 import org.apache.cayenne.testdo.mt.ClientMtTable2;
-import org.apache.cayenne.testdo.mt.MtReflexive;
 import org.apache.cayenne.testdo.mt.MtTable1;
 import org.apache.cayenne.unit.di.DataChannelInterceptor;
 import org.apache.cayenne.unit.di.UnitTestClosure;
@@ -74,8 +71,6 @@ public class CayenneContextWithDataContextIT extends 
ClientCase {
     private TableHelper tMtTable1;
     private TableHelper tMtTable2;
 
-    private TableHelper tMtMeaningfulPK;
-
     @Override
     protected void setUpAfterInjection() throws Exception {
         dbHelper.deleteAll("MT_TABLE2");
@@ -87,15 +82,6 @@ public class CayenneContextWithDataContextIT extends 
ClientCase {
         tMtTable2 = new TableHelper(dbHelper, "MT_TABLE2");
         tMtTable2.setColumns("TABLE2_ID", "TABLE1_ID", 
"GLOBAL_ATTRIBUTE").setColumnTypes(
                 Types.INTEGER, Types.INTEGER, Types.VARCHAR);
-
-        tMtMeaningfulPK = new TableHelper(dbHelper, "MT_MEANINGFUL_PK");
-        tMtMeaningfulPK.setColumns("PK");
-    }
-
-    private void deleteAndCreateTwoMeaningfulPKsDataSet() throws Exception {
-        tMtMeaningfulPK.deleteAll();
-        tMtMeaningfulPK.insert("A");
-        tMtMeaningfulPK.insert("B");
     }
 
     private void createTwoMtTable1sAnd2sDataSet() throws Exception {
@@ -304,60 +290,6 @@ public class CayenneContextWithDataContextIT extends 
ClientCase {
     }
 
     @Test
-    public void testCAY830() throws Exception {
-
-        // an exception was triggered within POST_LOAD callback
-        LifecycleCallbackRegistry callbackRegistry = clientServerChannel
-                .getEntityResolver()
-                .getCallbackRegistry();
-
-        try {
-            callbackRegistry.addListener(MtReflexive.class, new 
LifecycleListener() {
-
-                public void postLoad(Object entity) {
-                }
-
-                public void postPersist(Object entity) {
-                }
-
-                public void postRemove(Object entity) {
-                }
-
-                public void postUpdate(Object entity) {
-                }
-
-                public void postAdd(Object entity) {
-                }
-
-                public void preRemove(Object entity) {
-                }
-
-                public void preUpdate(Object entity) {
-                }
-
-                public void prePersist(Object entity) {
-                }
-            });
-
-            ClientMtReflexive o1 = 
clientContext.newObject(ClientMtReflexive.class);
-            o1.setName("parent");
-
-            ClientMtReflexive o2 = 
clientContext.newObject(ClientMtReflexive.class);
-            o2.setName("child");
-            o2.setToParent(o1);
-            clientContext.commitChanges();
-
-            clientContext.deleteObjects(o1);
-            clientContext.deleteObjects(o2);
-            clientContext.commitChanges();
-            // per CAY-830 an exception is thrown here
-        }
-        finally {
-            callbackRegistry.clear();
-        }
-    }
-
-    @Test
     public void testRollbackChanges() throws Exception {
 
         ClientMtTable1 o = clientContext.newObject(ClientMtTable1.class);
@@ -417,17 +349,6 @@ public class CayenneContextWithDataContextIT extends 
ClientCase {
     }
 
     @Test
-    public void testMeaningfulPK() throws Exception {
-        deleteAndCreateTwoMeaningfulPKsDataSet();
-
-        SelectQuery query = new SelectQuery(ClientMtMeaningfulPk.class);
-        query.addOrdering(ClientMtMeaningfulPk.PK_PROPERTY, 
SortOrder.DESCENDING);
-
-        List<?> results = clientContext.performQuery(query);
-        assertEquals(2, results.size());
-    }
-
-    @Test
     public void testPrefetchingToOne() throws Exception {
         createTwoMtTable1sAnd2sDataSet();
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-client/src/test/java/org/apache/cayenne/NestedCayenneContextIT.java
----------------------------------------------------------------------
diff --git 
a/cayenne-client/src/test/java/org/apache/cayenne/NestedCayenneContextIT.java 
b/cayenne-client/src/test/java/org/apache/cayenne/NestedCayenneContextIT.java
index 20b7a5d..0e489ab 100644
--- 
a/cayenne-client/src/test/java/org/apache/cayenne/NestedCayenneContextIT.java
+++ 
b/cayenne-client/src/test/java/org/apache/cayenne/NestedCayenneContextIT.java
@@ -29,8 +29,6 @@ import org.apache.cayenne.remote.service.LocalConnection;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.testdo.mt.ClientMtTable1;
 import org.apache.cayenne.testdo.mt.ClientMtTable2;
-import org.apache.cayenne.testdo.mt.ClientMtTooneDep;
-import org.apache.cayenne.testdo.mt.ClientMtTooneMaster;
 import org.apache.cayenne.unit.di.DataChannelInterceptor;
 import org.apache.cayenne.unit.di.UnitTestClosure;
 import org.apache.cayenne.unit.di.client.ClientCase;
@@ -499,102 +497,6 @@ public class NestedCayenneContextIT extends 
RemoteCayenneCase {
                assertEquals("DDD", parentDeleted.getGlobalAttribute1());
        }
 
-       /*
-        * was added for CAY-1636
-        */
-       @Test
-       public void testCAY1636() throws Exception {
-
-               ClientMtTooneMaster A = clientContext
-                               .newObject(ClientMtTooneMaster.class);
-               clientContext.commitChanges();
-
-               ClientMtTooneDep B = 
clientContext.newObject(ClientMtTooneDep.class);
-               A.setToDependent(B);
-               clientContext.commitChanges();
-
-               ObjectContext child = runtime.newContext(clientContext);
-
-               SelectQuery<ClientMtTooneMaster> query = new 
SelectQuery<ClientMtTooneMaster>(
-                               ClientMtTooneMaster.class);
-               List<ClientMtTooneMaster> objects = child.select(query);
-
-               assertEquals(1, objects.size());
-
-               ClientMtTooneMaster childDeleted = (ClientMtTooneMaster) 
objects.get(0);
-
-               child.deleteObjects(childDeleted);
-
-               child.commitChangesToParent();
-
-               ClientMtTooneMaster parentDeleted = (ClientMtTooneMaster) 
clientContext
-                               
.getGraphManager().getNode(childDeleted.getObjectId());
-
-               assertNotNull(parentDeleted);
-               assertEquals(PersistenceState.DELETED,
-                               parentDeleted.getPersistenceState());
-
-               clientContext.commitChanges();
-
-               SelectQuery<ClientMtTooneMaster> query2 = new 
SelectQuery<ClientMtTooneMaster>(
-                               ClientMtTooneMaster.class);
-               List<ClientMtTooneMaster> objects2 = child.select(query2);
-
-               assertEquals(0, objects2.size());
-
-       }
-
-       @Test
-       public void testCAY1636_2() throws Exception {
-
-               ClientMtTooneMaster A = clientContext
-                               .newObject(ClientMtTooneMaster.class);
-               clientContext.commitChanges();
-
-               ClientMtTooneDep B = 
clientContext.newObject(ClientMtTooneDep.class);
-               A.setToDependent(B);
-               clientContext.commitChanges();
-
-               ObjectContext child = runtime.newContext(clientContext);
-
-               SelectQuery<ClientMtTooneDep> queryB = new 
SelectQuery<ClientMtTooneDep>(
-                               ClientMtTooneDep.class);
-               List<?> objectsB = child.performQuery(queryB);
-
-               assertEquals(1, objectsB.size());
-
-               ClientMtTooneDep childBDeleted = (ClientMtTooneDep) 
objectsB.get(0);
-               child.deleteObjects(childBDeleted);
-
-               SelectQuery<ClientMtTooneMaster> query = new 
SelectQuery<ClientMtTooneMaster>(
-                               ClientMtTooneMaster.class);
-               List<ClientMtTooneMaster> objects = child.select(query);
-
-               assertEquals(1, objects.size());
-
-               ClientMtTooneMaster childDeleted = objects.get(0);
-
-               child.deleteObjects(childDeleted);
-
-               child.commitChangesToParent();
-
-               ClientMtTooneMaster parentDeleted = (ClientMtTooneMaster) 
clientContext
-                               
.getGraphManager().getNode(childDeleted.getObjectId());
-
-               assertNotNull(parentDeleted);
-               assertEquals(PersistenceState.DELETED,
-                               parentDeleted.getPersistenceState());
-
-               clientContext.commitChanges();
-
-               SelectQuery<ClientMtTooneMaster> query2 = new 
SelectQuery<ClientMtTooneMaster>(
-                               ClientMtTooneMaster.class);
-               List<ClientMtTooneMaster> objects2 = child.select(query2);
-
-               assertEquals(0, objects2.size());
-
-       }
-
        @Test
        public void testCommitChanges() throws Exception {
                clientContext.newObject(ClientMtTable1.class);
@@ -853,62 +755,4 @@ public class NestedCayenneContextIT extends 
RemoteCayenneCase {
                assertEquals(2, arcDiffs[0]);
        }
 
-       @Test
-       public void testCommitChangesToParentOneToOne() throws Exception {
-               ObjectContext child = runtime.newContext(clientContext);
-
-               ClientMtTooneMaster master = 
child.newObject(ClientMtTooneMaster.class);
-               ClientMtTooneDep dep = child.newObject(ClientMtTooneDep.class);
-               master.setToDependent(dep);
-
-               child.commitChangesToParent();
-
-               ClientMtTooneMaster masterParent = (ClientMtTooneMaster) 
clientContext
-                               
.getGraphManager().getNode(master.getObjectId());
-               ClientMtTooneDep depParent = (ClientMtTooneDep) clientContext
-                               .getGraphManager().getNode(dep.getObjectId());
-
-               assertNotNull(masterParent);
-               assertNotNull(depParent);
-
-               assertSame(masterParent, depParent.getToMaster());
-               assertSame(depParent, masterParent.getToDependent());
-
-               // check that arc changes got recorded in the parent context
-               GraphDiff diffs = 
clientContext.internalGraphManager().getDiffs();
-
-               final int[] arcDiffs = new int[1];
-               final int[] newNodes = new int[1];
-
-               diffs.apply(new GraphChangeHandler() {
-
-                       public void arcCreated(Object nodeId, Object 
targetNodeId,
-                                       Object arcId) {
-                               arcDiffs[0]++;
-                       }
-
-                       public void arcDeleted(Object nodeId, Object 
targetNodeId,
-                                       Object arcId) {
-                               arcDiffs[0]--;
-                       }
-
-                       public void nodeCreated(Object nodeId) {
-                               newNodes[0]++;
-                       }
-
-                       public void nodeIdChanged(Object nodeId, Object newId) {
-                       }
-
-                       public void nodePropertyChanged(Object nodeId, String 
property,
-                                       Object oldValue, Object newValue) {
-                       }
-
-                       public void nodeRemoved(Object nodeId) {
-                               newNodes[0]--;
-                       }
-               });
-
-               assertEquals(2, newNodes[0]);
-               assertEquals(2, arcDiffs[0]);
-       }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-client/src/test/java/org/apache/cayenne/NestedCayenneContextTooneIT.java
----------------------------------------------------------------------
diff --git 
a/cayenne-client/src/test/java/org/apache/cayenne/NestedCayenneContextTooneIT.java
 
b/cayenne-client/src/test/java/org/apache/cayenne/NestedCayenneContextTooneIT.java
new file mode 100644
index 0000000..e548368
--- /dev/null
+++ 
b/cayenne-client/src/test/java/org/apache/cayenne/NestedCayenneContextTooneIT.java
@@ -0,0 +1,204 @@
+package org.apache.cayenne;
+
+import org.apache.cayenne.configuration.rop.client.ClientRuntime;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.graph.GraphChangeHandler;
+import org.apache.cayenne.graph.GraphDiff;
+import org.apache.cayenne.query.SelectQuery;
+import org.apache.cayenne.remote.RemoteCayenneCase;
+import org.apache.cayenne.remote.service.LocalConnection;
+import org.apache.cayenne.testdo.toone.ClientTooneDep;
+import org.apache.cayenne.testdo.toone.ClientTooneMaster;
+import org.apache.cayenne.unit.di.DataChannelInterceptor;
+import org.apache.cayenne.unit.di.client.ClientCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+
+@UseServerRuntime(ClientCase.TOONE_PROJECT)
+@RunWith(value = Parameterized.class)
+public class NestedCayenneContextTooneIT extends RemoteCayenneCase {
+
+    @Inject
+    private ClientRuntime runtime;
+
+    @Inject
+    private DataChannelInterceptor queryInterceptor;
+
+    @Parameterized.Parameters
+    public static Collection<Object[]> data() {
+        return Arrays.asList(new Object[][]{
+                {LocalConnection.HESSIAN_SERIALIZATION},
+                {LocalConnection.JAVA_SERIALIZATION},
+                {LocalConnection.NO_SERIALIZATION},});
+    }
+
+    public NestedCayenneContextTooneIT(int serializationPolicy) {
+        super.serializationPolicy = serializationPolicy;
+    }
+
+    /*
+ * was added for CAY-1636
+ */
+    @Test
+    public void testCAY1636() throws Exception {
+
+        ClientTooneMaster A = clientContext
+                .newObject(ClientTooneMaster.class);
+        clientContext.commitChanges();
+
+        ClientTooneDep B = clientContext.newObject(ClientTooneDep.class);
+        A.setToDependent(B);
+        clientContext.commitChanges();
+
+        ObjectContext child = runtime.newContext(clientContext);
+
+        SelectQuery<ClientTooneMaster> query = new 
SelectQuery<ClientTooneMaster>(
+                ClientTooneMaster.class);
+        List<ClientTooneMaster> objects = child.select(query);
+
+        assertEquals(1, objects.size());
+
+        ClientTooneMaster childDeleted = (ClientTooneMaster) objects.get(0);
+
+        child.deleteObjects(childDeleted);
+
+        child.commitChangesToParent();
+
+        ClientTooneMaster parentDeleted = (ClientTooneMaster) clientContext
+                .getGraphManager().getNode(childDeleted.getObjectId());
+
+        assertNotNull(parentDeleted);
+        assertEquals(PersistenceState.DELETED,
+                parentDeleted.getPersistenceState());
+
+        clientContext.commitChanges();
+
+        SelectQuery<ClientTooneMaster> query2 = new 
SelectQuery<ClientTooneMaster>(
+                ClientTooneMaster.class);
+        List<ClientTooneMaster> objects2 = child.select(query2);
+
+        assertEquals(0, objects2.size());
+
+    }
+
+    @Test
+    public void testCAY1636_2() throws Exception {
+
+        ClientTooneMaster A = clientContext
+                .newObject(ClientTooneMaster.class);
+        clientContext.commitChanges();
+
+        ClientTooneDep B = clientContext.newObject(ClientTooneDep.class);
+        A.setToDependent(B);
+        clientContext.commitChanges();
+
+        ObjectContext child = runtime.newContext(clientContext);
+
+        SelectQuery<ClientTooneDep> queryB = new SelectQuery<ClientTooneDep>(
+                ClientTooneDep.class);
+        List<?> objectsB = child.performQuery(queryB);
+
+        assertEquals(1, objectsB.size());
+
+        ClientTooneDep childBDeleted = (ClientTooneDep) objectsB.get(0);
+        child.deleteObjects(childBDeleted);
+
+        SelectQuery<ClientTooneMaster> query = new 
SelectQuery<ClientTooneMaster>(
+                ClientTooneMaster.class);
+        List<ClientTooneMaster> objects = child.select(query);
+
+        assertEquals(1, objects.size());
+
+        ClientTooneMaster childDeleted = objects.get(0);
+
+        child.deleteObjects(childDeleted);
+
+        child.commitChangesToParent();
+
+        ClientTooneMaster parentDeleted = (ClientTooneMaster) clientContext
+                .getGraphManager().getNode(childDeleted.getObjectId());
+
+        assertNotNull(parentDeleted);
+        assertEquals(PersistenceState.DELETED,
+                parentDeleted.getPersistenceState());
+
+        clientContext.commitChanges();
+
+        SelectQuery<ClientTooneMaster> query2 = new 
SelectQuery<ClientTooneMaster>(
+                ClientTooneMaster.class);
+        List<ClientTooneMaster> objects2 = child.select(query2);
+
+        assertEquals(0, objects2.size());
+
+    }
+
+    @Test
+    public void testCommitChangesToParentOneToOne() throws Exception {
+        ObjectContext child = runtime.newContext(clientContext);
+
+        ClientTooneMaster master = child.newObject(ClientTooneMaster.class);
+        ClientTooneDep dep = child.newObject(ClientTooneDep.class);
+        master.setToDependent(dep);
+
+        child.commitChangesToParent();
+
+        ClientTooneMaster masterParent = (ClientTooneMaster) clientContext
+                .getGraphManager().getNode(master.getObjectId());
+        ClientTooneDep depParent = (ClientTooneDep) clientContext
+                .getGraphManager().getNode(dep.getObjectId());
+
+        assertNotNull(masterParent);
+        assertNotNull(depParent);
+
+        assertSame(masterParent, depParent.getToMaster());
+        assertSame(depParent, masterParent.getToDependent());
+
+        // check that arc changes got recorded in the parent context
+        GraphDiff diffs = clientContext.internalGraphManager().getDiffs();
+
+        final int[] arcDiffs = new int[1];
+        final int[] newNodes = new int[1];
+
+        diffs.apply(new GraphChangeHandler() {
+
+            public void arcCreated(Object nodeId, Object targetNodeId,
+                                   Object arcId) {
+                arcDiffs[0]++;
+            }
+
+            public void arcDeleted(Object nodeId, Object targetNodeId,
+                                   Object arcId) {
+                arcDiffs[0]--;
+            }
+
+            public void nodeCreated(Object nodeId) {
+                newNodes[0]++;
+            }
+
+            public void nodeIdChanged(Object nodeId, Object newId) {
+            }
+
+            public void nodePropertyChanged(Object nodeId, String property,
+                                            Object oldValue, Object newValue) {
+            }
+
+            public void nodeRemoved(Object nodeId) {
+                newNodes[0]--;
+            }
+        });
+
+        assertEquals(2, newNodes[0]);
+        assertEquals(2, arcDiffs[0]);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-client/src/test/java/org/apache/cayenne/map/ClientEntityResolverIT.java
----------------------------------------------------------------------
diff --git 
a/cayenne-client/src/test/java/org/apache/cayenne/map/ClientEntityResolverIT.java
 
b/cayenne-client/src/test/java/org/apache/cayenne/map/ClientEntityResolverIT.java
deleted file mode 100644
index c87060c..0000000
--- 
a/cayenne-client/src/test/java/org/apache/cayenne/map/ClientEntityResolverIT.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.map;
-
-import org.apache.cayenne.remote.hessian.service.HessianUtil;
-import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.unit.di.client.ClientCase;
-import org.apache.cayenne.unit.di.server.UseServerRuntime;
-import org.junit.Test;
-
-import java.util.Collection;
-import java.util.Collections;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertTrue;
-
-@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT)
-public class ClientEntityResolverIT extends ClientCase {
-
-    @Test
-    public void testSerializabilityWithHessian() throws Exception {
-        ObjEntity entity = new ObjEntity("test_entity");
-        entity.setClassName(Artist.class.getName());
-
-        DataMap dataMap = new DataMap("test");
-        dataMap.addObjEntity(entity);
-        Collection<DataMap> maps = Collections.singleton(dataMap);
-        EntityResolver resolver = new EntityResolver(maps);
-
-        // 1. simple case
-        Object c1 = HessianUtil.cloneViaClientServerSerialization(resolver, 
new EntityResolver());
-
-        assertNotNull(c1);
-        assertTrue(c1 instanceof EntityResolver);
-        EntityResolver cr1 = (EntityResolver) c1;
-
-        assertNotSame(resolver, cr1);
-        assertEquals(1, cr1.getObjEntities().size());
-        assertNotNull(cr1.getObjEntity(entity.getName()));
-
-        // 2. with descriptors resolved...
-        assertNotNull(resolver.getClassDescriptor(entity.getName()));
-
-        EntityResolver cr2 = (EntityResolver) 
HessianUtil.cloneViaClientServerSerialization(resolver,
-                new EntityResolver());
-        assertNotNull(cr2);
-        assertEquals(1, cr2.getObjEntities().size());
-        assertNotNull(cr2.getObjEntity(entity.getName()));
-        assertNotNull(cr2.getClassDescriptor(entity.getName()));
-    }
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-client/src/test/java/org/apache/cayenne/map/ClientEntityResolverTest.java
----------------------------------------------------------------------
diff --git 
a/cayenne-client/src/test/java/org/apache/cayenne/map/ClientEntityResolverTest.java
 
b/cayenne-client/src/test/java/org/apache/cayenne/map/ClientEntityResolverTest.java
new file mode 100644
index 0000000..ad61805
--- /dev/null
+++ 
b/cayenne-client/src/test/java/org/apache/cayenne/map/ClientEntityResolverTest.java
@@ -0,0 +1,66 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.map;
+
+import org.apache.cayenne.remote.hessian.service.HessianUtil;
+import org.apache.cayenne.testdo.testmap.Artist;
+import org.junit.Test;
+
+import java.util.Collection;
+import java.util.Collections;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertTrue;
+
+public class ClientEntityResolverTest {
+
+    @Test
+    public void testSerializabilityWithHessian() throws Exception {
+        ObjEntity entity = new ObjEntity("test_entity");
+        entity.setClassName(Artist.class.getName());
+
+        DataMap dataMap = new DataMap("test");
+        dataMap.addObjEntity(entity);
+        Collection<DataMap> maps = Collections.singleton(dataMap);
+        EntityResolver resolver = new EntityResolver(maps);
+
+        // 1. simple case
+        Object c1 = HessianUtil.cloneViaClientServerSerialization(resolver, 
new EntityResolver());
+
+        assertNotNull(c1);
+        assertTrue(c1 instanceof EntityResolver);
+        EntityResolver cr1 = (EntityResolver) c1;
+
+        assertNotSame(resolver, cr1);
+        assertEquals(1, cr1.getObjEntities().size());
+        assertNotNull(cr1.getObjEntity(entity.getName()));
+
+        // 2. with descriptors resolved...
+        assertNotNull(resolver.getClassDescriptor(entity.getName()));
+
+        EntityResolver cr2 = (EntityResolver) 
HessianUtil.cloneViaClientServerSerialization(resolver,
+                new EntityResolver());
+        assertNotNull(cr2);
+        assertEquals(1, cr2.getObjEntities().size());
+        assertNotNull(cr2.getObjEntity(entity.getName()));
+        assertNotNull(cr2.getClassDescriptor(entity.getName()));
+    }
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-client/src/test/java/org/apache/cayenne/remote/LightSuperClassIT.java
----------------------------------------------------------------------
diff --git 
a/cayenne-client/src/test/java/org/apache/cayenne/remote/LightSuperClassIT.java 
b/cayenne-client/src/test/java/org/apache/cayenne/remote/LightSuperClassIT.java
index 3ffeb20..c6e06dc 100644
--- 
a/cayenne-client/src/test/java/org/apache/cayenne/remote/LightSuperClassIT.java
+++ 
b/cayenne-client/src/test/java/org/apache/cayenne/remote/LightSuperClassIT.java
@@ -41,7 +41,7 @@ import static org.junit.Assert.assertEquals;
 /**
  * Test for entites that are implemented in same class on client and server
  */
-@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT)
+@UseServerRuntime(ClientCase.PERSISTENT_PROJECT)
 @RunWith(value=Parameterized.class)
 public class LightSuperClassIT extends RemoteCayenneCase {
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-client/src/test/java/org/apache/cayenne/remote/ROPPrefetchToManyMapIT.java
----------------------------------------------------------------------
diff --git 
a/cayenne-client/src/test/java/org/apache/cayenne/remote/ROPPrefetchToManyMapIT.java
 
b/cayenne-client/src/test/java/org/apache/cayenne/remote/ROPPrefetchToManyMapIT.java
index 6e456f3..1fa8c40 100644
--- 
a/cayenne-client/src/test/java/org/apache/cayenne/remote/ROPPrefetchToManyMapIT.java
+++ 
b/cayenne-client/src/test/java/org/apache/cayenne/remote/ROPPrefetchToManyMapIT.java
@@ -25,10 +25,11 @@ import org.apache.cayenne.query.RefreshQuery;
 import org.apache.cayenne.query.SelectQuery;
 import org.apache.cayenne.remote.service.LocalConnection;
 import org.apache.cayenne.test.jdbc.DBHelper;
-import org.apache.cayenne.testdo.mt.ClientMtMapToMany;
-import org.apache.cayenne.testdo.mt.ClientMtMapToManyTarget;
+import org.apache.cayenne.testdo.map_to_many.ClientIdMapToMany;
+import org.apache.cayenne.testdo.map_to_many.ClientIdMapToManyTarget;
 import org.apache.cayenne.unit.di.DataChannelInterceptor;
 import org.apache.cayenne.unit.di.UnitTestClosure;
+import org.apache.cayenne.unit.di.client.ClientCase;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -40,7 +41,7 @@ import java.util.Collection;
 
 import static org.junit.Assert.assertEquals;
 
-@UseServerRuntime("cayenne-multi-tier.xml")
+@UseServerRuntime(ClientCase.MAP_TO_MANY_PROJECT)
 @RunWith(value=Parameterized.class)
 public class ROPPrefetchToManyMapIT extends RemoteCayenneCase {
     
@@ -65,25 +66,25 @@ public class ROPPrefetchToManyMapIT extends 
RemoteCayenneCase {
 
     @Override
     public void setUpAfterInjection() throws Exception {
-        dbHelper.deleteAll("MT_MAP_TO_MANY_TARGET");
-        dbHelper.deleteAll("MT_MAP_TO_MANY");        
+        dbHelper.deleteAll("ID_MAP_TO_MANY_TARGET");
+        dbHelper.deleteAll("ID_MAP_TO_MANY");
     }
 
     @Test
     public void test() throws Exception {
         ObjectContext context = createROPContext();
         
-        ClientMtMapToMany map = context.newObject(ClientMtMapToMany.class);
-        ClientMtMapToManyTarget target = 
context.newObject(ClientMtMapToManyTarget.class);
+        ClientIdMapToMany map = context.newObject(ClientIdMapToMany.class);
+        ClientIdMapToManyTarget target = 
context.newObject(ClientIdMapToManyTarget.class);
         target.setMapToMany(map);
         context.commitChanges();
         
         context.performQuery(new RefreshQuery());
         
-        SelectQuery<ClientMtMapToMany> query = new 
SelectQuery<ClientMtMapToMany>(ClientMtMapToMany.class);
+        SelectQuery<ClientIdMapToMany> query = new 
SelectQuery<ClientIdMapToMany>(ClientIdMapToMany.class);
         query.addPrefetch("targets");
         
-        final ClientMtMapToMany mapToMany = (ClientMtMapToMany) 
Cayenne.objectForQuery(context, query);
+        final ClientIdMapToMany mapToMany = (ClientIdMapToMany) 
Cayenne.objectForQuery(context, query);
         
         queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
             

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-client/src/test/java/org/apache/cayenne/remote/RemoteCallbacksIT.java
----------------------------------------------------------------------
diff --git 
a/cayenne-client/src/test/java/org/apache/cayenne/remote/RemoteCallbacksIT.java 
b/cayenne-client/src/test/java/org/apache/cayenne/remote/RemoteCallbacksIT.java
index d7bf475..afeb9fb 100644
--- 
a/cayenne-client/src/test/java/org/apache/cayenne/remote/RemoteCallbacksIT.java
+++ 
b/cayenne-client/src/test/java/org/apache/cayenne/remote/RemoteCallbacksIT.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.remote;
 import org.apache.cayenne.LifecycleListener;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.remote.service.LocalConnection;
-import org.apache.cayenne.testdo.mt.ClientMtLifecycles;
+import org.apache.cayenne.testdo.lifecycles.ClientLifecycles;
 import org.apache.cayenne.unit.di.client.ClientCase;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
 import org.junit.Test;
@@ -34,7 +34,7 @@ import java.util.Collection;
 
 import static org.junit.Assert.assertEquals;
 
-@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT)
+@UseServerRuntime(ClientCase.LIFECYCLES_PROJECT)
 @RunWith(value=Parameterized.class)
 public class RemoteCallbacksIT extends RemoteCayenneCase implements 
LifecycleListener {
     private int added, loaded, prePersisted, postPersisted, preRemoved, 
postRemoved, preUpdated, postUpdated;
@@ -69,10 +69,10 @@ public class RemoteCallbacksIT extends RemoteCayenneCase 
implements LifecycleLis
     @Test
     public void testDefault() throws InterruptedException {
         ObjectContext context = createROPContext();
-        
context.getEntityResolver().getCallbackRegistry().addListener(ClientMtLifecycles.class,
 this);
+        
context.getEntityResolver().getCallbackRegistry().addListener(ClientLifecycles.class,
 this);
         
         assertAll(0, 0, 0, 0, 0, 0, 0, 0);
-        ClientMtLifecycles l1 = context.newObject(ClientMtLifecycles.class);
+        ClientLifecycles l1 = context.newObject(ClientLifecycles.class);
         
         assertAll(1, 0, 0, 0, 0, 0, 0, 0);
         l1.setName("x");

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientCase.java
----------------------------------------------------------------------
diff --git 
a/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientCase.java
 
b/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientCase.java
index 70516f1..f9bdc55 100644
--- 
a/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientCase.java
+++ 
b/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientCase.java
@@ -30,6 +30,14 @@ public class ClientCase extends DICase {
     public static final String ROP_CLIENT_KEY = "client";
 
     public static final String MULTI_TIER_PROJECT = "cayenne-multi-tier.xml";
+    public static final String PERSISTENT_PROJECT = "cayenne-persistent.xml";
+    public static final String REFLEXIVE_PROJECT = "cayenne-reflexive.xml";
+    public static final String DELETE_RULES_PROJECT = 
"cayenne-delete-rules.xml";
+    public static final String LIFECYCLES_PROJECT = "cayenne-lifecycles.xml";
+    public static final String MAP_TO_MANY_PROJECT = "cayenne-map-to-many.xml";
+    public static final String TOONE_PROJECT = "cayenne-toone.xml";
+    public static final String MEANINGFUL_PK_PROJECT = 
"cayenne-meaningful-pk.xml";
+    public static final String TABLE_PRIMITIVES_PROJECT = 
"cayenne-table-primitives.xml";
 
     private static final Injector injector;
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-server/src/test/java/org/apache/cayenne/CDOMapRelationshipIT.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/CDOMapRelationshipIT.java 
b/cayenne-server/src/test/java/org/apache/cayenne/CDOMapRelationshipIT.java
index 988af5c..ada0d70 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/CDOMapRelationshipIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/CDOMapRelationshipIT.java
@@ -24,9 +24,9 @@ import org.apache.cayenne.query.RefreshQuery;
 import org.apache.cayenne.query.SelectQuery;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
-import org.apache.cayenne.testdo.relationship.IdMapToMany;
-import org.apache.cayenne.testdo.relationship.MapToMany;
-import org.apache.cayenne.testdo.relationship.MapToManyTarget;
+import org.apache.cayenne.testdo.map_to_many.IdMapToMany;
+import org.apache.cayenne.testdo.map_to_many.MapToMany;
+import org.apache.cayenne.testdo.map_to_many.MapToManyTarget;
 import org.apache.cayenne.unit.di.server.ServerCase;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
 import org.junit.Test;
@@ -40,7 +40,7 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 
-@UseServerRuntime(ServerCase.RELATIONSHIPS_PROJECT)
+@UseServerRuntime(ServerCase.MAP_TO_MANY_PROJECT)
 public class CDOMapRelationshipIT extends ServerCase {
 
     @Inject

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteCascade.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteCascade.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteCascade.java
new file mode 100644
index 0000000..c835315
--- /dev/null
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteCascade.java
@@ -0,0 +1,28 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.testdo.deleterules;
+
+import org.apache.cayenne.testdo.deleterules.auto._ClientDeleteCascade;
+
+/**
+ * A persistent class mapped as "DeleteCascade" Cayenne entity.
+ */
+public class ClientDeleteCascade extends _ClientDeleteCascade {
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteDeny.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteDeny.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteDeny.java
new file mode 100644
index 0000000..87ee510
--- /dev/null
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteDeny.java
@@ -0,0 +1,28 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.testdo.deleterules;
+
+import org.apache.cayenne.testdo.deleterules.auto._ClientDeleteDeny;
+
+/**
+ * A persistent class mapped as "DeleteDeny" Cayenne entity.
+ */
+public class ClientDeleteDeny extends _ClientDeleteDeny {
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteNullify.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteNullify.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteNullify.java
new file mode 100644
index 0000000..a08b3fd
--- /dev/null
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteNullify.java
@@ -0,0 +1,28 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.testdo.deleterules;
+
+import org.apache.cayenne.testdo.deleterules.auto._ClientDeleteNullify;
+
+/**
+ * A persistent class mapped as "DeleteNullify" Cayenne entity.
+ */
+public class ClientDeleteNullify extends _ClientDeleteNullify {
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteRule.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteRule.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteRule.java
new file mode 100644
index 0000000..caa455c
--- /dev/null
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/ClientDeleteRule.java
@@ -0,0 +1,28 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.testdo.deleterules;
+
+import org.apache.cayenne.testdo.deleterules.auto._ClientDeleteRule;
+
+/**
+ * A persistent class mapped as "DeleteRule" Cayenne entity.
+ */
+public class ClientDeleteRule extends _ClientDeleteRule {
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteCascade.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteCascade.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteCascade.java
new file mode 100644
index 0000000..9b46a78
--- /dev/null
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteCascade.java
@@ -0,0 +1,28 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.testdo.deleterules;
+
+import org.apache.cayenne.testdo.deleterules.auto._DeleteCascade;
+
+public class DeleteCascade extends _DeleteCascade {
+
+}
+
+
+

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteDeny.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteDeny.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteDeny.java
new file mode 100644
index 0000000..b1becb8
--- /dev/null
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteDeny.java
@@ -0,0 +1,28 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.testdo.deleterules;
+
+import org.apache.cayenne.testdo.deleterules.auto._DeleteDeny;
+
+public class DeleteDeny extends _DeleteDeny {
+
+}
+
+
+

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteNullify.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteNullify.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteNullify.java
new file mode 100644
index 0000000..81247a2
--- /dev/null
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteNullify.java
@@ -0,0 +1,28 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.testdo.deleterules;
+
+import org.apache.cayenne.testdo.deleterules.auto._DeleteNullify;
+
+public class DeleteNullify extends _DeleteNullify {
+
+}
+
+
+

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteRule.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteRule.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteRule.java
new file mode 100644
index 0000000..07b542b
--- /dev/null
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/DeleteRule.java
@@ -0,0 +1,28 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.testdo.deleterules;
+
+import org.apache.cayenne.testdo.deleterules.auto._DeleteRule;
+
+public class DeleteRule extends _DeleteRule {
+
+}
+
+
+

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteCascade.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteCascade.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteCascade.java
new file mode 100644
index 0000000..4cc341e
--- /dev/null
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteCascade.java
@@ -0,0 +1,56 @@
+package org.apache.cayenne.testdo.deleterules.auto;
+
+import org.apache.cayenne.PersistentObject;
+import org.apache.cayenne.ValueHolder;
+import org.apache.cayenne.testdo.deleterules.ClientDeleteRule;
+
+/**
+ * A generated persistent class mapped as "DeleteCascade" Cayenne entity. It 
is a good idea to
+ * avoid changing this class manually, since it will be overwritten next time 
code is
+ * regenerated. If you need to make any customizations, put them in a subclass.
+ */
+public abstract class _ClientDeleteCascade extends PersistentObject {
+
+    public static final String NAME_PROPERTY = "name";
+    public static final String CASCADE_PROPERTY = "cascade";
+
+    protected String name;
+    protected ValueHolder cascade;
+
+    public String getName() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name", false);
+        }
+
+        return name;
+    }
+    public void setName(String name) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name", false);
+        }
+
+        Object oldValue = this.name;
+        this.name = name;
+
+        // notify objectContext about simple property change
+        if(objectContext != null) {
+            objectContext.propertyChanged(this, "name", oldValue, name);
+        }
+    }
+
+    public ClientDeleteRule getCascade() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "cascade", true);
+        }
+
+        return (ClientDeleteRule) cascade.getValue();
+    }
+    public void setCascade(ClientDeleteRule cascade) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "cascade", true);
+        }
+
+        this.cascade.setValue(cascade);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteDeny.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteDeny.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteDeny.java
new file mode 100644
index 0000000..f16dded
--- /dev/null
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteDeny.java
@@ -0,0 +1,56 @@
+package org.apache.cayenne.testdo.deleterules.auto;
+
+import org.apache.cayenne.PersistentObject;
+import org.apache.cayenne.ValueHolder;
+import org.apache.cayenne.testdo.deleterules.ClientDeleteRule;
+
+/**
+ * A generated persistent class mapped as "DeleteDeny" Cayenne entity. It is a 
good idea to
+ * avoid changing this class manually, since it will be overwritten next time 
code is
+ * regenerated. If you need to make any customizations, put them in a subclass.
+ */
+public abstract class _ClientDeleteDeny extends PersistentObject {
+
+    public static final String NAME_PROPERTY = "name";
+    public static final String DENY_PROPERTY = "deny";
+
+    protected String name;
+    protected ValueHolder deny;
+
+    public String getName() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name", false);
+        }
+
+        return name;
+    }
+    public void setName(String name) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name", false);
+        }
+
+        Object oldValue = this.name;
+        this.name = name;
+
+        // notify objectContext about simple property change
+        if(objectContext != null) {
+            objectContext.propertyChanged(this, "name", oldValue, name);
+        }
+    }
+
+    public ClientDeleteRule getDeny() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "deny", true);
+        }
+
+        return (ClientDeleteRule) deny.getValue();
+    }
+    public void setDeny(ClientDeleteRule deny) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "deny", true);
+        }
+
+        this.deny.setValue(deny);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteNullify.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteNullify.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteNullify.java
new file mode 100644
index 0000000..3abc65e
--- /dev/null
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteNullify.java
@@ -0,0 +1,56 @@
+package org.apache.cayenne.testdo.deleterules.auto;
+
+import org.apache.cayenne.PersistentObject;
+import org.apache.cayenne.ValueHolder;
+import org.apache.cayenne.testdo.deleterules.ClientDeleteRule;
+
+/**
+ * A generated persistent class mapped as "DeleteNullify" Cayenne entity. It 
is a good idea to
+ * avoid changing this class manually, since it will be overwritten next time 
code is
+ * regenerated. If you need to make any customizations, put them in a subclass.
+ */
+public abstract class _ClientDeleteNullify extends PersistentObject {
+
+    public static final String NAME_PROPERTY = "name";
+    public static final String NULLIFY_PROPERTY = "nullify";
+
+    protected String name;
+    protected ValueHolder nullify;
+
+    public String getName() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name", false);
+        }
+
+        return name;
+    }
+    public void setName(String name) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name", false);
+        }
+
+        Object oldValue = this.name;
+        this.name = name;
+
+        // notify objectContext about simple property change
+        if(objectContext != null) {
+            objectContext.propertyChanged(this, "name", oldValue, name);
+        }
+    }
+
+    public ClientDeleteRule getNullify() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "nullify", true);
+        }
+
+        return (ClientDeleteRule) nullify.getValue();
+    }
+    public void setNullify(ClientDeleteRule nullify) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "nullify", true);
+        }
+
+        this.nullify.setValue(nullify);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteRule.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteRule.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteRule.java
new file mode 100644
index 0000000..e42946b
--- /dev/null
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_ClientDeleteRule.java
@@ -0,0 +1,114 @@
+package org.apache.cayenne.testdo.deleterules.auto;
+
+import org.apache.cayenne.PersistentObject;
+import org.apache.cayenne.testdo.deleterules.ClientDeleteCascade;
+import org.apache.cayenne.testdo.deleterules.ClientDeleteDeny;
+import org.apache.cayenne.testdo.deleterules.ClientDeleteNullify;
+
+import java.util.List;
+
+/**
+ * A generated persistent class mapped as "DeleteRule" Cayenne entity. It is a 
good idea to
+ * avoid changing this class manually, since it will be overwritten next time 
code is
+ * regenerated. If you need to make any customizations, put them in a subclass.
+ */
+public abstract class _ClientDeleteRule extends PersistentObject {
+
+    public static final String NAME_PROPERTY = "name";
+    public static final String FROM_CASCADE_PROPERTY = "fromCascade";
+    public static final String FROM_DENY_PROPERTY = "fromDeny";
+    public static final String FROM_NULLIFY_PROPERTY = "fromNullify";
+
+    protected String name;
+    protected List<ClientDeleteCascade> fromCascade;
+    protected List<ClientDeleteDeny> fromDeny;
+    protected List<ClientDeleteNullify> fromNullify;
+
+    public String getName() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name", false);
+        }
+
+        return name;
+    }
+    public void setName(String name) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name", false);
+        }
+
+        Object oldValue = this.name;
+        this.name = name;
+
+        // notify objectContext about simple property change
+        if(objectContext != null) {
+            objectContext.propertyChanged(this, "name", oldValue, name);
+        }
+    }
+
+    public List<ClientDeleteCascade> getFromCascade() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "fromCascade", true);
+        }
+
+        return fromCascade;
+    }
+    public void addToFromCascade(ClientDeleteCascade object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "fromCascade", true);
+        }
+
+        this.fromCascade.add(object);
+    }
+    public void removeFromFromCascade(ClientDeleteCascade object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "fromCascade", true);
+        }
+
+        this.fromCascade.remove(object);
+    }
+
+    public List<ClientDeleteDeny> getFromDeny() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "fromDeny", true);
+        }
+
+        return fromDeny;
+    }
+    public void addToFromDeny(ClientDeleteDeny object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "fromDeny", true);
+        }
+
+        this.fromDeny.add(object);
+    }
+    public void removeFromFromDeny(ClientDeleteDeny object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "fromDeny", true);
+        }
+
+        this.fromDeny.remove(object);
+    }
+
+    public List<ClientDeleteNullify> getFromNullify() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "fromNullify", true);
+        }
+
+        return fromNullify;
+    }
+    public void addToFromNullify(ClientDeleteNullify object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "fromNullify", true);
+        }
+
+        this.fromNullify.add(object);
+    }
+    public void removeFromFromNullify(ClientDeleteNullify object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "fromNullify", true);
+        }
+
+        this.fromNullify.remove(object);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/fb8660e7/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteCascade.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteCascade.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteCascade.java
new file mode 100644
index 0000000..bd8be7c
--- /dev/null
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/deleterules/auto/_DeleteCascade.java
@@ -0,0 +1,35 @@
+package org.apache.cayenne.testdo.deleterules.auto;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.testdo.deleterules.DeleteRule;
+
+/**
+ * Class _DeleteCascade was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _DeleteCascade extends CayenneDataObject {
+
+    public static final String NAME_PROPERTY = "name";
+    public static final String CASCADE_PROPERTY = "cascade";
+
+    public static final String DELETE_CASCADE_ID_PK_COLUMN = 
"DELETE_CASCADE_ID";
+
+    public void setName(String name) {
+        writeProperty(NAME_PROPERTY, name);
+    }
+    public String getName() {
+        return (String)readProperty(NAME_PROPERTY);
+    }
+
+    public void setCascade(DeleteRule cascade) {
+        setToOneTarget(CASCADE_PROPERTY, cascade, true);
+    }
+
+    public DeleteRule getCascade() {
+        return (DeleteRule)readProperty(CASCADE_PROPERTY);
+    }
+
+
+}

Reply via email to