You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jdo-commits@db.apache.org by cl...@apache.org on 2021/05/07 23:11:57 UTC

[db-jdo] 15/43: JDO-369 Completeness test doesn't clean up instances of persistent interfaces

This is an automated email from the ASF dual-hosted git repository.

clr pushed a commit to branch origin/2.0.1
in repository https://gitbox.apache.org/repos/asf/db-jdo.git

commit c0a57a740c13f5dcb22dcb278e1e3cd4b531f15c
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Thu Apr 20 11:51:36 2006 +0000

    JDO-369 Completeness test doesn't clean up instances of persistent interfaces
---
 .../apache/jdo/tck/mapping/CompletenessTest.java   | 13 ++++----
 .../apache/jdo/tck/pc/company/CompanyFactory.java  |  1 +
 .../pc/company/CompanyFactoryConcreteClass.java    | 12 ++++++++
 .../jdo/tck/pc/company/CompanyFactoryPMClass.java  | 11 +++++++
 .../tck/pc/company/CompanyFactoryPMInterface.java  | 11 +++++++
 .../jdo/tck/pc/company/CompanyModelReader.java     | 35 ++++++++--------------
 .../apache/jdo/tck/pc/company/package-standard.orm | 18 +++++++++++
 .../apache/jdo/tck/pc/company/package-standard.orm | 18 +++++++++++
 tck20/src/sql/derby/applicationidentity/schema.sql |  3 ++
 tck20/src/sql/derby/datastoreidentity/schema.sql   |  3 ++
 10 files changed, 97 insertions(+), 28 deletions(-)

