You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2013/08/04 11:27:28 UTC

svn commit: r1510116 - in /cayenne/main/trunk/framework/cayenne-core-unpublished/src/test: java/org/apache/cayenne/ java/org/apache/cayenne/testdo/oneway/ java/org/apache/cayenne/testdo/oneway/auto/ java/org/apache/cayenne/unit/di/server/ resources/

Author: aadamchik
Date: Sun Aug  4 09:27:28 2013
New Revision: 1510116

URL: http://svn.apache.org/r1510116
Log:
CAY-1861  Remove runtime relationships

unit tests that show what runtime rels are used for.. oddly enough we didn't have any such tests yet

Added:
    cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/OneWayRelationshipsTest.java
    cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/
    cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayRels.java
    cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayTable1.java
    cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayTable2.java
    cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayTable3.java
    cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayTable4.java
    cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/
    cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayRels.java
    cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable1.java
    cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable2.java
    cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable3.java
    cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable4.java
    cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/resources/cayenne-oneway-rels.xml
    cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/resources/oneway-rels.map.xml
Modified:
    cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/unit/di/server/SchemaBuilder.java
    cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCase.java

Added: cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/OneWayRelationshipsTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/OneWayRelationshipsTest.java?rev=1510116&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/OneWayRelationshipsTest.java (added)
+++ cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/OneWayRelationshipsTest.java Sun Aug  4 09:27:28 2013
@@ -0,0 +1,217 @@
+/*****************************************************************
+ *   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;
+
+import java.sql.SQLException;
+import java.util.List;
+
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.query.SQLSelect;
+import org.apache.cayenne.test.jdbc.DBHelper;
+import org.apache.cayenne.test.jdbc.TableHelper;
+import org.apache.cayenne.testdo.oneway.OnewayTable1;
+import org.apache.cayenne.testdo.oneway.OnewayTable2;
+import org.apache.cayenne.testdo.oneway.OnewayTable3;
+import org.apache.cayenne.testdo.oneway.OnewayTable4;
+import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
+
+@UseServerRuntime(ServerCase.ONEWAY_PROJECT)
+public class OneWayRelationshipsTest extends ServerCase {
+
+    @Inject
+    private ObjectContext context;
+
+    @Inject
+    private DBHelper dbHelper;
+
+    private TableHelper t1Helper;
+    private TableHelper t2Helper;
+    private TableHelper t3Helper;
+    private TableHelper t4Helper;
+
+    @Override
+    protected void setUpAfterInjection() throws Exception {
+
+        dbHelper.deleteAll("oneway_table2");
+        dbHelper.deleteAll("oneway_table1");
+        dbHelper.deleteAll("oneway_table4");
+        dbHelper.deleteAll("oneway_table3");
+
+        t1Helper = new TableHelper(dbHelper, "oneway_table1");
+        t1Helper.setColumns("ID");
+        t2Helper = new TableHelper(dbHelper, "oneway_table2");
+        t2Helper.setColumns("ID", "TABLE1_ID");
+
+        t3Helper = new TableHelper(dbHelper, "oneway_table3");
+        t3Helper.setColumns("ID");
+        t4Helper = new TableHelper(dbHelper, "oneway_table4");
+        t4Helper.setColumns("ID", "TABLE3_ID");
+    }
+
+    public void testToOne_TwoNew() throws SQLException {
+
+        OnewayTable1 t1 = context.newObject(OnewayTable1.class);
+        OnewayTable2 t2 = context.newObject(OnewayTable2.class);
+        t2.setToOneOneWayDb(t1);
+
+        context.commitChanges();
+
+        int t1Pk = t1Helper.getInt("ID");
+        assertEquals(Cayenne.intPKForObject(t1), t1Pk);
+        int t2FK = t2Helper.getInt("TABLE1_ID");
+        assertEquals(t1Pk, t2FK);
+    }
+
+    public void testToOne_Replace() throws SQLException {
+
+        t1Helper.insert(1).insert(2);
+        t2Helper.insert(1, 1);
+
+        OnewayTable1 t11 = Cayenne.objectForPK(context, OnewayTable1.class, 1);
+        OnewayTable1 t12 = Cayenne.objectForPK(context, OnewayTable1.class, 2);
+        OnewayTable2 t2 = Cayenne.objectForPK(context, OnewayTable2.class, 1);
+
+        assertSame(t11, t2.getToOneOneWayDb());
+
+        t2.setToOneOneWayDb(t12);
+        context.commitChanges();
+
+        assertSame(t12, t2.getToOneOneWayDb());
+
+        int t2FK = t2Helper.getInt("TABLE1_ID");
+        assertEquals(2, t2FK);
+    }
+
+    public void testToOne_ReplaceWithNull() throws SQLException {
+
+        t1Helper.insert(1);
+        t2Helper.insert(1, 1);
+
+        OnewayTable1 t11 = Cayenne.objectForPK(context, OnewayTable1.class, 1);
+        OnewayTable2 t2 = Cayenne.objectForPK(context, OnewayTable2.class, 1);
+
+        assertSame(t11, t2.getToOneOneWayDb());
+
+        t2.setToOneOneWayDb(null);
+        context.commitChanges();
+
+        assertNull(t2.getToOneOneWayDb());
+
+        Object t2FK = t2Helper.getObject("TABLE1_ID");
+        assertNull(t2FK);
+    }
+
+    public void testToMany_TwoNew() throws SQLException {
+
+        OnewayTable3 t3 = context.newObject(OnewayTable3.class);
+        OnewayTable4 t4 = context.newObject(OnewayTable4.class);
+        t3.addToToManyOneWayDb(t4);
+
+        context.commitChanges();
+
+        int t3Pk = t3Helper.getInt("ID");
+        assertEquals(Cayenne.intPKForObject(t3), t3Pk);
+        int t4FK = t4Helper.getInt("TABLE3_ID");
+        assertEquals(t3Pk, t4FK);
+    }
+
+    public void testToMany_AddNew() throws SQLException {
+
+        t3Helper.insert(1);
+        t4Helper.insert(1, 1);
+
+        OnewayTable3 t3 = Cayenne.objectForPK(context, OnewayTable3.class, 1);
+        assertEquals(1, t3.getToManyOneWayDb().size());
+
+        OnewayTable4 t41 = Cayenne.objectForPK(context, OnewayTable4.class, 1);
+        assertTrue(t3.getToManyOneWayDb().contains(t41));
+
+        OnewayTable4 t42 = context.newObject(OnewayTable4.class);
+        t3.addToToManyOneWayDb(t42);
+        context.commitChanges();
+
+        assertEquals(2, t3.getToManyOneWayDb().size());
+
+        SQLSelect<Integer> fksQuery = SQLSelect.scalarQuery(Integer.class, "oneway-rels",
+                "SELECT TABLE3_ID FROM oneway_table4");
+
+        List<Integer> fks = context.select(fksQuery);
+        assertEquals(2, fks.size());
+        for (Integer fk : fks) {
+            assertEquals(Integer.valueOf(1), fk);
+        }
+    }
+
+    public void testToMany_AddExisting() throws SQLException {
+
+        t3Helper.insert(1);
+        t4Helper.insert(1, 1).insert(2, null);
+
+        OnewayTable3 t3 = Cayenne.objectForPK(context, OnewayTable3.class, 1);
+        assertEquals(1, t3.getToManyOneWayDb().size());
+
+        OnewayTable4 t41 = Cayenne.objectForPK(context, OnewayTable4.class, 1);
+        assertTrue(t3.getToManyOneWayDb().contains(t41));
+
+        OnewayTable4 t42 = Cayenne.objectForPK(context, OnewayTable4.class, 2);
+
+        t3.addToToManyOneWayDb(t42);
+        context.commitChanges();
+
+        assertEquals(2, t3.getToManyOneWayDb().size());
+
+        SQLSelect<Integer> fksQuery = SQLSelect.scalarQuery(Integer.class, "oneway-rels",
+                "SELECT TABLE3_ID FROM oneway_table4");
+
+        List<Integer> fks = context.select(fksQuery);
+        assertEquals(2, fks.size());
+        for (Integer fk : fks) {
+            assertEquals(Integer.valueOf(1), fk);
+        }
+    }
+
+    public void testToMany_RemoveExisting() throws SQLException {
+
+        t3Helper.insert(1);
+        t4Helper.insert(1, 1).insert(2, 1);
+
+        OnewayTable3 t3 = Cayenne.objectForPK(context, OnewayTable3.class, 1);
+        assertEquals(2, t3.getToManyOneWayDb().size());
+
+        OnewayTable4 t41 = Cayenne.objectForPK(context, OnewayTable4.class, 1);
+        assertTrue(t3.getToManyOneWayDb().contains(t41));
+
+        OnewayTable4 t42 = Cayenne.objectForPK(context, OnewayTable4.class, 2);
+        assertTrue(t3.getToManyOneWayDb().contains(t42));
+
+        t3.removeFromToManyOneWayDb(t42);
+        context.commitChanges();
+
+        assertEquals(1, t3.getToManyOneWayDb().size());
+
+        SQLSelect<Integer> fksQuery = SQLSelect.scalarQuery(Integer.class, "oneway-rels",
+                "SELECT TABLE3_ID FROM oneway_table4");
+
+        List<Integer> fks = context.select(fksQuery);
+        assertEquals(2, fks.size());
+        assertTrue(fks.contains(1));
+        assertTrue(fks.contains(null));
+    }
+}

Added: cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayRels.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayRels.java?rev=1510116&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayRels.java (added)
+++ cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayRels.java Sun Aug  4 09:27:28 2013
@@ -0,0 +1,18 @@
+package org.apache.cayenne.testdo.oneway;
+
+import org.apache.cayenne.testdo.oneway.auto._OnewayRels;
+
+public class OnewayRels extends _OnewayRels {
+
+    private static OnewayRels instance;
+
+    private OnewayRels() {}
+
+    public static OnewayRels getInstance() {
+        if(instance == null) {
+            instance = new OnewayRels();
+        }
+
+        return instance;
+    }
+}

Added: cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayTable1.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayTable1.java?rev=1510116&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayTable1.java (added)
+++ cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayTable1.java Sun Aug  4 09:27:28 2013
@@ -0,0 +1,7 @@
+package org.apache.cayenne.testdo.oneway;
+
+import org.apache.cayenne.testdo.oneway.auto._OnewayTable1;
+
+public class OnewayTable1 extends _OnewayTable1 {
+
+}

Added: cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayTable2.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayTable2.java?rev=1510116&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayTable2.java (added)
+++ cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayTable2.java Sun Aug  4 09:27:28 2013
@@ -0,0 +1,7 @@
+package org.apache.cayenne.testdo.oneway;
+
+import org.apache.cayenne.testdo.oneway.auto._OnewayTable2;
+
+public class OnewayTable2 extends _OnewayTable2 {
+
+}

Added: cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayTable3.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayTable3.java?rev=1510116&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayTable3.java (added)
+++ cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayTable3.java Sun Aug  4 09:27:28 2013
@@ -0,0 +1,7 @@
+package org.apache.cayenne.testdo.oneway;
+
+import org.apache.cayenne.testdo.oneway.auto._OnewayTable3;
+
+public class OnewayTable3 extends _OnewayTable3 {
+
+}

Added: cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayTable4.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayTable4.java?rev=1510116&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayTable4.java (added)
+++ cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/OnewayTable4.java Sun Aug  4 09:27:28 2013
@@ -0,0 +1,7 @@
+package org.apache.cayenne.testdo.oneway;
+
+import org.apache.cayenne.testdo.oneway.auto._OnewayTable4;
+
+public class OnewayTable4 extends _OnewayTable4 {
+
+}

Added: cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayRels.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayRels.java?rev=1510116&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayRels.java (added)
+++ cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayRels.java Sun Aug  4 09:27:28 2013
@@ -0,0 +1,12 @@
+package org.apache.cayenne.testdo.oneway.auto;
+
+
+
+/**
+ * This class 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 class _OnewayRels {
+}
\ No newline at end of file

Added: cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable1.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable1.java?rev=1510116&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable1.java (added)
+++ cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable1.java Sun Aug  4 09:27:28 2013
@@ -0,0 +1,18 @@
+package org.apache.cayenne.testdo.oneway.auto;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+
+/**
+ * Class _OnewayTable1 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 _OnewayTable1 extends CayenneDataObject {
+
+
+    public static final String ID_PK_COLUMN = "ID";
+
+
+}

Added: cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable2.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable2.java?rev=1510116&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable2.java (added)
+++ cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable2.java Sun Aug  4 09:27:28 2013
@@ -0,0 +1,41 @@
+package org.apache.cayenne.testdo.oneway.auto;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+import org.apache.cayenne.testdo.oneway.OnewayTable1;
+
+/**
+ * Class _OnewayTable2 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 _OnewayTable2 extends CayenneDataObject {
+
+    @Deprecated
+    public static final String ID_PROPERTY = "id";
+    @Deprecated
+    public static final String TO_ONE_ONE_WAY_DB_PROPERTY = "toOneOneWayDb";
+
+    public static final String ID_PK_COLUMN = "ID";
+
+    public static final Property<Integer> ID = new Property<Integer>("id");
+    public static final Property<OnewayTable1> TO_ONE_ONE_WAY_DB = new Property<OnewayTable1>("toOneOneWayDb");
+
+    public void setId(Integer id) {
+        writeProperty("id", id);
+    }
+    public Integer getId() {
+        return (Integer)readProperty("id");
+    }
+
+    public void setToOneOneWayDb(OnewayTable1 toOneOneWayDb) {
+        setToOneTarget("toOneOneWayDb", toOneOneWayDb, true);
+    }
+
+    public OnewayTable1 getToOneOneWayDb() {
+        return (OnewayTable1)readProperty("toOneOneWayDb");
+    }
+
+
+}

Added: cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable3.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable3.java?rev=1510116&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable3.java (added)
+++ cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable3.java Sun Aug  4 09:27:28 2013
@@ -0,0 +1,38 @@
+package org.apache.cayenne.testdo.oneway.auto;
+
+import java.util.List;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+import org.apache.cayenne.testdo.oneway.OnewayTable4;
+
+/**
+ * Class _OnewayTable3 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 _OnewayTable3 extends CayenneDataObject {
+
+    private static final long serialVersionUID = 1L; 
+
+    @Deprecated
+    public static final String TO_MANY_ONE_WAY_DB_PROPERTY = "toManyOneWayDb";
+
+    public static final String ID_PK_COLUMN = "ID";
+
+    public static final Property<List<OnewayTable4>> TO_MANY_ONE_WAY_DB = new Property<List<OnewayTable4>>("toManyOneWayDb");
+
+    public void addToToManyOneWayDb(OnewayTable4 obj) {
+        addToManyTarget("toManyOneWayDb", obj, true);
+    }
+    public void removeFromToManyOneWayDb(OnewayTable4 obj) {
+        removeToManyTarget("toManyOneWayDb", obj, true);
+    }
+    @SuppressWarnings("unchecked")
+    public List<OnewayTable4> getToManyOneWayDb() {
+        return (List<OnewayTable4>)readProperty("toManyOneWayDb");
+    }
+
+
+}

Added: cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable4.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable4.java?rev=1510116&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable4.java (added)
+++ cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/testdo/oneway/auto/_OnewayTable4.java Sun Aug  4 09:27:28 2013
@@ -0,0 +1,18 @@
+package org.apache.cayenne.testdo.oneway.auto;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+
+/**
+ * Class _OnewayTable4 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 _OnewayTable4 extends CayenneDataObject {
+
+
+    public static final String ID_PK_COLUMN = "ID";
+
+
+}

Modified: cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/unit/di/server/SchemaBuilder.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/unit/di/server/SchemaBuilder.java?rev=1510116&r1=1510115&r2=1510116&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/unit/di/server/SchemaBuilder.java (original)
+++ cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/unit/di/server/SchemaBuilder.java Sun Aug  4 09:27:28 2013
@@ -54,7 +54,8 @@ import org.apache.commons.logging.LogFac
 import org.xml.sax.InputSource;
 
 /**
- * Default implementation of the AccessStack that has a single DataNode per DataMap.
+ * Default implementation of the AccessStack that has a single DataNode per
+ * DataMap.
  */
 public class SchemaBuilder {
 
@@ -65,19 +66,14 @@ public class SchemaBuilder {
 
     public static final String SKIP_SCHEMA_KEY = "cayenne.test.schema.skip";
 
-    private static String[] DATA_MAPS_REQUIREING_SCHEMA_SETUP = {
-            "testmap.map.xml", "people.map.xml", "locking.map.xml",
-            "relationships.map.xml", "multi-tier.map.xml", "generic.map.xml",
-            "map-db1.map.xml", "map-db2.map.xml", "embeddable.map.xml",
-            "qualified.map.xml", "quoted-identifiers.map.xml",
-            "inheritance-single-table1.map.xml", "inheritance-vertical.map.xml"
-    };
+    private static String[] DATA_MAPS_REQUIREING_SCHEMA_SETUP = { "testmap.map.xml", "people.map.xml",
+            "locking.map.xml", "relationships.map.xml", "multi-tier.map.xml", "generic.map.xml", "map-db1.map.xml",
+            "map-db2.map.xml", "embeddable.map.xml", "qualified.map.xml", "quoted-identifiers.map.xml",
+            "inheritance-single-table1.map.xml", "inheritance-vertical.map.xml", "oneway-rels.map.xml" };
 
     // hardcoded dependent entities that should be excluded
     // if LOBs are not supported
-    private static final String[] EXTRA_EXCLUDED_FOR_NO_LOB = new String[] {
-        "CLOB_DETAIL"
-    };
+    private static final String[] EXTRA_EXCLUDED_FOR_NO_LOB = new String[] { "CLOB_DETAIL" };
 
     private ServerCaseDataSourceFactory dataSourceFactory;
     private UnitDbAdapter unitDbAdapter;
@@ -85,9 +81,8 @@ public class SchemaBuilder {
     private DataDomain domain;
     private JdbcEventLogger jdbcEventLogger;
 
-    public SchemaBuilder(@Inject ServerCaseDataSourceFactory dataSourceFactory,
-            @Inject UnitDbAdapter unitDbAdapter, @Inject DbAdapter dbAdapter,
-            @Inject JdbcEventLogger jdbcEventLogger) {
+    public SchemaBuilder(@Inject ServerCaseDataSourceFactory dataSourceFactory, @Inject UnitDbAdapter unitDbAdapter,
+            @Inject DbAdapter dbAdapter, @Inject JdbcEventLogger jdbcEventLogger) {
         this.dataSourceFactory = dataSourceFactory;
         this.unitDbAdapter = unitDbAdapter;
         this.dbAdapter = dbAdapter;
@@ -106,14 +101,14 @@ public class SchemaBuilder {
         }
 
         // generate schema combining all DataMaps that require schema support.
-        // Schema generation is done like that instead of per DataMap on demand to avoid
+        // Schema generation is done like that instead of per DataMap on demand
+        // to avoid
         // conflicts when dropping and generating PK objects.
 
         DataMap[] maps = new DataMap[DATA_MAPS_REQUIREING_SCHEMA_SETUP.length];
 
         for (int i = 0; i < maps.length; i++) {
-            InputStream stream = getClass().getClassLoader().getResourceAsStream(
-                    DATA_MAPS_REQUIREING_SCHEMA_SETUP[i]);
+            InputStream stream = getClass().getClassLoader().getResourceAsStream(DATA_MAPS_REQUIREING_SCHEMA_SETUP[i]);
             InputSource in = new InputSource(stream);
             in.setSystemId(DATA_MAPS_REQUIREING_SCHEMA_SETUP[i]);
             maps[i] = new MapLoader().loadDataMap(in);
@@ -133,8 +128,7 @@ public class SchemaBuilder {
             dropPKSupport();
             createSchema();
             createPKSupport();
-        }
-        catch (Exception e) {
+        } catch (Exception e) {
             throw new RuntimeException("Error rebuilding schema", e);
         }
     }
@@ -183,9 +177,9 @@ public class SchemaBuilder {
     }
 
     /**
-     * Creates primary key support for all node DbEntities. Will use its facilities
-     * provided by DbAdapter to generate any necessary database objects and data for
-     * primary key support.
+     * Creates primary key support for all node DbEntities. Will use its
+     * facilities provided by DbAdapter to generate any necessary database
+     * objects and data for primary key support.
      */
     private void createPKSupport() throws Exception {
         for (DataNode node : domain.getDataNodes()) {
@@ -194,8 +188,8 @@ public class SchemaBuilder {
     }
 
     /**
-     * Helper method that orders DbEntities to satisfy referential constraints and returns
-     * an ordered list.
+     * Helper method that orders DbEntities to satisfy referential constraints
+     * and returns an ordered list.
      */
     private List<DbEntity> dbEntitiesInInsertOrder(DataNode node, DataMap map) {
         List<DbEntity> entities = new ArrayList<DbEntity>(map.getDbEntities());
@@ -235,8 +229,7 @@ public class SchemaBuilder {
                     boolean skip = false;
                     for (final DbAttribute attr : ent.getAttributes()) {
                         // check for BIN PK or FK to BIN Pk
-                        if (attr.getType() == Types.BINARY
-                                || attr.getType() == Types.VARBINARY
+                        if (attr.getType() == Types.BINARY || attr.getType() == Types.VARBINARY
                                 || attr.getType() == Types.LONGVARBINARY) {
 
                             if (attr.isPrimaryKey() || attr.isForeignKey()) {
@@ -272,7 +265,8 @@ public class SchemaBuilder {
 
             while (tables.next()) {
                 // 'toUpperCase' is needed since most databases
-                // are case insensitive, and some will convert names to lower case
+                // are case insensitive, and some will convert names to lower
+                // case
                 // (PostgreSQL)
                 String name = tables.getString("TABLE_NAME");
                 if (name != null)
@@ -296,18 +290,14 @@ public class SchemaBuilder {
                     try {
                         logger.info(dropSql);
                         stmt.execute(dropSql);
-                    }
-                    catch (SQLException sqe) {
-                        logger.warn(
-                                "Can't drop table " + ent.getName() + ", ignoring...",
-                                sqe);
+                    } catch (SQLException sqe) {
+                        logger.warn("Can't drop table " + ent.getName() + ", ignoring...", sqe);
                     }
                 }
             }
 
             unitDbAdapter.droppedTables(conn, map);
-        }
-        finally {
+        } finally {
             conn.close();
         }
 
@@ -335,8 +325,7 @@ public class SchemaBuilder {
                 stmt.execute(query);
             }
             unitDbAdapter.createdTables(conn, map);
-        }
-        finally {
+        } finally {
             conn.close();
         }
     }
@@ -344,8 +333,7 @@ public class SchemaBuilder {
     /**
      * Returns iterator of preprocessed table create queries.
      */
-    private Collection<String> tableCreateQueries(DataNode node, DataMap map)
-            throws Exception {
+    private Collection<String> tableCreateQueries(DataNode node, DataMap map) throws Exception {
         DbAdapter adapter = node.getAdapter();
         DbGenerator gen = new DbGenerator(adapter, map, null, domain, jdbcEventLogger);
 

Modified: cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCase.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCase.java?rev=1510116&r1=1510115&r2=1510116&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCase.java (original)
+++ cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCase.java Sun Aug  4 09:27:28 2013
@@ -37,6 +37,7 @@ public class ServerCase extends DICase {
     public static final String TESTMAP_PROJECT = "cayenne-testmap.xml";
     public static final String DEFAULT_PROJECT = "cayenne-default.xml";
     public static final String MULTINODE_PROJECT = "cayenne-multinode.xml";
+    public static final String ONEWAY_PROJECT = "cayenne-oneway-rels.xml";
 
     private static final Injector injector;
 

Added: cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/resources/cayenne-oneway-rels.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/resources/cayenne-oneway-rels.xml?rev=1510116&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/resources/cayenne-oneway-rels.xml (added)
+++ cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/resources/cayenne-oneway-rels.xml Sun Aug  4 09:27:28 2013
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<domain project-version="7">
+	<map name="oneway-rels"/>
+</domain>

Added: cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/resources/oneway-rels.map.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/resources/oneway-rels.map.xml?rev=1510116&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/resources/oneway-rels.map.xml (added)
+++ cayenne/main/trunk/framework/cayenne-core-unpublished/src/test/resources/oneway-rels.map.xml Sun Aug  4 09:27:28 2013
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<data-map xmlns="http://cayenne.apache.org/schema/7/modelMap"
+	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	 xsi:schemaLocation="http://cayenne.apache.org/schema/7/modelMap http://cayenne.apache.org/schema/7/modelMap.xsd"
+	 project-version="7">
+	<property name="defaultPackage" value="org.apache.cayenne.testdo.oneway"/>
+	<db-entity name="oneway_table1">
+		<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+	</db-entity>
+	<db-entity name="oneway_table2">
+		<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+		<db-attribute name="TABLE1_ID" type="INTEGER"/>
+	</db-entity>
+	<db-entity name="oneway_table3">
+		<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+	</db-entity>
+	<db-entity name="oneway_table4">
+		<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+		<db-attribute name="TABLE3_ID" type="INTEGER"/>
+	</db-entity>
+	<obj-entity name="OnewayTable1" className="org.apache.cayenne.testdo.oneway.OnewayTable1" dbEntityName="oneway_table1">
+	</obj-entity>
+	<obj-entity name="OnewayTable2" className="org.apache.cayenne.testdo.oneway.OnewayTable2" dbEntityName="oneway_table2">
+		<obj-attribute name="id" type="java.lang.Integer" db-attribute-path="ID"/>
+	</obj-entity>
+	<obj-entity name="OnewayTable3" className="org.apache.cayenne.testdo.oneway.OnewayTable3" dbEntityName="oneway_table3">
+	</obj-entity>
+	<obj-entity name="OnewayTable4" className="org.apache.cayenne.testdo.oneway.OnewayTable4" dbEntityName="oneway_table4">
+	</obj-entity>
+	<db-relationship name="toOneOneWayDb" source="oneway_table2" target="oneway_table1" toMany="false">
+		<db-attribute-pair source="TABLE1_ID" target="ID"/>
+	</db-relationship>
+	<db-relationship name="toManyOneWayDb" source="oneway_table3" target="oneway_table4" toMany="true">
+		<db-attribute-pair source="ID" target="TABLE3_ID"/>
+	</db-relationship>
+	<obj-relationship name="toOneOneWayDb" source="OnewayTable2" target="OnewayTable1" deleteRule="Nullify" db-relationship-path="toOneOneWayDb"/>
+	<obj-relationship name="toManyOneWayDb" source="OnewayTable3" target="OnewayTable4" deleteRule="Nullify" db-relationship-path="toManyOneWayDb"/>
+</data-map>