Modified: db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/test/xdoclet/modules/ojb/tests/ReferenceTagForeignkeyAttributeTests.java URL: http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/test/xdoclet/modules/ojb/tests/ReferenceTagForeignkeyAttributeTests.java?rev=383345&r1=383344&r2=383345&view=diff ============================================================================== --- db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/test/xdoclet/modules/ojb/tests/ReferenceTagForeignkeyAttributeTests.java (original) +++ db/ojb/branches/OJB_1_0_RELEASE/src/xdoclet/test/xdoclet/modules/ojb/tests/ReferenceTagForeignkeyAttributeTests.java Sun Mar 5 07:47:13 2006 @@ -1,6 +1,6 @@ package xdoclet.modules.ojb.tests; -/* Copyright 2003-2005 The Apache Software Foundation +/* Copyright 2003-2006 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +21,7 @@ * Tests for the ojb.reference tag with the foreignkey attribute * Note: For normal use tests see the tests for class-ref * - * @author <a href="mailto:[EMAIL PROTECTED]">Thomas Dudziak ([EMAIL PROTECTED])</a> + * @author Thomas Dudziak */ public class ReferenceTagForeignkeyAttributeTests extends OjbTestBase { @@ -885,6 +885,509 @@ " />\n"+ " </table>\n"+ " <table name=\"D\">\n"+ + " <column name=\"id\"\n"+ + " javaName=\"id\"\n"+ + " type=\"INTEGER\"\n"+ + " primaryKey=\"true\"\n"+ + " required=\"true\"\n"+ + " />\n"+ + " </table>\n"+ + "</database>", + runTorqueXDoclet(TORQUE_DEST_FILE, "ojbtest")); + } + + // Test: foreignkey name specified + public void testForeignkeyName1() + { + addClass( + "test.A", + "package test;\n"+ + "/** @ojb.class */\n"+ + "public class A {\n"+ + " /** @ojb.field */\n"+ + " private Integer attrKey;\n"+ + " /** @ojb.reference foreignkey=\"attrKey\"\n"+ + " * foreignkey-name=\"RefToA\"\n"+ + " */\n"+ + " private test.B attr;\n"+ + "}\n"); + addClass( + "test.B", + "package test;\n"+ + "/** @ojb.class */\n"+ + "public class B {\n"+ + " /** @ojb.field primarykey=\"true\" */\n"+ + " private Integer id;\n"+ + "}\n"); + + assertEqualsOjbDescriptorFile( + "<class-descriptor\n"+ + " class=\"test.A\"\n"+ + " table=\"A\"\n"+ + ">\n"+ + " <field-descriptor\n"+ + " name=\"attrKey\"\n"+ + " column=\"attrKey\"\n"+ + " jdbc-type=\"INTEGER\"\n"+ + " >\n"+ + " </field-descriptor>\n"+ + " <reference-descriptor\n"+ + " name=\"attr\"\n"+ + " class-ref=\"test.B\"\n"+ + " >\n"+ + " <foreignkey field-ref=\"attrKey\"/>\n"+ + " </reference-descriptor>\n"+ + "</class-descriptor>\n"+ + "<class-descriptor\n"+ + " class=\"test.B\"\n"+ + " table=\"B\"\n"+ + ">\n"+ + " <field-descriptor\n"+ + " name=\"id\"\n"+ + " column=\"id\"\n"+ + " jdbc-type=\"INTEGER\"\n"+ + " primarykey=\"true\"\n"+ + " >\n"+ + " </field-descriptor>\n"+ + "</class-descriptor>", + runOjbXDoclet(OJB_DEST_FILE)); + assertEqualsTorqueSchemaFile( + "<database name=\"ojbtest\">\n"+ + " <table name=\"A\">\n"+ + " <column name=\"attrKey\"\n"+ + " javaName=\"attrKey\"\n"+ + " type=\"INTEGER\"\n"+ + " />\n"+ + " <foreign-key name=\"RefToA\" foreignTable=\"B\">\n"+ + " <reference local=\"attrKey\" foreign=\"id\"/>\n"+ + " </foreign-key>\n"+ + " </table>\n"+ + " <table name=\"B\">\n"+ + " <column name=\"id\"\n"+ + " javaName=\"id\"\n"+ + " type=\"INTEGER\"\n"+ + " primaryKey=\"true\"\n"+ + " required=\"true\"\n"+ + " />\n"+ + " </table>\n"+ + "</database>", + runTorqueXDoclet(TORQUE_DEST_FILE, "ojbtest")); + } + + // Test: foreignkey name attribute is empty + public void testForeignkeyName2() + { + addClass( + "test.A", + "package test;\n"+ + "/** @ojb.class */\n"+ + "public class A {\n"+ + " /** @ojb.field */\n"+ + " private Integer attrKey;\n"+ + " /** @ojb.reference foreignkey=\"attrKey\"\n"+ + " * foreignkey-name=\"\"\n"+ + " */\n"+ + " private test.B attr;\n"+ + "}\n"); + addClass( + "test.B", + "package test;\n"+ + "/** @ojb.class */\n"+ + "public class B {\n"+ + " /** @ojb.field primarykey=\"true\" */\n"+ + " private Integer id;\n"+ + "}\n"); + + assertEqualsOjbDescriptorFile( + "<class-descriptor\n"+ + " class=\"test.A\"\n"+ + " table=\"A\"\n"+ + ">\n"+ + " <field-descriptor\n"+ + " name=\"attrKey\"\n"+ + " column=\"attrKey\"\n"+ + " jdbc-type=\"INTEGER\"\n"+ + " >\n"+ + " </field-descriptor>\n"+ + " <reference-descriptor\n"+ + " name=\"attr\"\n"+ + " class-ref=\"test.B\"\n"+ + " >\n"+ + " <foreignkey field-ref=\"attrKey\"/>\n"+ + " </reference-descriptor>\n"+ + "</class-descriptor>\n"+ + "<class-descriptor\n"+ + " class=\"test.B\"\n"+ + " table=\"B\"\n"+ + ">\n"+ + " <field-descriptor\n"+ + " name=\"id\"\n"+ + " column=\"id\"\n"+ + " jdbc-type=\"INTEGER\"\n"+ + " primarykey=\"true\"\n"+ + " >\n"+ + " </field-descriptor>\n"+ + "</class-descriptor>", + runOjbXDoclet(OJB_DEST_FILE)); + assertEqualsTorqueSchemaFile( + "<database name=\"ojbtest\">\n"+ + " <table name=\"A\">\n"+ + " <column name=\"attrKey\"\n"+ + " javaName=\"attrKey\"\n"+ + " type=\"INTEGER\"\n"+ + " />\n"+ + " <foreign-key foreignTable=\"B\">\n"+ + " <reference local=\"attrKey\" foreign=\"id\"/>\n"+ + " </foreign-key>\n"+ + " </table>\n"+ + " <table name=\"B\">\n"+ + " <column name=\"id\"\n"+ + " javaName=\"id\"\n"+ + " type=\"INTEGER\"\n"+ + " primaryKey=\"true\"\n"+ + " required=\"true\"\n"+ + " />\n"+ + " </table>\n"+ + "</database>", + runTorqueXDoclet(TORQUE_DEST_FILE, "ojbtest")); + } + + // Test: foreignkey-on-delete name specified + public void testForeignkeyOnDelete1() + { + addClass( + "test.A", + "package test;\n"+ + "/** @ojb.class */\n"+ + "public class A {\n"+ + " /** @ojb.field */\n"+ + " private Integer attrKey;\n"+ + " /** @ojb.reference foreignkey=\"attrKey\"\n"+ + " * foreignkey-on-delete=\"cascade\"\n"+ + " */\n"+ + " private test.B attr;\n"+ + "}\n"); + addClass( + "test.B", + "package test;\n"+ + "/** @ojb.class */\n"+ + "public class B {\n"+ + " /** @ojb.field primarykey=\"true\" */\n"+ + " private Integer id;\n"+ + "}\n"); + + assertEqualsOjbDescriptorFile( + "<class-descriptor\n"+ + " class=\"test.A\"\n"+ + " table=\"A\"\n"+ + ">\n"+ + " <field-descriptor\n"+ + " name=\"attrKey\"\n"+ + " column=\"attrKey\"\n"+ + " jdbc-type=\"INTEGER\"\n"+ + " >\n"+ + " </field-descriptor>\n"+ + " <reference-descriptor\n"+ + " name=\"attr\"\n"+ + " class-ref=\"test.B\"\n"+ + " >\n"+ + " <foreignkey field-ref=\"attrKey\"/>\n"+ + " </reference-descriptor>\n"+ + "</class-descriptor>\n"+ + "<class-descriptor\n"+ + " class=\"test.B\"\n"+ + " table=\"B\"\n"+ + ">\n"+ + " <field-descriptor\n"+ + " name=\"id\"\n"+ + " column=\"id\"\n"+ + " jdbc-type=\"INTEGER\"\n"+ + " primarykey=\"true\"\n"+ + " >\n"+ + " </field-descriptor>\n"+ + "</class-descriptor>", + runOjbXDoclet(OJB_DEST_FILE)); + assertEqualsTorqueSchemaFile( + "<database name=\"ojbtest\">\n"+ + " <table name=\"A\">\n"+ + " <column name=\"attrKey\"\n"+ + " javaName=\"attrKey\"\n"+ + " type=\"INTEGER\"\n"+ + " />\n"+ + " <foreign-key foreignTable=\"B\" onDelete=\"cascade\">\n"+ + " <reference local=\"attrKey\" foreign=\"id\"/>\n"+ + " </foreign-key>\n"+ + " </table>\n"+ + " <table name=\"B\">\n"+ + " <column name=\"id\"\n"+ + " javaName=\"id\"\n"+ + " type=\"INTEGER\"\n"+ + " primaryKey=\"true\"\n"+ + " required=\"true\"\n"+ + " />\n"+ + " </table>\n"+ + "</database>", + runTorqueXDoclet(TORQUE_DEST_FILE, "ojbtest")); + } + + // Test: foreignkey-on-delete with no value specified + public void testForeignkeyOnDelete2() + { + addClass( + "test.A", + "package test;\n"+ + "/** @ojb.class */\n"+ + "public class A {\n"+ + " /** @ojb.field */\n"+ + " private Integer attrKey;\n"+ + " /** @ojb.reference foreignkey=\"attrKey\"\n"+ + " * foreignkey-on-delete=\"\"\n"+ + " */\n"+ + " private test.B attr;\n"+ + "}\n"); + addClass( + "test.B", + "package test;\n"+ + "/** @ojb.class */\n"+ + "public class B {\n"+ + " /** @ojb.field primarykey=\"true\" */\n"+ + " private Integer id;\n"+ + "}\n"); + + assertNull(runOjbXDoclet(OJB_DEST_FILE)); + assertNull(runTorqueXDoclet(TORQUE_DEST_FILE, "ojbtest")); + } + + // Test: foreignkey-on-delete name has illegal value + public void testForeignkeyOnDelete3() + { + addClass( + "test.A", + "package test;\n"+ + "/** @ojb.class */\n"+ + "public class A {\n"+ + " /** @ojb.field */\n"+ + " private Integer attrKey;\n"+ + " /** @ojb.reference foreignkey=\"attrKey\"\n"+ + " * foreignkey-on-delete=\"someValue\"\n"+ + " */\n"+ + " private test.B attr;\n"+ + "}\n"); + addClass( + "test.B", + "package test;\n"+ + "/** @ojb.class */\n"+ + "public class B {\n"+ + " /** @ojb.field primarykey=\"true\" */\n"+ + " private Integer id;\n"+ + "}\n"); + + assertNull(runOjbXDoclet(OJB_DEST_FILE)); + assertNull(runTorqueXDoclet(TORQUE_DEST_FILE, "ojbtest")); + } + + // Test: foreignkey-on-delete name specified + public void testForeignkeyOnUpdate1() + { + addClass( + "test.A", + "package test;\n"+ + "/** @ojb.class */\n"+ + "public class A {\n"+ + " /** @ojb.field */\n"+ + " private Integer attrKey;\n"+ + " /** @ojb.reference foreignkey=\"attrKey\"\n"+ + " * foreignkey-on-update=\"setnull\"\n"+ + " */\n"+ + " private test.B attr;\n"+ + "}\n"); + addClass( + "test.B", + "package test;\n"+ + "/** @ojb.class */\n"+ + "public class B {\n"+ + " /** @ojb.field primarykey=\"true\" */\n"+ + " private Integer id;\n"+ + "}\n"); + + assertEqualsOjbDescriptorFile( + "<class-descriptor\n"+ + " class=\"test.A\"\n"+ + " table=\"A\"\n"+ + ">\n"+ + " <field-descriptor\n"+ + " name=\"attrKey\"\n"+ + " column=\"attrKey\"\n"+ + " jdbc-type=\"INTEGER\"\n"+ + " >\n"+ + " </field-descriptor>\n"+ + " <reference-descriptor\n"+ + " name=\"attr\"\n"+ + " class-ref=\"test.B\"\n"+ + " >\n"+ + " <foreignkey field-ref=\"attrKey\"/>\n"+ + " </reference-descriptor>\n"+ + "</class-descriptor>\n"+ + "<class-descriptor\n"+ + " class=\"test.B\"\n"+ + " table=\"B\"\n"+ + ">\n"+ + " <field-descriptor\n"+ + " name=\"id\"\n"+ + " column=\"id\"\n"+ + " jdbc-type=\"INTEGER\"\n"+ + " primarykey=\"true\"\n"+ + " >\n"+ + " </field-descriptor>\n"+ + "</class-descriptor>", + runOjbXDoclet(OJB_DEST_FILE)); + assertEqualsTorqueSchemaFile( + "<database name=\"ojbtest\">\n"+ + " <table name=\"A\">\n"+ + " <column name=\"attrKey\"\n"+ + " javaName=\"attrKey\"\n"+ + " type=\"INTEGER\"\n"+ + " />\n"+ + " <foreign-key foreignTable=\"B\" onUpdate=\"setnull\">\n"+ + " <reference local=\"attrKey\" foreign=\"id\"/>\n"+ + " </foreign-key>\n"+ + " </table>\n"+ + " <table name=\"B\">\n"+ + " <column name=\"id\"\n"+ + " javaName=\"id\"\n"+ + " type=\"INTEGER\"\n"+ + " primaryKey=\"true\"\n"+ + " required=\"true\"\n"+ + " />\n"+ + " </table>\n"+ + "</database>", + runTorqueXDoclet(TORQUE_DEST_FILE, "ojbtest")); + } + + // Test: foreignkey-on-update with no value specified + public void testForeignkeyOnUpdate2() + { + addClass( + "test.A", + "package test;\n"+ + "/** @ojb.class */\n"+ + "public class A {\n"+ + " /** @ojb.field */\n"+ + " private Integer attrKey;\n"+ + " /** @ojb.reference foreignkey=\"attrKey\"\n"+ + " * foreignkey-on-update=\"\"\n"+ + " */\n"+ + " private test.B attr;\n"+ + "}\n"); + addClass( + "test.B", + "package test;\n"+ + "/** @ojb.class */\n"+ + "public class B {\n"+ + " /** @ojb.field primarykey=\"true\" */\n"+ + " private Integer id;\n"+ + "}\n"); + + assertNull(runOjbXDoclet(OJB_DEST_FILE)); + assertNull(runTorqueXDoclet(TORQUE_DEST_FILE, "ojbtest")); + } + + // Test: foreignkey-on-update name has illegal value + public void testForeignkeyOnUpdate3() + { + addClass( + "test.A", + "package test;\n"+ + "/** @ojb.class */\n"+ + "public class A {\n"+ + " /** @ojb.field */\n"+ + " private Integer attrKey;\n"+ + " /** @ojb.reference foreignkey=\"attrKey\"\n"+ + " * foreignkey-on-update=\"illegalValue\"\n"+ + " */\n"+ + " private test.B attr;\n"+ + "}\n"); + addClass( + "test.B", + "package test;\n"+ + "/** @ojb.class */\n"+ + "public class B {\n"+ + " /** @ojb.field primarykey=\"true\" */\n"+ + " private Integer id;\n"+ + "}\n"); + + assertNull(runOjbXDoclet(OJB_DEST_FILE)); + assertNull(runTorqueXDoclet(TORQUE_DEST_FILE, "ojbtest")); + } + + // Test: both foreignkey-on-delete and foreignkey-on-update name specified + public void testForeignkeyOnDeleteAndOnUpdate() + { + addClass( + "test.A", + "package test;\n"+ + "/** @ojb.class */\n"+ + "public class A {\n"+ + " /** @ojb.field */\n"+ + " private Integer attrKey;\n"+ + " /** @ojb.reference foreignkey=\"attrKey\"\n"+ + " * foreignkey-on-update=\"restrict\"\n"+ + " * foreignkey-on-delete=\"none\"\n"+ + " */\n"+ + " private test.B attr;\n"+ + "}\n"); + addClass( + "test.B", + "package test;\n"+ + "/** @ojb.class */\n"+ + "public class B {\n"+ + " /** @ojb.field primarykey=\"true\" */\n"+ + " private Integer id;\n"+ + "}\n"); + + assertEqualsOjbDescriptorFile( + "<class-descriptor\n"+ + " class=\"test.A\"\n"+ + " table=\"A\"\n"+ + ">\n"+ + " <field-descriptor\n"+ + " name=\"attrKey\"\n"+ + " column=\"attrKey\"\n"+ + " jdbc-type=\"INTEGER\"\n"+ + " >\n"+ + " </field-descriptor>\n"+ + " <reference-descriptor\n"+ + " name=\"attr\"\n"+ + " class-ref=\"test.B\"\n"+ + " >\n"+ + " <foreignkey field-ref=\"attrKey\"/>\n"+ + " </reference-descriptor>\n"+ + "</class-descriptor>\n"+ + "<class-descriptor\n"+ + " class=\"test.B\"\n"+ + " table=\"B\"\n"+ + ">\n"+ + " <field-descriptor\n"+ + " name=\"id\"\n"+ + " column=\"id\"\n"+ + " jdbc-type=\"INTEGER\"\n"+ + " primarykey=\"true\"\n"+ + " >\n"+ + " </field-descriptor>\n"+ + "</class-descriptor>", + runOjbXDoclet(OJB_DEST_FILE)); + assertEqualsTorqueSchemaFile( + "<database name=\"ojbtest\">\n"+ + " <table name=\"A\">\n"+ + " <column name=\"attrKey\"\n"+ + " javaName=\"attrKey\"\n"+ + " type=\"INTEGER\"\n"+ + " />\n"+ + " <foreign-key foreignTable=\"B\" onDelete=\"none\" onUpdate=\"restrict\">\n"+ + " <reference local=\"attrKey\" foreign=\"id\"/>\n"+ + " </foreign-key>\n"+ + " </table>\n"+ + " <table name=\"B\">\n"+ " <column name=\"id\"\n"+ " javaName=\"id\"\n"+ " type=\"INTEGER\"\n"+
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
