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