You are viewing a plain text version of this content. The canonical link for it is here.
Posted to torque-dev@db.apache.org by tf...@apache.org on 2013/08/25 23:19:24 UTC

svn commit: r1517385 - in /db/torque/torque4/trunk/torque-test: ./ src/main/schema/ src/test/java/org/apache/torque/ src/test/java/org/apache/torque/generated/dataobject/ src/test/java/org/apache/torque/generated/peer/

Author: tfischer
Date: Sun Aug 25 21:19:23 2013
New Revision: 1517385

URL: http://svn.apache.org/r1517385
Log:
TORQUE-293 add test cases

Added:
    db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/dataobject/ForeignKeyJoinGetterTest.java   (with props)
Modified:
    db/torque/torque4/trunk/torque-test/src/main/schema/foreign-key-schema.xml
    db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/BaseDatabaseTestCase.java
    db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/ForeignKeySchemaData.java
    db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/peer/DeleteTest.java
    db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/peer/SetAndSaveTest.java
    db/torque/torque4/trunk/torque-test/torque-gen.properties

Modified: db/torque/torque4/trunk/torque-test/src/main/schema/foreign-key-schema.xml
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/main/schema/foreign-key-schema.xml?rev=1517385&r1=1517384&r2=1517385&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/main/schema/foreign-key-schema.xml (original)
+++ db/torque/torque4/trunk/torque-test/src/main/schema/foreign-key-schema.xml Sun Aug 25 21:19:23 2013
@@ -167,12 +167,11 @@
   </table>
 
   <table name="MULTI_REF_SAME_TABLE" 
-      description="Table to test multiple references to a same table"
-      idMethod="none">
+      description="Table to test multiple references to a same table">
     <column name="ID" primaryKey="true" type="INTEGER"/>
-    <column name="REFERENCE_1" type="INTEGER"/>
-    <column name="REFERENCE_2" type="INTEGER"/>
-    <column name="REFERENCE_3" type="INTEGER"/>
+    <column name="REFERENCE_1" type="INTEGER" javaType="object"/>
+    <column name="REFERENCE_2" type="INTEGER" javaType="object"/>
+    <column name="REFERENCE_3" type="INTEGER" javaType="object"/>
     <column name="NAME" type="VARCHAR" size="100"/>
     <foreign-key foreignTable="O_INTEGER_PK">
       <reference local="REFERENCE_1" foreign="ID"/>
@@ -186,12 +185,11 @@
   </table>
 
   <table name="MULTI_REF" 
-      description="Table to test multiple references to different tables"
-      idMethod="none">
+      description="Table to test multiple references to different tables">
     <column name="ID" primaryKey="true" type="INTEGER"/>
-    <column name="O_INTEGER_PK_ID" type="INTEGER"/>
-    <column name="P_INTEGER_PK_ID" type="INTEGER"/>
-    <column name="NULLABLE_O_INTEGER_FK_ID" type="INTEGER"/>
+    <column name="O_INTEGER_PK_ID" type="INTEGER" javaType="object"/>
+    <column name="P_INTEGER_PK_ID" type="INTEGER" javaType="object"/>
+    <column name="NULLABLE_O_INTEGER_FK_ID" type="INTEGER" javaType="object"/>
     <column name="NAME" type="VARCHAR" size="100"/>
     <foreign-key foreignTable="O_INTEGER_PK">
       <reference local="O_INTEGER_PK_ID" foreign="ID"/>

Modified: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/BaseDatabaseTestCase.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/BaseDatabaseTestCase.java?rev=1517385&r1=1517384&r2=1517385&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/BaseDatabaseTestCase.java (original)
+++ db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/BaseDatabaseTestCase.java Sun Aug 25 21:19:23 2013
@@ -19,6 +19,8 @@ package org.apache.torque;
  * under the License.
  */
 