diff --git a/tck20/src/java/org/apache/jdo/tck/mapping/CompletenessTest.java b/tck20/src/java/org/apache/jdo/tck/mapping/CompletenessTest.java
index cb01de4..de9d90f 100644
--- a/tck20/src/java/org/apache/jdo/tck/mapping/CompletenessTest.java
+++ b/tck20/src/java/org/apache/jdo/tck/mapping/CompletenessTest.java
@@ -47,6 +47,9 @@ public class CompletenessTest extends JDO_Test {
     
     /** */
     private final boolean isTestToBePerformed = isTestToBePerformed();
+
+    /** */
+    private CompanyModelReader reader;
     
     /** */
     protected List rootOids;
@@ -68,7 +71,11 @@ public class CompletenessTest extends JDO_Test {
      */
     protected void localSetUp() {
         if (isTestToBePerformed) {
-            addTearDownClass(CompanyModelReader.getTearDownClasses());
+            // register the default factory
+            CompanyFactoryRegistry.registerFactory();
+            // get new obj graph to compare persistent graph with
+            reader = new CompanyModelReader(inputFilename);
+            addTearDownClass(reader.getTearDownClassesFromFactory());
             getPM();
             CompanyFactoryRegistry.registerFactory(pm);
             CompanyModelReader reader = new CompanyModelReader(inputFilename);
@@ -89,10 +96,6 @@ public class CompletenessTest extends JDO_Test {
     /** */
     public void test() {
         if (isTestToBePerformed) {
-            // register the default factory
-            CompanyFactoryRegistry.registerFactory();
-            // get new obj graph to compare persistent graph with
-            CompanyModelReader reader = new CompanyModelReader(inputFilename);
             List rootList = reader.getRootList();
             
             getPM();
diff --git a/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyFactory.java b/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyFactory.java
index 7009cd0..9f01799 100644
--- a/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyFactory.java
+++ b/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyFactory.java
@@ -63,4 +63,5 @@ public interface CompanyFactory {
             String first, String last, String middle,
             Date born, IAddress addr, Date hired, double wage); 
     IProject newProject(long projid, String name, BigDecimal budget);
+    Class[] getTearDownClasses();
 }
diff --git a/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyFactoryConcreteClass.java b/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyFactoryConcreteClass.java
index e077b9c..61f06c6 100644
--- a/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyFactoryConcreteClass.java
+++ b/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyFactoryConcreteClass.java
@@ -28,6 +28,14 @@ import javax.jdo.PersistenceManager;
  */
 public  class CompanyFactoryConcreteClass implements CompanyFactory {
 
+    /** */
+    public static final Class[] tearDownClasses = new Class[] {
+        DentalInsurance.class, MedicalInsurance.class,
+        Person.class, Employee.class, 
+        PartTimeEmployee.class, FullTimeEmployee.class,  
+        Project.class, Department.class, Company.class
+    };
+
     public CompanyFactoryConcreteClass(PersistenceManager pm) {
     }
 
@@ -131,4 +139,8 @@ public  class CompanyFactoryConcreteClass implements CompanyFactory {
             BigDecimal budget) {
         return new Project(projid, name, budget);
     }
+
+    public Class[] getTearDownClasses() {
+        return tearDownClasses;
+    }
 }
diff --git a/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyFactoryPMClass.java b/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyFactoryPMClass.java
index 632933c..a54113e 100644
--- a/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyFactoryPMClass.java
+++ b/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyFactoryPMClass.java
@@ -27,6 +27,14 @@ import javax.jdo.PersistenceManager;
 public class CompanyFactoryPMClass 
         extends CompanyFactoryAbstractImpl {
     
+    /** */
+    public static final Class[] tearDownClasses = new Class[] {
+        DentalInsurance.class, IMedicalInsurance.class,
+        Person.class, Employee.class, 
+        PartTimeEmployee.class, FullTimeEmployee.class,  
+        Project.class, Department.class, Company.class
+    };
+
     /**
      * Creates a new instance of CompanyFactoryPMInterface 
      */
@@ -66,4 +74,7 @@ public class CompanyFactoryPMClass
         return (IProject)pm.newInstance(Project.class);
     }
 
+    public Class[] getTearDownClasses() {
+        return tearDownClasses;
+    }
 }
diff --git a/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyFactoryPMInterface.java b/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyFactoryPMInterface.java
index 7de5d58..ba4067c 100644
--- a/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyFactoryPMInterface.java
+++ b/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyFactoryPMInterface.java
@@ -27,6 +27,14 @@ import javax.jdo.PersistenceManager;
 public class CompanyFactoryPMInterface 
         extends CompanyFactoryAbstractImpl {
     
+    /** */
+    public static final Class[] tearDownClasses = new Class[] {
+        IDentalInsurance.class, IMedicalInsurance.class,
+        IPerson.class, IEmployee.class, 
+        IPartTimeEmployee.class, IFullTimeEmployee.class,  
+        IProject.class, IDepartment.class, ICompany.class
+    };
+
     /**
      * Creates a new instance of CompanyFactoryPMInterface 
      */
@@ -66,4 +74,7 @@ public class CompanyFactoryPMInterface
         return (IProject)pm.newInstance(IProject.class);
     }
 
+    public Class[] getTearDownClasses() {
+        return tearDownClasses;
+    }
 }
diff --git a/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyModelReader.java b/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyModelReader.java
index fe01d2d..1780614 100644
--- a/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyModelReader.java
+++ b/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyModelReader.java
@@ -47,24 +47,9 @@ public class CompanyModelReader extends XmlBeanFactory {
      */
     public static final String BEAN_FACTORY_NAME = "companyFactory";
 
-    /** All classes in the model 
-     */
-    private static final Class[] allClasses = new Class[] {
-        Address.class, Company.class, 
-        DentalInsurance.class, Department.class, Employee.class,
-        FullTimeEmployee.class, Insurance.class, 
-        MedicalInsurance.class, PartTimeEmployee.class, Person.class, 
-        Project.class
-    };
-    
-    /** All classes in the model 
-     */
-    private static final Class[] tearDownClasses = new Class[] {
-        DentalInsurance.class, MedicalInsurance.class,
-        Person.class, Employee.class, PartTimeEmployee.class, FullTimeEmployee.class,  
-        Project.class, Department.class, Company.class
-    };
-    
+    /** The company factory instance. */
+    private CompanyFactory companyFactory;
+
     /** 
      * Create a CompanyModelReader for the specified resourceName. 
      * @param resourceName the name of the resource
@@ -112,7 +97,8 @@ public class CompanyModelReader extends XmlBeanFactory {
         CustomDateEditor dateEditor = 
             new CustomDateEditor(formatter, true);
         registerCustomEditor(Date.class, dateEditor);
-        addSingleton(BEAN_FACTORY_NAME, CompanyFactoryRegistry.getInstance());
+        companyFactory = CompanyFactoryRegistry.getInstance();
+        addSingleton(BEAN_FACTORY_NAME, companyFactory);
     }
     
     // Convenience methods
@@ -249,17 +235,20 @@ public class CompanyModelReader extends XmlBeanFactory {
         return (Project)getBean(name, Project.class);
     }
     
-    public static Class[] getAllClasses() {
-        return allClasses;
+    /**
+     * @return Returns the tearDownClasses.
+     */
+    public Class[] getTearDownClassesFromFactory() {
+        return companyFactory.getTearDownClasses();
     }
     
     /**
      * @return Returns the tearDownClasses.
      */
     public static Class[] getTearDownClasses() {
-        return tearDownClasses;
+        return CompanyFactoryConcreteClass.tearDownClasses;
     }
-    
+
     public static Date stringToUtilDate(String value) {
         return ConversionHelper.toUtilDate(DATE_PATTERN, "America/New_York", Locale.US, value);
     }
diff --git a/tck20/src/orm/applicationidentity/org/apache/jdo/tck/pc/company/package-standard.orm b/tck20/src/orm/applicationidentity/org/apache/jdo/tck/pc/company/package-standard.orm
index 86f0a82..02838de 100644
--- a/tck20/src/orm/applicationidentity/org/apache/jdo/tck/pc/company/package-standard.orm
+++ b/tck20/src/orm/applicationidentity/org/apache/jdo/tck/pc/company/package-standard.orm
@@ -10,6 +10,9 @@ has application identity.
     <package name="org.apache.jdo.tck.pc.company">
 
         <class name="Company" table="companies">
+            <inheritance strategy="new-table">
+                <discriminator strategy="class-name" column="DISCRIMINATOR"/>
+            </inheritance>
             <field name="companyid" column="ID"/>
             <field name="name" column="NAME">
               <column name="NAME" sql-type="VARCHAR"/>
@@ -29,6 +32,9 @@ has application identity.
         </class>
 
         <class name="Department" table="departments">
+            <inheritance strategy="new-table">
+                <discriminator strategy="class-name" column="DISCRIMINATOR"/>
+            </inheritance>
             <field name="deptid" column="ID"/>
             <field name="name" column="NAME"/>
             <field name="company" column="COMPANYID"/>
@@ -144,6 +150,9 @@ has application identity.
         </class>
 
         <class name="Project" table="projects">
+            <inheritance strategy="new-table">
+                <discriminator strategy="class-name" column="DISCRIMINATOR"/>
+            </inheritance>
             <field name="projid" column="PROJID"/>
             <field name="name" column="NAME"/>
             <field name="budget">
@@ -164,6 +173,9 @@ has application identity.
         </class>
 
         <interface name="ICompany" table="companies">
+            <inheritance strategy="new-table">
+                <discriminator strategy="class-name" column="DISCRIMINATOR"/>
+            </inheritance>
             <property name="companyid" column="ID"/>
             <property name="name" column="NAME">
               <column name="NAME" sql-type="VARCHAR"/>
@@ -183,6 +195,9 @@ has application identity.
         </interface>
 
         <interface name="IDepartment" table="departments">
+            <inheritance strategy="new-table">
+                <discriminator strategy="class-name" column="DISCRIMINATOR"/>
+            </inheritance>
             <property name="deptid" column="ID"/>
             <property name="name" column="NAME"/>
             <property name="company" column="COMPANYID"/>
@@ -298,6 +313,9 @@ has application identity.
         </interface>
 
         <interface name="IProject" table="projects">
+            <inheritance strategy="new-table">
+                <discriminator strategy="class-name" column="DISCRIMINATOR"/>
+            </inheritance>
             <property name="projid" column="PROJID"/>
             <property name="name" column="NAME"/>
             <property name="budget">
diff --git a/tck20/src/orm/datastoreidentity/org/apache/jdo/tck/pc/company/package-standard.orm b/tck20/src/orm/datastoreidentity/org/apache/jdo/tck/pc/company/package-standard.orm
index 3a22898..2f5b888 100644
--- a/tck20/src/orm/datastoreidentity/org/apache/jdo/tck/pc/company/package-standard.orm
+++ b/tck20/src/orm/datastoreidentity/org/apache/jdo/tck/pc/company/package-standard.orm
@@ -11,6 +11,9 @@ has datastore identity.
 
         <class name="Company" table="companies">
             <datastore-identity strategy="identity" column="DATASTORE_IDENTITY"/>
+            <inheritance strategy="new-table">
+                <discriminator strategy="class-name" column="DISCRIMINATOR"/>
+            </inheritance>
             <field name="companyid" column="ID"/>
             <field name="name" column="NAME">
               <column name="NAME" sql-type="VARCHAR"/>
@@ -43,6 +46,9 @@ has datastore identity.
 
         <class name="Department" table="departments">
             <datastore-identity strategy="identity" column="DATASTORE_IDENTITY"/>
+            <inheritance strategy="new-table">
+                <discriminator strategy="class-name" column="DISCRIMINATOR"/>
+            </inheritance>
             <field name="deptid" column="ID"/>
             <field name="name" column="NAME"/>
             <field name="company" column="COMPANYID"/>
@@ -149,6 +155,9 @@ has datastore identity.
 
         <class name="Project" table="projects">
             <datastore-identity strategy="identity" column="DATASTORE_IDENTITY"/>
+            <inheritance strategy="new-table">
+                <discriminator strategy="class-name" column="DISCRIMINATOR"/>
+            </inheritance>
             <field name="projid" column="PROJID"/>
             <field name="name" column="NAME"/>
             <field name="budget">
@@ -168,6 +177,9 @@ has datastore identity.
 
         <interface name="ICompany" table="companies">
             <datastore-identity strategy="identity" column="DATASTORE_IDENTITY"/>
+            <inheritance strategy="new-table">
+                <discriminator strategy="class-name" column="DISCRIMINATOR"/>
+            </inheritance>
             <property name="companyid" column="ID"/>
             <property name="name" column="NAME">
               <column name="NAME" sql-type="VARCHAR"/>
@@ -188,6 +200,9 @@ has datastore identity.
 
         <interface name="IDepartment" table="departments">
             <datastore-identity strategy="identity" column="DATASTORE_IDENTITY"/>
+            <inheritance strategy="new-table">
+                <discriminator strategy="class-name" column="DISCRIMINATOR"/>
+            </inheritance>
             <property name="deptid" column="ID"/>
             <property name="name" column="NAME"/>
             <property name="company" column="COMPANYID"/>
@@ -306,6 +321,9 @@ has datastore identity.
 
         <interface name="IProject" table="projects">
             <datastore-identity strategy="identity" column="DATASTORE_IDENTITY"/>
+            <inheritance strategy="new-table">
+                <discriminator strategy="class-name" column="DISCRIMINATOR"/>
+            </inheritance>
             <property name="projid" column="PROJID"/>
             <property name="name" column="NAME"/>
             <property name="budget">
diff --git a/tck20/src/sql/derby/applicationidentity/schema.sql b/tck20/src/sql/derby/applicationidentity/schema.sql
index f075c68..5be13c8 100644
--- a/tck20/src/sql/derby/applicationidentity/schema.sql
+++ b/tck20/src/sql/derby/applicationidentity/schema.sql
@@ -182,6 +182,7 @@ CREATE TABLE companies (
     STATE CHAR(2),
     ZIPCODE CHAR(5),
     COUNTRY VARCHAR(64),
+    DISCRIMINATOR VARCHAR(255),
     CONSTRAINT COMPS_PK PRIMARY KEY (ID)
 );
 
@@ -190,6 +191,7 @@ CREATE TABLE departments (
     NAME VARCHAR(32) NOT NULL,
     EMP_OF_THE_MONTH INTEGER,
     COMPANYID INTEGER REFERENCES companies,
+    DISCRIMINATOR VARCHAR(255),
     CONSTRAINT DEPTS_PK PRIMARY KEY (ID)
 );
 
@@ -232,6 +234,7 @@ CREATE TABLE projects (
     PROJID INTEGER NOT NULL,
     NAME VARCHAR(32) NOT NULL,
     BUDGET DECIMAL(11,2) NOT NULL,
+    DISCRIMINATOR VARCHAR(255),
     CONSTRAINT PROJS_PK PRIMARY KEY (PROJID)
 );
 
diff --git a/tck20/src/sql/derby/datastoreidentity/schema.sql b/tck20/src/sql/derby/datastoreidentity/schema.sql
index adbaa09..bdc376a 100644
--- a/tck20/src/sql/derby/datastoreidentity/schema.sql
+++ b/tck20/src/sql/derby/datastoreidentity/schema.sql
@@ -130,6 +130,7 @@ CREATE TABLE companies (
     STATE CHAR(2),
     ZIPCODE CHAR(5),
     COUNTRY VARCHAR(64),
+    DISCRIMINATOR VARCHAR(255),
     CONSTRAINT COMPS_PK PRIMARY KEY (DATASTORE_IDENTITY)
 );
 
@@ -139,6 +140,7 @@ CREATE TABLE departments (
     NAME VARCHAR(32) NOT NULL,
     EMP_OF_THE_MONTH INTEGER,
     COMPANYID INTEGER REFERENCES companies,
+    DISCRIMINATOR VARCHAR(255),
     CONSTRAINT DEPTS_PK PRIMARY KEY (DATASTORE_IDENTITY)
 );
 
@@ -185,6 +187,7 @@ CREATE TABLE projects (
     PROJID INTEGER NOT NULL,
     NAME VARCHAR(32) NOT NULL,
     BUDGET DECIMAL(11,2) NOT NULL,
+    DISCRIMINATOR VARCHAR(255),
     CONSTRAINT PROJS_UK UNIQUE (PROJID),
     CONSTRAINT PROJS_PK PRIMARY KEY (DATASTORE_IDENTITY)
 );