You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ar...@apache.org on 2007/09/27 17:10:11 UTC
svn commit: r580057 [2/3] - in /db/ojb/trunk/src/xdoclet: ./
java/src/xdoclet/modules/ojb/ java/src/xdoclet/modules/ojb/constraints/
java/src/xdoclet/modules/ojb/model/ test/xdoclet/modules/ojb/tests/
Added: db/ojb/trunk/src/xdoclet/test/xdoclet/modules/ojb/tests/InheritanceTests.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/xdoclet/test/xdoclet/modules/ojb/tests/InheritanceTests.java?rev=580057&view=auto
==============================================================================
--- db/ojb/trunk/src/xdoclet/test/xdoclet/modules/ojb/tests/InheritanceTests.java (added)
+++ db/ojb/trunk/src/xdoclet/test/xdoclet/modules/ojb/tests/InheritanceTests.java Thu Sep 27 08:10:04 2007
@@ -0,0 +1,2489 @@
+package xdoclet.modules.ojb.tests;
+
+/*
+ * 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.lang.Object;
+
+/**
+ * Inheritance tests.
+ */
+public class InheritanceTests extends OjbTestBase
+{
+ public InheritanceTests(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Test: inherited autoincrement attribute with 'database' value and
+ * table per hierarchy inheritance via "extent" attribute in the super-class
+ * and 'ojbConcreteClass' field.
+ * Expect autoincrement=true for all subclasses and
+ * the extent-class element must be declared and all
+ * the super-class fields must be declared in the sub-classes.
+ * Only one table for all classes must be created.
+ */
+ public void testTablePerHierarchyAutoincrementDatabase_1()
+ {
+ addClass(
+ "test.A",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " * table=\"ABC\"\n"+
+ " */\n"+
+ "public class A {\n"+
+ " /** @ojb.field primarykey=\"true\"\n"+
+ " * autoincrement=\"database\"\n"+
+ " * access=\"readonly\"\n"+
+ " */\n"+
+ " private int attr;\n"+
+ " /** @ojb.field */\n"+
+ " private String ojbConcreteClass;\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String name;\n"+
+ "}\n");
+ addClass(
+ "test.B",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " * table=\"ABC\"\n"+
+ " */\n"+
+ "public class B extends A {\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameB;\n"+
+ "}\n");
+ addClass(
+ "test.C",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " * table=\"ABC\"\n"+
+ " */\n"+
+ "public class C extends B {\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameC;\n"+
+ "}\n");
+ String result = runOjbXDoclet(OJB_DEST_FILE);
+ //System.out.println("##" + result);
+ assertEqualsOjbDescriptorFile(
+ "<class-descriptor\n"+
+ " class=\"test.A\"\n"+
+ " table=\"ABC\"\n"+
+ ">\n"+
+ "<extent-class class-ref=\"test.B\"/>"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " access=\"readonly\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"ojbConcreteClass\"\n"+
+ " column=\"ojbConcreteClass\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"254\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"name\"\n"+
+ " column=\"name\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ "</class-descriptor>\n"+
+ "<class-descriptor\n"+
+ " class=\"test.B\"\n"+
+ " table=\"ABC\"\n"+
+ ">\n"+
+ "<extent-class class-ref=\"test.C\"/>"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " access=\"readonly\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"ojbConcreteClass\"\n"+
+ " column=\"ojbConcreteClass\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"254\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"name\"\n"+
+ " column=\"name\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameB\"\n"+
+ " column=\"nameB\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ "</class-descriptor>\n"+
+ "<class-descriptor\n"+
+ " class=\"test.C\"\n"+
+ " table=\"ABC\"\n"+
+ ">\n"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " access=\"readonly\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"ojbConcreteClass\"\n"+
+ " column=\"ojbConcreteClass\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"254\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"name\"\n"+
+ " column=\"name\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameB\"\n"+
+ " column=\"nameB\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameC\"\n"+
+ " column=\"nameC\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ "</class-descriptor>",
+ result);
+ result = runTorqueXDoclet(TORQUE_DEST_FILE, "ojbtest");
+ //System.out.println("##" + result);
+ assertEqualsTorqueSchemaFile(
+ "<database name=\"ojbtest\">\n" +
+ " <table name=\"ABC\">\n" +
+ " <column name=\"attr\"\n" +
+ " javaName=\"attr\"\n" +
+ " type=\"INTEGER\"\n" +
+ " primaryKey=\"true\"\n" +
+ " required=\"true\"\n" +
+ " autoIncrement=\"true\"\n" +
+ " />\n" +
+ " <column name=\"ojbConcreteClass\"\n" +
+ " javaName=\"ojbConcreteClass\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"254\"\n" +
+ " />\n"+
+ " <column name=\"name\"\n" +
+ " javaName=\"name\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " <column name=\"nameB\"\n" +
+ " javaName=\"nameB\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " <column name=\"nameC\"\n" +
+ " javaName=\"nameC\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " </table>\n" +
+ "</database>",
+ result);
+ }
+
+ /**
+ * Test: inherited autoincrement attribute with 'ojb' value and
+ * table per hierarchy inheritance via "extent" attribute in the super-class
+ * and 'ojbConcreteClass' field.
+ * Expect autoincrement=true for all subclasses and
+ * the extent-class element must be declared and all
+ * the super-class fields must be declared in the sub-classes.
+ * Only one table for all classes must be created.
+ */
+ public void testTablePerHierarchyAutoincrementOjb_1()
+ {
+ addClass(
+ "test.A",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " * table=\"ABC\"\n"+
+ " */\n"+
+ "public class A {\n"+
+ " /** @ojb.field primarykey=\"true\"\n"+
+ " * autoincrement=\"ojb\"\n"+
+ " */\n"+
+ " private int attr;\n"+
+ " /** @ojb.field */\n"+
+ " private String ojbConcreteClass;\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String name;\n"+
+ "}\n");
+ addClass(
+ "test.B",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " * table=\"ABC\"\n"+
+ " */\n"+
+ "public class B extends A {\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameB;\n"+
+ "}\n");
+ addClass(
+ "test.C",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " * table=\"ABC\"\n"+
+ " */\n"+
+ "public class C extends B {\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameC;\n"+
+ "}\n");
+ String result = runOjbXDoclet(OJB_DEST_FILE);
+ //System.out.println("##" + result);
+ assertEqualsOjbDescriptorFile(
+ "<class-descriptor\n"+
+ " class=\"test.A\"\n"+
+ " table=\"ABC\"\n"+
+ ">\n"+
+ "<extent-class class-ref=\"test.B\"/>"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"ojbConcreteClass\"\n"+
+ " column=\"ojbConcreteClass\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"254\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"name\"\n"+
+ " column=\"name\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ "</class-descriptor>\n"+
+ "<class-descriptor\n"+
+ " class=\"test.B\"\n"+
+ " table=\"ABC\"\n"+
+ ">\n"+
+ "<extent-class class-ref=\"test.C\"/>"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"ojbConcreteClass\"\n"+
+ " column=\"ojbConcreteClass\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"254\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"name\"\n"+
+ " column=\"name\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameB\"\n"+
+ " column=\"nameB\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ "</class-descriptor>\n"+
+ "<class-descriptor\n"+
+ " class=\"test.C\"\n"+
+ " table=\"ABC\"\n"+
+ ">\n"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"ojbConcreteClass\"\n"+
+ " column=\"ojbConcreteClass\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"254\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"name\"\n"+
+ " column=\"name\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameB\"\n"+
+ " column=\"nameB\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameC\"\n"+
+ " column=\"nameC\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ "</class-descriptor>",
+ result);
+ result = runTorqueXDoclet(TORQUE_DEST_FILE, "ojbtest");
+ //System.out.println("##" + result);
+ assertEqualsTorqueSchemaFile(
+ "<database name=\"ojbtest\">\n" +
+ " <table name=\"ABC\">\n" +
+ " <column name=\"attr\"\n" +
+ " javaName=\"attr\"\n" +
+ " type=\"INTEGER\"\n" +
+ " primaryKey=\"true\"\n" +
+ " required=\"true\"\n" +
+ " />\n" +
+ " <column name=\"ojbConcreteClass\"\n" +
+ " javaName=\"ojbConcreteClass\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"254\"\n" +
+ " />\n"+
+ " <column name=\"name\"\n" +
+ " javaName=\"name\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " <column name=\"nameB\"\n" +
+ " javaName=\"nameB\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " <column name=\"nameC\"\n" +
+ " javaName=\"nameC\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " </table>\n" +
+ "</database>",
+ result);
+ }
+
+
+
+
+
+ /**
+ * Test: inherited autoincrement attribute with 'database' value and
+ * table per class inheritance via "extent" attribute in the super-class.
+ * Expect autoincrement=true for all subclasses and
+ * the extent-class element must be declared and all
+ * the super-class fields must be declared in the sub-classes.
+ */
+ public void testTablePerClassAutoincrementDatabase_1()
+ {
+ addClass(
+ "test.A",
+ "package test;\n"+
+ "/** @ojb.class */\n"+
+ "public class A {\n"+
+ " /** @ojb.field primarykey=\"true\"\n"+
+ " * autoincrement=\"database\"\n"+
+ " * access=\"readonly\"\n"+
+ " */\n"+
+ " private int attr;\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String name;\n"+
+ "}\n");
+ addClass(
+ "test.B",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " */\n"+
+ "public class B extends A {\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameB;\n"+
+ "}\n");
+ addClass(
+ "test.C",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " */\n"+
+ "public class C extends B {\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameC;\n"+
+ "}\n");
+ String result = runOjbXDoclet(OJB_DEST_FILE);
+ //System.out.println("##" + result);
+ assertEqualsOjbDescriptorFile(
+ "<class-descriptor\n"+
+ " class=\"test.A\"\n"+
+ " table=\"A\"\n"+
+ ">\n"+
+ "<extent-class class-ref=\"test.B\"/>"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " access=\"readonly\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"name\"\n"+
+ " column=\"name\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ "</class-descriptor>\n"+
+ "<class-descriptor\n"+
+ " class=\"test.B\"\n"+
+ " table=\"B\"\n"+
+ ">\n"+
+ "<extent-class class-ref=\"test.C\"/>"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " access=\"readonly\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"name\"\n"+
+ " column=\"name\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameB\"\n"+
+ " column=\"nameB\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ "</class-descriptor>\n"+
+ "<class-descriptor\n"+
+ " class=\"test.C\"\n"+
+ " table=\"C\"\n"+
+ ">\n"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " access=\"readonly\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"name\"\n"+
+ " column=\"name\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameB\"\n"+
+ " column=\"nameB\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameC\"\n"+
+ " column=\"nameC\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ "</class-descriptor>",
+ result);
+ result = runTorqueXDoclet(TORQUE_DEST_FILE, "ojbtest");
+ //System.out.println("##" + result);
+ assertEqualsTorqueSchemaFile(
+ "<database name=\"ojbtest\">\n" +
+ " <table name=\"A\">\n" +
+ " <column name=\"attr\"\n" +
+ " javaName=\"attr\"\n" +
+ " type=\"INTEGER\"\n" +
+ " primaryKey=\"true\"\n" +
+ " required=\"true\"\n" +
+ " autoIncrement=\"true\"\n" +
+ " />\n" +
+ " <column name=\"name\"\n" +
+ " javaName=\"name\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " </table>\n" +
+ " <table name=\"B\">\n" +
+ " <column name=\"attr\"\n" +
+ " javaName=\"attr\"\n" +
+ " type=\"INTEGER\"\n" +
+ " primaryKey=\"true\"\n" +
+ " required=\"true\"\n" +
+ " autoIncrement=\"true\"\n" +
+ " />\n" +
+ " <column name=\"name\"\n" +
+ " javaName=\"name\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " <column name=\"nameB\"\n" +
+ " javaName=\"nameB\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " </table>\n" +
+ " <table name=\"C\">\n" +
+ " <column name=\"attr\"\n" +
+ " javaName=\"attr\"\n" +
+ " type=\"INTEGER\"\n" +
+ " primaryKey=\"true\"\n" +
+ " required=\"true\"\n" +
+ " autoIncrement=\"true\"\n" +
+ " />\n" +
+ " <column name=\"name\"\n" +
+ " javaName=\"name\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " <column name=\"nameB\"\n" +
+ " javaName=\"nameB\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " <column name=\"nameC\"\n" +
+ " javaName=\"nameC\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " </table>\n" +
+ "</database>",
+ result);
+ }
+
+ /**
+ * Test: inherited autoincrement attribute with 'database' value and
+ * table per class inheritance via "extent" attribute in the super-class.
+ * Expect autoincrement=true for all subclasses and
+ * the extent-class element must be declared and all
+ * the super-class fields must be declared in the sub-classes.
+ */
+ public void testTablePerClassAutoincrementOjb_1()
+ {
+ addClass(
+ "test.A",
+ "package test;\n"+
+ "/** @ojb.class */\n"+
+ "public class A {\n"+
+ " /** @ojb.field primarykey=\"true\"\n"+
+ " * autoincrement=\"ojb\"\n"+
+ " * access=\"readwrite\"\n"+
+ " */\n"+
+ " private int attr;\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String name;\n"+
+ "}\n");
+ addClass(
+ "test.B",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " */\n"+
+ "public class B extends A {\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameB;\n"+
+ "}\n");
+ addClass(
+ "test.C",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " */\n"+
+ "public class C extends B {\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameC;\n"+
+ "}\n");
+ String result = runOjbXDoclet(OJB_DEST_FILE);
+ //System.out.println("##" + result);
+ assertEqualsOjbDescriptorFile(
+ "<class-descriptor\n"+
+ " class=\"test.A\"\n"+
+ " table=\"A\"\n"+
+ ">\n"+
+ "<extent-class class-ref=\"test.B\"/>"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " access=\"readwrite\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"name\"\n"+
+ " column=\"name\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ "</class-descriptor>\n"+
+ "<class-descriptor\n"+
+ " class=\"test.B\"\n"+
+ " table=\"B\"\n"+
+ ">\n"+
+ "<extent-class class-ref=\"test.C\"/>"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " access=\"readwrite\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"name\"\n"+
+ " column=\"name\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameB\"\n"+
+ " column=\"nameB\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ "</class-descriptor>\n"+
+ "<class-descriptor\n"+
+ " class=\"test.C\"\n"+
+ " table=\"C\"\n"+
+ ">\n"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " access=\"readwrite\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"name\"\n"+
+ " column=\"name\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameB\"\n"+
+ " column=\"nameB\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameC\"\n"+
+ " column=\"nameC\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ "</class-descriptor>",
+ result);
+ result = runTorqueXDoclet(TORQUE_DEST_FILE, "ojbtest");
+ //System.out.println("##" + result);
+ assertEqualsTorqueSchemaFile(
+ "<database name=\"ojbtest\">\n" +
+ " <table name=\"A\">\n" +
+ " <column name=\"attr\"\n" +
+ " javaName=\"attr\"\n" +
+ " type=\"INTEGER\"\n" +
+ " primaryKey=\"true\"\n" +
+ " required=\"true\"\n" +
+ " />\n" +
+ " <column name=\"name\"\n" +
+ " javaName=\"name\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " </table>\n" +
+ " <table name=\"B\">\n" +
+ " <column name=\"attr\"\n" +
+ " javaName=\"attr\"\n" +
+ " type=\"INTEGER\"\n" +
+ " primaryKey=\"true\"\n" +
+ " required=\"true\"\n" +
+ " />\n" +
+ " <column name=\"name\"\n" +
+ " javaName=\"name\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " <column name=\"nameB\"\n" +
+ " javaName=\"nameB\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " </table>\n" +
+ " <table name=\"C\">\n" +
+ " <column name=\"attr\"\n" +
+ " javaName=\"attr\"\n" +
+ " type=\"INTEGER\"\n" +
+ " primaryKey=\"true\"\n" +
+ " required=\"true\"\n" +
+ " />\n" +
+ " <column name=\"name\"\n" +
+ " javaName=\"name\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " <column name=\"nameB\"\n" +
+ " javaName=\"nameB\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " <column name=\"nameC\"\n" +
+ " javaName=\"nameC\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " </table>\n" +
+ "</database>",
+ result);
+ }
+
+ /**
+ * Test: inherited autoincrement attribute with 'database' value and
+ * table per class inheritance via "extent" attribute in the super-class.
+ * Expect autoincrement=true for all subclasses and
+ * the extent-class element must be declared and all
+ * the super-class fields must be declared in the sub-classes.
+ */
+ public void testTablePerClassAutoincrementOjb_2()
+ {
+ addClass(
+ "test.A",
+ "package test;\n"+
+ "/** @ojb.class */\n"+
+ "public class A {\n"+
+ " /** @ojb.field primarykey=\"true\"\n"+
+ " * autoincrement=\"ojb\"\n"+
+ " */\n"+
+ " private int attr;\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String name;\n"+
+ "}\n");
+ addClass(
+ "test.B",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " */\n"+
+ "public class B extends A {\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameB;\n"+
+ "}\n");
+ addClass(
+ "test.C",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " */\n"+
+ "public class C extends B {\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameC;\n"+
+ "}\n");
+ String result = runOjbXDoclet(OJB_DEST_FILE);
+ //System.out.println("##" + result);
+ assertEqualsOjbDescriptorFile(
+ "<class-descriptor\n"+
+ " class=\"test.A\"\n"+
+ " table=\"A\"\n"+
+ ">\n"+
+ "<extent-class class-ref=\"test.B\"/>"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"name\"\n"+
+ " column=\"name\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ "</class-descriptor>\n"+
+ "<class-descriptor\n"+
+ " class=\"test.B\"\n"+
+ " table=\"B\"\n"+
+ ">\n"+
+ "<extent-class class-ref=\"test.C\"/>"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"name\"\n"+
+ " column=\"name\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameB\"\n"+
+ " column=\"nameB\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ "</class-descriptor>\n"+
+ "<class-descriptor\n"+
+ " class=\"test.C\"\n"+
+ " table=\"C\"\n"+
+ ">\n"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"name\"\n"+
+ " column=\"name\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameB\"\n"+
+ " column=\"nameB\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameC\"\n"+
+ " column=\"nameC\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ "</class-descriptor>",
+ result);
+ result = runTorqueXDoclet(TORQUE_DEST_FILE, "ojbtest");
+ //System.out.println("##" + result);
+ assertEqualsTorqueSchemaFile(
+ "<database name=\"ojbtest\">\n" +
+ " <table name=\"A\">\n" +
+ " <column name=\"attr\"\n" +
+ " javaName=\"attr\"\n" +
+ " type=\"INTEGER\"\n" +
+ " primaryKey=\"true\"\n" +
+ " required=\"true\"\n" +
+ " />\n" +
+ " <column name=\"name\"\n" +
+ " javaName=\"name\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " </table>\n" +
+ " <table name=\"B\">\n" +
+ " <column name=\"attr\"\n" +
+ " javaName=\"attr\"\n" +
+ " type=\"INTEGER\"\n" +
+ " primaryKey=\"true\"\n" +
+ " required=\"true\"\n" +
+ " />\n" +
+ " <column name=\"name\"\n" +
+ " javaName=\"name\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " <column name=\"nameB\"\n" +
+ " javaName=\"nameB\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " </table>\n" +
+ " <table name=\"C\">\n" +
+ " <column name=\"attr\"\n" +
+ " javaName=\"attr\"\n" +
+ " type=\"INTEGER\"\n" +
+ " primaryKey=\"true\"\n" +
+ " required=\"true\"\n" +
+ " />\n" +
+ " <column name=\"name\"\n" +
+ " javaName=\"name\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " <column name=\"nameB\"\n" +
+ " javaName=\"nameB\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " <column name=\"nameC\"\n" +
+ " javaName=\"nameC\"\n" +
+ " type=\"VARCHAR\"\n" +
+ " size=\"128\"\n" +
+ " />\n" +
+ " </table>\n" +
+ "</database>",
+ result);
+ }
+
+
+
+
+
+ /**
+ * Test: inherited autoincrement attribute with 'database' value and
+ * table per subclass inheritance via "super"-reference.
+ * Expect autoincrement=false for all subclasses and
+ * the extent-class element must not created because we use "super"-reference and
+ * the super-class fields must not be declared in the sub-classes
+ */
+ public void testTablePerSubclassAutoincrementDatabase_1()
+ {
+ addClass(
+ "test.A",
+ "package test;\n"+
+ "/** @ojb.class */\n"+
+ "public class A {\n"+
+ " /** @ojb.field primarykey=\"true\"\n"+
+ " * autoincrement=\"database\"\n"+
+ " * access=\"readonly\"\n"+
+ " */\n"+
+ " private int attr;\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String name;\n"+
+ "}\n");
+ addClass(
+ "test.B",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " * @ojb.reference class-ref=\"test.A\"\n"+
+ " */\n"+
+ "public class B extends A {\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameB;\n"+
+ "}\n");
+ addClass(
+ "test.C",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " * @ojb.reference class-ref=\"test.B\"\n"+
+ " */\n"+
+ "public class C extends B {\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameC;\n"+
+ "}\n");
+ String result = runOjbXDoclet(OJB_DEST_FILE);
+ //System.out.println("##" + result);
+ assertEqualsOjbDescriptorFile(
+ "<class-descriptor\n"+
+ " class=\"test.A\"\n"+
+ " table=\"A\"\n"+
+ ">\n"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " access=\"readonly\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"name\"\n"+
+ " column=\"name\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ "</class-descriptor>\n"+
+ "<class-descriptor\n"+
+ " class=\"test.B\"\n"+
+ " table=\"B\"\n"+
+ ">\n"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " access=\"readwrite\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameB\"\n"+
+ " column=\"nameB\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <reference-descriptor\n"+
+ " name=\"super\"\n"+
+ " class-ref=\"test.A\"\n"+
+ " >\n"+
+ " </reference-descriptor>\n"+
+ "</class-descriptor>\n"+
+ "<class-descriptor\n"+
+ " class=\"test.C\"\n"+
+ " table=\"C\"\n"+
+ ">\n"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " access=\"readwrite\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameC\"\n"+
+ " column=\"nameC\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <reference-descriptor\n"+
+ " name=\"super\"\n"+
+ " class-ref=\"test.B\"\n"+
+ " >\n"+
+ " </reference-descriptor>\n"+
+ "</class-descriptor>",
+ result);
+ result = runTorqueXDoclet(TORQUE_DEST_FILE, "ojbtest");
+ //System.out.println("##" + result);
+ assertEqualsTorqueSchemaFile(
+ "<database name=\"ojbtest\">\n"+
+ " <table name=\"A\">\n"+
+ " <column name=\"attr\"\n"+
+ " javaName=\"attr\"\n"+
+ " type=\"INTEGER\"\n"+
+ " primaryKey=\"true\"\n"+
+ " required=\"true\"\n"+
+ " autoIncrement=\"true\"\n"+
+ " />\n"+
+ " <column name=\"name\"\n"+
+ " javaName=\"name\"\n"+
+ " type=\"VARCHAR\"\n"+
+ " size=\"128\"\n"+
+ " />\n"+
+ " </table>\n"+
+ " <table name=\"B\">\n"+
+ " <column name=\"attr\"\n"+
+ " javaName=\"attr\"\n"+
+ " type=\"INTEGER\"\n"+
+ " primaryKey=\"true\"\n"+
+ " required=\"true\"\n"+
+ " />\n"+
+ " <column name=\"nameB\"\n"+
+ " javaName=\"nameB\"\n"+
+ " type=\"VARCHAR\"\n"+
+ " size=\"128\"\n"+
+ " />\n"+
+ " <foreign-key foreignTable=\"A\">\n" +
+ " <reference local=\"attr\" foreign=\"attr\"/>\n" +
+ " </foreign-key>"+
+ " </table>\n"+
+ " <table name=\"C\">\n"+
+ " <column name=\"attr\"\n"+
+ " javaName=\"attr\"\n"+
+ " type=\"INTEGER\"\n"+
+ " primaryKey=\"true\"\n"+
+ " required=\"true\"\n"+
+ " />\n"+
+ " <column name=\"nameC\"\n"+
+ " javaName=\"nameC\"\n"+
+ " type=\"VARCHAR\"\n"+
+ " size=\"128\"\n"+
+ " />\n"+
+ " <foreign-key foreignTable=\"B\">\n" +
+ " <reference local=\"attr\" foreign=\"attr\"/>\n" +
+ " </foreign-key>"+
+ " </table>\n"+
+ "</database>",
+ result);
+ }
+
+ /**
+ * Test: inherited autoincrement attribute with 'ojb' value and
+ * table per subclass inheritance via "super"-reference.
+ * Expect autoincrement=false for all subclasses and
+ * the extent-class element must not created because we use "super"-reference and
+ * the super-class fields must not be declared in the sub-classes
+ */
+ public void testTablePerSubclassAutoincrementOjb_1()
+ {
+ addClass(
+ "test.A",
+ "package test;\n"+
+ "/** @ojb.class */\n"+
+ "public class A {\n"+
+ " /** @ojb.field primarykey=\"true\"\n"+
+ " * autoincrement=\"ojb\"\n"+
+ " */\n"+
+ " private int attr;\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String name;\n"+
+ "}\n");
+ addClass(
+ "test.B",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " * @ojb.reference class-ref=\"test.A\"\n"+
+ " */\n"+
+ "public class B extends A {\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameB;\n"+
+ "}\n");
+ addClass(
+ "test.C",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " * @ojb.reference class-ref=\"test.B\"\n"+
+ " */\n"+
+ "public class C extends B {\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameC;\n"+
+ "}\n");
+ String result = runOjbXDoclet(OJB_DEST_FILE);
+ //System.out.println("##" + result);
+ assertEqualsOjbDescriptorFile(
+ "<class-descriptor\n"+
+ " class=\"test.A\"\n"+
+ " table=\"A\"\n"+
+ ">\n"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"name\"\n"+
+ " column=\"name\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ "</class-descriptor>\n"+
+ "<class-descriptor\n"+
+ " class=\"test.B\"\n"+
+ " table=\"B\"\n"+
+ ">\n"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " access=\"readwrite\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameB\"\n"+
+ " column=\"nameB\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <reference-descriptor\n"+
+ " name=\"super\"\n"+
+ " class-ref=\"test.A\"\n"+
+ " >\n"+
+ " </reference-descriptor>\n"+
+ "</class-descriptor>\n"+
+ "<class-descriptor\n"+
+ " class=\"test.C\"\n"+
+ " table=\"C\"\n"+
+ ">\n"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " access=\"readwrite\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameC\"\n"+
+ " column=\"nameC\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <reference-descriptor\n"+
+ " name=\"super\"\n"+
+ " class-ref=\"test.B\"\n"+
+ " >\n"+
+ " </reference-descriptor>\n"+
+ "</class-descriptor>",
+ result);
+ result = runTorqueXDoclet(TORQUE_DEST_FILE, "ojbtest");
+ //System.out.println("##" + result);
+ assertEqualsTorqueSchemaFile(
+ "<database name=\"ojbtest\">\n"+
+ " <table name=\"A\">\n"+
+ " <column name=\"attr\"\n"+
+ " javaName=\"attr\"\n"+
+ " type=\"INTEGER\"\n"+
+ " primaryKey=\"true\"\n"+
+ " required=\"true\"\n"+
+ " />\n"+
+ " <column name=\"name\"\n"+
+ " javaName=\"name\"\n"+
+ " type=\"VARCHAR\"\n"+
+ " size=\"128\"\n"+
+ " />\n"+
+ " </table>\n"+
+ " <table name=\"B\">\n"+
+ " <column name=\"attr\"\n"+
+ " javaName=\"attr\"\n"+
+ " type=\"INTEGER\"\n"+
+ " primaryKey=\"true\"\n"+
+ " required=\"true\"\n"+
+ " />\n"+
+ " <column name=\"nameB\"\n"+
+ " javaName=\"nameB\"\n"+
+ " type=\"VARCHAR\"\n"+
+ " size=\"128\"\n"+
+ " />\n"+
+ " <foreign-key foreignTable=\"A\">\n" +
+ " <reference local=\"attr\" foreign=\"attr\"/>\n" +
+ " </foreign-key>"+
+ " </table>\n"+
+ " <table name=\"C\">\n"+
+ " <column name=\"attr\"\n"+
+ " javaName=\"attr\"\n"+
+ " type=\"INTEGER\"\n"+
+ " primaryKey=\"true\"\n"+
+ " required=\"true\"\n"+
+ " />\n"+
+ " <column name=\"nameC\"\n"+
+ " javaName=\"nameC\"\n"+
+ " type=\"VARCHAR\"\n"+
+ " size=\"128\"\n"+
+ " />\n"+
+ " <foreign-key foreignTable=\"B\">\n" +
+ " <reference local=\"attr\" foreign=\"attr\"/>\n" +
+ " </foreign-key>"+
+ " </table>\n"+
+ "</database>",
+ result);
+ }
+
+ /**
+ * Test: inherited autoincrement attribute with 'database' value and
+ * table per subclass inheritance via "super"-reference via separate FK field.
+ * Expect autoincrement=true for all subclasses (because of the FK field) and
+ * the extent-class element must not be created because we use "super"-reference and
+ * the super-class fields must not be declared in the sub-classes
+ */
+ public void testTablePerSubclassAutoincrementDatabase_2()
+ {
+ addClass(
+ "test.A",
+ "package test;\n"+
+ "/** @ojb.class */\n"+
+ "public class A {\n"+
+ " /** @ojb.field primarykey=\"true\"\n"+
+ " * autoincrement=\"database\"\n"+
+ " * access=\"readonly\"\n"+
+ " */\n"+
+ " private int attr;\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String name;\n"+
+ "}\n");
+ addClass(
+ "test.B",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " * @ojb.reference class-ref=\"test.A\"\n"+
+ " * foreignkey=\"fkA\"\n"+
+ " */\n"+
+ "public class B extends A {\n"+
+ " /** @ojb.field\n"+
+ " */\n"+
+ " private int fkA;\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameB;\n"+
+ "}\n");
+ addClass(
+ "test.C",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " * @ojb.reference class-ref=\"test.B\"\n"+
+ " * foreignkey=\"fkB\"\n"+
+ " */\n"+
+ "public class C extends B {\n"+
+ " /** @ojb.field\n"+
+ " */\n"+
+ " private int fkB;\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameC;\n"+
+ "}\n");
+ String result = runOjbXDoclet(OJB_DEST_FILE);
+ //System.out.println("##" + result);
+ assertEqualsOjbDescriptorFile(
+ "<class-descriptor\n"+
+ " class=\"test.A\"\n"+
+ " table=\"A\"\n"+
+ ">\n"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " access=\"readonly\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"name\"\n"+
+ " column=\"name\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ "</class-descriptor>\n"+
+ "<class-descriptor\n"+
+ " class=\"test.B\"\n"+
+ " table=\"B\"\n"+
+ ">\n"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " access=\"readonly\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"fkA\"\n"+
+ " column=\"fkA\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameB\"\n"+
+ " column=\"nameB\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <reference-descriptor\n"+
+ " name=\"super\"\n"+
+ " class-ref=\"test.A\"\n"+
+ " >\n"+
+ " <foreignkey field-ref=\"fkA\"/>\n"+
+ " </reference-descriptor>\n"+
+ "</class-descriptor>\n"+
+ "<class-descriptor\n"+
+ " class=\"test.C\"\n"+
+ " table=\"C\"\n"+
+ ">\n"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " access=\"readonly\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"fkB\"\n"+
+ " column=\"fkB\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameC\"\n"+
+ " column=\"nameC\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <reference-descriptor\n"+
+ " name=\"super\"\n"+
+ " class-ref=\"test.B\"\n"+
+ " >\n"+
+ " <foreignkey field-ref=\"fkB\"/>\n"+
+ " </reference-descriptor>\n"+
+ "</class-descriptor>",
+ result);
+ result = runTorqueXDoclet(TORQUE_DEST_FILE, "ojbtest");
+ //System.out.println("##" + result);
+ assertEqualsTorqueSchemaFile(
+ "<database name=\"ojbtest\">\n"+
+ " <table name=\"A\">\n"+
+ " <column name=\"attr\"\n"+
+ " javaName=\"attr\"\n"+
+ " type=\"INTEGER\"\n"+
+ " primaryKey=\"true\"\n"+
+ " required=\"true\"\n"+
+ " autoIncrement=\"true\"\n"+
+ " />\n"+
+ " <column name=\"name\"\n"+
+ " javaName=\"name\"\n"+
+ " type=\"VARCHAR\"\n"+
+ " size=\"128\"\n"+
+ " />\n"+
+ " </table>\n"+
+ " <table name=\"B\">\n"+
+ " <column name=\"attr\"\n"+
+ " javaName=\"attr\"\n"+
+ " type=\"INTEGER\"\n"+
+ " primaryKey=\"true\"\n"+
+ " required=\"true\"\n"+
+ " autoIncrement=\"true\"\n"+
+ " />\n"+
+ " <column name=\"fkA\"\n"+
+ " javaName=\"fkA\"\n"+
+ " type=\"INTEGER\"\n"+
+ " />\n"+
+ " <column name=\"nameB\"\n"+
+ " javaName=\"nameB\"\n"+
+ " type=\"VARCHAR\"\n"+
+ " size=\"128\"\n"+
+ " />\n"+
+ " <foreign-key foreignTable=\"A\">\n" +
+ " <reference local=\"fkA\" foreign=\"attr\"/>\n" +
+ " </foreign-key>"+
+ " </table>\n"+
+ " <table name=\"C\">\n"+
+ " <column name=\"attr\"\n"+
+ " javaName=\"attr\"\n"+
+ " type=\"INTEGER\"\n"+
+ " primaryKey=\"true\"\n"+
+ " required=\"true\"\n"+
+ " autoIncrement=\"true\"\n"+
+ " />\n"+
+ " <column name=\"fkB\"\n"+
+ " javaName=\"fkB\"\n"+
+ " type=\"INTEGER\"\n"+
+ " />\n"+
+ " <column name=\"nameC\"\n"+
+ " javaName=\"nameC\"\n"+
+ " type=\"VARCHAR\"\n"+
+ " size=\"128\"\n"+
+ " />\n"+
+ " <foreign-key foreignTable=\"B\">\n" +
+ " <reference local=\"fkB\" foreign=\"attr\"/>\n" +
+ " </foreign-key>"+
+ " </table>\n"+
+ "</database>",
+ result);
+ }
+
+ /**
+ * Test: inherited autoincrement attribute with 'ojb' value and
+ * table per subclass inheritance via "super"-reference via separate FK field.
+ * Expect autoincrement=true for all subclasses (because of the FK field) and
+ * the extent-class element must not be created because we use "super"-reference and
+ * the super-class fields must not be declared in the sub-classes
+ */
+ public void testTablePerSubclassAutoincrementOjb_2()
+ {
+ addClass(
+ "test.A",
+ "package test;\n"+
+ "/** @ojb.class */\n"+
+ "public class A {\n"+
+ " /** @ojb.field primarykey=\"true\"\n"+
+ " * autoincrement=\"ojb\"\n"+
+ " */\n"+
+ " private int attr;\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String name;\n"+
+ "}\n");
+ addClass(
+ "test.B",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " * @ojb.reference class-ref=\"test.A\"\n"+
+ " * foreignkey=\"fkA\"\n"+
+ " */\n"+
+ "public class B extends A {\n"+
+ " /** @ojb.field\n"+
+ " */\n"+
+ " private int fkA;\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameB;\n"+
+ "}\n");
+ addClass(
+ "test.C",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " * @ojb.reference class-ref=\"test.B\"\n"+
+ " * foreignkey=\"fkB\"\n"+
+ " */\n"+
+ "public class C extends B {\n"+
+ " /** @ojb.field\n"+
+ " */\n"+
+ " private int fkB;\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameC;\n"+
+ "}\n");
+ String result = runOjbXDoclet(OJB_DEST_FILE);
+ //System.out.println("##" + result);
+ assertEqualsOjbDescriptorFile(
+ "<class-descriptor\n"+
+ " class=\"test.A\"\n"+
+ " table=\"A\"\n"+
+ ">\n"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"name\"\n"+
+ " column=\"name\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ "</class-descriptor>\n"+
+ "<class-descriptor\n"+
+ " class=\"test.B\"\n"+
+ " table=\"B\"\n"+
+ ">\n"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"fkA\"\n"+
+ " column=\"fkA\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameB\"\n"+
+ " column=\"nameB\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <reference-descriptor\n"+
+ " name=\"super\"\n"+
+ " class-ref=\"test.A\"\n"+
+ " >\n"+
+ " <foreignkey field-ref=\"fkA\"/>\n"+
+ " </reference-descriptor>\n"+
+ "</class-descriptor>\n"+
+ "<class-descriptor\n"+
+ " class=\"test.C\"\n"+
+ " table=\"C\"\n"+
+ ">\n"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"fkB\"\n"+
+ " column=\"fkB\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameC\"\n"+
+ " column=\"nameC\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <reference-descriptor\n"+
+ " name=\"super\"\n"+
+ " class-ref=\"test.B\"\n"+
+ " >\n"+
+ " <foreignkey field-ref=\"fkB\"/>\n"+
+ " </reference-descriptor>\n"+
+ "</class-descriptor>",
+ result);
+ result = runTorqueXDoclet(TORQUE_DEST_FILE, "ojbtest");
+ //System.out.println("##" + result);
+ assertEqualsTorqueSchemaFile(
+ "<database name=\"ojbtest\">\n"+
+ " <table name=\"A\">\n"+
+ " <column name=\"attr\"\n"+
+ " javaName=\"attr\"\n"+
+ " type=\"INTEGER\"\n"+
+ " primaryKey=\"true\"\n"+
+ " required=\"true\"\n"+
+ " />\n"+
+ " <column name=\"name\"\n"+
+ " javaName=\"name\"\n"+
+ " type=\"VARCHAR\"\n"+
+ " size=\"128\"\n"+
+ " />\n"+
+ " </table>\n"+
+ " <table name=\"B\">\n"+
+ " <column name=\"attr\"\n"+
+ " javaName=\"attr\"\n"+
+ " type=\"INTEGER\"\n"+
+ " primaryKey=\"true\"\n"+
+ " required=\"true\"\n"+
+ " />\n"+
+ " <column name=\"fkA\"\n"+
+ " javaName=\"fkA\"\n"+
+ " type=\"INTEGER\"\n"+
+ " />\n"+
+ " <column name=\"nameB\"\n"+
+ " javaName=\"nameB\"\n"+
+ " type=\"VARCHAR\"\n"+
+ " size=\"128\"\n"+
+ " />\n"+
+ " <foreign-key foreignTable=\"A\">\n" +
+ " <reference local=\"fkA\" foreign=\"attr\"/>\n" +
+ " </foreign-key>"+
+ " </table>\n"+
+ " <table name=\"C\">\n"+
+ " <column name=\"attr\"\n"+
+ " javaName=\"attr\"\n"+
+ " type=\"INTEGER\"\n"+
+ " primaryKey=\"true\"\n"+
+ " required=\"true\"\n"+
+ " />\n"+
+ " <column name=\"fkB\"\n"+
+ " javaName=\"fkB\"\n"+
+ " type=\"INTEGER\"\n"+
+ " />\n"+
+ " <column name=\"nameC\"\n"+
+ " javaName=\"nameC\"\n"+
+ " type=\"VARCHAR\"\n"+
+ " size=\"128\"\n"+
+ " />\n"+
+ " <foreign-key foreignTable=\"B\">\n" +
+ " <reference local=\"fkB\" foreign=\"attr\"/>\n" +
+ " </foreign-key>"+
+ " </table>\n"+
+ "</database>",
+ result);
+ }
+
+ /**
+ * Test: inherited autoincrement attribute with 'database' value and
+ * table per subclass inheritance via "super"-reference.
+ * Expect autoincrement=false for all subclasses and
+ * the extent-class element must not created because we use "super"-reference and
+ * the super-class fields must not be declared in the sub-classes
+ */
+ public void testTablePerSubclassAutoincrementDatabase_3()
+ {
+ addClass(
+ "test.A",
+ "package test;\n"+
+ "/** @ojb.class */\n"+
+ "public class A {\n"+
+ " /** @ojb.field primarykey=\"true\"\n"+
+ " * autoincrement=\"database\"\n"+
+ " * access=\"readonly\"\n"+
+ " */\n"+
+ " private int attr;\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String name;\n"+
+ "}\n");
+ addClass(
+ "test.B",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " * @ojb.reference class-ref=\"super\"\n"+
+ " */\n"+
+ "public class B extends A {\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameB;\n"+
+ "}\n");
+ addClass(
+ "test.C",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " * @ojb.reference class-ref=\"super\"\n"+
+ " */\n"+
+ "public class C extends B {\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameC;\n"+
+ "}\n");
+ String result = runOjbXDoclet(OJB_DEST_FILE);
+ //System.out.println("##" + result);
+ assertEqualsOjbDescriptorFile(
+ "<class-descriptor\n"+
+ " class=\"test.A\"\n"+
+ " table=\"A\"\n"+
+ ">\n"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " autoincrement=\"true\"\n"+
+ " access=\"readonly\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"name\"\n"+
+ " column=\"name\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ "</class-descriptor>\n"+
+ "<class-descriptor\n"+
+ " class=\"test.B\"\n"+
+ " table=\"B\"\n"+
+ ">\n"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " access=\"readwrite\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameB\"\n"+
+ " column=\"nameB\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <reference-descriptor\n"+
+ " name=\"super\"\n"+
+ " class-ref=\"test.A\"\n"+
+ " >\n"+
+ " </reference-descriptor>\n"+
+ "</class-descriptor>\n"+
+ "<class-descriptor\n"+
+ " class=\"test.C\"\n"+
+ " table=\"C\"\n"+
+ ">\n"+
+ " <field-descriptor\n"+
+ " name=\"attr\"\n"+
+ " column=\"attr\"\n"+
+ " jdbc-type=\"INTEGER\"\n"+
+ " primarykey=\"true\"\n"+
+ " access=\"readwrite\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <field-descriptor\n"+
+ " name=\"nameC\"\n"+
+ " column=\"nameC\"\n"+
+ " jdbc-type=\"VARCHAR\"\n"+
+ " length=\"128\"\n"+
+ " >\n"+
+ " </field-descriptor>\n"+
+ " <reference-descriptor\n"+
+ " name=\"super\"\n"+
+ " class-ref=\"test.B\"\n"+
+ " >\n"+
+ " </reference-descriptor>\n"+
+ "</class-descriptor>",
+ result);
+ result = runTorqueXDoclet(TORQUE_DEST_FILE, "ojbtest");
+ //System.out.println("##" + result);
+ assertEqualsTorqueSchemaFile(
+ "<database name=\"ojbtest\">\n"+
+ " <table name=\"A\">\n"+
+ " <column name=\"attr\"\n"+
+ " javaName=\"attr\"\n"+
+ " type=\"INTEGER\"\n"+
+ " primaryKey=\"true\"\n"+
+ " required=\"true\"\n"+
+ " autoIncrement=\"true\"\n"+
+ " />\n"+
+ " <column name=\"name\"\n"+
+ " javaName=\"name\"\n"+
+ " type=\"VARCHAR\"\n"+
+ " size=\"128\"\n"+
+ " />\n"+
+ " </table>\n"+
+ " <table name=\"B\">\n"+
+ " <column name=\"attr\"\n"+
+ " javaName=\"attr\"\n"+
+ " type=\"INTEGER\"\n"+
+ " primaryKey=\"true\"\n"+
+ " required=\"true\"\n"+
+ " />\n"+
+ " <column name=\"nameB\"\n"+
+ " javaName=\"nameB\"\n"+
+ " type=\"VARCHAR\"\n"+
+ " size=\"128\"\n"+
+ " />\n"+
+ " <foreign-key foreignTable=\"A\">\n" +
+ " <reference local=\"attr\" foreign=\"attr\"/>\n" +
+ " </foreign-key>"+
+ " </table>\n"+
+ " <table name=\"C\">\n"+
+ " <column name=\"attr\"\n"+
+ " javaName=\"attr\"\n"+
+ " type=\"INTEGER\"\n"+
+ " primaryKey=\"true\"\n"+
+ " required=\"true\"\n"+
+ " />\n"+
+ " <column name=\"nameC\"\n"+
+ " javaName=\"nameC\"\n"+
+ " type=\"VARCHAR\"\n"+
+ " size=\"128\"\n"+
+ " />\n"+
+ " <foreign-key foreignTable=\"B\">\n" +
+ " <reference local=\"attr\" foreign=\"attr\"/>\n" +
+ " </foreign-key>"+
+ " </table>\n"+
+ "</database>",
+ result);
+ }
+
+ /**
+ * Test: all inheritance strategies in one class hierarchy - not recommended in real application, only for test!!
+ */
+ public void testAllInheritanceInOne()
+ {
+ addClass(
+ "test.A",
+ "package test;\n"+
+ "/** @ojb.class */\n"+
+ "public class A {\n"+
+ " /** @ojb.field primarykey=\"true\"\n"+
+ " * autoincrement=\"ojb\"\n"+
+ " */\n"+
+ " private int attr;\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String name;\n"+
+ "}\n");
+ addClass(
+ "test.B",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " */\n"+
+ "public class B extends A {\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameB;\n"+
+ "}\n");
+ addClass(
+ "test.C",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " */\n"+
+ "public class C extends B {\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameC;\n"+
+ "}\n");
+
+
+ addClass(
+ "test.TpsB",
+ "package test;\n"+
+ "/** @ojb.class */\n"+
+ "public class TpsB extends B {\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameTpsB;\n"+
+ "}\n");
+ addClass(
+ "test.TpsC",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " * @ojb.reference class-ref=\"super\"\n"+
+ " */\n"+
+ "public class TpsC extends TpsB {\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameTpsC;\n"+
+ "}\n");
+ addClass(
+ "test.TpsD",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " * @ojb.reference class-ref=\"super\"\n"+
+ " */\n"+
+ "public class TpsD extends TpsC {\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameTpsD;\n"+
+ "}\n");
+
+
+ addClass(
+ "test.TphB",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " * table=\"ABC\"\n"+
+ " */\n"+
+ "public class TphB extends B {\n"+
+ " /** @ojb.field */\n"+
+ " private String ojbConcreteClass;\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameTphB;\n"+
+ "}\n");
+ addClass(
+ "test.TphC",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " * table=\"ABC\"\n"+
+ " */\n"+
+ "public class TphC extends TphB {\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameTphC;\n"+
+ "}\n");
+ addClass(
+ "test.TphD",
+ "package test;\n"+
+ "/** @ojb.class\n"+
+ " * table=\"ABC\"\n"+
+ " */\n"+
+ "public class TphD extends TphC {\n"+
+ " /** @ojb.field length=\"128\" */\n"+
+ " private String nameTphD;\n"+
+ "}\n");
+ String result = runOjbXDoclet(OJB_DEST_FILE);
+ //System.out.println("##\n" + result);
+ assertEqualsOjbDescriptorFile(
+ "<class-descriptor\n" +
+ " class=\"test.A\"\n" +
+ " table=\"A\"\n" +
+ ">\n" +
+ " <extent-class class-ref=\"test.B\"/>\n" +
+ " <field-descriptor\n" +
+ " name=\"attr\"\n" +
+ " column=\"attr\"\n" +
+ " jdbc-type=\"INTEGER\"\n" +
+ " primarykey=\"true\"\n" +
+ " autoincrement=\"true\"\n" +
+ " >\n" +
+ " </field-descriptor>\n" +
+ " <field-descriptor\n" +
+ " name=\"name\"\n" +
+ " column=\"name\"\n" +
+ " jdbc-type=\"VARCHAR\"\n" +
+ " length=\"128\"\n" +
+ " >\n" +
+ " </field-descriptor>\n" +
+ "</class-descriptor>\n" +
+ "<class-descriptor\n" +
+ " class=\"test.B\"\n" +
+ " table=\"B\"\n" +
+ ">\n" +
+ " <extent-class class-ref=\"test.C\"/>\n" +
+ " <extent-class class-ref=\"test.TphB\"/>\n" +
+ " <extent-class class-ref=\"test.TpsB\"/>\n" +
+ " <field-descriptor\n" +
+ " name=\"attr\"\n" +
+ " column=\"attr\"\n" +
+ " jdbc-type=\"INTEGER\"\n" +
+ " primarykey=\"true\"\n" +
+ " autoincrement=\"true\"\n" +
+ " >\n" +
+ " </field-descriptor>\n" +
+ " <field-descriptor\n" +
+ " name=\"name\"\n" +
+ " column=\"name\"\n" +
+ " jdbc-type=\"VARCHAR\"\n" +
+ " length=\"128\"\n" +
+ " >\n" +
+ " </field-descriptor>\n" +
+ " <field-descriptor\n" +
+ " name=\"nameB\"\n" +
+ " column=\"nameB\"\n" +
+ " jdbc-type=\"VARCHAR\"\n" +
+ " length=\"128\"\n" +
+ " >\n" +
+ " </field-descriptor>\n" +
+ "</class-descriptor>\n" +
+ "<class-descriptor\n" +
+ " class=\"test.C\"\n" +
+ " table=\"C\"\n" +
+ ">\n" +
+ " <field-descriptor\n" +
+ " name=\"attr\"\n" +
+ " column=\"attr\"\n" +
+ " jdbc-type=\"INTEGER\"\n" +
+ " primarykey=\"true\"\n" +
+ " autoincrement=\"true\"\n" +
+ " >\n" +
+ " </field-descriptor>\n" +
+ " <field-descriptor\n" +
+ " name=\"name\"\n" +
+ " column=\"name\"\n" +
+ " jdbc-type=\"VARCHAR\"\n" +
+ " length=\"128\"\n" +
+ " >\n" +
+ " </field-descriptor>\n" +
+ " <field-descriptor\n" +
+ " name=\"nameB\"\n" +
+ " column=\"nameB\"\n" +
+ " jdbc-type=\"VARCHAR\"\n" +
+ " length=\"128\"\n" +
+ " >\n" +
+ " </field-descriptor>\n" +
+ " <field-descriptor\n" +
+ " name=\"nameC\"\n" +
+ " column=\"nameC\"\n" +
+ " jdbc-type=\"VARCHAR\"\n" +
+ " length=\"128\"\n" +
+ " >\n" +
+ " </field-descriptor>\n" +
+ "</class-descriptor>\n" +
+ "<class-descriptor\n" +
+ " class=\"test.TphB\"\n" +
+ " table=\"ABC\"\n" +
+ ">\n" +
+ " <extent-class class-ref=\"test.TphC\"/>\n" +
+ " <field-descriptor\n" +
+ " name=\"attr\"\n" +
+ " column=\"attr\"\n" +
+ " jdbc-type=\"INTEGER\"\n" +
+ " primarykey=\"true\"\n" +
+ " autoincrement=\"true\"\n" +
+ " >\n" +
+ " </field-descriptor>\n" +
+ " <field-descriptor\n" +
+ " name=\"name\"\n" +
+ " column=\"name\"\n" +
+ " jdbc-type=\"VARCHAR\"\n" +
+ " length=\"128\"\n" +
+ " >\n" +
+ " </field-descriptor>\n" +
+ " <field-descriptor\n" +
+ " name=\"nameB\"\n" +
+ " column=\"nameB\"\n" +
+ " jdbc-type=\"VARCHAR\"\n" +
+ " length=\"128\"\n" +
+ " >\n" +
+ " </field-descriptor>\n" +
+ " <field-descriptor\n" +
+ " name=\"ojbConcreteClass\"\n" +
+ " column=\"ojbConcreteClass\"\n" +
+ " jdbc-type=\"VARCHAR\"\n" +
+ " length=\"254\"\n" +
+ " >\n" +
+ " </field-descriptor>\n" +
+ " <field-descriptor\n" +
+ " name=\"nameTphB\"\n" +
+ " column=\"nameTphB\"\n" +
+ " jdbc-type=\"VARCHAR\"\n" +
+ " length=\"128\"\n" +
+ " >\n" +
+ " </field-descriptor>\n" +
+ "</class-descriptor>\n" +
+ "<class-descriptor\n" +
+ " class=\"test.TphC\"\n" +
+ " table=\"ABC\"\n" +
+ ">\n" +
+ " <extent-class class-ref=\"test.TphD\"/>\n" +
+ " <field-descriptor\n" +
+ " name=\"attr\"\n" +
+ " column=\"attr\"\n" +
+ " jdbc-type=\"INTEGER\"\n" +
+ " primarykey=\"true\"\n" +
+ " autoincrement=\"true\"\n" +
+ " >\n" +
+ " </field-descriptor>\n" +
+ " <field-descriptor\n" +
+ " name=\"name\"\n" +
+ " column=\"name\"\n" +
+ " jdbc-type=\"VARCHAR\"\n" +
+ " length=\"128\"\n" +
+ " >\n" +
+ " </field-descriptor>\n" +
+ " <field-descriptor\n" +
+ " name=\"nameB\"\n" +
+ " column=\"nameB\"\n" +
+ " jdbc-type=\"VARCHAR\"\n" +
+ " length=\"128\"\n" +
+ " >\n" +
+ " </field-descriptor>\n" +
+ " <field-descriptor\n" +
+ " name=\"ojbConcreteClass\"\n" +
+ " column=\"ojbConcreteClass\"\n" +
+ " jdbc-type=\"VARCHAR\"\n" +
+ " length=\"254\"\n" +
+ " >\n" +
+ " </field-descriptor>\n" +
+ " <field-descriptor\n" +
+ " name=\"nameTphB\"\n" +
+ " column=\"nameTphB\"\n" +
+ " jdbc-type=\"VARCHAR\"\n" +
+ " length=\"128\"\n" +
+ " >\n" +
+ " </field-descriptor>\n" +
+ " <field-descriptor\n" +
+ " name=\"nameTphC\"\n" +
+ " column=\"nameTphC\"\n" +
+ " jdbc-type=\"VARCHAR\"\n" +
+ " length=\"128\"\n" +
+ " >\n" +
+ " </field-descriptor>\n" +
+ "</class-descriptor>\n" +
+ "<class-descriptor\n" +
+ " class=\"test.TphD\"\n" +
+ " table=\"ABC\"\n" +
+ ">\n" +
+ " <field-descriptor\n" +
+ " name=\"attr\"\n" +
+ " column=\"attr\"\n" +
+ " jdbc-type=\"INTEGER\"\n" +
[... 288 lines stripped ...]
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org