+import java.sql.Connection;
+import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -129,6 +131,28 @@ public abstract class BaseDatabaseTestCa
     }
 
     /**
+     * Queries the database for its major version.
+     *
+     * @param connection a connection to the database.
+     *
+     * @return the version String from the connection metadata
+     *
+     * @throws TorqueException if the query fails.
+     */
+    protected int getDatabaseMajorVersion(final Connection connection)
+            throws TorqueException
+    {
+        try
+        {
+            return connection.getMetaData().getDatabaseMajorVersion();
+        }
+        catch (SQLException e)
+        {
+            throw new TorqueException(e);
+        }
+    }
+
+    /**
      * Deletes all authors and books in the bookstore tables.
      *
      * @throws TorqueException if the bookstore could not be cleaned

Modified: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/ForeignKeySchemaData.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/ForeignKeySchemaData.java?rev=1517385&r1=1517384&r2=1517385&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/ForeignKeySchemaData.java (original)
+++ db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/ForeignKeySchemaData.java Sun Aug 25 21:19:23 2013
@@ -31,6 +31,8 @@ import org.apache.torque.test.dbobject.C
 import org.apache.torque.test.dbobject.CompNonpkFk;
 import org.apache.torque.test.dbobject.CompPkContainsFk;
 import org.apache.torque.test.dbobject.CompPkOtherFk;
+import org.apache.torque.test.dbobject.MultiRef;
+import org.apache.torque.test.dbobject.MultiRefSameTable;
 import org.apache.torque.test.dbobject.NonPkOIntegerFk;
 import org.apache.torque.test.dbobject.NonPkPIntegerFk;
 import org.apache.torque.test.dbobject.NullableOIntegerFk;
@@ -102,6 +104,12 @@ public class ForeignKeySchemaData
     private final List<CompNonpkFk> compositeNonpkFkList
         = new ArrayList<CompNonpkFk>();
 
+    private final List<MultiRef> multiRefList
+        = new ArrayList<MultiRef>();
+
+    private final List<MultiRefSameTable> multiRefSameTableList
+        = new ArrayList<MultiRefSameTable>();
+
     /**
      * Creates the default Test data for the foreign key schema.
      * The test data is filled as follows (p=primitive, o=object):
@@ -109,11 +117,15 @@ public class ForeignKeySchemaData
      * pIntegerPk1
      *     - nonPkPIntegerFk1a
      *     - nonPkPIntegerFk1b
+     *     - multiRef111a
+     *     - multiRef111a
+     *     - multiRef010
      *
      * pIntegerPk2
      *     - nonPkPIntegerFk2
      *     - nullablePIntegerFk2
      *     - requiredPIntegerFk2
+     *     - multiRef222
      *
      * PIntegerPk3
      *     - nullablePIntegerFk3a
@@ -126,12 +138,16 @@ public class ForeignKeySchemaData
      *     - nonPkOIntegerFk1b
      *     - compositePkOtherFk1a
      *     - compositePkOtherFk1b
+     *     - multiRef111a
+     *     - multiRef111a
+     *     - multiRef100
      *
      * oIntegerPk2
      *     - nullableOIntegerFk2
      *     - requiredOIntegerFk2
      *     - nonPkOIntegerFk2
      *     - compositePkOtherFk2
+     *     - multiRef222
      *
      * oIntegerPk3
      *     - nullableOIntegerFk3a
@@ -155,6 +171,14 @@ public class ForeignKeySchemaData
      *     - compositeIntegerVarcharFk3a
      *     - compositeIntegerVarcharFk3b
      *
+     * nullableOIntegerFk1
+     *     - multiRef111a
+     *     - multiRef111a
+     *     - multiRef001
+     *
+     * nullableOIntegerFk2
+     *     - multiRef222
+     *
      * null
      *     - compositeIntegerVarcharFk4
      *
@@ -183,10 +207,13 @@ public class ForeignKeySchemaData
         fillCompositeIntegerVarcharFks(result);
         fillCompositeNonpkFks(result);
 
+        fillMultiRefs(result);
+        fillMultiRefSameTables(result);
+
         return result;
     }
 
-    private static void fillPIntegerPks(ForeignKeySchemaData result)
+    private static void fillPIntegerPks(final ForeignKeySchemaData result)
     {
         PIntegerPk pIntegerPk1 = new PIntegerPk();
         pIntegerPk1.setName("pIntegerPk1");
@@ -204,7 +231,7 @@ public class ForeignKeySchemaData
         result.getPIntegerPkList().add(pIntegerPk3);
     }
 
-    private static void fillNullablePIntegerPks(ForeignKeySchemaData result)
+    private static void fillNullablePIntegerPks(final ForeignKeySchemaData result)
             throws TorqueException
     {
         NullablePIntegerFk nullablePIntegerFk2
@@ -235,7 +262,7 @@ public class ForeignKeySchemaData
                 nullablePIntegerFk3b);
     }
 
-    private static void fillRequiredPIntegerFks(ForeignKeySchemaData result)
+    private static void fillRequiredPIntegerFks(final ForeignKeySchemaData result)
             throws TorqueException
     {
         RequiredPIntegerFk requiredPIntegerFk2
@@ -266,7 +293,7 @@ public class ForeignKeySchemaData
                 requiredPIntegerFk3b);
     }
 
-    private static void fillNonPkIntegerFks(ForeignKeySchemaData result)
+    private static void fillNonPkIntegerFks(final ForeignKeySchemaData result)
             throws TorqueException
     {
         NonPkPIntegerFk nonPkPIntegerFk1a
@@ -297,7 +324,7 @@ public class ForeignKeySchemaData
                 nonPkPIntegerFk2);
     }
 
-    private static void fillOIntegerPks(ForeignKeySchemaData result)
+    private static void fillOIntegerPks(final ForeignKeySchemaData result)
     {
         OIntegerPk oIntegerPk1 = new OIntegerPk();
         oIntegerPk1.setName("oIntegerPk1");
@@ -315,7 +342,7 @@ public class ForeignKeySchemaData
         result.getOIntegerPkList().add(oIntegerPk3);
     }
 
-    private static void fillNullableOIntegerFks(ForeignKeySchemaData result)
+    private static void fillNullableOIntegerFks(final ForeignKeySchemaData result)
             throws TorqueException
     {
         NullableOIntegerFk nullableOIntegerFk2
@@ -353,7 +380,7 @@ public class ForeignKeySchemaData
                 nullableOIntegerFk4);
     }
 
-    private static void fillRequiredOIntegerFks(ForeignKeySchemaData result)
+    private static void fillRequiredOIntegerFks(final ForeignKeySchemaData result)
             throws TorqueException
     {
         RequiredOIntegerFk requiredOIntegerFk2
@@ -384,7 +411,7 @@ public class ForeignKeySchemaData
                 requiredOIntegerFk3b);
     }
 
-    private static void fillNonPkOIntegerFks(ForeignKeySchemaData result)
+    private static void fillNonPkOIntegerFks(final ForeignKeySchemaData result)
             throws TorqueException
     {
         NonPkOIntegerFk nonPkOIntegerFk1a
@@ -422,7 +449,7 @@ public class ForeignKeySchemaData
                 nonPkOIntegerFk4);
     }
 
-    private static void fillCompositePkOtherFks(ForeignKeySchemaData result)
+    private static void fillCompositePkOtherFks(final ForeignKeySchemaData result)
             throws TorqueException
     {
         CompPkOtherFk compositePkOtherFk1a
@@ -459,7 +486,7 @@ public class ForeignKeySchemaData
                 compositePkOtherFk2);
     }
 
-    private static void fillCompositePkContainsFks(ForeignKeySchemaData result)
+    private static void fillCompositePkContainsFks(final ForeignKeySchemaData result)
             throws TorqueException
     {
         CompPkContainsFk compositePkContainsFk1a
@@ -495,7 +522,7 @@ public class ForeignKeySchemaData
     }
 
     private static void fillCompositeIntegerVarcharPks(
-            ForeignKeySchemaData result)
+            final ForeignKeySchemaData result)
     {
         CompIntegerVarcharPk compositeIntegerVarcharPk1
                 = new CompIntegerVarcharPk();
@@ -529,7 +556,7 @@ public class ForeignKeySchemaData
     }
 
     private static void fillCompositeIntegerVarcharFks(
-                ForeignKeySchemaData result)
+                final ForeignKeySchemaData result)
             throws TorqueException
     {
         CompIntegerVarcharFk compositeIntegerVarcharFk2
@@ -571,33 +598,187 @@ public class ForeignKeySchemaData
     }
 
     private static void fillCompositeNonpkFks(
-            ForeignKeySchemaData result)
-        throws TorqueException
-{
-    CompNonpkFk compositeNonpkFk1a
-            = new CompNonpkFk();
-    compositeNonpkFk1a.setName(
-            "compositeNonpkFk1a");
-    result.getCompositeIntegerVarcharPkList().get(0)
-            .addCompNonpkFk(compositeNonpkFk1a);
-    result.getCompositeNonpkFkList().add(compositeNonpkFk1a);
-
-    CompNonpkFk compositeNonpkFk1b
-            = new CompNonpkFk();
-    compositeNonpkFk1b.setName(
-            "compositeNonpkFk1b");
-    result.getCompositeIntegerVarcharPkList().get(0)
-            .addCompNonpkFk(compositeNonpkFk1b);
-    result.getCompositeNonpkFkList().add(compositeNonpkFk1b);
-
-    CompNonpkFk compositeNonpkFk2
-            = new CompNonpkFk();
-    compositeNonpkFk2.setName(
-            "compositeNonpkFk2");
-    result.getCompositeIntegerVarcharPkList().get(1)
-            .addCompNonpkFk(compositeNonpkFk2);
-    result.getCompositeNonpkFkList().add(compositeNonpkFk2);
-}
+                final ForeignKeySchemaData result)
+            throws TorqueException
+    {
+        CompNonpkFk compositeNonpkFk1a
+                = new CompNonpkFk();
+        compositeNonpkFk1a.setName(
+                "compositeNonpkFk1a");
+        result.getCompositeIntegerVarcharPkList().get(0)
+                .addCompNonpkFk(compositeNonpkFk1a);
+        result.getCompositeNonpkFkList().add(compositeNonpkFk1a);
+
+        CompNonpkFk compositeNonpkFk1b
+                = new CompNonpkFk();
+        compositeNonpkFk1b.setName(
+                "compositeNonpkFk1b");
+        result.getCompositeIntegerVarcharPkList().get(0)
+                .addCompNonpkFk(compositeNonpkFk1b);
+        result.getCompositeNonpkFkList().add(compositeNonpkFk1b);
+
+        CompNonpkFk compositeNonpkFk2
+                = new CompNonpkFk();
+        compositeNonpkFk2.setName(
+                "compositeNonpkFk2");
+        result.getCompositeIntegerVarcharPkList().get(1)
+                .addCompNonpkFk(compositeNonpkFk2);
+        result.getCompositeNonpkFkList().add(compositeNonpkFk2);
+    }
+
+    private static void fillMultiRefs(
+                final ForeignKeySchemaData result)
+            throws TorqueException
+    {
+        {
+            MultiRef multiRef111a = new MultiRef();
+            multiRef111a.setName("multiRef111a");
+            multiRef111a.setOIntegerPk(result.getOIntegerPkList().get(0));
+            multiRef111a.setPIntegerPk(result.getPIntegerPkList().get(0));
+            multiRef111a.setNullableOIntegerFk(result.getNullableOIntegerFkList().get(0));
+            result.getMultiRefList().add(multiRef111a);
+        }
+
+        {
+            MultiRef multiRef111b = new MultiRef();
+            multiRef111b.setName("multiRef111b");
+            multiRef111b.setOIntegerPk(result.getOIntegerPkList().get(0));
+            multiRef111b.setPIntegerPk(result.getPIntegerPkList().get(0));
+            multiRef111b.setNullableOIntegerFk(result.getNullableOIntegerFkList().get(0));
+            result.getMultiRefList().add(multiRef111b);
+        }
+
+        {
+            MultiRef multiRef100 = new MultiRef();
+            multiRef100.setName("multiRef100");
+            multiRef100.setOIntegerPk(result.getOIntegerPkList().get(0));
+            result.getMultiRefList().add(multiRef100);
+        }
+
+        {
+            MultiRef multiRef010 = new MultiRef();
+            multiRef010.setName("multiRef010");
+            multiRef010.setPIntegerPk(result.getPIntegerPkList().get(0));
+            result.getMultiRefList().add(multiRef010);
+        }
+
+        {
+            MultiRef multiRef001 = new MultiRef();
+            multiRef001.setName("multiRef001");
+            multiRef001.setNullableOIntegerFk(result.getNullableOIntegerFkList().get(0));
+            result.getMultiRefList().add(multiRef001);
+        }
+
+        {
+            MultiRef multiRef120 = new MultiRef();
+            multiRef120.setName("multiRef120");
+            multiRef120.setOIntegerPk(result.getOIntegerPkList().get(0));
+            multiRef120.setPIntegerPk(result.getPIntegerPkList().get(1));
+            result.getMultiRefList().add(multiRef120);
+        }
+
+        {
+            MultiRef multiRef201 = new MultiRef();
+            multiRef201.setName("multiRef201");
+            multiRef201.setOIntegerPk(result.getOIntegerPkList().get(1));
+            multiRef201.setNullableOIntegerFk(result.getNullableOIntegerFkList().get(0));
+            result.getMultiRefList().add(multiRef201);
+        }
+
+        {
+            MultiRef multiRef012 = new MultiRef();
+            multiRef012.setName("multiRef012");
+            multiRef012.setPIntegerPk(result.getPIntegerPkList().get(0));
+            multiRef012.setNullableOIntegerFk(result.getNullableOIntegerFkList().get(1));
+            result.getMultiRefList().add(multiRef012);
+        }
+
+        {
+            MultiRef multiRef222 = new MultiRef();
+            multiRef222.setName("multiRef222");
+            multiRef222.setOIntegerPk(result.getOIntegerPkList().get(1));
+            multiRef222.setPIntegerPk(result.getPIntegerPkList().get(1));
+            multiRef222.setNullableOIntegerFk(result.getNullableOIntegerFkList().get(1));
+            result.getMultiRefList().add(multiRef222);
+        }
+    }
+
+    private static void fillMultiRefSameTables(
+                final ForeignKeySchemaData result)
+            throws TorqueException
+    {
+        {
+            MultiRefSameTable multiRefSameTable111a = new MultiRefSameTable();
+            multiRefSameTable111a.setName("multiRefSameTable111a");
+            multiRefSameTable111a.setOIntegerPkRelatedByReference1(result.getOIntegerPkList().get(0));
+            multiRefSameTable111a.setOIntegerPkRelatedByReference2(result.getOIntegerPkList().get(0));
+            multiRefSameTable111a.setOIntegerPkRelatedByReference3(result.getOIntegerPkList().get(0));
+            result.getMultiRefSameTableList().add(multiRefSameTable111a);
+        }
+
+        {
+            MultiRefSameTable multiRefSameTable111b = new MultiRefSameTable();
+            multiRefSameTable111b.setName("multiRefSameTable111b");
+            multiRefSameTable111b.setOIntegerPkRelatedByReference1(result.getOIntegerPkList().get(0));
+            multiRefSameTable111b.setOIntegerPkRelatedByReference2(result.getOIntegerPkList().get(0));
+            multiRefSameTable111b.setOIntegerPkRelatedByReference3(result.getOIntegerPkList().get(0));
+            result.getMultiRefSameTableList().add(multiRefSameTable111b);
+        }
+
+        {
+            MultiRefSameTable multiRefSameTable100 = new MultiRefSameTable();
+            multiRefSameTable100.setName("multiRefSameTable100");
+            multiRefSameTable100.setOIntegerPkRelatedByReference1(result.getOIntegerPkList().get(0));
+            result.getMultiRefSameTableList().add(multiRefSameTable100);
+        }
+
+        {
+            MultiRefSameTable multiRefSameTable010 = new MultiRefSameTable();
+            multiRefSameTable010.setName("multiRefSameTable010");
+            multiRefSameTable010.setOIntegerPkRelatedByReference2(result.getOIntegerPkList().get(0));
+            result.getMultiRefSameTableList().add(multiRefSameTable010);
+        }
+
+        {
+            MultiRefSameTable multiRefSameTable001 = new MultiRefSameTable();
+            multiRefSameTable001.setName("multiRefSameTable001");
+            multiRefSameTable001.setOIntegerPkRelatedByReference3(result.getOIntegerPkList().get(0));
+            result.getMultiRefSameTableList().add(multiRefSameTable001);
+        }
+
+        {
+            MultiRefSameTable multiRefSameTable120 = new MultiRefSameTable();
+            multiRefSameTable120.setName("multiRefSameTable120");
+            multiRefSameTable120.setOIntegerPkRelatedByReference1(result.getOIntegerPkList().get(0));
+            multiRefSameTable120.setOIntegerPkRelatedByReference2(result.getOIntegerPkList().get(1));
+            result.getMultiRefSameTableList().add(multiRefSameTable120);
+        }
+
+        {
+            MultiRefSameTable multiRefSameTable201 = new MultiRefSameTable();
+            multiRefSameTable201.setName("multiRefSameTable201");
+            multiRefSameTable201.setOIntegerPkRelatedByReference1(result.getOIntegerPkList().get(1));
+            multiRefSameTable201.setOIntegerPkRelatedByReference3(result.getOIntegerPkList().get(0));
+            result.getMultiRefSameTableList().add(multiRefSameTable201);
+        }
+
+        {
+            MultiRefSameTable multiRefSameTable012 = new MultiRefSameTable();
+            multiRefSameTable012.setName("multiRefSameTable012");
+            multiRefSameTable012.setOIntegerPkRelatedByReference2(result.getOIntegerPkList().get(0));
+            multiRefSameTable012.setOIntegerPkRelatedByReference3(result.getOIntegerPkList().get(1));
+            result.getMultiRefSameTableList().add(multiRefSameTable012);
+        }
+
+        {
+            MultiRefSameTable multiRefSameTable222 = new MultiRefSameTable();
+            multiRefSameTable222.setName("multiRefSameTable222");
+            multiRefSameTable222.setOIntegerPkRelatedByReference1(result.getOIntegerPkList().get(1));
+            multiRefSameTable222.setOIntegerPkRelatedByReference2(result.getOIntegerPkList().get(1));
+            multiRefSameTable222.setOIntegerPkRelatedByReference3(result.getOIntegerPkList().get(1));
+            result.getMultiRefSameTableList().add(multiRefSameTable222);
+        }
+    }
 
     public List<PIntegerPk> getPIntegerPkList()
     {
@@ -665,6 +846,16 @@ public class ForeignKeySchemaData
         return compositeNonpkFkList;
     }
 
+    public List<MultiRef> getMultiRefList()
+    {
+        return multiRefList;
+    }
+
+    public List<MultiRefSameTable> getMultiRefSameTableList()
+    {
+        return multiRefSameTableList;
+    }
+
     /**
      * Saves all contained data if the data is new or was changed
      * after the last save.
@@ -703,6 +894,25 @@ public class ForeignKeySchemaData
         {
             compositeIntegerVarcharFk.save();
         }
+        for (MultiRef multiRef : multiRefList)
+        {
+            // refresh ids
+            multiRef.setOIntegerPk(multiRef.getOIntegerPk());
+            multiRef.setPIntegerPk(multiRef.getPIntegerPk());
+            multiRef.setNullableOIntegerFk(multiRef.getNullableOIntegerFk());
+            multiRef.save();
+        }
+        for (MultiRefSameTable multiRefSameTable : multiRefSameTableList)
+        {
+            // refresh ids
+            multiRefSameTable.setOIntegerPkRelatedByReference1(
+                    multiRefSameTable.getOIntegerPkRelatedByReference1());
+            multiRefSameTable.setOIntegerPkRelatedByReference2(
+                    multiRefSameTable.getOIntegerPkRelatedByReference2());
+            multiRefSameTable.setOIntegerPkRelatedByReference3(
+                    multiRefSameTable.getOIntegerPkRelatedByReference3());
+            multiRefSameTable.save();
+        }
     }
 
     /**
@@ -847,7 +1057,7 @@ public class ForeignKeySchemaData
      * * @throws TorqueException if accessing the database fails.
      */
     public static void assertNonPkOIntegerFksInDatabaseEquals(
-                List<NonPkOIntegerFk> expected)
+                final List<NonPkOIntegerFk> expected)
             throws TorqueException
     {
         Criteria criteria = new Criteria().addSelectColumn(new Count("*"));
@@ -875,7 +1085,7 @@ public class ForeignKeySchemaData
      * * @throws TorqueException if accessing the database fails.
      */
     public static void assertCompositeIntegerVarcharFksInDatabaseEquals(
-                List<CompIntegerVarcharFk> expected)
+                final List<CompIntegerVarcharFk> expected)
             throws TorqueException
     {
         Criteria criteria = new Criteria().addSelectColumn(new Count("*"));
@@ -904,7 +1114,7 @@ public class ForeignKeySchemaData
      * * @throws TorqueException if accessing the database fails.
      */
     public static void assertNullableOIntegerFksInDatabaseEquals(
-                List<NullableOIntegerFk> expected)
+                final List<NullableOIntegerFk> expected)
             throws TorqueException
     {
         Criteria criteria = new Criteria().addSelectColumn(new Count("*"));
@@ -932,7 +1142,7 @@ public class ForeignKeySchemaData
      * * @throws TorqueException if accessing the database fails.
      */
     public static void assertCompositePkOtherFksInDatabaseEquals(
-                List<CompPkOtherFk> expected)
+                final List<CompPkOtherFk> expected)
             throws TorqueException
     {
         Criteria criteria = new Criteria().addSelectColumn(new Count("*"));
@@ -960,7 +1170,7 @@ public class ForeignKeySchemaData
      * * @throws TorqueException if accessing the database fails.
      */
     public static void assertCompositePkContainsFksInDatabaseEquals(
-                List<CompPkContainsFk> expected)
+                final List<CompPkContainsFk> expected)
             throws TorqueException
     {
         Criteria criteria = new Criteria().addSelectColumn(new Count("*"));

Added: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/dataobject/ForeignKeyJoinGetterTest.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/dataobject/ForeignKeyJoinGetterTest.java?rev=1517385&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/dataobject/ForeignKeyJoinGetterTest.java (added)
+++ db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/dataobject/ForeignKeyJoinGetterTest.java Sun Aug 25 21:19:23 2013
@@ -0,0 +1,154 @@
+package org.apache.torque.generated.dataobject;
+
+/*
+ * 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.
+ */
+
+import java.util.List;
+
+import org.apache.torque.BaseDatabaseTestCase;
+import org.apache.torque.ForeignKeySchemaData;
+import org.apache.torque.Torque;
+import org.apache.torque.adapter.Adapter;
+import org.apache.torque.criteria.Criteria;
+import org.apache.torque.test.dbobject.MultiRef;
+import org.apache.torque.test.dbobject.MultiRefSameTable;
+import org.apache.torque.test.dbobject.OIntegerPk;
+import org.apache.torque.test.peer.MultiRefPeer;
+import org.apache.torque.test.peer.MultiRefSameTablePeer;
+
+/**
+ * Tests the foreign key join getter methods in the generated
+ * data object classes.
+ *
+ * @version $Id$
+ */
+public class ForeignKeyJoinGetterTest extends BaseDatabaseTestCase
+{
+    ForeignKeySchemaData testData;
+
+    @Override
+    public void setUp() throws Exception
+    {
+        super.setUp();
+        ForeignKeySchemaData.clearTablesInDatabase();
+        testData = ForeignKeySchemaData.getDefaultTestData();
+        testData.save();
+    }
+
+    /**
+     * Checks that the test principle for switching silent db fetch works.
+     */
+    public void testSwitchSilentFetchingOff() throws Exception
+    {
+        OIntegerPk baseObject = testData.getOIntegerPkList().get(0);
+        List<MultiRef> multiRefs
+            = baseObject.getMultiRefs();
+        // switch silent fetching off
+        Adapter adapter = Torque.getOrCreateDatabase(Torque.getDefaultDB()).getAdapter();
+        try
+        {
+            Torque.getOrCreateDatabase(Torque.getDefaultDB()).setAdapter(null);
+            try
+            {
+                multiRefs.get(0).getPIntegerPk();
+                fail("Exception excpected");
+            }
+            catch (Exception e)
+            {
+                // expected
+            }
+        }
+        finally
+        {
+            Torque.getOrCreateDatabase(Torque.getDefaultDB()).setAdapter(adapter);
+        }
+    }
+
+    /**
+     * Checks that the joinGetter works if different tables are joined.
+     *
+     * @throws Exception if the database fails
+     */
+    public void testJoinGetter() throws Exception
+    {
+        OIntegerPk baseObject = testData.getOIntegerPkList().get(0);
+        List<MultiRef> multiRefs
+            = baseObject.getMultiRefsJoinPIntegerPk(
+                    new Criteria().addAscendingOrderByColumn(MultiRefPeer.ID));
+        assertEquals(3, multiRefs.size());
+        assertEquals("multiRef111a", multiRefs.get(0).getName());
+        assertEquals("multiRef111b", multiRefs.get(1).getName());
+        assertEquals("multiRef120", multiRefs.get(2).getName());
+        // switch silent fetching off
+        Adapter adapter = Torque.getOrCreateDatabase(Torque.getDefaultDB()).getAdapter();
+        try
+        {
+            Torque.getOrCreateDatabase(Torque.getDefaultDB()).setAdapter(null);
+            assertEquals(
+                    testData.getPIntegerPkList().get(0),
+                    multiRefs.get(0).getPIntegerPk());
+            assertEquals(
+                    testData.getPIntegerPkList().get(0),
+                    multiRefs.get(1).getPIntegerPk());
+            assertEquals(
+                    testData.getPIntegerPkList().get(1),
+                    multiRefs.get(2).getPIntegerPk());
+        }
+        finally
+        {
+            Torque.getOrCreateDatabase(Torque.getDefaultDB()).setAdapter(adapter);
+        }
+    }
+
+    /**
+     * Checks that the joinGetter works if same tables are joined.
+     *
+     * @throws Exception if the database fails
+     */
+    public void testJoinGetterSameObject() throws Exception
+    {
+        OIntegerPk baseObject = testData.getOIntegerPkList().get(0);
+        List<MultiRefSameTable> multiRefSameTables
+            = baseObject.getMultiRefSameTableRelatedByReference1sJoinOIntegerPkRelatedByReference2(
+                    new Criteria().addAscendingOrderByColumn(MultiRefSameTablePeer.ID));
+        assertEquals(3, multiRefSameTables.size());
+        assertEquals("multiRefSameTable111a", multiRefSameTables.get(0).getName());
+        assertEquals("multiRefSameTable111b", multiRefSameTables.get(1).getName());
+        assertEquals("multiRefSameTable120", multiRefSameTables.get(2).getName());
+        // switch silent fetching off
+        Adapter adapter = Torque.getOrCreateDatabase(Torque.getDefaultDB()).getAdapter();
+        try
+        {
+            Torque.getOrCreateDatabase(Torque.getDefaultDB()).setAdapter(null);
+            assertEquals(
+                    testData.getOIntegerPkList().get(0),
+                    multiRefSameTables.get(0).getOIntegerPkRelatedByReference2());
+            assertEquals(
+                    testData.getOIntegerPkList().get(0),
+                    multiRefSameTables.get(1).getOIntegerPkRelatedByReference2());
+            assertEquals(
+                    testData.getOIntegerPkList().get(1),
+                    multiRefSameTables.get(2).getOIntegerPkRelatedByReference2());
+        }
+        finally
+        {
+            Torque.getOrCreateDatabase(Torque.getDefaultDB()).setAdapter(adapter);
+        }
+    }
+}

Propchange: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/dataobject/ForeignKeyJoinGetterTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/peer/DeleteTest.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/peer/DeleteTest.java?rev=1517385&r1=1517384&r2=1517385&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/peer/DeleteTest.java (original)
+++ db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/peer/DeleteTest.java Sun Aug 25 21:19:23 2013
@@ -59,6 +59,8 @@ public class DeleteTest extends BaseData
         ForeignKeySchemaData.clearTablesInDatabase();
         ForeignKeySchemaData testData
                 = ForeignKeySchemaData.getDefaultTestData();
+        // we want to avoid fk errors in MultiRef
+        testData.getMultiRefList().clear();
         testData.save();
 
         NullableOIntegerFk toDelete
@@ -133,6 +135,8 @@ public class DeleteTest extends BaseData
         ForeignKeySchemaData.clearTablesInDatabase();
         ForeignKeySchemaData testData
                 = ForeignKeySchemaData.getDefaultTestData();
+        // we want to avoid fk errors in MultiRef
+        testData.getMultiRefList().clear();
         testData.save();
 
         NullableOIntegerFk toDelete
@@ -246,6 +250,8 @@ public class DeleteTest extends BaseData
         ForeignKeySchemaData.clearTablesInDatabase();
         ForeignKeySchemaData testData
                 = ForeignKeySchemaData.getDefaultTestData();
+        // we want to avoid fk errors in MultiRef
+        testData.getMultiRefList().clear();
         testData.save();
 
         List<NullableOIntegerFk> toDelete
@@ -343,6 +349,8 @@ public class DeleteTest extends BaseData
         ForeignKeySchemaData.clearTablesInDatabase();
         ForeignKeySchemaData testData
                 = ForeignKeySchemaData.getDefaultTestData();
+        // we want to avoid fk errors in MultiRef
+        testData.getMultiRefList().clear();
         testData.save();
 
         NullableOIntegerFk toDelete
@@ -427,6 +435,8 @@ public class DeleteTest extends BaseData
         ForeignKeySchemaData.clearTablesInDatabase();
         ForeignKeySchemaData testData
                 = ForeignKeySchemaData.getDefaultTestData();
+        // we want to avoid fk errors in MultiRef
+        testData.getMultiRefList().clear();
         testData.save();
 
         // call delete method

Modified: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/peer/SetAndSaveTest.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/peer/SetAndSaveTest.java?rev=1517385&r1=1517384&r2=1517385&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/peer/SetAndSaveTest.java (original)
+++ db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/peer/SetAndSaveTest.java Sun Aug 25 21:19:23 2013
@@ -517,6 +517,8 @@ public class SetAndSaveTest extends Base
         ForeignKeySchemaData.clearTablesInDatabase();
         ForeignKeySchemaData testData
                 = ForeignKeySchemaData.getDefaultTestData();
+        // we want to avoid fk errors in MultiRef
+        testData.getMultiRefList().clear();
         testData.save();
 
         OIntegerPk oIntegerPk = testData.getOIntegerPkList().get(2);

Modified: db/torque/torque4/trunk/torque-test/torque-gen.properties
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/torque-gen.properties?rev=1517385&r1=1517384&r2=1517385&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-test/torque-gen.properties (original)
+++ db/torque/torque4/trunk/torque-test/torque-gen.properties Sun Aug 25 21:19:23 2013
@@ -24,6 +24,7 @@ torque.om.package=org.apache.torque.test
 
 torque.om.complexObjectModel.generateFillers=true
 torque.om.generateMapInit=true
+torque.om.complexObjectModel.joinGetterVisibility = public
 
 # package suffix for the data object classes
 torque.om.package.dbObjectPackageSuffix = .dbobject



---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org