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:42 UTC

[db-jdo] branch origin/2.0.1 created (now 1c34758)

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

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


      at 1c34758  Use cvs 2.0.1 branch, not source distribution to run TCK.

This branch includes the following new commits:

     new b391760  Create JDO 2.0 final release
     new 5683d9d  Remove projects and files that are not being released
     new 96022f9  Remove project not being released with JDO 2.0
     new 4446837  Updated project.xml to change dependencies from SNAPSHOT to 2.0
     new 4bb752f  JDO-356 Update RunRules.html
     new ba68ae7  JDO-356 Update README.txt
     new 919cd8d  JDO-293
     new d00b636  JDO-293
     new af58612  JDO-358 Fixed incorrect metadata for persistent interfaces
     new 073a834  JDO-293 removed statement on protected member coverage
     new 95fe3ad  JDO-359 Remove DOCTYPE from .jdo file
     new 84ee1f6  JDO-362 Fixed omitted makePersistent call in NontransactionalWrite
     new 45a6ae1  JDO-364 - Completness tests fail with generated implementation classes for interfaces
     new 534c7d1  JDO-366 Updated RunRules.html
     new c0a57a7  JDO-369 Completeness test doesn't clean up instances of persistent interfaces
     new 48ac174  JDO-370: fix invalid query in SetterReplacePreviousValues test case
     new 0637492  JDO-371: fix error message in CloseOfExtentIteratorIsIteratorSpecific
     new 4978bff  JDO-372: cleanup pm2 instances in test case ConcurrentPersistenceManagersSameClasses
     new a54fbbf  JDO-376: need to call closePM on correct pm instance
     new 2915cf7  JDO-374 add tck20.dist goal and dist postGoal copying the release articats to the releases directory
     new d594503  JDO-375: obtain tearDown classes from correct reader + fix list of tearDown classes in CompanyFactoryPMClass
     new b0e07a3  JDO-375: remove classes Person and Emplyoee from the list of tearDown classes in CompletenessTest
     new 080336e  JDO-375: adds names to the foreign key constraints for the company model in schema 0
     new e983960  Create branch for TCK bug fixes
     new 0143956  Updated initial 2.0.1 branch: - Removed api20 directory. - Updated currentVersion entry to 2.0.1 in core20, enhancer20, and tck20. - Updated the JPOX dependency to 1.1.1. - Updated the Derby dependency to 10.1.3.1.
     new 7ee075c  JDO-412: set retainValues=false to make sure the instance gets loaded in the next tx and jdoPostLoad is called
     new c4ee5ac  JDO-401: merged trunk change into branch 2.0.1
     new 0914e35  JDO-400: merged trunk change into branch 2.0.1
     new 037fe6f  JDO-413 updated test to allow either exception or not for field access after preDelete
     new 6780c8c  JDO-411: merged changes from trunk into branch 2.0.1
     new 675a30a  JDO-410: merge changes from trunk into branch 2.0.1
     new 26a322c  JDO-399, JDO-395: merge changes from trunk into branch 2.0.1
     new 44e933a  JDO-426: update both sides of the employee<->project relationship
     new 319899d  JDO-415
     new 4db841c  JDO-345: test class MethodsAndObjectConstructionNotSupported now checks for mutating Collection methods being called
     new 2c56116  JDO-404: changed test GetFetchPlan to not check whether fields are loaded because a certain fetch group is active
     new f280a57  JDO-419 JDO-424 Changed state transition table to use UNSPECIFIED where the specification is unclear
     new 73d0998  JDO-427 JDO-429 JDO-431 StateTransitionsReturnedObjects.java is modified to make several state transitions UNSPECIFIED, since the specification is ambiguous. These changes apply only to the branches/2.0.1, as we intend to clarify the specification for JDO 2.1 maintenance release.
     new 1fbe649  JDO-479
     new 7fb7234  JDO-513, JDO-514, and other test challenges
     new 25b5875  JDO-534 fixed
     new 901714b  JDO-534 removed debug printstacktrace
     new 1c34758  Use cvs 2.0.1 branch, not source distribution to run TCK.

The 43 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[db-jdo] 22/43: JDO-375: remove classes Person and Emplyoee from the list of tearDown classes in CompletenessTest

Posted by cl...@apache.org.
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 b0e07a3430d7b7fc2d1f6b717232573a5f3ad76e
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Sun Apr 30 20:48:43 2006 +0000

    JDO-375: remove classes Person and Emplyoee from the list of tearDown classes in CompletenessTest
---
 .../java/org/apache/jdo/tck/pc/company/CompanyFactoryConcreteClass.java  | 1 -
 tck20/src/java/org/apache/jdo/tck/pc/company/CompanyFactoryPMClass.java  | 1 -
 .../java/org/apache/jdo/tck/pc/company/CompanyFactoryPMInterface.java    | 1 -
 3 files changed, 3 deletions(-)

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 61f06c6..1617b3b 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
@@ -31,7 +31,6 @@ 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
     };
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 fb5accc..38a6343 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
@@ -30,7 +30,6 @@ public class CompanyFactoryPMClass
     /** */
     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
     };
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 ba4067c..8b79d1f 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
@@ -30,7 +30,6 @@ public class CompanyFactoryPMInterface
     /** */
     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
     };

[db-jdo] 16/43: JDO-370: fix invalid query in SetterReplacePreviousValues test case

Posted by cl...@apache.org.
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 48ac17469e884b0ed491922562128ce79c1b669d
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Thu Apr 20 15:40:00 2006 +0000

    JDO-370: fix invalid query in SetterReplacePreviousValues test case
---
 .../apache/jdo/tck/query/api/SetterReplacePreviousValues.java  | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/tck20/src/java/org/apache/jdo/tck/query/api/SetterReplacePreviousValues.java b/tck20/src/java/org/apache/jdo/tck/query/api/SetterReplacePreviousValues.java
index 2e22530..b1f71b1 100644
--- a/tck20/src/java/org/apache/jdo/tck/query/api/SetterReplacePreviousValues.java
+++ b/tck20/src/java/org/apache/jdo/tck/query/api/SetterReplacePreviousValues.java
@@ -73,7 +73,7 @@ public class SetterReplacePreviousValues extends QueryTest {
         /*EXCLUDE*/     null,
         /*WHERE*/       "personid == 1L",
         /*VARIABLES*/   null,
-        /*PARAMETERS*/  "String x",
+        /*PARAMETERS*/  null,
         /*IMPORTS*/     null,
         /*GROUP BY*/    null,
         /*ORDER BY*/    null,
@@ -136,22 +136,22 @@ public class SetterReplacePreviousValues extends QueryTest {
         query = VALID_QUERIES[index].getAPIQuery(getPM());
         query.setFilter("personid == 2L");
         executeJDOQuery(ASSERTION_FAILED, query, VALID_QUERIES[index].toString(), false, 
-                parameters, expectedResult[index], true);
+                null, expectedResult[index], true);
         query = VALID_QUERIES[index].getSingleStringQuery(getPM());
         query.setFilter("personid == 2L");
         executeJDOQuery(ASSERTION_FAILED, query, VALID_QUERIES[index].toString(), false, 
-                parameters, expectedResult[index], true);
+                null, expectedResult[index], true);
         
         // replace variable declaration
         index++;
         query = VALID_QUERIES[index].getAPIQuery(getPM());
         query.declareVariables("Employee e");
         executeJDOQuery(ASSERTION_FAILED, query, VALID_QUERIES[index].toString(), false, 
-                parameters, expectedResult[index], true);
+                null, expectedResult[index], true);
         query = VALID_QUERIES[index].getSingleStringQuery(getPM());
         query.declareVariables("Employee e");
         executeJDOQuery(ASSERTION_FAILED, query, VALID_QUERIES[index].toString(), false, 
-                parameters, expectedResult[index], true);
+                null, expectedResult[index], true);
     }
     
     /**

[db-jdo] 07/43: JDO-293

Posted by cl...@apache.org.
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 919cd8d0b791c9b7d74effb33b695922a35be776
Author: Michelle Caisse <mc...@apache.org>
AuthorDate: Sat Apr 1 00:59:10 2006 +0000

    JDO-293
---
 tck20/COVERAGE.txt                         |  80 +++++++++++++++++++++++++++++
 tck20/assertions/JdoTckAssertionsTable.sxc | Bin 113338 -> 109796 bytes
 2 files changed, 80 insertions(+)

diff --git a/tck20/COVERAGE.txt b/tck20/COVERAGE.txt
new file mode 100755
index 0000000..04ce249
--- /dev/null
+++ b/tck20/COVERAGE.txt
@@ -0,0 +1,80 @@
+TCK Coverage Document for JSR-243 Java Data Objects 2.0:
+
+TCK Overview:
+---------------
+The JDO TCK tests use the JUnit testing framework. The TCK is distributed 
+as a source tree archive containing test source and all required configuration 
+files, including the JDO metadatafiles and SQL scripts. Test build and 
+execution is driven by the maven.xml build script. The user can run the 
+full test suite, groups of tests, or individual tests. Test results and 
+configuration information are saved in a timestamped log directory.
+
+TCK Components:
+---------------
+- Installation instructions at db.apache.org/jdo/downloads
+- README.txt
+- Run Rules
+- maven.xml test driver
+- Test Suite
+- exclude list
+
+TCK Dependencies to be manually installed (documented in README.txt) :
+---------------
+- Maven 1.0.x
+- JNDI implementation
+
+TCK Dependencies  downloaded automatically by Maven:
+---------------
+- JDO2 components api20, core20, enhaner20, tck20
+- JUnit test framework
+- JPOX JDO implementation
+- Derby
+- Other third-party libraries
+
+Terminology of Metrics
+----------------------
+- Assertion: A specific statement of functionality or behavior derived 
+from a specification.
+  A testable assertion is one that can be validated in an implementation 
+by testing.
+- Test: A binary application (or script) comprised of one or more Test Cases.
+- Test Case: A single set of test inputs, execution conditions, and expected 
+results developed to verify an implementation's conformance with a specific 
+assertion.
+- Specification Assertion Coverage: Ratio of all assertions tested by at 
+least one test
+  case to the total number of testable assertions defined by the specification.
+- API Coverage: Ratio of methods directly exercised by test cases to the 
+total number of methods defined by the specification.
+
+Coverage
+--------
+- Total testable assertions: 1663 specification assertions, including all api
+signatures as well as text assertions identified through hand markup
+of the FrameMaker specification document using conditional text.
+Chapter 18 of the specification provides an XML grammar for metadata, for 
+which separate assertions were not developed. The metadata is extensively 
+tested by a small number of tests using a number of different metadata sets.
+- Tests: 538
+- Test cases: 1158
+- Assertion coverage: 1242/1663 = 75%
+- API Signature Coverage: 100% for all defined public and protected members
+
+Quality Assurance
+-----------------
+- TCK was run using representative configurations of the Reference 
+Implementation on
+  the following platforms:
+   * Windows 2000 Pro/Sun  J2SE 1.4.2
+   * MacOX 10.4/Sun J2SE 1.4.2
+   * Red Hat Linux/Sun J2SE 1.4.2
+- TCK code quality was demonstrated through use of code reviews conducted 
+publicly on the jdo-dev@apache.org email list
+- Documentation instructions were verified and tested
+
+Justification of Adequacy
+-------------------------
+Given the large number of assertions and metadata elements, the coverage 
+is good. 
+The availability of test development resources was limited.
+
diff --git a/tck20/assertions/JdoTckAssertionsTable.sxc b/tck20/assertions/JdoTckAssertionsTable.sxc
index d887787..e40d3a6 100644
Binary files a/tck20/assertions/JdoTckAssertionsTable.sxc and b/tck20/assertions/JdoTckAssertionsTable.sxc differ

[db-jdo] 37/43: JDO-419 JDO-424 Changed state transition table to use UNSPECIFIED where the specification is unclear

Posted by cl...@apache.org.
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 f280a5710888d08416ef5fe291927995cf99e3d0
Author: Craig L Russell <cl...@apache.org>
AuthorDate: Mon Oct 9 22:42:57 2006 +0000

    JDO-419 JDO-424 Changed state transition table to use UNSPECIFIED where the specification is unclear
---
 .../org/apache/jdo/tck/lifecycle/StateTransitions.java   | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/tck20/src/java/org/apache/jdo/tck/lifecycle/StateTransitions.java b/tck20/src/java/org/apache/jdo/tck/lifecycle/StateTransitions.java
index 16d7866..a49f0b5 100644
--- a/tck20/src/java/org/apache/jdo/tck/lifecycle/StateTransitions.java
+++ b/tck20/src/java/org/apache/jdo/tck/lifecycle/StateTransitions.java
@@ -127,6 +127,7 @@ public class StateTransitions extends JDO_Test {
     private static final int ERROR                       = -2;
     private static final int IMPOSSIBLE                  = -3;
     private static final int NOT_APPLICABLE              = -4;
+    private static final int UNSPECIFIED                 = -5;
 
     /**
      * State transitions
@@ -238,7 +239,7 @@ public class StateTransitions extends JDO_Test {
         // read field with active optimistic transaction
         {   UNCHANGED,                      UNCHANGED,                          UNCHANGED,
             UNCHANGED,                      PERSISTENT_NONTRANSACTIONAL,        UNCHANGED,
-            UNCHANGED,                      ERROR,                              ERROR,
+            UNCHANGED,                      UNSPECIFIED,                        UNSPECIFIED,
             UNCHANGED,                      UNCHANGED,                          UNCHANGED,
             UNCHANGED},
 
@@ -251,7 +252,7 @@ public class StateTransitions extends JDO_Test {
         // read field with active datastore transaction
         {   UNCHANGED,                      UNCHANGED,                          UNCHANGED,
             UNCHANGED,                      PERSISTENT_CLEAN,                   UNCHANGED,
-            UNCHANGED,                      ERROR,                              ERROR,
+            UNCHANGED,                      UNSPECIFIED,                        UNSPECIFIED,
             PERSISTENT_CLEAN,               UNCHANGED,                          UNCHANGED,
             UNCHANGED},
 
@@ -297,18 +298,18 @@ public class StateTransitions extends JDO_Test {
         //  DETACHED_DIRTY
         
         // detachCopy outside tx
-        {   ERROR,                          IMPOSSIBLE,                         IMPOSSIBLE,
-            IMPOSSIBLE,                     UNCHANGED,                          IMPOSSIBLE,
+        {   UNSPECIFIED,                    IMPOSSIBLE,                         IMPOSSIBLE,
+            IMPOSSIBLE,                     UNSPECIFIED,                        IMPOSSIBLE,
             IMPOSSIBLE,                     IMPOSSIBLE,                         IMPOSSIBLE,
             UNCHANGED,                      ERROR,                              UNCHANGED,
             UNCHANGED},
 
         // detachCopy with active tx
         {   PERSISTENT_NEW,                 UNCHANGED,                          UNCHANGED,
-            UNCHANGED,                      UNCHANGED,                          PERSISTENT_NEW,
+            UNCHANGED,                      UNSPECIFIED,                        PERSISTENT_NEW,
             PERSISTENT_NEW,                 ERROR,                              ERROR,
-            UNCHANGED,                      ERROR,                              UNCHANGED,
-            UNCHANGED},
+            UNSPECIFIED,                    ERROR,                              UNSPECIFIED,
+            UNSPECIFIED},
 
         // serialize outside tx
         {   UNCHANGED,                      IMPOSSIBLE,                         IMPOSSIBLE,
@@ -493,6 +494,7 @@ public class StateTransitions extends JDO_Test {
                 expected_state = transitions[operation][current_state];
                 if( expected_state == IMPOSSIBLE ) continue;
                 if( expected_state == NOT_APPLICABLE ) continue;
+                if( expected_state == UNSPECIFIED ) continue;
                 if( expected_state == UNCHANGED ) expected_state = current_state;
                 try {
                     transaction = pm.currentTransaction();

[db-jdo] 33/43: JDO-426: update both sides of the employee<->project relationship

Posted by cl...@apache.org.
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 44e933ac9502c5618243199df18c4d72061930a0
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Wed Oct 4 19:36:15 2006 +0000

    JDO-426: update both sides of the employee<->project relationship
---
 .../jdo/tck/query/jdoql/NullCollectionsAndContainsMethod.java       | 5 +++++
 .../org/apache/jdo/tck/query/jdoql/NullCollectionsAndIsEmpty.java   | 6 ++++++
 2 files changed, 11 insertions(+)

diff --git a/tck20/src/java/org/apache/jdo/tck/query/jdoql/NullCollectionsAndContainsMethod.java b/tck20/src/java/org/apache/jdo/tck/query/jdoql/NullCollectionsAndContainsMethod.java
index 841ac13..8b34a42 100644
--- a/tck20/src/java/org/apache/jdo/tck/query/jdoql/NullCollectionsAndContainsMethod.java
+++ b/tck20/src/java/org/apache/jdo/tck/query/jdoql/NullCollectionsAndContainsMethod.java
@@ -16,6 +16,8 @@
 
 package org.apache.jdo.tck.query.jdoql;
 
+import java.util.Iterator;
+
 import org.apache.jdo.tck.JDO_Test;
 import org.apache.jdo.tck.pc.company.CompanyModelReader;
 import org.apache.jdo.tck.pc.company.Employee;
@@ -126,6 +128,9 @@ public class NullCollectionsAndContainsMethod extends QueryTest {
         loadAndPersistCompanyModel(getPM());
         getPM().currentTransaction().begin();
         Employee emp1 = (Employee) getPersistentCompanyModelInstance("emp1");
+        for (Iterator itr = emp1.getProjects().iterator(); itr.hasNext();) {
+            ((Project) itr.next()).removeMember(emp1); 
+        }
         emp1.setProjects(null);
         getPM().currentTransaction().commit();
     }
diff --git a/tck20/src/java/org/apache/jdo/tck/query/jdoql/NullCollectionsAndIsEmpty.java b/tck20/src/java/org/apache/jdo/tck/query/jdoql/NullCollectionsAndIsEmpty.java
index d128d72..1257d06 100644
--- a/tck20/src/java/org/apache/jdo/tck/query/jdoql/NullCollectionsAndIsEmpty.java
+++ b/tck20/src/java/org/apache/jdo/tck/query/jdoql/NullCollectionsAndIsEmpty.java
@@ -16,9 +16,12 @@
 
 package org.apache.jdo.tck.query.jdoql;
 
+import java.util.Iterator;
+
 import org.apache.jdo.tck.JDO_Test;
 import org.apache.jdo.tck.pc.company.CompanyModelReader;
 import org.apache.jdo.tck.pc.company.Employee;
+import org.apache.jdo.tck.pc.company.Project;
 import org.apache.jdo.tck.query.QueryElementHolder;
 import org.apache.jdo.tck.query.QueryTest;
 import org.apache.jdo.tck.util.BatchTestRunner;
@@ -98,6 +101,9 @@ public class NullCollectionsAndIsEmpty extends QueryTest {
         loadAndPersistCompanyModel(getPM());
         getPM().currentTransaction().begin();
         Employee emp1 = (Employee) getPersistentCompanyModelInstance("emp1");
+        for (Iterator itr = emp1.getProjects().iterator(); itr.hasNext();) {
+            ((Project) itr.next()).removeMember(emp1); 
+        }
         emp1.setProjects(null);
         getPM().currentTransaction().commit();
     }

[db-jdo] 06/43: JDO-356 Update README.txt

Posted by cl...@apache.org.
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 ba68ae75ad9e4d98d8a152b7d15e7d0b14789c3a
Author: Craig L Russell <cl...@apache.org>
AuthorDate: Fri Mar 31 23:31:40 2006 +0000

    JDO-356 Update README.txt
---
 README.txt | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/README.txt b/README.txt
index b8f2933..07a29f5 100644
--- a/README.txt
+++ b/README.txt
@@ -1,4 +1,4 @@
-This is the release candidate 1 of the JDO 2 project. It includes
+This is the official release of the JDO 2 project. It includes
 the JDO 2.0 TCK and its dependencies:
 
 - api20 contains source to build jdo.jar, which defines the JDO API version 2.0
@@ -16,7 +16,7 @@ and to execute the TCK. You can download maven from
 http://maven.apache.org/start/download.html
 
 Note that maven uses the user.home system property for the location
-of the maven local repostitory: ${user.home}/.maven/repository.
+of the maven local repository: ${user.home}/.maven/repository.
 Under Windows this system property is C:\Documents and Settings\<user> 
 no matter what the HOME variable is set to. As a workaround you may set the 
 system property by adding -Duser.home=%HOME% to the environment variable 
@@ -34,7 +34,7 @@ agreement, download 'File System Service Provider, 1.2 Beta 3' and then unpack
 the downloaded zip. It includes the jars fscontext.jar and providerutil.jar.
 
 - JPOX
-The Reference Implementation for JDO 2.0 is JPOX. The tck20 subproject 
+The Reference Implementation for JDO 2.0 is JPOX 1.1.0. The tck20 subproject 
 automatically downloads the JPOX jar files via maven configuration.
 
 - derby
@@ -70,10 +70,10 @@ execute goals.
 Running the TCK
 -------
 
-This version of the TCK is almost final.  
+This version of the TCK is final.  
 
 In the tck20 project, run "maven build" to build the tck.  This will 
-compile, enhance, install the schemas, and run all the tests on all 
+compile, enhance, install the schemas, and run all the tests on the RI on all 
 supported databases and identitytypes.
 
 You may use the following custom goals and command line options

[db-jdo] 09/43: JDO-358 Fixed incorrect metadata for persistent interfaces

Posted by cl...@apache.org.
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 af586129aab75e028f3458b9557a97b0239c8e91
Author: Craig L Russell <cl...@apache.org>
AuthorDate: Sat Apr 1 01:34:00 2006 +0000

    JDO-358 Fixed incorrect metadata for persistent interfaces
---
 .../jdo/applicationidentity/org/apache/jdo/tck/pc/company/package.jdo | 4 ++--
 .../jdo/datastoreidentity/org/apache/jdo/tck/pc/company/package.jdo   | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/tck20/src/jdo/applicationidentity/org/apache/jdo/tck/pc/company/package.jdo b/tck20/src/jdo/applicationidentity/org/apache/jdo/tck/pc/company/package.jdo
index d686571..cf78b49 100644
--- a/tck20/src/jdo/applicationidentity/org/apache/jdo/tck/pc/company/package.jdo
+++ b/tck20/src/jdo/applicationidentity/org/apache/jdo/tck/pc/company/package.jdo
@@ -157,7 +157,7 @@ has application identity.
         <interface name="IEmployee"
             identity-type="application">
             <property name="reviewedProjects" persistence-modifier="persistent">
-                <collection element-type="org.apache.jdo.tck.pc.company.Project"/>
+                <collection element-type="org.apache.jdo.tck.pc.company.IProject"/>
             </property>
             <property name="projects" persistence-modifier="persistent">
                 <collection element-type="org.apache.jdo.tck.pc.company.IProject"/>
@@ -211,7 +211,7 @@ has application identity.
             </query>
             <query name="unmodifiable" unmodifiable="true">
                 SELECT firstname, lastname 
-                FROM org.apache.jdo.tck.pc.company.Person
+                FROM org.apache.jdo.tck.pc.company.IPerson
             </query>
             <query name="packageJDO">
                 SELECT FROM org.apache.jdo.tck.pc.company.IPerson
diff --git a/tck20/src/jdo/datastoreidentity/org/apache/jdo/tck/pc/company/package.jdo b/tck20/src/jdo/datastoreidentity/org/apache/jdo/tck/pc/company/package.jdo
index eb9dd84..903c443 100644
--- a/tck20/src/jdo/datastoreidentity/org/apache/jdo/tck/pc/company/package.jdo
+++ b/tck20/src/jdo/datastoreidentity/org/apache/jdo/tck/pc/company/package.jdo
@@ -129,7 +129,7 @@ has datastore identity.
         <interface name="IEmployee"
             identity-type="datastore">
             <property name="reviewedProjects" persistence-modifier="persistent">
-                <collection element-type="org.apache.jdo.tck.pc.company.Project"/>
+                <collection element-type="org.apache.jdo.tck.pc.company.IProject"/>
             </property>
             <property name="projects" persistence-modifier="persistent">
                 <collection element-type="org.apache.jdo.tck.pc.company.IProject"/>
@@ -181,7 +181,7 @@ has datastore identity.
             </query>
             <query name="unmodifiable" unmodifiable="true">
                 SELECT firstname, lastname 
-                FROM org.apache.jdo.tck.pc.company.Person
+                FROM org.apache.jdo.tck.pc.company.IPerson
             </query>
             <query name="packageJDO">
                 SELECT FROM org.apache.jdo.tck.pc.company.IPerson

[db-jdo] 13/43: JDO-364 - Completness tests fail with generated implementation classes for interfaces

Posted by cl...@apache.org.
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 45a6ae134a2b7dc1697cfdf6cf5982f15064148f
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Fri Apr 7 10:31:46 2006 +0000

    JDO-364 - Completness tests fail with generated implementation classes for interfaces
---
 .../org/apache/jdo/tck/pc/company/Address.java     | 30 +++++++++----
 .../org/apache/jdo/tck/pc/company/Company.java     | 30 +++++++++----
 .../org/apache/jdo/tck/pc/company/Department.java  | 20 +++++++--
 .../jdo/tck/pc/company/FullTimeEmployee.java       |  2 +-
 .../org/apache/jdo/tck/pc/company/Insurance.java   | 31 ++++++++-----
 .../java/org/apache/jdo/tck/pc/company/Person.java | 33 +++++++++-----
 .../org/apache/jdo/tck/pc/company/Project.java     | 30 +++++++++----
 .../org/apache/jdo/tck/util/EqualityHelper.java    | 52 ++++++++++++++++++----
 8 files changed, 166 insertions(+), 62 deletions(-)

diff --git a/tck20/src/java/org/apache/jdo/tck/pc/company/Address.java b/tck20/src/java/org/apache/jdo/tck/pc/company/Address.java
index 49e4985..08f6406 100644
--- a/tck20/src/java/org/apache/jdo/tck/pc/company/Address.java
+++ b/tck20/src/java/org/apache/jdo/tck/pc/company/Address.java
@@ -206,13 +206,6 @@ public class Address
     }
     
     /** 
-     * Compare two instances. This is a method in Comparator.
-     */
-    public int compare(Object o1, Object o2) {
-        return ((Address)o1).compareTo(o2);
-    }
-
-    /** 
      * Compares this object with the specified object for order. Returns a
      * negative integer, zero, or a positive integer as this object is less
      * than, equal to, or greater than the specified object. 
@@ -227,6 +220,13 @@ public class Address
     }
 
     /** 
+     * Compare two instances. This is a method in Comparator.
+     */
+    public int compare(Object o1, Object o2) {
+        return compare((IAddress)o1, (IAddress)o2);
+    }
+
+    /** 
      * Compares this object with the specified Address object for
      * order. Returns a negative integer, zero, or a positive integer as
      * this object is less than, equal to, or greater than the specified
@@ -237,10 +237,22 @@ public class Address
      * object. 
      */
     public int compareTo(IAddress other) {
-        long otherId = other.getAddrid();
-        return (addrid < otherId ? -1 : (addrid == otherId ? 0 : 1));
+        return compare(this, other);
     }
     
+    /**
+     * Compares its two IAddress arguments for order. Returns a negative
+     * integer, zero, or a positive integer as the first argument is less
+     * than, equal to, or greater than the second. 
+     * @param o1 the first IAddress object to be compared. 
+     * @param o2 the second IAddress object to be compared. 
+     * @return a negative integer, zero, or a positive integer as the first
+     * object is less than, equal to, or greater than the second object. 
+     */
+    public static int compare(IAddress o1, IAddress o2) {
+        return EqualityHelper.compare(o1.getAddrid(), o2.getAddrid());
+    }
+
     /** 
      * Indicates whether some other object is "equal to" this one.
      * @param obj the object with which to compare.
diff --git a/tck20/src/java/org/apache/jdo/tck/pc/company/Company.java b/tck20/src/java/org/apache/jdo/tck/pc/company/Company.java
index 44af95c..c240187 100644
--- a/tck20/src/java/org/apache/jdo/tck/pc/company/Company.java
+++ b/tck20/src/java/org/apache/jdo/tck/pc/company/Company.java
@@ -230,13 +230,6 @@ public class Company
     }
     
     /** 
-     * Compare two instances. This is a method in Comparator.
-     */
-    public int compare(Object o1, Object o2) {
-        return ((Company)o1).compareTo(o2);
-    }
-
-    /** 
      * Compares this object with the specified object for order. Returns a
      * negative integer, zero, or a positive integer as this object is less
      * than, equal to, or greater than the specified object. 
@@ -251,6 +244,13 @@ public class Company
     }
 
     /** 
+     * Compare two instances. This is a method in Comparator.
+     */
+    public int compare(Object o1, Object o2) {
+        return compare((ICompany)o1, (ICompany)o2);
+    }
+
+    /** 
      * Compares this object with the specified Company object for
      * order. Returns a negative integer, zero, or a positive integer as
      * this object is less than, equal to, or greater than the specified
@@ -261,8 +261,20 @@ public class Company
      * object. 
      */
     public int compareTo(ICompany other) {
-        long otherId = other.getCompanyid();
-        return (companyid < otherId ? -1 : (companyid == otherId ? 0 : 1));
+        return compare(this, other);
+    }
+
+    /**
+     * Compares its two ICompany arguments for order. Returns a negative
+     * integer, zero, or a positive integer as the first argument is less
+     * than, equal to, or greater than the second. 
+     * @param o1 the first ICompany object to be compared. 
+     * @param o2 the second ICompany object to be compared. 
+     * @return a negative integer, zero, or a positive integer as the first
+     * object is less than, equal to, or greater than the second object. 
+     */
+    public static int compare(ICompany o1, ICompany o2) {
+        return EqualityHelper.compare(o1.getCompanyid(), o2.getCompanyid());
     }
     
     /** 
diff --git a/tck20/src/java/org/apache/jdo/tck/pc/company/Department.java b/tck20/src/java/org/apache/jdo/tck/pc/company/Department.java
index 6a98477..1c9e9bc 100644
--- a/tck20/src/java/org/apache/jdo/tck/pc/company/Department.java
+++ b/tck20/src/java/org/apache/jdo/tck/pc/company/Department.java
@@ -246,7 +246,7 @@ public class Department
      */
     public boolean deepCompareFields(Object other, 
                                      EqualityHelper helper) {
-        Department otherDept = (Department)other;
+        IDepartment otherDept = (IDepartment)other;
         String where = "Department<" + deptid + ">";
         return 
             helper.equals(deptid, otherDept.getDeptid(), where + ".deptid") & 
@@ -294,7 +294,7 @@ public class Department
      * Compare two instances. This is a method in Comparator.
      */
     public int compare(Object o1, Object o2) {
-        return ((Department)o1).compareTo(o2);
+        return compare((IDepartment)o1, (IDepartment)o2);
     }
 
     /** 
@@ -308,8 +308,20 @@ public class Department
      * Department object. 
      */
     public int compareTo(IDepartment other) {
-        long otherId = other.getDeptid();
-        return (deptid < otherId ? -1 : (deptid == otherId ? 0 : 1));
+        return compare(this, other);
+    }
+
+    /**
+     * Compares its two IDepartment arguments for order. Returns a negative
+     * integer, zero, or a positive integer as the first argument is less
+     * than, equal to, or greater than the second. 
+     * @param o1 the first IDepartment object to be compared. 
+     * @param o2 the second IDepartment object to be compared. 
+     * @return a negative integer, zero, or a positive integer as the first
+     * object is less than, equal to, or greater than the second object. 
+     */
+    public static int compare(IDepartment o1, IDepartment o2) {
+        return EqualityHelper.compare(o1.getDeptid(), o2.getDeptid());
     }
     
     /** 
diff --git a/tck20/src/java/org/apache/jdo/tck/pc/company/FullTimeEmployee.java b/tck20/src/java/org/apache/jdo/tck/pc/company/FullTimeEmployee.java
index d3d1e41..2af011e 100644
--- a/tck20/src/java/org/apache/jdo/tck/pc/company/FullTimeEmployee.java
+++ b/tck20/src/java/org/apache/jdo/tck/pc/company/FullTimeEmployee.java
@@ -117,7 +117,7 @@ public class FullTimeEmployee extends Employee implements IFullTimeEmployee {
      */
     public boolean deepCompareFields(Object other, 
                                      EqualityHelper helper) {
-        FullTimeEmployee otherEmp = (FullTimeEmployee)other;
+        IFullTimeEmployee otherEmp = (IFullTimeEmployee)other;
         String where = "FullTimeEmployee<" + getPersonid() + ">";
         return super.deepCompareFields(otherEmp, helper) &
             helper.closeEnough(salary, otherEmp.getSalary(), where + ".salary");
diff --git a/tck20/src/java/org/apache/jdo/tck/pc/company/Insurance.java b/tck20/src/java/org/apache/jdo/tck/pc/company/Insurance.java
index 2791165..a095f3a 100644
--- a/tck20/src/java/org/apache/jdo/tck/pc/company/Insurance.java
+++ b/tck20/src/java/org/apache/jdo/tck/pc/company/Insurance.java
@@ -150,13 +150,6 @@ public abstract class Insurance
     }
     
     /** 
-     * Compare two instances. This is a method in Comparator.
-     */
-    public int compare(Object o1, Object o2) {
-        return ((Insurance)o1).compareTo(o2);
-    }
-
-    /** 
      * Compares this object with the specified object for order. Returns a
      * negative integer, zero, or a positive integer as this object is less
      * than, equal to, or greater than the specified object. 
@@ -171,6 +164,13 @@ public abstract class Insurance
     }
 
     /** 
+     * Compare two instances. This is a method in Comparator.
+     */
+    public int compare(Object o1, Object o2) {
+        return compare((IInsurance)o1, (IInsurance)o2);
+    }
+
+    /** 
      * Compares this object with the specified Insurance object for
      * order. Returns a negative integer, zero, or a positive integer as
      * this object is less than, equal to, or greater than the specified
@@ -181,10 +181,21 @@ public abstract class Insurance
      * Insurance object. 
      */
     public int compareTo(IInsurance other) {
-        long otherId = other.getInsid();
-        return (insid < otherId ? -1 : (insid == otherId ? 0 : 1));
+        return compare(this, other);
+    }
+
+    /**
+     * Compares its two IInsurance arguments for order. Returns a negative
+     * integer, zero, or a positive integer as the first argument is less
+     * than, equal to, or greater than the second. 
+     * @param o1 the first IInsurance object to be compared. 
+     * @param o2 the second IInsurance object to be compared. 
+     * @return a negative integer, zero, or a positive integer as the first
+     * object is less than, equal to, or greater than the second object. 
+     */
+    public static int compare(IInsurance o1, IInsurance o2) {
+        return EqualityHelper.compare(o1.getInsid(), o2.getInsid());
     }
-    
     
     /** 
      * Indicates whether some other object is "equal to" this one.
diff --git a/tck20/src/java/org/apache/jdo/tck/pc/company/Person.java b/tck20/src/java/org/apache/jdo/tck/pc/company/Person.java
index 830cd5a..e5e2020 100644
--- a/tck20/src/java/org/apache/jdo/tck/pc/company/Person.java
+++ b/tck20/src/java/org/apache/jdo/tck/pc/company/Person.java
@@ -289,14 +289,7 @@ public class Person
             helper.deepEquals(phoneNumbers, otherPerson.getPhoneNumbers(), where + ".phoneNumbers");
     }
 
-     /** 
-     * Compare two instances. This is a method in Comparator.
-     */
-    public int compare(Object o1, Object o2) {
-        return ((Person)o1).compareTo(o2);
-    }
-
-   /** 
+    /** 
      * Compares this object with the specified object for order. Returns a
      * negative integer, zero, or a positive integer as this object is less
      * than, equal to, or greater than the specified object. 
@@ -311,6 +304,13 @@ public class Person
     }
 
     /** 
+     * Compare two instances. This is a method in Comparator.
+     */
+    public int compare(Object o1, Object o2) {
+        return compare((IPerson)o1, (IPerson)o2);
+    }
+
+    /** 
      * Compares this object with the specified Person object for
      * order. Returns a negative integer, zero, or a positive integer as
      * this object is less than, equal to, or greater than the specified
@@ -321,10 +321,21 @@ public class Person
      * object. 
      */
     public int compareTo(IPerson other) {
-        long otherId = other.getPersonid();
-        return (personid < otherId ? -1 : (personid == otherId ? 0 : 1));
+        return compare(this, other);
+    }
+
+    /**
+     * Compares its two IPerson arguments for order. Returns a negative
+     * integer, zero, or a positive integer as the first argument is less
+     * than, equal to, or greater than the second. 
+     * @param o1 the first IPerson object to be compared. 
+     * @param o2 the second IPerson object to be compared. 
+     * @return a negative integer, zero, or a positive integer as the first
+     * object is less than, equal to, or greater than the second object. 
+     */
+    public static int compare(IPerson o1, IPerson o2) {
+        return EqualityHelper.compare(o1.getPersonid(), o2.getPersonid());
     }
-    
     
     /** 
      * Indicates whether some other object is "equal to" this one.
diff --git a/tck20/src/java/org/apache/jdo/tck/pc/company/Project.java b/tck20/src/java/org/apache/jdo/tck/pc/company/Project.java
index 8aa66b5..39158a0 100644
--- a/tck20/src/java/org/apache/jdo/tck/pc/company/Project.java
+++ b/tck20/src/java/org/apache/jdo/tck/pc/company/Project.java
@@ -230,13 +230,6 @@ public class Project
     }
     
     /** 
-     * Compare two instances. This is a method in Comparator.
-     */
-    public int compare(Object o1, Object o2) {
-        return ((Project)o1).compareTo(o2);
-    }
-
-    /** 
      * Compares this object with the specified object for order. Returns a
      * negative integer, zero, or a positive integer as this object is less
      * than, equal to, or greater than the specified object. 
@@ -251,6 +244,13 @@ public class Project
     }
 
     /** 
+     * Compare two instances. This is a method in Comparator.
+     */
+    public int compare(Object o1, Object o2) {
+        return compare((IProject)o1, (IProject)o2);
+    }
+
+    /** 
      * Compares this object with the specified Project object for
      * order. Returns a negative integer, zero, or a positive integer as
      * this object is less than, equal to, or greater than the specified
@@ -261,8 +261,20 @@ public class Project
      * object. 
      */
     public int compareTo(IProject other) {
-        long otherId = other.getProjid();
-        return (projid < otherId ? -1 : (projid == otherId ? 0 : 1));
+        return compare(this, other);
+    }
+
+    /**
+     * Compares its two IProject arguments for order. Returns a negative
+     * integer, zero, or a positive integer as the first argument is less
+     * than, equal to, or greater than the second. 
+     * @param o1 the first IProject object to be compared. 
+     * @param o2 the second IProject object to be compared. 
+     * @return a negative integer, zero, or a positive integer as the first
+     * object is less than, equal to, or greater than the second object. 
+     */
+    public static int compare(IProject o1, IProject o2) {
+        return EqualityHelper.compare(o1.getProjid(), o2.getProjid());
     }
 
     /** 
diff --git a/tck20/src/java/org/apache/jdo/tck/util/EqualityHelper.java b/tck20/src/java/org/apache/jdo/tck/util/EqualityHelper.java
index 3d19a82..2c63e5b 100644
--- a/tck20/src/java/org/apache/jdo/tck/util/EqualityHelper.java
+++ b/tck20/src/java/org/apache/jdo/tck/util/EqualityHelper.java
@@ -177,8 +177,6 @@ public class EqualityHelper {
             return true;
         if ((me == null) || (other == null))
             return false;
-        if (!me.getClass().isAssignableFrom(other.getClass()))
-            return false; 
         if (isProcessed(me))
             return true;
         markProcessed(me);
@@ -229,11 +227,19 @@ public class EqualityHelper {
         // Return false, if the size differs
         if (mine.size() != other.size())
             return false;
+
+        if (mine.size() == 0) 
+            return true;
+
         // Now check the elements 
         List myList = new ArrayList(mine);
         Collections.sort(myList);
         List otherList = new ArrayList(other);
-        Collections.sort(otherList);
+        /* Any collection of elements to be compared must implement Comparator
+         * to avoid the other side having to implement Comparable. */
+        Comparator comparator = 
+                (Comparator)myList.get(0);
+        Collections.sort(otherList, comparator);
         for (int i = 0; i < myList.size(); i++) {
             if (!deepEquals(myList.get(i), otherList.get(i)))
                 return false;
@@ -269,6 +275,8 @@ public class EqualityHelper {
         List myList = new ArrayList(mine.entrySet());
         Collections.sort(myList, entryKeyComparator);
         List otherList = new ArrayList(other.entrySet());
+        /* Any collection of elements to be compared must implement Comparator
+         * to avoid the other side having to implement Comparable. */
         Comparator comparator = 
                 (Comparator)((Map.Entry)myList.get(0)).getKey();
         Collections.sort(otherList, 
@@ -306,11 +314,19 @@ public class EqualityHelper {
         // Return false, if the size differs
         if (mine.size() != other.size())
             return false;
+
+        if (mine.size() == 0) 
+            return true;
+
         // Now check the elements 
         List myList = new ArrayList(mine);
         Collections.sort(myList);
         List otherList = new ArrayList(other);
-        Collections.sort(otherList);
+        /* Any collection of elements to be compared must implement Comparator
+         * to avoid the other side having to implement Comparable. */
+        Comparator comparator = 
+                (Comparator)myList.get(0);
+        Collections.sort(otherList, comparator);
         return myList.equals(otherList);
     }
 
@@ -375,10 +391,6 @@ public class EqualityHelper {
             logUnequal(me, other, where + msgOtherNull);
             return false;
         }
-        if (!me.getClass().isAssignableFrom(other.getClass())) {
-            logUnequal(me, other, where + msgIncompatibleTypes);
-            return false; 
-        }
         if (isProcessed(me))
             return true;
         markProcessed(me);
@@ -599,11 +611,19 @@ public class EqualityHelper {
                     ", counted size= " + count);
             return false;
         }
+
+        if (me.size() == 0) 
+            return true;
+
         // Now check the elements 
         List myList = new ArrayList(me);
         Collections.sort(myList);
         List otherList = new ArrayList(other);
-        Collections.sort(otherList);
+        /* Any collection of elements to be compared must implement Comparator
+         * to avoid the other side having to implement Comparable. */
+        Comparator comparator = 
+                (Comparator)myList.get(0);
+        Collections.sort(otherList, comparator);
         boolean result = myList.equals(otherList);
         if (!result) 
             logUnequal(me,  other, 
@@ -847,4 +867,18 @@ public class EqualityHelper {
         return result;
     }
 
+    // Methods to support compare methods as specified in Comparator 
+    
+    /** 
+     * Compares its two arguments for order. Returns a negative integer, zero,
+     * or a positive integer as the first argument is less than, equal to, or
+     * greater than the second. 
+     * @param l1 the first long to be compared
+     * @param l2 the second long to be compared
+     * @return a negative integer, zero, or a positive integer as the first
+     * argument is less than, equal to, or greater than the second. 
+     */
+    public static int compare (long l1, long l2) {
+        return (l1 < l2 ? -1 : (l1 == l2 ? 0 : 1));
+    }
 }

[db-jdo] 10/43: JDO-293 removed statement on protected member coverage

Posted by cl...@apache.org.
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 073a834cb8222b04ffe98707988497b79b1f31b6
Author: Craig L Russell <cl...@apache.org>
AuthorDate: Sat Apr 1 03:11:10 2006 +0000

    JDO-293 removed statement on protected member coverage
---
 tck20/COVERAGE.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tck20/COVERAGE.txt b/tck20/COVERAGE.txt
index a50f5ff..36edd86 100755
--- a/tck20/COVERAGE.txt
+++ b/tck20/COVERAGE.txt
@@ -58,7 +58,7 @@ tested by a small number of tests using a number of different metadata sets.
 - Tests: 538
 - Test cases: 1158
 - Assertion coverage: 1342/1561 = 86%
-- API Signature Coverage: 100% for all defined public and protected members
+- API Signature Coverage: 100% for all defined public members
 
 Quality Assurance
 -----------------

[db-jdo] 03/43: Remove project not being released with JDO 2.0

Posted by cl...@apache.org.
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 96022f915eea089025506f19e5e13e6e491f74d8
Author: Craig L Russell <cl...@apache.org>
AuthorDate: Fri Mar 31 03:53:56 2006 +0000

    Remove project not being released with JDO 2.0
---
 runtime20/maven.xml                                |   56 -
 runtime20/project.properties                       |   21 -
 runtime20/project.xml                              |   85 -
 runtime20/src/conf/commons-logging.properties      |   42 -
 runtime20/src/conf/logging.properties              |   62 -
 runtime20/src/conf/simplelog.properties            |   52 -
 .../src/java/org/apache/jdo/ejb/EJBHelper.java     |  130 -
 .../src/java/org/apache/jdo/ejb/EJBImplHelper.java |  138 --
 runtime20/src/java/org/apache/jdo/ejb/package.html |   26 -
 .../jdo/impl/model/java/runtime/Bundle.properties  |   59 -
 .../model/java/runtime/RegisterClassListener.java  |  178 --
 .../impl/model/java/runtime/RuntimeJavaModel.java  |  172 --
 .../java/runtime/RuntimeJavaModelFactory.java      |  147 --
 .../impl/model/java/runtime/RuntimeJavaType.java   |   70 -
 .../java/runtime/jdk5/ComponentTypeHelper.java     |  107 -
 .../java/runtime/jdk5/JDK5RuntimeJavaField.java    |   71 -
 .../java/runtime/jdk5/JDK5RuntimeJavaMethod.java   |   59 -
 .../java/runtime/jdk5/JDK5RuntimeJavaModel.java    |   58 -
 .../runtime/jdk5/JDK5RuntimeJavaModelFactory.java  |   88 -
 .../java/runtime/jdk5/JDK5RuntimeJavaProperty.java |   74 -
 .../java/runtime/jdk5/JDK5RuntimeJavaType.java     |   84 -
 .../jdo/impl/model/java/runtime/package.html       |   27 -
 .../apache/jdo/impl/model/jdo/xml/XMLExists.java   |  268 --
 .../java/org/apache/jdo/impl/pm/Bundle.properties  |  102 -
 .../org/apache/jdo/impl/pm/CacheManagerImpl.java   |  631 -----
 .../jdo/impl/pm/PersistenceManagerFactoryImpl.java | 1791 --------------
 .../apache/jdo/impl/pm/PersistenceManagerImpl.java | 2603 --------------------
 .../jdo/impl/pm/PersistenceManagerWrapper.java     | 1179 ---------
 .../org/apache/jdo/impl/pm/TransactionImpl.java    | 1181 ---------
 .../jdo/impl/pm/TransactionSynchronization.java    |   60 -
 .../src/java/org/apache/jdo/impl/pm/package.html   |   28 -
 .../java/org/apache/jdo/impl/sco/ArrayList.java    |  605 -----
 .../java/org/apache/jdo/impl/sco/Bundle.properties |   34 -
 .../src/java/org/apache/jdo/impl/sco/Date.java     |  247 --
 .../src/java/org/apache/jdo/impl/sco/Freezer.java  |  403 ---
 .../src/java/org/apache/jdo/impl/sco/HashMap.java  |  607 -----
 .../src/java/org/apache/jdo/impl/sco/HashSet.java  |  589 -----
 .../java/org/apache/jdo/impl/sco/Hashtable.java    |  614 -----
 .../java/org/apache/jdo/impl/sco/LinkedList.java   |  669 -----
 .../java/org/apache/jdo/impl/sco/SCOHelper.java    |  206 --
 .../src/java/org/apache/jdo/impl/sco/SqlDate.java  |  203 --
 .../src/java/org/apache/jdo/impl/sco/SqlTime.java  |  204 --
 .../java/org/apache/jdo/impl/sco/SqlTimestamp.java |  288 ---
 .../src/java/org/apache/jdo/impl/sco/TreeMap.java  |  603 -----
 .../src/java/org/apache/jdo/impl/sco/TreeSet.java  |  596 -----
 .../src/java/org/apache/jdo/impl/sco/Vector.java   |  737 ------
 .../src/java/org/apache/jdo/impl/sco/package.html  |   27 -
 .../apache/jdo/impl/state/AutoPersistentNew.java   |  118 -
 .../jdo/impl/state/AutoPersistentNewFlushed.java   |  118 -
 .../impl/state/AutoPersistentNewFlushedDirty.java  |  101 -
 .../jdo/impl/state/AutoPersistentPending.java      |   88 -
 .../org/apache/jdo/impl/state/Bundle.properties    |   67 -
 .../src/java/org/apache/jdo/impl/state/Hollow.java |  219 --
 .../org/apache/jdo/impl/state/LifeCycleState.java  |  573 -----
 .../org/apache/jdo/impl/state/PersistentClean.java |  148 --
 .../impl/state/PersistentCleanTransactional.java   |   70 -
 .../apache/jdo/impl/state/PersistentDeleted.java   |  110 -
 .../jdo/impl/state/PersistentDeletedFlushed.java   |   58 -
 .../org/apache/jdo/impl/state/PersistentDirty.java |  110 -
 .../jdo/impl/state/PersistentDirtyFlushed.java     |   92 -
 .../org/apache/jdo/impl/state/PersistentNew.java   |  108 -
 .../jdo/impl/state/PersistentNewDeleted.java       |  105 -
 .../jdo/impl/state/PersistentNewFlushed.java       |   92 -
 .../impl/state/PersistentNewFlushedDeleted.java    |   68 -
 .../jdo/impl/state/PersistentNewFlushedDirty.java  |   70 -
 .../jdo/impl/state/PersistentNonTransactional.java |  282 ---
 .../apache/jdo/impl/state/ReachabilityHandler.java |  255 --
 .../org/apache/jdo/impl/state/SCOProcessor.java    |  438 ----
 .../apache/jdo/impl/state/SimpleFieldManager.java  |  212 --
 .../apache/jdo/impl/state/StateFieldManager.java   |  207 --
 .../apache/jdo/impl/state/StateManagerFactory.java |   66 -
 .../apache/jdo/impl/state/StateManagerImpl.java    | 2599 -------------------
 .../org/apache/jdo/impl/state/TransientClean.java  |  127 -
 .../org/apache/jdo/impl/state/TransientDirty.java  |   96 -
 runtime20/src/java/org/apache/jdo/pm/Accessor.java |   37 -
 .../jdo/pm/PersistenceManagerFactoryInternal.java  |   78 -
 .../apache/jdo/pm/PersistenceManagerInternal.java  |  265 --
 runtime20/src/java/org/apache/jdo/pm/package.html  |   27 -
 .../org/apache/jdo/query/BasicQueryResult.java     |  310 ---
 .../java/org/apache/jdo/query/Bundle.properties    |   28 -
 .../src/java/org/apache/jdo/query/QueryResult.java |   42 -
 .../org/apache/jdo/query/QueryResultHelper.java    |   83 -
 .../org/apache/jdo/query/QueryResultIterator.java  |   40 -
 runtime20/src/java/org/apache/jdo/sco/SCO.java     |   64 -
 .../src/java/org/apache/jdo/sco/SCOCollection.java |  116 -
 runtime20/src/java/org/apache/jdo/sco/SCODate.java |   36 -
 runtime20/src/java/org/apache/jdo/sco/SCOMap.java  |  142 --
 runtime20/src/java/org/apache/jdo/sco/package.html |   26 -
 .../java/org/apache/jdo/state/FieldManager.java    |  137 --
 .../org/apache/jdo/state/StateManagerInternal.java |  283 ---
 .../src/java/org/apache/jdo/state/package.html     |   26 -
 .../java/org/apache/jdo/store/Bundle.properties    |   30 -
 .../src/java/org/apache/jdo/store/Connector.java   |   85 -
 .../java/org/apache/jdo/store/StoreManager.java    |  269 --
 .../org/apache/jdo/store/StoreManagerImpl.java     |  124 -
 .../src/java/org/apache/jdo/store/Transcriber.java |   26 -
 .../org/apache/jdo/store/TranscriberFactory.java   |   26 -
 .../src/java/org/apache/jdo/store/package.html     |   26 -
 98 files changed, 25204 deletions(-)

diff --git a/runtime20/maven.xml b/runtime20/maven.xml
deleted file mode 100644
index 3a85bfe..0000000
--- a/runtime20/maven.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright 2005 The Apache Software Foundation
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    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.
--->
-
-<project default="default"
-    xmlns:j="jelly:core"
-    xmlns:ant="jelly:ant"
-    xmlns:maven="jelly:maven"
-    >
-
-    <!-- ==================== -->
-    <!-- Default Global Goals -->
-    <!-- ==================== -->
-
-    <goal name="default">
-        <attainGoal name="jar:install"/>
-    </goal>
-
-    <goal name="build">
-        <attainGoal name="default"/>
-    </goal>
-
-    <goal name="rebuild">
-        <attainGoal name="clean"/>
-        <attainGoal name="build"/>
-    </goal>
-
-    <preGoal name="java:compile">
-        <available property="jdk5" classname="java.lang.reflect.ParameterizedType"/>
-        <!-- Compile with -source 1.5 and -target 1.5 in a JDK5 environment. -->
-        <j:if test="${jdk5}">
-            <j:set var="maven.compile.source" value="1.5"/>
-            <j:set var="maven.compile.target" value="1.5"/>
-        </j:if>
-    </preGoal>
-
-    <goal name="clobber" prereqs="clean">
-        <delete>
-            <fileset dir="." defaultexcludes="no" includes="**/*~"/>
-        </delete>
-    </goal>
-
-</project>
diff --git a/runtime20/project.properties b/runtime20/project.properties
deleted file mode 100644
index 9e67cd2..0000000
--- a/runtime20/project.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# Copyright 2005 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# 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.
-
-# Manifest seed file
-maven.jar.manifest = ${basedir}/../JDO20.MF
-
-# checkstyle settings
-maven.checkstyle.properties = ${basedir}/../jdo_checks.xml
-
diff --git a/runtime20/project.xml b/runtime20/project.xml
deleted file mode 100644
index 359c872..0000000
--- a/runtime20/project.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Copyright 2005 The Apache Software Foundation
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    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.
--->
-
-<project>
-    <pomVersion>3</pomVersion>
-    <extend>../project.xml</extend>
-    <!-- ============== -->
-    <!-- Identification -->
-    <!-- ============== -->
-    <name>JDO2 Implementation (Runtime)</name>
-    <groupId>org.apache.jdo</groupId>
-    <artifactId>jdo2-runtime</artifactId>
-    <currentVersion>SNAPSHOT</currentVersion>
-    <package>org.apache.jdo</package>
-    <shortDescription>Java Data Objects 2.0 (JDO) Runtime</shortDescription>
-    <description>The Java Data Objects 2.0 (JDO) API is a standard interface-based 
-Java model abstraction of persistence, developed as Java Specification 
-Request JSR 243 under the auspices of the Java Community Process.</description>
-    <repository />
-    <!-- ============ -->
-    <!-- Dependencies -->
-    <!-- ============ -->
-    <dependencies>
-        <dependency>
-            <groupId>javax.jdo</groupId>
-            <artifactId>jdo2-api</artifactId>
-            <version>SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.jdo</groupId>
-            <artifactId>jdo2-core</artifactId>
-            <version>SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <id>commons-logging</id>
-            <version>1.0.4</version>
-        </dependency>
-        <dependency>
-            <groupId>geronimo-spec</groupId>
-            <artifactId>geronimo-spec-jta</artifactId>
-            <version>1.0.1B-rc2</version>
-        </dependency>
-    </dependencies>
-    <!-- =================== -->
-    <!-- Build Specification -->
-    <!-- =================== -->
-    <build>
-        <sourceDirectory>src/java</sourceDirectory>
-        <!-- Exclude JDK5 specific classes in a non JDK5 environment. -->
-        <sourceModifications>
-            <sourceModification>
-                <className>java.lang.reflect.ParameterizedType</className>
-                <excludes>
-                    <exclude>**/jdk5/*.java</exclude>
-                </excludes>
-            </sourceModification>
-        </sourceModifications>
-        <!-- J A R  R E S O U R C E S -->
-        <!-- Resources that are packaged up inside the JAR file -->
-        <resources>
-            <resource>
-                <directory>${basedir}/src/java</directory>
-                <includes>
-                    <include>**/*.properties</include>
-                </includes>
-            </resource>
-        </resources>
-    </build>
-</project>
-
diff --git a/runtime20/src/conf/commons-logging.properties b/runtime20/src/conf/commons-logging.properties
deleted file mode 100644
index 76af441..0000000
--- a/runtime20/src/conf/commons-logging.properties
+++ /dev/null
@@ -1,42 +0,0 @@
-#
-# Copyright 2005 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# 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.
-
-#
-# This is a sample apache commons logging configuration file defining logging
-# properties for the JDO2 Implementation (Runtime) sources. It defines what
-# logging implementation the apache commons logging API should use by specifying
-# the property org.apache.commons.logging.Log (see below). Please note, that
-# there are separate property files for each logging implementation to set the
-# log level of the loggers:
-# - SimpleLog:      simplelog.properties 
-# - JDK1.4 logging: logging.properties
-#
-# The JDO2 Implementation (Runtime) sources use the following logger instances:
-# org.apache.jdo.impl.pm              PM and PMF implementation
-# org.apache.jdo.impl.sco             SCO implementation
-# org.apache.jdo.impl.state           StateManager implementation
-# org.apache.jdo.store                Generic StoreManager implementation
-# Dependent projects:
-# org.apache.jdo.util                 Utility classes
-# org.apache.jdo.impl.model.jdo       JDOModel implementation
-# org.apache.jdo.impl.model.jdo.xml   XML parser for JDO metadata files
-#
-
-# Uncomment the next line if you want to use the apache simple logger
-#org.apache.commons.logging.Log = org.apache.commons.logging.impl.SimpleLog
-
-# Uncomment the next two lines if you want to use JDK 1.4 logging
-#org.apache.commons.logging.Log = org.apache.jdo.util.JDOJdk14Logger
-
diff --git a/runtime20/src/conf/logging.properties b/runtime20/src/conf/logging.properties
deleted file mode 100644
index 654547e..0000000
--- a/runtime20/src/conf/logging.properties
+++ /dev/null
@@ -1,62 +0,0 @@
-#
-# Copyright 2005 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# 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.
-
-#
-# This is a sample properties file to configure standard JDK 1.4 logging for 
-# the JDO2 Implementation (Runtime) sources. 
-# Below you find an entry for each of the source logger instances. 
-# Please uncomment the line and adapt the log level to your needs, 
-# in case to want to enable a particular logger.
-#
-# The following describes the mapping between the log level of JDK 1.4 logging
-# and apache commns logging:
-#   JDK 1.4        Apache 
-#   FINEST         trace 
-#   FINE, FINER    debug 
-#   INFO, CONFIG   info
-#   WARNING        warn
-#   SEVERE         error, fatal
-#
-
-######################
-# Runtime source logger
-######################
-
-# PM and PMF logger
-#org.apache.jdo.impl.pm.level = FINE
-# SCO logger
-#org.apache.jdo.impl.sco.level = FINE
-# StateManager logger
-#org.apache.jdo.impl.state.level = FINE
-# Generic StoreManager logger
-#org.apache.jdo.store.level = FINE
-
-######################
-# Dependent projects
-######################
-
-# Utility class logger
-#org.apache.jdo.util.level = FINE
-# JDOModel logger
-#org.apache.jdo.impl.model.jdo.level = FINE
-# XML parser logger
-#org.apache.jdo.impl.model.jdo.xml.level = FINE
-
-######################
-# JDK 1.4 logging properties
-######################
-
-handlers = java.util.logging.ConsoleHandler
-java.util.logging.ConsoleHandler.level = FINEST
diff --git a/runtime20/src/conf/simplelog.properties b/runtime20/src/conf/simplelog.properties
deleted file mode 100644
index 4e6d347..0000000
--- a/runtime20/src/conf/simplelog.properties
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# Copyright 2005 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# 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.
-
-#
-# This is a sample properties file to configure apache commons logging SimpleLog
-# implementation for the JDO2 Implementation (Runtime) sources.
-# Below you find an entry for each of the source logger instances. 
-# Please uncomment the line and adapt the log level to your needs, 
-# in case to want to enable a particular logger.
-#
-
-######################
-# Runtime source logger
-######################
-
-# PM and PMF logger
-#org.apache.commons.logging.simplelog.log.org.apache.jdo.impl.pm = debug
-# SCO logger
-#org.apache.commons.logging.simplelog.log.org.apache.jdo.impl.sco = debug
-# StateManager logger
-#org.apache.commons.logging.simplelog.log.org.apache.jdo.impl.state = debug
-# Generic StoreManager logger
-#org.apache.commons.logging.simplelog.log.org.apache.jdo.store = debug
-
-######################
-# Dependent projects
-######################
-
-# Utility class logger
-#org.apache.commons.logging.simplelog.log.org.apache.jdo.util = debug
-# JDOModel logger
-#org.apache.commons.logging.simplelog.log.org.apache.jdo.impl.model.jdo = debug
-# XML parser logger
-#org.apache.commons.logging.simplelog.log.org.apache.jdo.impl.model.jdo.xml = debug
-
-######################
-# Default logging level
-######################
-
-org.apache.commons.logging.simplelog.defaultlog = error
diff --git a/runtime20/src/java/org/apache/jdo/ejb/EJBHelper.java b/runtime20/src/java/org/apache/jdo/ejb/EJBHelper.java
deleted file mode 100644
index bfaa5ed..0000000
--- a/runtime20/src/java/org/apache/jdo/ejb/EJBHelper.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * EJBHelper.java
- *
- * Created on December 15, 2000, 10:06 AM
- */
-
-package org.apache.jdo.ejb;
-
-import javax.transaction.Transaction;
-import javax.transaction.UserTransaction;
-
-import javax.jdo.PersistenceManagerFactory;
-
-/** Provide a Forte for Java implementation with information about the distributed
- * transaction environment.  This is an interface that a helper class
- * implements that is specific to a managed environment.
- * <P><B>This interface is specific to Forte for Java, version 3.0,
- * and is subject to change without notice.  In particular, as additional
- * experience is gained with specific application servers, this interface
- * may have methods added and removed, even with patch releases.  
- * Therefore, this interface should be considered very volatile, and 
- * any class that implements it might have to be reimplemented whenever 
- * an upgrade to either the application server or Forte for Java occurs.</B></P>
- * The class that implements this interface must register itself
- * by a static method at class initialization time.  For example,
- * <blockquote><pre>
- * import org.apache.jdo.*;
- * class blackHerringEJBImplHelper implements EJBHelper {
- *    static EJBHelper.register(new blackHerringEJBImplHelper());
- *    ...
- * }
- * </pre></blockquote>
- *
- * @author Marina Vatkina
- */  
-public interface EJBHelper {
-
-    /** Returns the UserTransaction associated with the calling thread.  If there
-     * is no transaction currently in progress, this method returns null.
-     * @return the UserTransaction instance for the calling thread
-     */  
-    UserTransaction getUserTransaction();
-
-    /** Identify the Transaction context for the calling thread, and return a
-     * Transaction instance that can be used to register synchronizations,
-     * and used as the key for HashMaps. The returned Transaction must implement
-     * <code>equals()</code> and <code>hashCode()</code> based on the global transaction id.
-     * <P>All Transaction instances returned by this method called in the same
-     * Transaction context must compare equal and return the same hashCode.
-     * The Transaction instance returned will be held as the key to an
-     * internal HashMap until the Transaction completes. If there is no transaction 
-     * associated with the current thread, this method returns null.
-     * @return the Transaction instance for the calling thread
-     */  
-    Transaction getTransaction();
-
-    /** Translate local representation of the Transaction Status to
-     * javax.transaction.Status value if necessary. Otherwise this method
-     * should return the value passed to it as an argument.
-     * <P>This method is used during afterCompletion callbacks to translate
-     * the parameter value passed by the application server to the 
-     * afterCompletion method.  The return value must be one of:
-     * <code>javax.transaction.Status.STATUS_COMMITTED</code> or
-     * <code>javax.transaction.Status.STATUS_ROLLED_BACK</code>.
-     * @param 	st 	local Status value
-     * @return the javax.transaction.Status value of the status
-     */
-    int translateStatus(int st);
-
-    /** Replace newly created instance of internal PersistenceManagerFactory
-     * with the hashed one if it exists. The replacement is necessary only if 
-     * the JNDI lookup always returns a new instance. Otherwise this method 
-     * returns the object passed to it as an argument.
-     *
-     * PersistenceManagerFactory is uniquely identified by 
-     * ConnectionFactory.hashCode() if ConnectionFactory is 
-     * not null; otherwise by ConnectionFactoryName.hashCode() if 
-     * ConnectionFactoryName is not null; otherwise 
-     * by the combination of URL.hashCode() + userName.hashCode() + 
-     * password.hashCode() + driverName.hashCode();
-     *
-     * @param 	pmf 	PersistenceManagerFactory instance to be replaced
-     * @return 	the PersistenceManagerFactory known to the runtime
-     */
-    PersistenceManagerFactory replacePersistenceManagerFactory(
-        PersistenceManagerFactory pmf) ;
-
-    /** Called at the beginning of the Transaction.beforeCompletion() to
-     * register the component with the app server if necessary.
-     * The component argument is an array of Objects. 
-     * The first element is javax.jdo.Transaction object responsible for 
-     * transaction completion.
-     * The second element is javax.jdo.PersistenceManager object that has 
-     * been associated with the Transaction context for the calling thread.
-     * The third element is javax.transaction.Transaction object that has been 
-     * associated with the given instance of PersistenceManager.
-     * The return value is passed unchanged to the postInvoke method.
-     *
-     * @param 	component 	an array of Objects
-     * @return 	implementation-specific Object
-     */
-    Object enlistBeforeCompletion(Object component) ;
-
-    /** Called at the end of the Transaction.beforeCompletion() to
-     * de-register the component with the app server if necessary.
-     * The parameter is the return value from preInvoke, and can be any
-     * Object.
-     *
-     * @param 	im 	implementation-specific Object
-     */
-    void delistBeforeCompletion(Object im) ;
-
-}
-
diff --git a/runtime20/src/java/org/apache/jdo/ejb/EJBImplHelper.java b/runtime20/src/java/org/apache/jdo/ejb/EJBImplHelper.java
deleted file mode 100644
index 7367b33..0000000
--- a/runtime20/src/java/org/apache/jdo/ejb/EJBImplHelper.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * EJBImplHelper.java
- *
- * Created on December 15, 2000, 10:15 AM
- */
-package org.apache.jdo.ejb;
-
-import javax.transaction.*;
-
-import javax.jdo.PersistenceManagerFactory;
-
-/** Provides helper methods for a Forte for Java implementation with the
- * application server specific information in the distributed transaction
- * environment. Calls corresponding methods on the registered class which
- * implements EJBHelper interface.
- * 
- * @author Marina Vatkina
- */
-public class EJBImplHelper {
-    
-   /** Reference to a class that implements EJBHelper interface for this
-    * particular application server
-    */
-    static EJBHelper myHelper;
- 
-   /** Register class that implements EJBHelper interface
-    * Should be called by a static method at class initialization time.
-    *
-    * @param h application server specific implemetation of the
-    * EJBHelper interface.
-    */
-    public static void registerEJBHelper (EJBHelper h) {
-        myHelper = h;
-    }
-
-   /** Returns Transaction instance that can be used to register
-    * synchronizations. In a non-managed environment or if there is no
-    * transaction associated with the current thread, this method
-    * returns null.
-    *
-    * @see EJBHelper#getTransaction()
-    * @return the Transaction instance for the calling thread
-    */
-    public static Transaction getTransaction() {
-        return myHelper == null ? null : myHelper.getTransaction();
-    }
-
-   /** Returns the UserTransaction associated with the calling thread.
-    * In a non-managed environment or if there is no transaction
-    * currently in progress, this method returns null.
-    *
-    * @see EJBHelper#getUserTransaction()
-    * @return the UserTransaction instance for the calling thread
-    */
-    public static UserTransaction getUserTransaction() {
-        return myHelper == null ? null : myHelper.getUserTransaction();
-    }
-
-    /** Identifies the managed environment behavior.
-     * @return true if there is a helper class registered. 
-     */
-    public static boolean isManaged() {
-        return myHelper != null;
-    }
-
-   /** Translates local representation of the Transaction Status to 
-    * javax.transaction.Status value. In a non-managed environment
-    * returns the value passed to it as an argument.
-    *
-    * @see EJBHelper#translateStatus(int st)
-    * @param 	st 	Status value
-    * @return 	the javax.transaction.Status value of the status 
-    */ 
-    public static int translateStatus(int st) {
-        return myHelper == null ? st : myHelper.translateStatus(st);
-    }
-
-   /** Returns the hashed instance of internal PersistenceManagerFactory 
-    * that compares equal to the newly created instance or the instance 
-    * itself if it is not found. In a non-managed environment returns
-    * the value passed to it as an argument.
-    *
-    * @see EJBHelper#replacePersistenceManagerFactory(
-    * 	PersistenceManagerFactory pmf)
-    * @param 	pmf 	PersistenceManagerFactory instance to be replaced
-    * @return 	the PersistenceManagerFactory known to the runtime
-    */
-    public static PersistenceManagerFactory replacePersistenceManagerFactory(
-        PersistenceManagerFactory pmf) {
-        return myHelper == null ? pmf : 
-            myHelper.replacePersistenceManagerFactory(pmf);
-    }
-
-   /** Called at the beginning of the Transaction.beforeCompletion()
-    * to register the component with the app server if necessary. In a
-    * non-managed environment or if the delistBeforeCompletion method
-    * does not use the value, this method returns null. 
-    *
-    * @see EJBHelper#enlistBeforeCompletion(Object component)
-    * @param 	component 	an array of Objects
-    * @return implementation-specific Object
-    */
-    public static Object enlistBeforeCompletion(Object component) {
-        return myHelper == null ? null : 
-            myHelper.enlistBeforeCompletion(component);
-    }
-
-   /** Called a non-managed environment at the end of the
-    * Transaction.beforeCompletion() to de-register the component with
-    * the app server if necessary.
-    *
-    * @see EJBHelper#delistBeforeCompletion(Object im)
-    * @param im implementation-specific Object
-    */
-    public static void delistBeforeCompletion(Object im) {
-        if (myHelper != null) {
-            myHelper.delistBeforeCompletion(im);
-        }
-    }
-
-}
-
diff --git a/runtime20/src/java/org/apache/jdo/ejb/package.html b/runtime20/src/java/org/apache/jdo/ejb/package.html
deleted file mode 100644
index 5d303e0..0000000
--- a/runtime20/src/java/org/apache/jdo/ejb/package.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!--
- Copyright 2005 The Apache Software Foundation.
- 
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- 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.
--->
-
-<html>
-<head>
-<title>Package org.apache.jdo.ejb</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
-</head>
-
-<body bgcolor="#FFFFFF">
-<p>This package contains classes and interfaces for EJB support.</p>
-</body>
-</html>
diff --git a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/Bundle.properties b/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/Bundle.properties
deleted file mode 100644
index 2ef9dea..0000000
--- a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/Bundle.properties
+++ /dev/null
@@ -1,59 +0,0 @@
-#
-# Copyright 2005 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# 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.
-
-#
-# RuntimeJavaModelFactory
-#
-
-EXC_CannotGetJDOImplHelper=A SecurityException was thrown when trying to get \
-the singleton JDOImplHelper instance. In order to get runtime metadata, you \
-must grant javax.jdo.spi.JDOPermission("getMetadata") to the codeBases \
-containing the JDO API and the JavaModel and JDOModel implementation.
-
-EXC_CannotGetRuntimeJavaModelFactory=A SecurityException was thrown when trying \
-to get the singleton RuntimeJavaModelFactory instance. In order to get runtime \
-metadata, you must grant javax.jdo.spi.JDOPermission("getMetadata") to the \
-codeBases containing the JDO API and the JavaModel and JDOModel implementation.
-
-#
-# RuntimeJavaModel
-#
-
-# {0} - class name
-# {1} - detailed message of the cause
-EXC_ClassLoadingError=Error during loading of class ''{0}'': {1}.
-
-# {0} - class name
-# {1} - class loader of class instance
-# {2} - class loader of JavaModel
-#NOI18N
-ERR_UnexpectedClassLoader=Unexpected class loader. The specified class \
-instance of class ''{0}'' was loaded by class loader ''{1}'', but the \
-JavaModel instance is bound to a different class loader ''{2}''.
-
-#
-# RuntimeJavaType
-#
-
-# {0} - error location (class.method)
-# {1} - implementation method name
-# {2} - field name
-#NOI18N
-ERR_MultipleJavaField={0}: multiple JavaField ''{1}'' for class ''{2}''.
-
-# {0} - class name
-# {1} - detailed message of the cause
-EXC_ClassLoadingError=Error during loading of class ''{0}'': {1}.
-
diff --git a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/RegisterClassListener.java b/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/RegisterClassListener.java
deleted file mode 100644
index 064b691..0000000
--- a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/RegisterClassListener.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package org.apache.jdo.impl.model.java.runtime;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-
-import javax.jdo.spi.RegisterClassEvent;
-import javax.jdo.spi.JDOImplHelper;
-import javax.jdo.spi.PersistenceCapable;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.jdo.model.ModelException;
-import org.apache.jdo.model.java.JavaField;
-import org.apache.jdo.model.java.JavaModel;
-import org.apache.jdo.model.java.JavaType;
-import org.apache.jdo.model.jdo.JDOClass;
-import org.apache.jdo.model.jdo.JDOField;
-import org.apache.jdo.model.jdo.JDOModel;
-import org.apache.jdo.model.jdo.PersistenceModifier;
-
-/**
- * The Model listener gets notified whenever a persistence-capable class gets 
- * registered with the JDOImplHelper at runtime.
- *
- * @author Michael Bouschen
- */
-public class RegisterClassListener
-    implements javax.jdo.spi.RegisterClassListener
-{
-    /** The corresponding JDOImplHelper instance. */
-    JDOImplHelper helper;
-
-    /** The JavaModel factory. */
-    RuntimeJavaModelFactory javaModelFactory;
-
-    /** Logger. */
-    private static Log logger =
-        LogFactory.getFactory().getInstance("org.apache.jdo.impl.model.jdo"); // NOI18N
-
-    /** 
-     * Constructor. 
-     * @param helper the JDOImplHelper instance.
-     * @param javaModelFactory the JavaModel factory.
-     */
-    public RegisterClassListener(JDOImplHelper helper, 
-                                 RuntimeJavaModelFactory javaModelFactory)
-    {
-        this.helper = helper;
-        this.javaModelFactory = javaModelFactory;
-    }
-
-    /**
-     * This method gets called when a persistence-capable class is registered.
-     * @param event a RegisterClassEvent instance describing the registered 
-     * class plus metatdata.
-     */
-    public void registerClass(RegisterClassEvent event)
-    {
-        if (logger.isDebugEnabled())
-            logger.debug("RegisterClassListener.registerClass " + //NOI18N
-                         event.getRegisteredClass());
-        try {
-            updateJDOClass(createJDOClass(event.getRegisteredClass()),
-                           event.getFieldNames(), 
-                           event.getFieldTypes(),
-                           event.getFieldFlags(),
-                           event.getPersistenceCapableSuperclass());
-        }
-        catch (ModelException ex) {
-            // ignore error message
-            logger.error("Problems updating JDOModel", ex); //NOI18N
-            System.out.println("caught " + ex); //NOI18N
-        }
-    }
-    
-    /** 
-     * Internal method to update the corresponding JDOClass instance with the 
-     * runtime meta data.
-     * @param pcClass the class object of the persistence-capable class
-     */
-    private JDOClass createJDOClass(Class pcClass)
-        throws ModelException
-    {
-        String pcClassName = pcClass.getName();
-        ClassLoader classLoader = 
-            javaModelFactory.getClassLoaderPrivileged(pcClass);
-        JavaModel javaModel = javaModelFactory.getJavaModel(classLoader);
-        JDOModel jdoModel = javaModel.getJDOModel();
-        // do not load XML here, this will be done on first request
-        JDOClass jdoClass = jdoModel.createJDOClass(pcClassName, false);
-        JavaType javaType = javaModel.getJavaType(pcClass);
-        jdoClass.setJavaType(javaType);
-        return jdoClass;
-    }
-
-    /** 
-     * Internal method to update the specified JDOClass instance with the 
-     * runtime meta data.
-     * @param jdoClass the jdoClass instance to be updated
-     * @param fieldNames the names of the managed fields
-     * @param fieldTypes the types of the managed fields
-     * @param fieldFlags the jdo field flags of the managed fields
-     * @param pcSuperclass the class object of the persistence-capable 
-     * superclass
-     */
-    private void updateJDOClass(JDOClass jdoClass,
-                                String[] fieldNames, 
-                                Class[] fieldTypes,
-                                byte[] fieldFlags,
-                                Class pcSuperclass)
-        throws ModelException
-    {
-        // handle superclass
-        if (pcSuperclass != null) {
-            ClassLoader classLoader = 
-                javaModelFactory.getClassLoaderPrivileged(pcSuperclass);
-            JavaModel superJavaModel = 
-                javaModelFactory.getJavaModel(classLoader);
-            JDOModel superJDOModel = superJavaModel.getJDOModel();
-            // do not load XML => last arg should be false
-            JDOClass superJDOClass = 
-                superJDOModel.getJDOClass(pcSuperclass.getName(), false);
-            jdoClass.setPersistenceCapableSuperclass(superJDOClass);
-        }
-        
-        // Iterate the field names and set the corresponding field type
-        RuntimeJavaType declaringClass = (RuntimeJavaType)jdoClass.getJavaType();
-        for (int i = 0; i < fieldNames.length; i++) {
-            JDOField jdoField = jdoClass.createJDOField(fieldNames[i]);
-            updateJDOField(jdoField, fieldTypes[i], fieldFlags[i],
-                           declaringClass);
-        }
-    }
-
-    /** 
-     * Internal method to update the specified JDOField instance with the 
-     * runtime meta data.
-     * @param jdoField the jdoField instance to be updated
-     * @param fieldType the type of the field
-     * @param fieldFlags the jdo field flags
-     */
-    private void updateJDOField(JDOField jdoField,
-                                Class fieldType,
-                                byte fieldFlags,
-                                RuntimeJavaType declaringClass)
-        throws ModelException
-    {
-        // handle JavaField
-        JavaField javaField = declaringClass.createJavaField(jdoField.getName(),
-            javaModelFactory.getJavaType(fieldType));
-        jdoField.setJavaField(javaField);
-        
-        // handle field flags
-        jdoField.setSerializable(
-            (fieldFlags & PersistenceCapable.SERIALIZABLE) > 0);
-    }
-}
-
diff --git a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/RuntimeJavaModel.java b/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/RuntimeJavaModel.java
deleted file mode 100644
index d1512ca..0000000
--- a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/RuntimeJavaModel.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package org.apache.jdo.impl.model.java.runtime;
-
-import org.apache.jdo.impl.model.java.PredefinedType; // for javadoc
-import org.apache.jdo.impl.model.java.reflection.ReflectionJavaModel;
-import org.apache.jdo.model.ModelFatalException;
-import org.apache.jdo.model.java.JavaType;
-import org.apache.jdo.util.I18NHelper;
-
-/**
- * A reflection based JavaModel implementation used at runtime.  
- * The implementation takes <code>java.lang.Class</code> and
- * <code>java.lang.reflect.Field</code> instances to get Java related
- * metadata about types and fields. 
- * <p>
- * The RuntimeJavaModelFactory caches JavaModel instances per ClassLoader.
- * The RuntimeJavaModel implementation will use this ClassLoader to lookup
- * any type by name. This makes sure that the type name is unique.
- * <p>
- * Any JavaType instance bound to a RuntimeJavaModel instance wraps a class
- * instance that is loaded by the ClassLoader that corresponds to this
- * RuntimeJavaModel. The only exception are PredefinedType instances 
- * (see {@link PredefinedType.getPredefinedTypes()} which are present in every
- * RuntimeJavaModel instance.
- *
- * @since 1.0.1
- * @version 2.0
- */
-public class RuntimeJavaModel
-    extends ReflectionJavaModel
-{
-    /** I18N support */
-    private final static I18NHelper msg =  
-        I18NHelper.getInstance("org.apache.jdo.impl.model.java.runtime.Bundle"); //NOI18N
-
-    /** Constructor. */
-    public RuntimeJavaModel(ClassLoader classLoader, 
-                            RuntimeJavaModelFactory declaringJavaModelFactory) 
-    {
-        super(classLoader, declaringJavaModelFactory);
-    }
-
-    /** 
-     * The method returns the JavaType instance for the specified type
-     * name. A type name is unique within one JavaModel instance. The
-     * method returns <code>null</code> if this model instance does not
-     * know a type with the specified name.
-     * <p>
-     * Note, this method calls Class.forName with the wrapped ClassLoader,
-     * if it cannot find a JavaType with the specified name in the cache.
-     * @param name the name of the type
-     * @return a JavaType instance for the specified name or
-     * <code>null</code> if not present in this model instance.
-     */
-    public JavaType getJavaType(String name) 
-    {
-        synchronized (types) {
-            JavaType javaType = (JavaType)types.get(name);
-            if (javaType == null) {
-                try {
-                    // Note, if name denotes a pc class that has not been
-                    // loaded, Class.forName will load the class which will
-                    // register the runtime metadata at the JDOImplHelper.
-                    // This will create a new JavaType entry in the cache.
-                    final boolean initialize = true; 
-                    Class clazz = RuntimeJavaModelFactory.forNamePrivileged(
-                        name, initialize, getClassLoader());
-                    // Get the class loader of the Class instance
-                    ClassLoader loader = RuntimeJavaModelFactory.
-                        getClassLoaderPrivileged(clazz);
-                    // and get the JavaModel instance for the class loader. 
-                    RuntimeJavaModel javaModel = (RuntimeJavaModel)
-                        declaringJavaModelFactory.getJavaModel(loader);
-                    // Delegate the JavaType lookup to the JavaModel instance.
-                    javaType = javaModel.getJavaTypeInternal(clazz);
-                }
-                catch (ClassNotFoundException ex) {
-                    // cannot find class => return null
-                }
-                catch (LinkageError ex) {
-                    throw new ModelFatalException(msg.msg(
-                        "EXC_ClassLoadingError", name, ex.toString())); //NOI18N
-                }
-            }
-            return javaType;
-        }
-    }
-
-    /** 
-     * The method returns the JavaType instance for the type name of the
-     * specified class object. This is a convenience method for 
-     * <code>getJavaType(clazz.getName())</code>. The major difference
-     * between this method and getJavaType taking a type name is that this 
-     * method is supposed to return a non-<code>null<code> value. The
-     * specified class object describes an existing type.
-     * <p>
-     * Note, this implementation does not call the overloaded getJavaType
-     * method taking a String, because this would retrieve the Class
-     * instance for the specified type again. Instead, it checks the cache 
-     * directly. If not available it creates a new ReflectionJavaType using
-     * the specified Class instance.
-     * @param clazz the Class instance representing the type
-     * @return a JavaType instance for the name of the specified class
-     * object or <code>null</code> if not present in this model instance.
-     */
-    public JavaType getJavaType(Class clazz)
-    {
-        if (clazz == null)
-            return null;
-        
-        String name = clazz.getName();
-        synchronized (types) {
-            JavaType javaType = (JavaType)types.get(name);
-            if (javaType == null) {
-                // Check whether the specified class object is loaded by the
-                // class loader bound to this JavaModel. Note, we never
-                // execute this check for any PredefinedType instance, because
-                // the cache lookup will always find a JavaType (the cache is
-                // initialized with all PredefinedTypes). The check would
-                // potentially fail for a PredefinedType, because it might be
-                // loaded by a different class loader.
-                ClassLoader loader = 
-                    RuntimeJavaModelFactory.getClassLoaderPrivileged(clazz);
-                if (loader != getClassLoader()) {
-                    throw new ModelFatalException(msg.msg(
-                        "ERR_UnexpectedClassLoader", //NOI18N
-                        clazz.getName(), loader, getClassLoader()));
-                }
-                try {
-                    // Make sure the class is initialized, because this will
-                    // register the runtime metadata at the JDOImplHelper. 
-                    final boolean initialize = true; 
-                    RuntimeJavaModelFactory.forNamePrivileged(
-                        clazz.getName(), initialize, loader);
-                }
-                catch (ClassNotFoundException ex) {
-                    // ignore, since class has already been loaded 
-                }
-                javaType = getJavaTypeInternal(clazz);
-            }
-            return javaType;
-        }
-    }
-
-    /** 
-     * Creates a new instance of the JavaType implementation class.
-     * <p>
-     * This implementation returns a RuntimeJavaType instance.
-     * @param clazz the Class instance representing the type
-     * @return a new JavaType instance
-     */
-    protected JavaType newJavaTypeInstance(Class clazz)
-    {
-        return new RuntimeJavaType(clazz, this);
-    }
-    
-}
diff --git a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/RuntimeJavaModelFactory.java b/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/RuntimeJavaModelFactory.java
deleted file mode 100644
index 538fa22..0000000
--- a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/RuntimeJavaModelFactory.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package org.apache.jdo.impl.model.java.runtime;
-
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-
-import javax.jdo.spi.JDOImplHelper;
-import javax.jdo.spi.JDOPermission;
-
-import org.apache.jdo.model.ModelFatalException;
-import org.apache.jdo.model.java.JavaModel;
-import org.apache.jdo.model.java.JavaModelFactory;
-import org.apache.jdo.impl.model.java.reflection.ReflectionJavaModelFactory;
-import org.apache.jdo.util.I18NHelper;
-
-/**
- * A reflection based JavaModelFactory implementation used at runtime. 
- * The implementation takes <code>java.lang.Class</code> and
- * <code>java.lang.reflect.Field</code> instances to get Java related
- * metadata about types and fields. This implementation caches JavaModel
- * instance sper ClassLoader.
- * <p>
- * RuntimeJavaModelFactory implements the singleton pattern; method 
- * {@link #getInstance()} provides access to the singleton factory
- * instance. This method also registers a model listener at the
- * JDOImplHelper to handle the runtime metadata as generated by the
- * enhancer. 
- * 
- * @since 1.0.1
- * @version 2.0
- */
-public class RuntimeJavaModelFactory
-    extends ReflectionJavaModelFactory
-{    
-    /** The singleton RuntimeJavaModelFactory instance. */    
-    private static final RuntimeJavaModelFactory runtimeJavaModelFactory = 
-        new RuntimeJavaModelFactory();
-
-    /** I18N support */
-    private final static I18NHelper msg =  
-        I18NHelper.getInstance(RuntimeJavaModelFactory.class);
-
-    /**
-     * Creates a new RuntimeJavaModelFactory. This constructor should not
-     * be called directly; instead, the singleton access method 
-     * {@link #getInstance()} should be used.
-     */
-    protected RuntimeJavaModelFactory()
-    {
-        registerFactory();
-    }
-    
-    /** 
-     * Returns the singleton instance of RuntimeJavaModelFactory. On first
-     * call it registers  a model listener at the JDOImplHelper.
-     * This method checks that the caller is authorized for 
-     * <code>JDOPermission("getMetadata")</code>, and if not, throws
-     * <code>ModelFatalException</code> wrapping the SecurityException.
-     * @return RuntimeJavaModelFactory instance
-     * @exception ModelFatalException if the caller does not have the
-     * getMetadata permission.
-     */    
-    public static RuntimeJavaModelFactory getInstance()
-        throws ModelFatalException
-    {
-        checkPermission();
-        return runtimeJavaModelFactory;
-    }
-
-    //========= Internal helper methods ==========
-
-    /**
-     * This method checks that the caller is authorized for
-     * <code>JDOPermission("getMetadata")</code>, and if not, throws 
-     * <code>ModelFatalException</code> wrapping the SecurityException.
-     * @throws ModelFatalException if the caller does not have the
-     * getMetadata permission.
-     */
-    protected static void checkPermission()
-        throws ModelFatalException
-    {
-        // check whether caller has the getMetadata permission
-        SecurityManager sec = System.getSecurityManager();
-        if (sec != null) { 
-            try {
-                // throws exception if caller is not authorized
-                sec.checkPermission(JDOPermission.GET_METADATA);
-            }
-            catch (SecurityException ex) {
-                throw new ModelFatalException(
-                    msg.msg("EXC_CannotGetRuntimeJavaModelFactory"), ex); // NOI18N
-            }
-        }
-    }
-    
-    /** 
-     * Registers this JavaModelFactory instance at the JDOImplHelper. 
-     */
-    protected void registerFactory()
-    {
-        // initialize RuntimeJavaModelFactory singleton instance
-        try {
-            JDOImplHelper helper = 
-                (JDOImplHelper) AccessController.doPrivileged(
-                    new PrivilegedAction () {
-                        public Object run () {
-                            return JDOImplHelper.getInstance();
-                        }
-                    }
-                    );
-            // register listener to JDOImplHelpers class registration
-            RegisterClassListener crl = new RegisterClassListener(
-                helper, this);
-            helper.addRegisterClassListener(crl);
-        }
-        catch (SecurityException ex) {
-            throw new ModelFatalException(
-                msg.msg("EXC_CannotGetJDOImplHelper"), ex); // NOI18N
-        }
-    }
-
-    /** 
-     * Creates a new instance of the JavaModel implementation class.
-     * <p>
-     * This implementation returns a <code>RuntimeJavaModel</code> instance.
-     * @return a new JavaModel instance.
-     */
-    protected JavaModel newJavaModelInstance(ClassLoader classLoader) {
-        return new RuntimeJavaModel(classLoader, this);
-    }
-
-}
diff --git a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/RuntimeJavaType.java b/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/RuntimeJavaType.java
deleted file mode 100644
index efdc70e..0000000
--- a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/RuntimeJavaType.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package org.apache.jdo.impl.model.java.runtime;
-
-import org.apache.jdo.impl.model.java.reflection.ReflectionJavaType;
-import org.apache.jdo.model.ModelFatalException;
-import org.apache.jdo.model.java.JavaField;
-import org.apache.jdo.model.java.JavaModel;
-import org.apache.jdo.model.java.JavaType;
-import org.apache.jdo.util.I18NHelper;
-
-/**
- * A reflection based JavaType implementation used at runtime.  
- * The implementation takes <code>java.lang.Class</code> and
- * <code>java.lang.reflect.Field</code> instances to get Java related
- * metadata about types and fields. 
- *
- * @author Michael Bouschen
- * @since JDO 1.0.1
- * @version JDO 2.0
- */
-public class RuntimeJavaType
-    extends ReflectionJavaType
-{
-    /** I18N support */
-    private final static I18NHelper msg =  
-        I18NHelper.getInstance(RuntimeJavaType.class);
-
-    /** Constructor. */
-    public RuntimeJavaType(Class clazz, RuntimeJavaModel javaModel)
-    {
-        super(clazz, javaModel);
-    }
-
-    // ===== Methods not specified in JavaType =====
-
-    /**
-     * RegisterClassListener calls this method to create a ReflectionJavaField
-     * instance when processing the enhancer generated metadata.
-     * @param name the name of the field
-     * @param type the type of the field
-     * @return the ReflectionJavaField representation
-     */
-    public synchronized JavaField createJavaField(String name, JavaType type)
-    {
-        JavaField javaField = (JavaField)declaredJavaFields.get(name);
-        if (javaField != null) {
-            throw new ModelFatalException(msg.msg(
-                "ERR_MultipleJavaField", //NOI18N
-                "RuntimeJavaType.createJavaField", name, getName())); //NOI18N
-        }
-        javaField = newJavaFieldInstance(name, type);
-        declaredJavaFields.put(name, javaField);
-        return javaField;
-    }
-}
diff --git a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/jdk5/ComponentTypeHelper.java b/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/jdk5/ComponentTypeHelper.java
deleted file mode 100644
index 084d8bd..0000000
--- a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/jdk5/ComponentTypeHelper.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package org.apache.jdo.impl.model.java.runtime.jdk5;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.lang.reflect.ParameterizedType;
-
-import org.apache.jdo.impl.model.java.PredefinedType;
-import org.apache.jdo.model.java.JavaField;
-import org.apache.jdo.model.java.JavaMethod;
-import org.apache.jdo.model.java.JavaProperty;
-import org.apache.jdo.model.java.JavaType;
-
-/** 
- * Helper class to calculate the component type of he type of a field, method
- * or property in a J2SE5.0 environment. 
-*/
-public class ComponentTypeHelper
-{
-    /**
-     * Returns the Class instance representing the component type of the
-     * type of the specified field.
-     */
-    public static Class getComponentClass(JavaField javaField)
-    {
-        JavaType type = javaField.getType();
-        Field field = (Field) javaField.getUnderlyingObject();
-        return getComponentClass(type, field.getGenericType());
-    }
-
-    /**
-     * Returns the Class instance representing the component type of the
-     * return type of the specified method.
-     */
-    public static Class getComponentClass(JavaMethod javaMethod)
-    {
-        JavaType type = javaMethod.getReturnType();
-        if (type == PredefinedType.voidType)
-            // return null for void method
-            return null;
-        Method method = (Method) javaMethod.getUnderlyingObject();
-        return getComponentClass(type, method.getGenericReturnType());
-    }
-
-    /**
-     * Returns the Class instance representing the component type of the
-     * type of the specified property.
-     */
-    public static Class getComponentClass(JavaProperty javaProperty)
-    {
-        Class componentClass = null;
-        JavaMethod getter = javaProperty.getGetterMethod();
-        JavaMethod setter = javaProperty.getSetterMethod();
-        if (getter != null)
-            componentClass = getComponentClass(getter);
-        else if (setter != null) {
-            JavaType[] paramJavaTypes = setter.getParameterTypes();
-            assert(paramJavaTypes.length == 1);
-            Method method = (Method) setter.getUnderlyingObject();
-            Type[] genericParamTypes = method.getGenericParameterTypes();
-            assert(genericParamTypes.length == 1);
-            componentClass = 
-                getComponentClass(paramJavaTypes[0], genericParamTypes[0]);
-        }
-        return componentClass;
-    }
-
-    // ===== Internal helper methods =====
-
-    /** Helper method. */
-    private static Class getComponentClass(JavaType type, Type genericType)
-    {
-        Class componentClass = null;
-        if (type.isArray()) {
-            Class clazz = (Class) type.getUnderlyingObject();
-            componentClass = clazz.getComponentType(); 
-        }
-        else if (type.isJDOSupportedCollection()) {
-            if (genericType instanceof ParameterizedType) {
-                ParameterizedType pt = (ParameterizedType) genericType;
-                Type[] actualTypeArgs = pt.getActualTypeArguments();
-                assert(actualTypeArgs.length == 1);
-                assert(actualTypeArgs[0] instanceof Class);
-                componentClass = (Class) actualTypeArgs[0];
-            }
-        }
-        return componentClass;
-    }
-    
-    
-}
diff --git a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/jdk5/JDK5RuntimeJavaField.java b/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/jdk5/JDK5RuntimeJavaField.java
deleted file mode 100644
index b0edef1..0000000
--- a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/jdk5/JDK5RuntimeJavaField.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package org.apache.jdo.impl.model.java.runtime.jdk5;
-
-import java.lang.reflect.Field;
-
-import org.apache.jdo.impl.model.java.reflection.ReflectionJavaField;
-import org.apache.jdo.model.java.JavaType;
-
-/**
- * A reflection based JavaField implementation used at runtime in a
- * J2SE5.0 environment. 
- *
- * @author Michael Bouschen
- */
-public class JDK5RuntimeJavaField 
-        extends ReflectionJavaField
-{
-    /** 
-     * Constructor for fields w/o JDO metadata. 
-     * @param field the reflection field representation.
-     * @param declaringClass the JavaType of the class that declares the field.
-     */
-    public JDK5RuntimeJavaField(Field field, JavaType declaringClass)
-    {
-        super(field, declaringClass);
-    }
-        
-    /** 
-     * Constructor for fields having JDO metadata.
-     * @param name the name of the field.
-     * @param type the field type.
-     * @param declaringClass the JavaType of the class that declares the field.
-     */
-    public JDK5RuntimeJavaField(String name, JavaType type,
-            JavaType declaringClass)
-    {
-        super(name, type, declaringClass);
-    }
-    
-    // ===== methods specified in JavaMember =====
-    
-     /**
-     * Returns the JavaType representation of the component type of the type
-     * of the property, if the property type is an array or collection. The
-     * method returns <code>null</code>, if the property type is not an array
-     * or collection.
-     * @return the component type of the property type in case of an array or
-     * collection.
-     */
-    public JavaType getComponentType() 
-    {
-        Class componentClass = ComponentTypeHelper.getComponentClass(this);
-        return (componentClass == null) ? null : 
-            getJavaTypeForClass(componentClass);
-    }
-}
diff --git a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/jdk5/JDK5RuntimeJavaMethod.java b/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/jdk5/JDK5RuntimeJavaMethod.java
deleted file mode 100644
index 3048bda..0000000
--- a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/jdk5/JDK5RuntimeJavaMethod.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package org.apache.jdo.impl.model.java.runtime.jdk5;
-
-import org.apache.jdo.impl.model.java.reflection.ReflectionJavaMethod;
-import java.lang.reflect.Method;
-import org.apache.jdo.model.java.JavaType;
-
-/**
- * A reflection based JavaMethod implementation used at runtime in a
- * J2SE5.0 environment. 
- *
- * @author Michael Bouschen
- */
-public class JDK5RuntimeJavaMethod 
-        extends ReflectionJavaMethod
-{
-    /** 
-     * Constructor.
-     * @param method the reflection method representation.
-     * @param declaringClass the JavaType of the class that declares the
-     * method. 
-     */
-    public JDK5RuntimeJavaMethod(Method method, JavaType declaringClass)
-    {
-        super(method, declaringClass);
-    }
-        
-    // ===== methods specified in JavaMember =====
-    
-     /**
-     * Returns the JavaType representation of the component type of the return
-     * type of the method, if the method return type is an array or
-     * collection. The method returns <code>null</code>, if the property type
-     * is not an array or collection.
-     * @return the component type of the method return type in case of an
-     * array or collection. 
-     */
-    public JavaType getComponentType() 
-    {
-        Class componentClass = ComponentTypeHelper.getComponentClass(this);
-        return (componentClass == null) ? null : 
-            getJavaTypeForClass(componentClass);
-   }
-}
diff --git a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/jdk5/JDK5RuntimeJavaModel.java b/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/jdk5/JDK5RuntimeJavaModel.java
deleted file mode 100644
index 9d18e27..0000000
--- a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/jdk5/JDK5RuntimeJavaModel.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package org.apache.jdo.impl.model.java.runtime.jdk5;
-
-import org.apache.jdo.model.java.JavaType;
-import org.apache.jdo.impl.model.java.runtime.*;
-
-/**
- * A reflection based JavaModel implementation used at runtime in a J2SE5.0
- * environment. 
- * The implementation takes <code>java.lang.Class</code> and
- * <code>java.lang.reflect.Field</code> instances to get Java related
- * metadata about types and fields. 
- * <p>
- * The RuntimeJavaModelFactory caches JavaModel instances per ClassLoader.
- * The RuntimeJavaModel implementation will use this ClassLoader to lookup
- * any type by name. This makes sure that the type name is unique.
- *
- * @author Michael Bouschen
- * @since JDO 2.0
- */
-public class JDK5RuntimeJavaModel
-    extends RuntimeJavaModel
-{
-    /** Constructor. */
-    public JDK5RuntimeJavaModel(ClassLoader classLoader, 
-        JDK5RuntimeJavaModelFactory declaringJavaModelFactory) 
-    {
-        super(classLoader, declaringJavaModelFactory);
-    }
-    
-    /** 
-     * Creates a new instance of the JavaType implementation class.
-     * <p>
-     * This implementation returns a RuntimeJavaType instance.
-     * @param clazz the Class instance representing the type
-     * @return a new JavaType instance
-     */
-    protected JavaType newJavaTypeInstance(Class clazz)
-    {
-        return new JDK5RuntimeJavaType(clazz, this);
-    }
-    
-}
diff --git a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/jdk5/JDK5RuntimeJavaModelFactory.java b/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/jdk5/JDK5RuntimeJavaModelFactory.java
deleted file mode 100644
index 9867543..0000000
--- a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/jdk5/JDK5RuntimeJavaModelFactory.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package org.apache.jdo.impl.model.java.runtime.jdk5;
-import org.apache.jdo.model.ModelFatalException;
-import org.apache.jdo.model.java.JavaModel;
-import org.apache.jdo.util.I18NHelper;
-import javax.jdo.spi.JDOPermission;
-import org.apache.jdo.impl.model.java.runtime.*;
-
-/**
- * A reflection based JavaModelFactory implementation used at runtime in a
- * J2SE5.0 environment. 
- * The implementation takes <code>java.lang.Class</code> and
- * <code>java.lang.reflect.Field</code> instances to get Java related
- * metadata about types and fields. This implementation caches JavaModel
- * instances per ClassLoader.
- * <p>
- * JDK5RuntimeJavaModelFactory implements the singleton pattern; method 
- * {@link #getInstance()} provides access to the singleton factory
- * instance. This method also registers a model listener at the
- * JDOImplHelper to handle the runtime metadata as generated by the
- * enhancer. 
- * 
- * @author Michael Bouschen
- * @since JDO 2.0
- */
-public class JDK5RuntimeJavaModelFactory
-    extends RuntimeJavaModelFactory
-{    
-    /** The singleton JDK5RuntimeJavaModelFactory instance. */    
-    private static final JDK5RuntimeJavaModelFactory runtimeJavaModelFactory = 
-        new JDK5RuntimeJavaModelFactory();
-
-    /** I18N support */
-    private final static I18NHelper msg =  
-        I18NHelper.getInstance(JDK5RuntimeJavaModelFactory.class); 
-
-    /**
-     * Creates a new RuntimeJavaModelFactory. This constructor should not
-     * be called directly; instead, the singleton access method 
-     * {@link #getInstance()} should be used.
-     */
-    protected JDK5RuntimeJavaModelFactory() {}
-
-    /** 
-     * Returns the singleton instance of JDK5RuntimeJavaModelFactory. On first
-     * call it registers  a model listener at the JDOImplHelper.
-     * This method checks that the caller is authorized for 
-     * <code>JDOPermission("getMetadata")</code>, and if not, throws
-     * <code>ModelFatalException</code> wrapping the SecurityException.
-     * @return RuntimeJavaModelFactory instance
-     * @exception ModelFatalException if the caller does not have the
-     * getMetadata permission.
-     */    
-    public static JDK5RuntimeJavaModelFactory getInstance()
-        throws ModelFatalException
-    {
-        checkPermission();
-        return runtimeJavaModelFactory;
-    }
-    
-    //========= Internal helper methods ==========
-
-    /** 
-     * Creates a new instance of the JavaModel implementation class.
-     * <p>
-     * This implementation returns a <code>JDK5RuntimeJavaModel</code> instance.
-     * @return a new JavaModel instance.
-     */
-    protected JavaModel newJavaModelInstance(ClassLoader classLoader) {
-        return new JDK5RuntimeJavaModel(classLoader, this);
-    }
-    
-}
diff --git a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/jdk5/JDK5RuntimeJavaProperty.java b/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/jdk5/JDK5RuntimeJavaProperty.java
deleted file mode 100644
index bab8907..0000000
--- a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/jdk5/JDK5RuntimeJavaProperty.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package org.apache.jdo.impl.model.java.runtime.jdk5;
-
-import org.apache.jdo.impl.model.java.JavaPropertyImpl;
-import org.apache.jdo.model.java.JavaMethod;
-import org.apache.jdo.model.java.JavaType;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import org.apache.jdo.impl.model.java.runtime.*;
-
-/**
- * Default implementation for the JavaProperty interfaces. A JavaProperty
- * represents a JavaBeans property.
- *
- * @author Michael Bouschen
- */
-public class JDK5RuntimeJavaProperty 
-        extends JavaPropertyImpl
-{
-    /** */
-    public JDK5RuntimeJavaProperty(String name, 
-        JavaMethod getter, JavaMethod setter,
-        JavaType type, JavaType declaringClass)
-    {
-        super(name, getter, setter, type, declaringClass);
-    }
- 
-    // ===== methods specified in JavaMember =====
-    
-    /**
-     * Returns the JavaType representation of the component type of the type
-     * of the property, if the property type is an array or collection. The
-     * method returns <code>null</code>, if the property type is not an array
-     * or collection.
-     * @return the component type of the property type in case of an array or
-     * collection.
-     */
-    public JavaType getComponentType() 
-    {
-        Class componentClass = ComponentTypeHelper.getComponentClass(this);
-        return (componentClass == null) ? null : 
-            getJavaTypeForClass(componentClass);
-    }
-    
-    // ===== Methods not specified in JavaProperty =====
-    
-    /** 
-     * Returns a JavaType instance for the specified Class object. 
-     * This method provides a hook such that ReflectionJavaField subclasses can
-     * implement their own mapping of Class objects to JavaType instances. 
-     */
-    public JavaType getJavaTypeForClass(Class clazz)
-    {
-        return ((JDK5RuntimeJavaType) getDeclaringClass()).
-                getJavaTypeForClass(clazz);
-    }
-}
diff --git a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/jdk5/JDK5RuntimeJavaType.java b/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/jdk5/JDK5RuntimeJavaType.java
deleted file mode 100644
index 78b2e61..0000000
--- a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/jdk5/JDK5RuntimeJavaType.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package org.apache.jdo.impl.model.java.runtime.jdk5;
-
-import org.apache.jdo.model.java.JavaField;
-import org.apache.jdo.model.java.JavaMethod;
-import org.apache.jdo.model.java.JavaProperty;
-import org.apache.jdo.model.java.JavaType;
-
-import java.lang.reflect.Field;
-import org.apache.jdo.impl.model.java.runtime.*;
-
-/**
-/**
- * A reflection based JavaType implementation used at runtime in a
- * J2SE5.0 environment.  
- * The implementation takes <code>java.lang.Class</code> and
- * <code>java.lang.reflect.Field</code> instances to get Java related
- * metadata about types and fields. 
- *
- * @author Michael Bouschen
- */
-public class JDK5RuntimeJavaType
-    extends RuntimeJavaType
-{
-    /** Constructor. */
-    public JDK5RuntimeJavaType(Class clazz, JDK5RuntimeJavaModel javaModel)
-    {
-        super(clazz, javaModel);
-    }
-
-   /**
-     * Creates a new instance of the JavaField implementation class.
-     * <p>
-     * This implementation returns a <code>JDK5RuntimeJavaField</code>
-     * instance.
-     * @return a new JavaField instance.
-     */
-    protected JavaField newJavaFieldInstance(String name, JavaType type) 
-    {
-        return new JDK5RuntimeJavaField(name, type, this);
-    }
-    
-    /**
-     * Creates a new instance of the JavaField implementation class.
-     * <p>
-     * This implementation returns a <code>ReflectionJavaField</code>
-     * instance.
-     * @return a new JavaField instance.
-     */
-
-    protected JavaField newJavaFieldInstance(Field field) 
-    {
-        return new JDK5RuntimeJavaField(field, this);
-    }
-    
-    /**
-     * Creates a new instance of the JavaProperty implementation class.
-     * <p>
-     * This implementation returns a <code>JavaPropertyImpl</code>
-     * instance.
-     * @return a new JavaProperty instance.
-     */
-    protected JavaProperty newJavaPropertyInstance(String name, 
-            JavaMethod getter, JavaMethod setter, JavaType type) 
-    {
-        return new JDK5RuntimeJavaProperty(name, getter, setter, type, this);
-    }
-    
-}
diff --git a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/package.html b/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/package.html
deleted file mode 100644
index 0fe21aa..0000000
--- a/runtime20/src/java/org/apache/jdo/impl/model/java/runtime/package.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!--
- Copyright 2005 The Apache Software Foundation.
- 
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- 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.
--->
-
-<html>
-<head>
-<title>Runtime JavaModel implementation package.</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</head>
-
-<body bgcolor="#FFFFFF">
-<p>This package contains a runtime specific JavaModel implementation 
-based on reflection.
-</body>
-</html>
diff --git a/runtime20/src/java/org/apache/jdo/impl/model/jdo/xml/XMLExists.java b/runtime20/src/java/org/apache/jdo/impl/model/jdo/xml/XMLExists.java
deleted file mode 100644
index 4a37f2d..0000000
--- a/runtime20/src/java/org/apache/jdo/impl/model/jdo/xml/XMLExists.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package org.apache.jdo.impl.model.jdo.xml;
-
-import java.util.*;
-
-import org.apache.jdo.impl.model.java.reflection.ReflectionJavaModelFactory;
-import org.apache.jdo.impl.model.jdo.util.PrintSupport;
-import org.apache.jdo.model.java.JavaModel;
-import org.apache.jdo.model.java.JavaModelFactory;
-import org.apache.jdo.model.jdo.JDOClass;
-import org.apache.jdo.model.jdo.JDOModel;
-
-/**
- * This class allows to check whether there is JDO metadata for a class with 
- * a given class name. There must be a class file (enhanced or not enhanced)
- * available in the classpath of the caller.
- * <p>
- * Usage: XMLExists &lt;options&gt; &lt;arguments&gt;...
- * <br>
- * Options:
- * <br>
- * <code>&nbsp;&nbsp;-h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code>
- * print usage message
- * <br>
- * <code>&nbsp;&nbsp;-v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code>
- * print verbose messages and JDO metadata
- * <br>
- * <code>&nbsp;&nbsp;-q&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code>
- * do not print any output; just set the exit code
- * <br>
- * <code>&nbsp;&nbsp;-xml&nbsp;&nbsp;&nbsp;&nbsp;</code>
- * expected to find JDO XML metadata for the specified class(es)
- * <br>
- * <code>&nbsp;&nbsp;-noxml&nbsp;&nbsp;</code>
- * expected to find no JDO XML metadata for the specified class(es)
- * <br>
- * Arguments:
- * <br>
- * <code>&nbsp;&nbsp;&lt;classname&gt;&nbsp;</code>
- * the fully qualified name of a class to be checked
- * <p>
- * The following sample call checks whether there is JDO XML metadata for the 
- * classes Emplyoe and Department from the com.xyz.hr package and dumps the 
- * JDOClass instances:
- * <br>
- * <code>&nbsp;&nbsp;java org.apache.jdo.impl.model.jdo.util.XMLExists -v 
- * com.xyz.hr.Employee com.xyz.hr.Department</code>
- * <p>
- * Method main will exit the JVM with an exit code 1 if the test fails for 
- * at least one class. Please note, the class dumps the JDOClass if the 
- * outputLevel is set to VERBOSE (e.g. by setting the -v option). This JDOClass 
- * info does NOT include runtime metadata, even if the class file is enhanced.
- * 
- * @author Michael Bouschen
- */
-public class XMLExists
-{
-    /** 
-     * Flag indicating whether the classes to be checked is expected to have 
-     * JDO XML metadata or not.
-     */
-    private boolean xmlExpected;
-    
-    /** Print verbose messages. */
-    public static final int VERBOSE = 1;
-
-    /** Normal output. */
-    public static final int NORMAL = 0;
-
-    /** No messages, just set the exit code. */
-    public static final int QUIET = -1;
-       
-    /** Output level.*/
-    private int outputLevel = NORMAL;
-
-    /** 
-     * The main method checks all classes specified as argument.
-     * It will exit the JVM with an exit code 1 if the test fails for 
-     * at least one class. 
-     * @param args arguments which are options followed by class names.
-     */
-    public static void main(String[] args)
-    {
-        final XMLExists test = new XMLExists();
-        final List classNames = test.processArgs(args);
-        if (!test.run(classNames))
-            System.exit(1);
-    }
-
-    /** 
-     * No arg constructor. The flags default to
-     * <ul>
-     * <li> <code>xmlExpected == true</code>
-     * <li> <code>outputLevel == NORMAL</code>
-     * </ul>
-     */
-    public XMLExists()
-    {
-        this(true, NORMAL);
-    }
-
-    /** Constructor taking checkXMLExists and outputLevel. */
-    public XMLExists(boolean xmlExpected, int outputLevel)
-    {
-        this.xmlExpected = xmlExpected;
-        this.outputLevel = outputLevel;
-    }
-
-    /**
-     * This method checks all classes from the specified list of class names.
-     * It uses the current classLoader to load the classes. The method returns 
-     * <code>false</code> if there is at least one class that fails on checking.
-     * @param classNames list of classes to be checked
-     * @return <code>true</code> if all classes are ok;
-     * <code>false</code> otherwise.
-     */
-    public boolean run(List classNames)
-    {
-        ClassLoader classLoader = getClass().getClassLoader();
-        JavaModelFactory factory = new JavaModelFactoryImpl();
-        JavaModel javaModel = factory.getJavaModel(classLoader);
-        JDOModel jdoModel = javaModel.getJDOModel();
-        boolean ok = true;
-        for (Iterator i = classNames.iterator(); i.hasNext(); ) {
-            final String className = (String)i.next();
-            try {
-                checkClass(className, classLoader, jdoModel, xmlExpected);
-                if ((outputLevel == NORMAL) && xmlExpected)
-                    System.out.println(
-                        "Found XML metadata for class " + className); //NOI18N
-                                       
-                else if ((outputLevel == NORMAL) && !xmlExpected)
-                    System.out.println(
-                        "No MXL metadata for class " + className); //NOI18N
-            }
-            catch (Exception ex) {
-                if (outputLevel > QUIET) {
-                    System.err.println(ex);
-                    ex.printStackTrace();
-                }
-                ok = false;
-            }
-        }
-        return ok;
-    }
-    
-    /** 
-     * The method checks the class with the specified class name.
-     * It first loads the class using the specified class loader.
-     * If the flag xmlExpected is <code>true</code> it expects to get a non-null
-     * JDOClass instance. If the flag xmlExpected is <code>false</code> it 
-     * expects to get a null JDOClass instance. 
-     * <p>
-     * The method indicates any failure by throwing an exception. 
-     * It dumps the JDOClass if the output level is VERBOSE.
-     * @param className the name of the class to be checked
-     * @param classLoader the class loader to be used to load the class
-     * @param jdoModel JDOModel for type info
-     * @param xmlExpected flag whether the class to be checked is expected to 
-     * have JDO XML metadata or not.
-     */
-    public void checkClass(String className, 
-                           ClassLoader classLoader,
-                           JDOModel jdoModel, 
-                           boolean xmlExpected)
-        throws Exception
-    {
-        Class clazz = Class.forName(className, true, classLoader);
-        if (outputLevel == VERBOSE)
-            System.out.println("Found " + clazz); //NOI18N
-        JDOClass jdoClass = jdoModel.getJDOClass(className);
-        if (xmlExpected && (jdoClass == null)) {
-            throw new Exception(
-                "Missing JDO XML metadata for class " + //NOI18N
-                className);
-        }
-        if (!xmlExpected && (jdoClass != null)) {
-            throw new Exception(
-                "Found JDO XML metadata for class " + className); //NOI18N
-        }
-        if ((outputLevel == VERBOSE) && (jdoClass != null)) {
-            PrintSupport.printJDOClass(jdoClass);
-        }
-    }
-    
-    // ==== Comand line processing helper method =====
-    
-    /**
-     * Helper method to do command line argument processing.
-     * @param args the arguments passed to main.
-     * @return the list of classes to be checked.
-     */
-    protected List processArgs(String[] args)
-    { 
-        List classNames = new ArrayList();
-        for (int i = 0; i < args.length; i++) {
-            final String arg = args[i];
-            if (arg.equals("-h")) { //NOI18N
-                usage();
-            }
-            else if (arg.equals("-v")) { //NOI18N
-                outputLevel = VERBOSE;
-            }
-            else if (arg.equals("-q")) { //NOI18N
-                outputLevel = QUIET;
-            }
-            else if (arg.equals("-xml")) { //NOI18N
-                xmlExpected = true;
-            }
-            else if (arg.equals("-noxml")) { //NOI18N
-                xmlExpected = false;
-            }
-            else if (arg.length() > 0 && arg.charAt(0) == '-') {
-                System.err.println("Unrecognized option:" + arg); //NOI18N
-                usage();
-            }
-            else if (arg.length() == 0) {
-                System.err.println("Ignoring empty command line argument."); //NOI18N
-            }
-            else {
-                classNames.add(arg);
-            }
-        }
-        return classNames;
-    }
-    
-    /**
-     * Print a usage message to System.err.
-     */
-    public void usage() 
-    {
-        System.err.println("Usage: main <options> <arguments>..."); //NOI18N
-        System.err.println("Options:"); //NOI18N
-        System.err.println("  -h      print usage message"); //NOI18N
-        System.err.println("  -v      print verbose messages and JDO metadata"); //NOI18N
-        System.err.println("  -q      do not print any messages; just set the exit code"); //NOI18N
-        System.err.println("  -xml    expected to find JDO XML metadata for the specified class(es)"); //NOI18N
-        System.err.println("  -noxml  expected to find no JDO XML metadata for the specified class(es)"); //NOI18N
-        System.err.println("Arguments:"); //NOI18N
-        System.err.println("  <classname>   the fully qualified name of a class to be checked"); //NOI18N
-    }
-    
-    /**
-     * JavaModelFactory implementation. 
-     * We cannot use the RuntimeJavaModelFactory, because it registers
-     * a JDOImplHelper event listener to populate enhancer generated
-     * metadata into the model. Since XMLExists checks whether JDO
-     * metadata is present from a .jdo we do not want to the enhancer
-     * generated metadata.
-     */
-    private static class JavaModelFactoryImpl
-        extends ReflectionJavaModelFactory { }
-}
diff --git a/runtime20/src/java/org/apache/jdo/impl/pm/Bundle.properties b/runtime20/src/java/org/apache/jdo/impl/pm/Bundle.properties
deleted file mode 100644
index 098f8a3..0000000
--- a/runtime20/src/java/org/apache/jdo/impl/pm/Bundle.properties
+++ /dev/null
@@ -1,102 +0,0 @@
-#
-# Copyright 2005 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# 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.
-
-# This file should conform to netbeans standards
-# (http://www.netbeans.org/i18n)
-
-# resource bundle for the messages
-# key consists of: <PREFIX_><description>
-# <PREFIX_> - any valid prefix like MSG_, EXC_, etc.
-# <description> - short description started with the upper case letter and used
-# upper case to represent each next word.
-
-# XXX TBD: this message is not used:
-notsupported=Operation {0} is not supported in this release.
-
-
-#
-# CacheManagerImpl
-#
-EXC_MetaDataNotAvailable=Metadata for the owning Class is not available.
-EXC_NonTransactional=Instance is not transactional.
-EXC_ObjectExistsInCache=Object exists. Instance with the same primary key is already in the PersistenceManager cache.
-EXC_NotOID=Given object is not a valid OID.
-# NOI18N
-EXC_ObjectIdExistsInCache=ObjectId {0} already exists in this PersistenceManager cache.
-# NOI18N
-EXC_ObjectIdNotExistsInCache=ObjectId {0} does not exist in this PersistenceManager cache.
-
-#
-# PersistenceManagerFactoryImpl
-#
-EXC_NotConfigurable=This instance of PersistenceManagerFactory is not configurable.
-EXC_IntegerInInvalidFormat=Integer found in invalid format: should not happen!
-EXC_IncompleteConfiguration=One of ConnectionURL, ConnectionFactory, or ConnectionFactoryName must be set before using this PersistenceManagerFactory.
-EXC_WrongUsernamePassword=Cannot use multiple combinations of username/password in the same transaction.
-# NOI18N
-EXC_WrongJTATransaction=This instance of javax.transaction.Transaction is registered with another PersistenceManager.
-EXC_PersistenceManagerFactoryClosed=This operation cannot be performed because this PersistenceManagerFactory is closed.
-EXC_ActivePersistenceManager=This PersistenceManagerFactory cannot be closed while a PersistenceManager has an active transaction.
-EXC_CannotAddShutdownHook=A SecurityException was thrown when trying \
-to add a JVM shudown hook. In order to register a shutdown hook, \
-you must grant java.lang.RuntimePermission("shutdownHooks") to the \
-codeBase containing the persistence manager factory implementation.
-
-#
-# PersistenceManagerImpl
-#
-EXC_CannotGetRuntimeJavaModelFactory=A SecurityException was thrown when trying \
-to get the singleton RuntimeJavaModelFactory instance. In order to get runtime \
-metadata, you must grant javax.jdo.spi.JDOPermission("getMetadata") to the \
-codeBase containing the persistence manager implementation.
-EXC_ActiveTransaction=Cannot close PersistenceManager while transaction is still active.
-EXC_WrongSCOType=Tracked SCO instances of type {0} are not supported.
-EXC_CannotConstructSCO=Exception during construction of type {0}.
-EXC_IllegalArguments=Wrong arguments for construction of type {0}.
-EXC_PersistenceManagerClosed=PersistenceManager was closed.
-EXC_TransactionNotActive=Transaction is not active.
-EXC_NotPersistenceCapable=Class {0} not PersistenceCapable. The class of the instance does not implement PersistenceCapable. Check to see that the class has been enhanced and that the class path is correct (the unenhanced version of the class should not be in the class path).
-EXC_CollectionType=Parameter is of a Collection type; use method {0}All(Collection).
-EXC_ArrayType=Parameter is of an array type; use method {0}All(Object[]).
-EXC_TransientInstance=Instance of class {0} is not persistent.
-EXC_AnotherPersistenceManager=Object owned by another PersistenceManager.
-EXC_ClassNotPersistenceCapable=Class given to getExtent, {0},  does not implement javax.jdo.spi.PersistenceCapable
-EXC_FailedToProcessAll=Failed to process all objects.
-EXC_CannotFindSM=Could not find a StateManager for the given PersistenceCapable of class {0}.
-# NOI18N
-EXC_NotNullJTATransaction=Attempt to replace not null javax.transaction.Transaction.
-EXC_UnsupportedQueryLanguage=Unsupported query language ''{0}''
-EXC_CannotFindPCClassForObjectIdClass=Cannot find persistence-capable class for ObjectId class ''{0}''
-
-#
-# TransactionImpl
-#
-EXC_CannotChangeType=Cannot change transaction type during an active transaction.
-EXC_CannotSetFlag=Cannot change flag value during commit or rollback processing.
-EXC_CannotSetFlagIfActive=Cannot change flag value if transaction is active.
-EXC_SynchronizationNotNull=A Synchronization object has already been set for this transaction.
-EXC_ErrorBegin=Transaction has already begun.
-EXC_TransactionRolledback=Transaction already rolled back or rollback in progress.
-EXC_TransactionCommitting=Transaction has already started to commit.
-EXC_MarkedRolledback=This transaction was marked rollback-only.
-EXC_WrongStateCommit=Transaction in wrong state to commit.
-EXC_WrongStateRollback=Transaction in wrong state to rollback.
-EXC_InvalidStatus=Invalid Transaction.{0}(). This transaction status is not {1} (status = {2}).
-EXC_WrongMgdOperation=Operation {0} is not allowed in managed environment.
-EXC_WrongNonMgdOperation=Operation {0} is not allowed in non-managed environment.
-EXC_NontransactionalRead=This operation requires that a transaction be active or the NontransactionalRead flag be true.
-# NOI18N
-EXC_ErrorRegister=Cannot register this instance with JTA Synchronization.
-
diff --git a/runtime20/src/java/org/apache/jdo/impl/pm/CacheManagerImpl.java b/runtime20/src/java/org/apache/jdo/impl/pm/CacheManagerImpl.java
deleted file mode 100644
index e6e6161..0000000
--- a/runtime20/src/java/org/apache/jdo/impl/pm/CacheManagerImpl.java
+++ /dev/null
@@ -1,631 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * CacheManagerImpl.java
- *
- * Created on December 1, 2000
- */
-
-package org.apache.jdo.impl.pm;
-
-import java.util.*;
-import java.lang.reflect.Field;
-import java.lang.reflect.Constructor;
-import java.lang.ref.WeakReference;
-
-import javax.jdo.*;
-import javax.jdo.spi.*;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.jdo.impl.state.StateManagerFactory;
-import org.apache.jdo.pm.PersistenceManagerInternal;
-import org.apache.jdo.state.StateManagerInternal;
-import org.apache.jdo.store.StoreManager;
-import org.apache.jdo.util.I18NHelper;
-import org.apache.jdo.util.WeakValueHashMap;
-
-/*
- * This is the cache manager that is responsible for operation of
- * all types of caches (weak, transactional, flushed, transient)
- * associated with the referenced instance of a PersistenceManager.
- *
- * @author Marina Vatkina
- */
-class CacheManagerImpl {
-
-    // Reference to the corresponding PersistenceManagerImpl.
-    PersistenceManagerImpl pm = null;
-
-    /**
-     * Collection of Persistent instances created and/or updated
-     * in this Transaction
-     */
-    private Collection _txCache = Collections.synchronizedSet(new HashSet());
-
-    /**
-     * Collection of Transient-transactional instances registered
-     * with this Transaction
-     */
-    private Collection _transientCache = new Vector();
-
-    /**
-     * Collection of Persistent instances that will require state
-     * change at the transaction completion
-     */
-    private ArrayList _flushedCache = new ArrayList();
-
-    /**
-     * Collection of StateManager instances that represent Persistent
-     * instances that had been made newly persistent in the current
-     * transaction.
-     */
-    private ArrayList _newInstances = new ArrayList();
-
-    /** 
-     * Weak Hashtable of Persistent instances accessed by this PersistenceManager
-     */
-    private WeakValueHashMap _weakCache = new WeakValueHashMap();
-
-    /**
-     * Logger instance
-     */
-    private static final Log logger = LogFactory.getFactory().getInstance(
-        "org.apache.jdo.impl.pm"); // NOI18N
-
-    /**
-     * I18N message handler
-     */
-    private final static I18NHelper msg = 
-        I18NHelper.getInstance(CacheManagerImpl.class);
-
-    /**
-     * Constructs new instnstance of CacheManagerImpl
-     * 
-     * @param pm calling instance of PersistenceManagerImpl
-     */
-    CacheManagerImpl(PersistenceManagerImpl pm) {
-        this.pm = pm;
-    }
-
-    /**
-     * close the CacheManagerImpl
-     */
-    protected void close() {
-        // RELEASE THE CACHE...
-        // Nothing should be in _txCache and/or _flushedCache because
-        // PersistenceManager verified that transaction is not
-        // active. _transientCache can have transient transactional
-        // instances, but it is OK to clear them. 
-       _weakCache.clear();
-       _txCache.clear();
-       _flushedCache.clear();
-       _transientCache.clear();
-    }
-
-    
-
-    /** This method locates a persistent instance in the cache of instances
-     * managed by this PersistenceManager.
-     *   
-     * <P>If the validate flag is true: This method verifies that there
-     * is an instance in the data store with the same oid, constructs an
-     * instance, and returns it.  If there is no transaction active, then
-     * a hollow instance or persistent non-transactional instance is returned.
-     * If there is a transaction active, then
-     * a persistent clean instance is returned.
-     * <P>If the validate flag is false: If there is not already an instance
-     * in the cache with the same oid, then an instance is constructed and
-     * returned.  If the instance does not exist
-     * in the data store, then this method will
-     * not fail.  However, a request to access fields of the instance will
-     * throw an exception.
-     * @return the PersistenceCapable instance with the specified
-     * ObjectId
-     * @param oid an ObjectId
-     * @param validate if the existence of the instance is to be validated
-     */
-    protected Object getObjectById (Object oid, boolean validate) {
-        if (debugging())
-            debug ("getObjectById"); // NOI18N
-
-        StateManagerInternal sm = this.getStateManager(oid, validate);
-        return ((StateManagerInternal)sm).getObject();
-    }
-
-    /**
-     * Returns StateManager instance associated with this instance of ObjectId
-     * Creates a Hollow instance of a PersistenceCapable object, if it cannot be 
-     * found in the cache
-     * @param oid an ObjectId
-     * @param pcClass Class of a Hollow instance to be created.
-     * @return the StateManagerInternal 
-     */
-    protected StateManagerInternal getStateManager (Object oid, Class pcClass) {
-        if (debugging())
-            debug ("getStateManager " + oid + " for: " + pcClass.getName()); // NOI18N
-
-        StateManagerInternal sm = null;
-        // Check weak cache to find SM:
-        synchronized (_weakCache) {
-            // Need to keep a reference to the value in the cache as it is a weak
-            // cache and the value might be removed otherwise.
-            Object o = _weakCache.get(oid);
-            if (o == null) {
-                // Nothing found
-                sm  = createNewSM(null, oid, pcClass);
-            } else {
-                // Prepare Hollow instance if its class type was not
-                // known before. 
-                sm = (StateManagerInternal)o;
-                sm.setPCClass(pcClass);
-            }
-        }
-
-        if (debugging())
-            debug ("return from getStateManager: " + sm); // NOI18N
-
-        return sm;
-    }
-
-    /**
-    * The ObjectId returned by this method represents the JDO identity of
-    * the instance.  The ObjectId is a copy (clone) of the internal state
-    * of the instance, and changing it does not affect the JDO identity of
-    * the instance.
-    * Delegates actual execution to the internal method.
-    * @param pc the PersistenceCapable instance
-    * @param transactional true if transactional Id is requested
-    * @return the ObjectId of the instance
-    */
-    protected Object getExternalObjectId (PersistenceCapable pc,
-                                          boolean transactional) {
-        StateManagerInternal sm = pm.findStateManager(pc);
-
-        Object oid = null;
-        if (_weakCache.containsValue(sm)) {
-            if (transactional)
-                oid = sm.getTransactionalObjectId(pc);
-            else
-                oid = sm.getExternalObjectId();
-        }
-
-        return oid;
-    }
-
-    /** Make the transient instance persistent in this PersistenceManager.
-     * This method must be called in an active transaction.
-     * The PersistenceManager assigns an ObjectId to the instance and
-     * transitions it to persistent-new.
-     * The instance will be managed in the Extent associated with its Class.
-     * The instance will be put into the data store at commit.
-     * @param pc a transient instance of a Class that implements
-     * PersistenceCapable
-     */
-    protected Object makePersistent (PersistenceCapable pc) {
-
-        StateManagerInternal sm = pm.findStateManager(pc);
-        if (sm == null) {
-            sm = StateManagerFactory.newInstance(pc, pm);
-        }
-
-        sm.makePersistent();
-        return pc; // XXX fix this for detached objects
-    }
-
-    /** Make the transient or persistent instance transactional in
-     * this PersistenceManager.
-     * @see javax.jdo.PersistenceManager#makeTransactional(Object pc)
-     */
-    protected void makeTransactional(PersistenceCapable pc) {
-        StateManagerInternal sm = pm.findStateManager(pc);
-        if (sm == null) {
-            sm = StateManagerFactory.newInstance(pc, pm);
-        }
-        sm.makeTransactional();
-    }
-
-
-    /** Make the transient or persistent instance transactional in
-     * this PersistenceManager.
-     * @see javax.jdo.PersistenceManager#makeNontransactional(Object pc)
-     */
-    protected void makeNontransactional(PersistenceCapable pc) {
-        StateManagerInternal sm = pm.findStateManager(pc);
-        if (sm == null) {
-            throw new JDOUserException(msg.msg(
-                    "EXC_NonTransactional")); // NOI18N
-        }
-        sm.makeNontransactional();
-    }
-
-
-    /** Make the persistent instance transient in this PersistenceManager.
-     * @see javax.jdo.PersistenceManager#makeTransient(Object pc)
-     */
-    protected void makeTransient(PersistenceCapable pc) {
-        StateManagerInternal sm = pm.findStateManager(pc);
-        if (sm != null) {
-            sm.makeTransient();
-        }
-    }
-
-    /** Make persistent instance hollow in this PersistenceManager.
-     * @see javax.jdo.PersistenceManager#evict(Object pc)
-     */
-    protected void evict(PersistenceCapable pc) {
-        StateManagerInternal sm = pm.findStateManager(pc);
-        if (sm != null) {
-            sm.evictInstance();
-        }
-    }
-
-    /** Make all non-dirty persistent instances in the cache hollow in 
-     * this PersistenceManager.
-     * @see javax.jdo.PersistenceManager#evictAll()
-     */
-    protected void evictAll() {
-        StateManagerInternal sm = null;
-
-        Iterator it = _weakCache.entrySet().iterator();
-        while (it.hasNext()) {
-            sm = (StateManagerInternal) ((Map.Entry)it.next()).getValue();
-            sm.evictInstance();
-        }
-    }
-
-    /** Retrieve Hollow persistent instance in this PersistenceManager.
-     * @see javax.jdo.PersistenceManager#retrieve(Object pc)
-     */
-    protected void retrieve(PersistenceCapable pc) {
-        StateManagerInternal sm = pm.findStateManager(pc);
-        if (sm != null) {
-            sm.retrieve();
-        }
-    }
-
-    /** Refresh dirty persistent instance in this PersistenceManager.
-     * @see javax.jdo.PersistenceManager#refresh(Object pc)
-     */
-    protected void refresh(PersistenceCapable pc) {
-        StateManagerInternal sm = pm.findStateManager(pc);
-        if (sm != null) {
-            sm.refreshInstance();
-        }
-    }
-
-    /** Refresh dirty persistent instances in the transactional cache 
-     * of this PersistenceManager. Called in an active transaction.
-     * @see javax.jdo.PersistenceManager#refreshAll()
-     */
-    protected void refreshAllTransactional() {
-        StateManagerInternal sm = null;
-
-        Iterator it = _txCache.iterator();
-        while(it.hasNext()) {
-            sm = (StateManagerInternal)it.next();
-            sm.refreshInstance();
-        }
-    }
-
-    /** Refresh  nontransactional instances in the weak cache
-     * of this PersistenceManager. Called outside an active transaction.
-     * @see javax.jdo.PersistenceManager#refreshAll()
-     */
-    protected void refreshAllNontransactional() {
-        StateManagerInternal sm = null;
-
-        Iterator it = _weakCache.entrySet().iterator();
-        while (it.hasNext()) {
-            sm = (StateManagerInternal) ((Map.Entry)it.next()).getValue();
-            sm.refreshInstance();
-        }
-    }
-
-    /**
-     * Register transient instance in the transient cache
-     */
-    protected void registerTransient(StateManagerInternal sm) {
-        Iterator it = _transientCache.iterator();
-        while(it.hasNext()) {
-            Object o = ((WeakReference)it.next()).get();
-            if ((StateManagerInternal)o == sm) {
-                // The same SM is found - nothing to do.
-                return;
-            }
-        }
-        _transientCache.add(new WeakReference(sm));
-    }
-
-    /**
-     * Register persistent instance in the transactional cache
-     */
-    protected void register(StateManagerInternal sm, Object oid, 
-            boolean transactional, boolean throwDuplicateException) {
-        if (oid == null) {
-            oid = sm.getInternalObjectId();
-        }
-
-        //register in both caches for transactional instances only
-
-        if (! _weakCache.containsKey(oid)) {
-            deregisterTransient(sm);
-            _weakCache.put(oid, sm);  
-
-        } else if (throwDuplicateException) {
-            throw new JDOUserException(msg.msg(
-                "EXC_ObjectExistsInCache")); // NOI18N
-        }
-
-        if (pm.currentTransaction().isActive() && transactional) {
-            // Register in both caches for convenience.
-            if (! _flushedCache.contains(sm)) {
-                _flushedCache.add(sm); 
-            }
-            if (! _txCache.contains(sm)) {
-                _txCache.add(sm); 
-                if (sm.isNew()) 
-                    _newInstances.add(sm.getObject());
-            }
-        }
-
-        if (!transactional) {
-            // Remove from transactional caches if instance became
-            // nontransactional
-            _txCache.remove(sm); 
-            _flushedCache.remove(sm);
-        }
-    }
-
-    /**
-     * Remove transient instance from the transient cache
-     */
-    protected void deregisterTransient(Object sm) {
-        Iterator it = _transientCache.iterator();
-        while(it.hasNext()) {
-            WeakReference wr = (WeakReference)it.next();
-            if ((StateManagerInternal)wr.get() == sm) {
-                _transientCache.remove(wr);
-                break;
-            }
-        }
-    }
-
-    /**
-     * Remove persistent instance from all caches
-     */
-    protected void deregister(Object oid) {
-        if (oid != null) {
-            //deregister the instance from all the caches
-            Object o = _weakCache.remove(oid);
-
-            // No need to do anything outside an active transaction.
-            if (pm.currentTransaction().isActive()) {
-                _txCache.remove(o);
-                _flushedCache.remove(o);
-            }
-        }
-    }
-
-    /**  
-     * @see PersistenceManagerInternal#replaceObjectId(Object oldId,
-     * Object newId)
-     */  
-    protected void replaceObjectId(Object oldId, Object newId) {
-        if (debugging())
-            debug ("replaceObjectId"); // NOI18N
-
-        synchronized(_weakCache) {
-            if (_weakCache.containsKey(newId)) {
-                throw new JDOFatalInternalException(msg.msg(
-                    "EXC_ObjectIdExistsInCache", newId)); // NOI18N
-            }
-            Object o = _weakCache.remove(oldId);
-            if (o == null) {
-                throw new JDOFatalInternalException(msg.msg(
-                    "EXC_ObjectIdNotExistsInCache", newId)); // NOI18N
-            }
-            _weakCache.put(newId, o);
-        }
-    }
-
-    /**  
-     * @see PersistenceManagerInternal#markAsFlushed(StateManagerInternal sm)
-     */  
-    protected void markAsFlushed(StateManagerInternal sm) { 
-        _txCache.remove(sm);
-    }
-
-    /**
-     * Called by Transaction#commit(), Transaction#beforeCompletion(), or
-     * Transaction#internalFlush().
-     * Processes instances for the reachability algorithm, then calls
-     * StoreManager to iterate over transactional cache and to call flush() 
-     * for each StateManager in it.
-     */
-    protected void flushInstances() {
-        StateManagerInternal sm = null;
-
-        Object[] e = _txCache.toArray();
-        boolean commit = pm.insideCommit();
-
-        for (int i = 0; i < e.length; i++) {
-            sm = (StateManagerInternal)e[i];
-
-            //
-            // NOTE: handleRelationships has the side-effect of adding
-            // more objects to the transaction cache.
-            //
-            sm.handleReachability(commit);
-        }
-
-        StoreManager srm = pm.getStoreManager();
-        Iterator it = _txCache.iterator();
-
-        srm.flush(it, pm);
-
-        _txCache.clear();
-    }
-
-    /**
-     * Called by Transaction commit() or rollback()
-     * cleans up transactional cache
-     * @param    abort 
-     */
-    protected void afterCompletion(boolean abort) {
-        boolean retainValues = pm.currentTransaction().getRetainValues();
-        boolean restoreValues = pm.currentTransaction().getRestoreValues();
-
-        // Need to process transient instances also
-        Iterator it = _transientCache.iterator();
-        while(it.hasNext()) {
-            Object o = ((WeakReference)it.next()).get();
-
-            if (o == null) { 
-                // It has been GC'd and should be removed from _transientCache. 
-                it.remove(); 
-            } else {
-                _flushedCache.add(o);
-            }
-        }
-
-        int len = _flushedCache.size();
-        for ( int i = 0; i < len; i++) {
-            StateManagerInternal sm = (StateManagerInternal)_flushedCache.get(i);
-            sm.afterCompletion(abort, retainValues, restoreValues);
-        }
-
-        // Now clean the flushed cache
-        _flushedCache.clear();
-        _newInstances.clear();
-
-        // Just in case beforeCompletion failed or it was a rollback
-        _txCache.clear();
-    }
-
-    /**
-     * Returns a Collection of instances that has been made persistent
-     * or become persistent through persistence-by-reachability
-     * algorithm in this transaction. Called by the Extent.iterator.
-     * @see PersistenceManagerInternal#getInsertedInstances
-     * @return Collection of Persistent-New instances.
-     */
-    protected Collection getInsertedInstances() {
-        if (debugging())
-            debug("getInsertedInstances"); // NOI18N
-
-        return _newInstances;
-    }
-
-    /** --------------Private Methods--------------  */
-
-    /**
-     * Returns StateManager instance associated with this instance of ObjectId
-     * @see #getObjectById(Object oid, boolean validate)
-     * @param oid an ObjectId
-     * @param validate if the existence of the instance is to be validated
-     */
-    private StateManagerInternal getStateManager (Object oid, boolean validate) {
-
-        Object o = null;
-        StoreManager srm = pm.getStoreManager();
-        Class candidateClassType = srm.getPCClassForOid(oid, pm);
-        if (candidateClassType == null) {
-            // not found, report an error
-            throw new JDOUserException(msg.msg(
-                "EXC_NotOID"),// NOI18N
-                 oid);
-        }
-
-        Object internalOid = srm.getInternalObjectId(oid, pm);
-        if (debugging())
-            debug ("getStateManager internal oid: " + internalOid); // NOI18N
-
-        StateManagerInternal sm = null;
-
-        // Check weak cache to find SM:
-        synchronized (_weakCache) {
-            if((o = _weakCache.get(internalOid)) == null) {
-                // Nothing found
-                if (debugging())
-                    debug ("getStateManager oid not found."); // NOI18N
-
-                sm  = createNewSM(oid, internalOid, candidateClassType);
-                // Always reload from the DB to resolve actual classType
-                if (validate || !srm.hasActualPCClass(internalOid))
-                    sm.reload();
-                return sm;
-
-            } else  if (validate && !_flushedCache.contains(o)) {
-                // Found but NOT in the transactional cache. Reload.
-                if (debugging())
-                    debug ("getStateManager oid found - reload."); // NOI18N
-
-                sm = (StateManagerInternal)o;
-                sm.reload();
-                return sm;
-            }
-        }
-        return (StateManagerInternal)o;
-    }
-
-    /**
-     * Creates new StateManager instance associated with this instance
-     * of ObjectId.
-     * @see #getObjectById(Object oid, boolean validate)
-     * @param UserOid a user provided ObjectId
-     * @param internalOid an internal ObjectId
-     * @param candidateClassType super class of a Hollow instance to be created.
-     */
-    private StateManagerInternal createNewSM(Object UserOid, Object internalOid,
-                                                      Class candidateClassType) {
-        try {
-            return StateManagerFactory.newInstance(UserOid, internalOid, 
-                pm, candidateClassType);
-
-        } catch (JDOUserException e) {
-            throw e;
-            // XXX Possible jikes bug
-            //
-            // The following catch phrase causes jikes to complain (Caution:
-            // This try block cannot throw a "checked exception" (JLS section
-            // 14.7) that can be caught here. You may have intended to catch
-            // a RuntimeException instead of an Exception.)  But this try
-            // block is *not* here throwing any checked exceptions!  That's
-            // why I think it's a jikes bug (Sun's javac does not complain.)
-        } catch (Exception e) {
-            throw new JDOUserException(msg.msg("EXC_NotOID"), e, UserOid); // NOI18N
-        }
-    }
-
-    /**
-     * Tracing method
-     * @param msg String to display
-     */  
-    private void debug(String msg) {
-        logger.debug("In CacheManagerImpl " + msg); // NOI18N
-    }
-    /**
-     * Verifies if debugging is enabled.
-     * @return true if debugging is enabled.
-     */
-    private boolean debugging() {
-        return logger.isDebugEnabled();
-    }
-
-}
diff --git a/runtime20/src/java/org/apache/jdo/impl/pm/PersistenceManagerFactoryImpl.java b/runtime20/src/java/org/apache/jdo/impl/pm/PersistenceManagerFactoryImpl.java
deleted file mode 100644
index c537e73..0000000
--- a/runtime20/src/java/org/apache/jdo/impl/pm/PersistenceManagerFactoryImpl.java
+++ /dev/null
@@ -1,1791 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * PersistenceManagerFactoryImpl.java
- *
- * Created on December 1, 2000
- */
- 
-package org.apache.jdo.impl.pm;
-
-import java.io.IOException;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-
-import javax.jdo.FetchPlan;
-import javax.jdo.JDOException;
-import javax.jdo.JDOFatalInternalException;
-import javax.jdo.JDOFatalUserException;
-import javax.jdo.JDOUserException;
-import javax.jdo.PersistenceManager;
-import javax.jdo.Transaction;
-import javax.jdo.datastore.DataStoreCache;
-import javax.jdo.listener.InstanceLifecycleListener;
-import javax.jdo.spi.JDOPermission;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.jdo.ejb.EJBImplHelper;
-import org.apache.jdo.impl.model.java.runtime.RuntimeJavaModelFactory;
-import org.apache.jdo.pm.Accessor;
-import org.apache.jdo.pm.PersistenceManagerFactoryInternal;
-import org.apache.jdo.util.I18NHelper;
-import org.apache.jdo.util.JDORIVersion;
-
-/** 
- * This is an abstract PersistenceManagerFactoryImpl class that provides the 
- * StoreManager independent implementation of javax.jdo.PersistenceManager
- * interface. 
- * <p>
- * Subclasses must override the following methods declared abstract:
- * <ul>
- * <li> {@link #getOptionArray()}
- * <li> {@link #createPersistenceManager(String userid, String password)}
- * <li> {@link #setPMFClassProperty (Properties props)}
- * <li> {@link #encrypt(String s)}
- * <li> {@link #decrypt(String s)}
- * <li> {@link #setCFProperties(Properties p)}
- * <li> {@link #getCFFromProperties(Properties p)}
- * <li> {@link #isConnectionFactoryConfigured()}
- * <li> and all methods from org.apache.jdo.pm.PersistenceManagerFactoryInternal.
- * </ul> 
- *
- * @author  Marina Vatkina
- * @version 0.1
- */
-
-abstract public class PersistenceManagerFactoryImpl implements 
-    PersistenceManagerFactoryInternal {
-
-    //
-    // PersistenceManagerFactory properties
-    //
-    private String URL = null;
-    private String userName = null;
-    protected String password = null;
-    private String driverName = null;
-
-    private Object connectionFactory = null;
-    private String connectionFactoryName = null;
-
-    private Object connectionFactory2 = null;
-    private String connectionFactory2Name = null;
-
-    private boolean multithreaded = false;
-
-    private boolean optimistic = true;
-    private boolean retainValues = true;
-    private boolean restoreValues = true;
-    private boolean nontransactionalRead = true;
-    private boolean nontransactionalWrite = false;
-    private boolean ignoreCache = true;
-    private boolean detachAllOnCommit = false;
-    
-    private int queryTimeout = 0;
-    private int updateTimeout = 0;
-
-    private int minPool = 1;
-    private int maxPool = 1;
-    private int msWait = 0;
-
-    /** Cached hashCode for this PMF.  Changes every time a property of this
-    * PMF is changed to a non-default value.  Fixed after setConfigured()
-    * (mostly).
-    * @see #setConfigured()
-    * @see #setNonconfigured()
-    */
-    private int myHashCode;
-
-    //
-    // Once false, attempts to change properties above will fail (see
-    // assertConfigurable).
-    //
-    private boolean configurable = true;
-    
-
-    //
-    // The PMF is serialized in one of 3 forms, depending on how it is
-    // configured.
-    //
-    private static final int PERSIST_CF = 1;
-    private static final int PERSIST_CF_NAME = 2;
-    private static final int PERSIST_PROPS = 3;
-
-    /** These are used for implementing close().
-     */
-    protected boolean closed = false;
-    
-    /** The closeLock protects the close flag and pmSet.
-     */
-    protected Object closeLock = new Object();
-    
-    /** The set of all PersistenceManagers that are not closed.  In order
-     * for this to work, it is important that PersistenceManager implement
-     * equals to be equivalent to Object.equals.
-     */
-    protected Set pmSet = new HashSet();
-    
-    /**
-     * Logger instance
-     */
-    private static final Log logger = LogFactory.getFactory().getInstance(
-        "org.apache.jdo.impl.pm"); // NOI18N
-
-    /**
-     * I18N message handler
-     */
-    private final static I18NHelper msg = 
-        I18NHelper.getInstance("org.apache.jdo.impl.pm.Bundle"); // NOI18N
-
-    /**
-     * Transactional cache of PersistenceManager instances
-     */
-    private Hashtable pmCache = new Hashtable();
-
-    /** RuntimeJavaModelFactory. */
-    private static final RuntimeJavaModelFactory javaModelFactory =
-        (RuntimeJavaModelFactory) AccessController.doPrivileged(
-            new PrivilegedAction () {
-                public Object run () {
-                    return RuntimeJavaModelFactory.getInstance();
-                }
-            }
-        );
- 
-    /** Collection of registered pmf instances. */
-    private static Collection registeredPMFs = new HashSet();
-    
-    /** Adds a JVM shutdown hook to close pmf instances left open by the
-     * user. 
-     */
-    static {
-        AccessController.doPrivileged(new PrivilegedAction () {
-            public Object run () {
-                try {
-                    Runtime.getRuntime().addShutdownHook(new ShutdownHook());
-                    return null;
-                }
-                catch (SecurityException ex) {
-                    throw new JDOFatalUserException(msg.msg(
-                        "EXC_CannotAddShutdownHook"), ex); // NOI18N
-                }
-            }});
-    }
-
-    /**
-     * Creates new <code>PersistenceManagerFactoryImpl</code> without
-     * any user info.
-     */
-    public PersistenceManagerFactoryImpl() { }
-
-    /**
-     * Creates new <code>PersistenceManagerFactoryImpl</code> with user info
-     * @param URL        URL for the data store connection
-     * @param userName    user name for the data store connection 
-     * @param password    password for the data store connection
-     * @param driverName    driver name for the data store connection
-     */
-    public PersistenceManagerFactoryImpl(
-            String URL, 
-            String userName, 
-            String password, 
-            String driverName) {
-        this.URL = URL;
-        this.userName = userName;
-        this.password = password;
-        this.driverName = driverName;
-        
-    }
-  
-    /** 
-     * Set the user name for the data store connection.
-     * @param userName the user name for the data store connection.
-     */
-    public void setConnectionUserName (String userName) {
-        assertConfigurable();
-        this.userName = userName;
-    }
-  
-    /**
-     * Get the user name for the data store connection.
-     * @return    the user name for the data store connection.
-     */
-    public String getConnectionUserName() {
-        return userName;
-    }
-  
-    /**
-     * Set the password for the data store connection.
-     * @param password the password for the data store connection.
-     */
-    public void setConnectionPassword (String password) {
-        assertConfigurable();
-        this.password = password;
-    }
-  
-    /**
-     * Get the password for the data store connection.  Protected so 
-     * not just anybody can get the password.
-     * @return password the password for the data store connection.
-     */
-    protected String getConnectionPassword () {
-        return this.password;
-    }
-  
-    /**
-     * Set the URL for the data store connection.
-     * @param URL the URL for the data store connection.
-     */
-    public void setConnectionURL (String URL) {
-        assertConfigurable();
-        this.URL = URL;
-    }
-  
-    /**
-     * Get the URL for the data store connection.
-     * @return the URL for the data store connection.
-     */
-    public String getConnectionURL() {
-        return URL;
-    }
-
-    /**
-     * Set the driver name for the data store connection.
-     * @param driverName the driver name for the data store connection.
-     */
-    public void setConnectionDriverName (String driverName) {
-        assertConfigurable();
-        this.driverName = driverName;
-    }
-  
-    /**
-     * Get the driver name for the data store connection.
-     * @return the driver name for the data store connection.
-     */
-    public String getConnectionDriverName() {
-        return driverName;
-    }
-
-    /**
-     * Set the name for the data store connection factory.
-     * @param connectionFactoryName the name of the data store
-     * connection factory.
-     */
-    public void setConnectionFactoryName (String connectionFactoryName) {
-        assertConfigurable();
-        this.connectionFactoryName = connectionFactoryName;
-    }
-  
-    /**
-     * Get the name for the data store connection factory.
-     * @return the name of the data store connection factory.
-     */
-    public String getConnectionFactoryName () {
-        return connectionFactoryName;
-    }
-
-    /**
-     * Set the data store connection factory.  JDO implementations
-     * will support specific connection factories.  The connection
-     * factory interfaces are not part of the JDO specification.
-     * @param connectionFactory the data store connection factory.
-     */
-    public void setConnectionFactory (Object connectionFactory) {
-        assertConfigurable();
-        this.connectionFactory = connectionFactory;
-    }
-  
-    /**
-     * Get the data store connection factory.
-     * @return the data store connection factory.
-     */
-    public Object getConnectionFactory() {
-        return connectionFactory;
-    }
-    
-    /** Set the name of the connection factory for non-transactional connections.
-     * @see javax.jdo.PersistenceManagerFactory#setConnectionFactory2Name
-     * @param connectionFactoryName the name of the connection factory
-     * for non-transactional connections.
-     */
-    public void setConnectionFactory2Name(String connectionFactoryName)     {
-        assertConfigurable();
-        this.connectionFactory2Name = connectionFactory2Name;
-    }
-    
-    /** Get the name of the connection factory for non-transactional connections.
-     * @see javax.jdo.PersistenceManagerFactory#getConnectionFactory2Name
-     * @return the name of the connection factory for 
-     * non-transactional connections.
-     */
-    public String getConnectionFactory2Name() {
-        return connectionFactory2Name;
-    }
-
-    /** Set the non-transactional connection factory
-     * for optimistic transactions.
-     * @see javax.jdo.PersistenceManagerFactory#setConnectionFactory2
-     * @param connectionFactory the non-transactional connection factory.
-     */
-    public void setConnectionFactory2(Object connectionFactory) {
-        assertConfigurable();
-        this.connectionFactory2 = connectionFactory2;
-    }
-  
-    /** Return the non-transactional connection factory
-     * for optimistic transactions.
-     * @see javax.jdo.PersistenceManagerFactory#getConnectionFactory2
-     * @return the non-transactional connection factory for optimistic
-     * transactions
-     */
-    public Object getConnectionFactory2() {
-        return connectionFactory2;
-    }
-  
-    /** Set the default Multithreaded setting for all
-     * PersistenceManager instances obtained from this factory.
-     *
-     * @param flag the default Multithreaded setting.
-     */
-    public void setMultithreaded (boolean flag) {
-         assertConfigurable();
-         multithreaded = flag;
-    }
-
-    /** Get the default Multithreaded setting for all
-     * PersistenceManager instances obtained from this factory.  
-     *
-     * @return the default Multithreaded setting.
-     */
-    public boolean getMultithreaded() {
-        return multithreaded;
-    }
-
-    /** Set the Mapping setting for this factory. This is used to find the 
-     * object-datastore mapping file(s).
-     *
-     * @param mapping the Mapping setting.
-     */
-    public void setMapping (String mapping) {
-        throw new UnsupportedOperationException(
-            "Method setMapping(String) is not yet implemented.");
-    }
-  
-    /** Get the Mapping setting for this factory.  This is used to find the 
-     * object-datastore mapping file(s).
-     *
-     * @return the Mapping setting.
-     */
-    public String getMapping () {
-        throw new UnsupportedOperationException(
-            "Method getMapping() is not yet implemented.");
-    }
-
-    /**
-     * Set the default Optimistic setting for all PersistenceManager instances
-     * obtained from this factory.  Setting Optimistic to true also sets
-     * NontransactionalRead to true.
-     * @param flag the default Optimistic setting.
-     */
-    public void setOptimistic (boolean flag) {
-        assertConfigurable();
-        optimistic = flag;
-    }
-
-    /**
-     * Get the default Optimistic setting for all PersistenceManager instances
-     * obtained from this factory.
-     * @return the default Optimistic setting.
-     */
-    public boolean getOptimistic () {
-        return optimistic;
-    }
-
-
-    /**
-     * Set the default RetainValues setting for all PersistenceManager instances
-     * obtained from this factory.  Setting RetainValues to true also sets
-     * NontransactionalRead to true.
-     * @param flag the default RetainValues setting.
-     */
-    public void setRetainValues (boolean flag) {
-        assertConfigurable();
-        retainValues = flag;    
-    }
-
-    /**
-     * Get the default RetainValues setting for all PersistenceManager instances
-     * obtained from this factory.
-     * @return the default RetainValues setting.
-     */
-     public boolean getRetainValues () {
-         return retainValues;
-     }
-
-    /**
-     * Set the default RestoreValues setting for all PersistenceManager instances
-     * obtained from this factory.  Setting RestoreValues to true also sets
-     * NontransactionalRead to true.
-     * @param flag the default RestoreValues setting.
-     */
-    public void setRestoreValues (boolean flag) {
-        assertConfigurable();
-        restoreValues = flag;    
-    }
-
-    /**
-     * Get the default RestoreValues setting for all PersistenceManager instances
-     * obtained from this factory.
-     * @return the default RestoreValues setting.
-     */
-     public boolean getRestoreValues () {
-         return restoreValues;
-     }
-
-
-     /**
-      * Set the default NontransactionalRead setting for all
-      * PersistenceManager instances obtained from this factory.
-      * @param flag the default NontransactionalRead setting.
-      */   
-     public void setNontransactionalRead (boolean flag) {
-         assertConfigurable();
-         nontransactionalRead = flag; 
-     }
-
-     /**
-      * Get the default NontransactionalRead setting for all
-      * PersistenceManager instances obtained from this factory.
-      * @return the default NontransactionalRead setting.
-      */   
-     public boolean getNontransactionalRead () {
-         return nontransactionalRead;
-     }
-
-     /**
-      * Set the default NontransactionalWrite setting for all
-      * PersistenceManager instances obtained from this factory.
-      * @param flag the default NontransactionalWrite setting.
-      */   
-     public void setNontransactionalWrite (boolean flag) {
-         assertConfigurable();
-         nontransactionalWrite = flag; 
-     }
-
-    /**
-     * Get the default NontransactionalWrite setting for all
-     * PersistenceManager instances obtained from this factory.
-     * @return the default NontransactionalWrite setting.
-     */   
-    public boolean getNontransactionalWrite () {
-        return nontransactionalWrite;
-    }
-
-
-    /**
-     * Set the default IgnoreCache setting for all PersistenceManager instances
-     * obtained from this factory.
-     * @param flag the default IgnoreCache setting.
-     */
-    public void setIgnoreCache (boolean flag) {
-        assertConfigurable();
-        ignoreCache = flag;
-    }
-
-    /**
-     * Get the default IgnoreCache setting for all PersistenceManager instances
-     * obtained from this factory.
-     * @return the default IngoreCache setting.
-     */
-    public boolean getIgnoreCache () {
-        return ignoreCache;
-    }
-
-    /**
-     * Set the default DetachAllOnCommit setting for all PersistenceManager instances
-     * obtained from this factory.
-     * @param flag the default DetachAllOnCommit setting.
-     */
-    public void setDetachAllOnCommit(boolean flag) {
-        assertConfigurable();
-        detachAllOnCommit = flag;
-    }
-
-    /**
-     * Get the default DetachAllOnCommit setting for all PersistenceManager instances
-     * obtained from this factory.
-     * @return the default DetachAllOnCommit setting.
-     */
-    public boolean getDetachAllOnCommit() {
-        return detachAllOnCommit;
-    }
-
-    /** Set the default MsWait setting for all PersistenceManager instances
-     * obtained from this factory.
-     * @param msWait the default MsWait setting.
-     */
-    public void setMsWait(int msWait) {
-        assertConfigurable();
-        this.msWait = msWait;
-    }
-    
-    /** Get the default MsWait setting for all PersistenceManager instances
-     * obtained from this factory.
-     * @return the default MsWait setting.
-     */
-    public int getMsWait() {
-        return msWait;
-    }
-    
-    /** Set the default MinPool setting for all PersistenceManager instances
-     * obtained from this factory.
-     * @param minPool the default MinPool setting.
-     */
-    public void setMinPool(int minPool) {
-        assertConfigurable();
-        this.minPool = minPool;
-    }
-    
-    /** Get the default MinPool setting for all PersistenceManager instances
-     * obtained from this factory.
-     * @return the default MinPool setting.
-     */
-    public int getMinPool() {
-        return minPool;
-    }
-    
-    /** Set the default MaxPool setting for all PersistenceManager instances
-     * obtained from this factory.
-     * @param maxPool the default MaxPool setting.
-     */
-    public void setMaxPool(int maxPool) {
-        assertConfigurable();
-        this.maxPool = maxPool;
-    }
-    
-    /** Get the default MaxPool setting for all PersistenceManager instances
-     * obtained from this factory.
-     * @return the default MaxPool setting.
-     */
-    public int getMaxPool() {
-        return maxPool;
-    }
-    
-    /** Set the default QueryTimeout setting for all PersistenceManager instances
-     * obtained from this factory.
-     * @param queryTimeout the default QueryTimeout setting.
-     */
-    public void setQueryTimeout(int queryTimeout) {
-        assertConfigurable();
-        this.queryTimeout = queryTimeout;
-    }
-    
-    /** Get the default QueryTimeout setting for all PersistenceManager instances
-     * obtained from this factory.
-     * @return the default QueryTimeout setting.
-     */
-    public int getQueryTimeout() {
-        return queryTimeout;
-    }
-    
-    /** Set the default UpdateTimeout setting for all
-     * PersistenceManager instances obtained from this factory.
-     * @param updateTimeout the default UpdateTimeout setting.
-     */
-    public void setUpdateTimeout(int updateTimeout) {
-        assertConfigurable();
-        this.updateTimeout = updateTimeout;
-    }
-    
-    /** Get the default UpdateTimeout setting for all PersistenceManager instances
-     * obtained from this factory.
-     * @return the default UpdateTimeout setting.
-     */
-    public int getUpdateTimeout() {
-        return updateTimeout;
-    }
-    
-    
-    /**
-     * Return "static" properties of this PersistenceManagerFactory.
-     * Properties with keys VendorName and VersionNumber are required.  Other
-     * keys are optional.
-     * @return the non-operational properties of this PersistenceManagerFactory.
-     */
-    public Properties getProperties () {
-        return JDORIVersion.getVendorProperties();
-    }
-
-    /** The application can determine from the results of this
-     * method which optional features are supported by the
-     * JDO implementation.
-     * <P>Each supported JDO optional feature is represented by a
-     * String with one of the following values:
-     *
-     * <P>javax.jdo.option.TransientTransactional
-     * <P>javax.jdo.option.NontransactionalRead
-     * <P>javax.jdo.option.NontransactionalWrite
-     * <P>javax.jdo.option.RetainValues
-     * <P>javax.jdo.option.Optimistic
-     * <P>javax.jdo.option.ApplicationIdentity
-     * <P>javax.jdo.option.DatastoreIdentity
-     * <P>javax.jdo.option.NonDatastoreIdentity
-     * <P>javax.jdo.option.ArrayList
-     * <P>javax.jdo.option.HashMap
-     * <P>javax.jdo.option.Hashtable
-     * <P>javax.jdo.option.LinkedList
-     * <P>javax.jdo.option.TreeMap
-     * <P>javax.jdo.option.TreeSet
-     * <P>javax.jdo.option.Vector
-     * <P>javax.jdo.option.Map
-     * <P>javax.jdo.option.List
-     * <P>javax.jdo.option.Array     
-     * <P>javax.jdo.option.NullCollection  
-     *
-     *<P>The standard JDO query language is represented by a String:
-     *<P>javax.jdo.query.JDOQL   
-     * @return the Set of String representing the supported Options
-     */    
-    public Collection supportedOptions() {
-        return Collections.unmodifiableList(Arrays.asList(getOptionArray()));
-    }
-
-    /**
-     * Return the {@link DataStoreCache} that this factory uses for
-     * controlling a second-level cache. If this factory does not use
-     * a second-level cache, the returned instance does nothing. This
-     * method never returns <code>null</code>.
-     * @since 2.0
-     */
-    public DataStoreCache getDataStoreCache () {
-        throw new UnsupportedOperationException(
-            "Method getDataStoreCache() not yet implemented");
-    }
-
-    /**
-     * Add the parameter listener to the list of
-     * instance lifecycle event listeners set as the initial listeners
-     * for each PersistenceManager created by this PersistenceManagerFactory. 
-     * The <code>addInstanceLifecycleListener</code> and 
-     * <code>removeInstanceLifecycleListener</code>
-     * methods are considered to be configuration methods and
-     * can only be called when the PersistenceManagerFactory
-     * is configurable (before the first time {@link #getPersistenceManager}
-     * is called).
-     * <p>The <code>classes</code> parameter identifies all
-     * of the classes of interest. If the <code>classes</code>
-     * parameter is specified as <code>null</code>, events for all
-     * persistent classes and interfaces will be sent to the listener.</p>
-     * <p>The listener will be called for each event for which it
-     * implements the corresponding {@link InstanceLifecycleListener}
-     * interface.</p>
-     * @param listener the lifecycle listener
-     * @param classes the classes of interest to the listener
-     * @since 2.0
-     */
-    public void addInstanceLifecycleListener (
-        InstanceLifecycleListener listener, Class[] classes) {
-        throw new UnsupportedOperationException(
-            "Method addInstanceLifecycleListener(InstanceLifecycleListener, Class[]) not yet implemented");
-    }
-
-    /**
-     * Remove the parameter listener instance from the list of
-     * instance lifecycle event listeners set as the initial listeners
-     * for each PersistenceManager created by this PersistenceManagerFactory. 
-     * The <code>addInstanceLifecycleListener</code> and 
-     * <code>removeInstanceLifecycleListener</code>
-     * methods are considered to be configuration methods and
-     * can only be called when the PersistenceManagerFactory
-     * is configurable (before the first time {@link #getPersistenceManager}
-     * is called).
-     * @param listener the listener instance to be removed
-     * @since 2.0
-     */
-    public void removeInstanceLifecycleListener (InstanceLifecycleListener listener) {
-        throw new UnsupportedOperationException(
-            "Method removeInstanceLifecycleListener(InstanceLifecycleListener) not yet implemented");
-    }
-
-    /**
-     * Returns an array of Strings indicating which options are supported by
-     * this PersistenceManagerFactory.
-     * @return the option array.
-     */
-    abstract protected String[] getOptionArray();
-
-    /** Creates a new instance of PersistenceManager from this factory.
-     * Called by getPersistenceManager(String userid, String password))
-     * if there is no pooled instance that satisfies the request.
-     *
-     * @return a PersistenceManager instance with default options.
-     * @param userid The user id of the connection factory.
-     * @param password The password of the connection factory.
-     */
-    protected abstract PersistenceManager createPersistenceManager(
-        String userid, String password);
-
-    /** Get an instance of PersistenceManager from this factory.  The
-     * instance has default values for options.
-     *
-     * <P>If pooling of PersistenceManager instances is supported by
-     * this factory, the instance might have been returned to the pool
-     * and is being reused. 
-     *
-     * <P>After the first use of getPersistenceManager, no "set" methods will
-     * succeed.
-     *
-     * @return a PersistenceManager instance with default options.
-     */
-    public PersistenceManager getPersistenceManager() {
-        return getPersistenceManager(null, null);
-    }
-        
-    /** Get an instance of PersistenceManager from this factory.  The
-     * instance has default values for options.  The parameters userid
-     * and password are used when obtaining datastore connections from
-     * the connection pool.
-     *
-     * <P>If pooling of PersistenceManager instances is supported by
-     * this factory, the instance might have been returned to the pool
-     * and is being reused.
-     *
-     * <P>After the first use of getPersistenceManager, no "set"
-     * methods will succeed.
-     *
-     * @return a PersistenceManager instance with default options.
-     * @param userid The user id of the connection factory.
-     * @param password The password of the connection factory.
-     */
-    public PersistenceManager getPersistenceManager(
-        String userid, String password){
-
-        if (debugging())
-            debug("getPersistenceManager"); // NOI18N
-
-        if (configurable) {
-            verifyConfiguration();
-        }
-
-        // Remember if it was configurable. We will need to restore it if
-        // it was and createPersistenceManager failed.
-        boolean wasConfigurable = configurable;
-
-        try {
-            if (wasConfigurable) {
-                
-                // if successful, the state of this PMF becomes configured
-                setConfigured();
-
-                // Replace this PersistenceManagerFactory with the one
-                // known to the appserver, if it is the first request
-                // to getPersistenceManager in this instance of the
-                // PersistenceManagerFactory. 
-                // This is a no-op in a non-managed environment, and
-                // if an appserver does not need any extra code here.
-                PersistenceManagerFactoryImpl pmf = 
-                    (PersistenceManagerFactoryImpl)EJBImplHelper.
-                        replacePersistenceManagerFactory(this);
-
-                if (pmf != this) {
-                    // Was replaced. Mark this PersistenceManagerFactory as 
-                    // configurable.
-                    setNonconfigured();
-                }
-                else {
-                    // register this PMF
-                    registeredPMFs.add(pmf);
-                }
-                
-                return pmf.getPersistenceManagerInternal(userid, password);
-            } 
-            // This PersistenceManagerFactory has been already configured.
-            return getPersistenceManagerInternal(userid, password);
-
-        } catch (javax.jdo.JDOException e) {
-            if (wasConfigurable) {
-                setNonconfigured();
-            }
-            throw e;
-        }
-    }
-
-    /**
-     * Returns PersistenceManager instance with default options.
-     * @see #getPersistenceManager(String userid, String password)
-     */
-    private PersistenceManager getPersistenceManagerInternal(
-        String userid, String password){
-
-        if (debugging())
-            debug("getPersistenceManagerInternal"); // NOI18N
-
-        // Check if we are in managed environment and
-        // PersistenceManager is cached
-        PersistenceManagerImpl pm = null;
-        javax.transaction.Transaction t = EJBImplHelper.getTransaction();
- 
-        if (t != null) {
-            pm = (PersistenceManagerImpl)pmCache.get(t);
-            if (pm == null) {
-                // Not found
-                synchronized(pmCache) {
-                    pm = (PersistenceManagerImpl)pmCache.get(t);
-                    if (pm == null) {
-                        pm = getFromPool(userid, password);
-                        pmCache.put(t, pm);
-                        pm.setJTATransaction(t);
-                    }
-
-                    // We know we are in the managed environment and
-                    // JTA transaction is  active. We need to start
-                    // JDO Transaction internally if it is not active.
-    
-                    Transaction tx = pm.currentTransaction();
-                    if (!tx.isActive()) {
-                        ((TransactionImpl)tx).begin(t);
-                    }
-                }
-            }      
-            if (!(pm.verify(userid, password))) {
-                throw new JDOUserException(msg.msg(
-                    "EXC_WrongUsernamePassword")); //NOI18N
-            }
-        } else {
-            // We don't know if we are in the managed environment or not
-            // If Yes, it is BMT with JDO Transaction and it will register
-            // itself when user calls begin().
-            pm = getFromPool(userid, password);
-        }
-
-        // Always return a wrapper
-        return new PersistenceManagerWrapper(pm);
-    }
-
-
-    /**
-     * Registers PersistenceManager in the transactional cache in
-     * managed environment in case of BMT with JDO Transaction.
-     * There is no javax.transaction.Transaction
-     * available before the user starts the transaction.
-     * @param pm the PersistenceManager
-     * @param t the Transaction used as the hashmap key
-     */
-    protected void registerPersistenceManager(
-        PersistenceManagerImpl pm,
-        Object t) {
-
-        if (debugging())
-            debug("registerPersistenceManager"); // NOI18N
-
-        PersistenceManagerImpl pm1 = (PersistenceManagerImpl)pmCache.get(t);
-        if (pm1 == null) {
-            synchronized (pmCache) {
-                pm1 = (PersistenceManagerImpl)pmCache.get(t);
-                if (pm1 == null) {
-                    pmCache.put(t, pm);
-                    pm.setJTATransaction(t);
-                    return;
-                }
-            }
-        }
-
-        if (pm1 != pm){
-            throw new JDOFatalInternalException(msg.msg(
-                "EXC_WrongJTATransaction")); //NOI18N
-
-        } else {
-            // do nothing ???
-        }
-    }
-
-    /** Deregisters PersistenceManager that is not associated with
-     * a JTA transaction any more.
-     * @param pm the PersistenceManager
-     * @param t the Transaction used as the hashmap key
-     */
-    protected void deregisterPersistenceManager(PersistenceManagerImpl pm,
-        Object t) {
-        if (debugging())
-            debug("deregisterPersistenceManager"); // NOI18N
-
-        if (t != null) {        // Managed environment
-            // Deregister 
-            PersistenceManagerImpl pm1 = (PersistenceManagerImpl)pmCache.get(t);
-            if (pm1 == null || pm1 != pm) {
-                throw new JDOFatalInternalException(msg.msg(
-                    "EXC_WrongJTATransaction")); //NOI18N
-            } else {
-                pmCache.remove(t);
-            }
-        }
-    }
-
-    /** Releases closed PersistenceManager that is not in use
-     * @param pm the PersistenceManager
-     * @param t the Transaction used as the hashmap key
-     */
-    protected void releasePersistenceManager(PersistenceManagerImpl pm,
-        Object t) {
-        if (debugging())
-            debug("releasePersistenceManager"); // NOI18N
-
-        deregisterPersistenceManager(pm, t);
-        releaseStoreManager(pm);
-        returnToPool(pm);
-    }
-
-    //
-    // Internal methods
-    //
-    
-    /**
-     * Finds PersistenceManager for this combination of userid and password
-     * in the free pool, or creates new one if not found.
-     */
-    private synchronized PersistenceManagerImpl getFromPool(
-        String userid, String password) {
-
-        if (debugging())
-            debug("getFromPool"); // NOI18N
-
-        // We do not have pooling yet...
-
-        // create new PersistenceManager object and set its atributes
-        PersistenceManagerImpl pm = 
-        (PersistenceManagerImpl)createPersistenceManager(userid, password);
-        synchronized(closeLock) {
-            if (closed) {
-                throw new JDOUserException(
-                    msg.msg("EXC_PersistenceManagerFactoryClosed")); // NOI18N
-            }
-            pmSet.add(pm);
-        }
-
-        return pm;
-    }
-
-    /**
-     * Returns unused PersistenceManager to the free pool
-     */
-    private void returnToPool(PersistenceManagerImpl pm) {
-        if (debugging())
-            debug("returnToPool"); // NOI18N
-
-        // do nothing for now except remove from set of PersistenceManagers.
-        synchronized(closeLock) {
-            pmSet.remove(pm);
-        }
-    }
-
-    /**
-     * Asserts that change to the property is allowed
-     */
-    private void assertConfigurable() {
-        synchronized(closeLock) {
-            if (!configurable) {
-                throw new JDOUserException (msg.msg("EXC_NotConfigurable")); // NOI18N
-            }
-        }
-    }
-
-    /**
-     * Tracing method
-     * @param msg String to display
-     */
-    private void debug(String msg) {
-        logger.debug("In PersistenceManagerFactoryImpl " + msg); //NOI18N
-    }
-
-    /**
-     * Verifies if debugging is enabled.
-     * @return true if debugging is enabled.
-     */
-    private boolean debugging() {
-        return logger.isDebugEnabled();
-    }
-
-
-    //
-    // Explicit {read, write}Object support for java.io.Serializable so that
-    // we can en/de-crypt the password
-    //
-
-    // The PMF is serialized in one of 3 forms, depending on how it is
-    // configured.
-    private int getSerializedForm() {
-        int rc = 0;
-        if (null != connectionFactory) {
-            rc = PERSIST_CF;
-        } else if (null != connectionFactoryName) {
-            rc = PERSIST_CF_NAME;
-        } else {
-            rc = PERSIST_PROPS;
-        }
-        return rc;
-    }
-
-    /**The PMF is serialized in one of 3 forms, depending on how it is
-     * configured.  This method examines a properties instance to determine
-     * which form it is.
-     */
-    private int getSerializedForm(Properties props) {
-        int rc = 0;
-        if (null == props.get("javax.jdo.option.ConnectionURL")) { // NOI18N
-            rc = PERSIST_CF;
-        } else if (null != props.get("javax.jdo.option.ConnectionFactoryName")) { // NOI18N
-            rc = PERSIST_CF_NAME;
-        } else {
-            rc = PERSIST_PROPS;
-        }
-        return rc;
-    }
-
-    /**
-     * Write this object to a stream.  This method is provided so it
-     * can be called from outside the class (explicitly by a subclass).
-     * @param oos the ObjectOutputStream
-     * @throws IOException on errors writing to the stream
-     */    
-    protected void doWriteObject(java.io.ObjectOutputStream oos)
-        throws java.io.IOException {
-
-        writeObject(oos);
-    }
-    
-    private void writeObject(java.io.ObjectOutputStream oos)
-        throws java.io.IOException {
-        int kind = getSerializedForm();
-        oos.writeInt(kind);
-
-        switch(kind) {
-            case PERSIST_CF:
-                oos.writeObject(connectionFactory);
-                break;
-
-            case PERSIST_CF_NAME:
-                oos.writeUTF(connectionFactoryName);
-                oos.writeUTF(connectionFactory2Name);
-                break;
-
-            case PERSIST_PROPS:
-                oos.writeObject(URL);
-                oos.writeObject(userName);
-                oos.writeObject(encrypt(password));
-                oos.writeObject(driverName);
-                break;
-        }                                        
-        oos.writeBoolean(multithreaded);
-        oos.writeBoolean(optimistic);
-        oos.writeBoolean(retainValues);
-        oos.writeBoolean(restoreValues);
-        oos.writeBoolean(nontransactionalRead);
-        oos.writeBoolean(nontransactionalWrite);
-        oos.writeBoolean(ignoreCache);
-        
-        oos.writeInt(queryTimeout);
-        oos.writeInt(updateTimeout);
-    }
-
-    /**
-     * Read this object from a stream.  This method is provided so it
-     * can be called from outside the class (explicitly by a subclass).
-     * @param ois the ObjectInputStream
-     * @throws IOException on errors reading from the stream
-     * @throws ClassNotFoundException if a referenced class cannot be loaded
-     */    
-    protected void doReadObject(java.io.ObjectInputStream ois)
-        throws java.io.IOException, ClassNotFoundException {
-
-        readObject(ois);
-    }
-
-    private void readObject(java.io.ObjectInputStream ois)
-        throws java.io.IOException, ClassNotFoundException {
-
-        int kind = ois.readInt();
-        switch (kind) {
-          case PERSIST_CF:
-              connectionFactory = ois.readObject();
-              break;
-              
-          case PERSIST_CF_NAME:
-              connectionFactoryName = ois.readUTF();
-              connectionFactory2Name = ois.readUTF();
-              break;
-              
-          case PERSIST_PROPS:
-              URL = (String)ois.readObject();
-              userName = (String)ois.readObject();
-              password = decrypt((String)ois.readObject());
-              driverName = (String)ois.readObject();
-              break;
-        }
-        multithreaded = ois.readBoolean();
-        optimistic = ois.readBoolean();
-        retainValues = ois.readBoolean();
-        restoreValues = ois.readBoolean();
-        nontransactionalRead = ois.readBoolean();
-        nontransactionalWrite = ois.readBoolean();
-        ignoreCache = ois.readBoolean();
-        
-        queryTimeout = ois.readInt();
-        updateTimeout = ois.readInt();
-    }
-
-    /**
-     * The preferred way of getting & restoring a PMF in JNDI is to do so via
-     * a Properties object.
-     *
-     * Accessor instances allow copying values to/from a PMF and a
-     * Properties.  They do the proper type translation too.
-     * The PMFAccessor extends the Accessor interface which provides only
-     * the getDefault method which is type-independent.  The PMFAccessor
-     * provides type-specific accessor properties.
-     */
-    public interface PMFAccessor extends Accessor {
-        
-        /** Returns a value from a PMF, turned into a String.
-         * @param pmf the PersistenceManagerFactory to get the property from
-         * @return  the property value associated with the Accessor key
-         */
-        public String get(PersistenceManagerFactoryImpl pmf);
-        
-        /** Returns a value from a PMF, turned into a String, only if the
-         * current value is not the default.
-         * @param pmf the PersistenceManagerFactory to get the property from
-         * @return  the non-default property value associated with the
-         * Accessor key
-         */
-        public String getNonDefault(PersistenceManagerFactoryImpl pmf);
-        
-        /** Sets a value in a PMF, translating from String to the PMF's
-         * representation.
-         * @param pmf the PersistenceManagerFactory to set the property into
-         * @param s the property value associated with the Accessor key 
-         */
-        public void set(PersistenceManagerFactoryImpl pmf, String s);
-    }
-    
-    /**
-     * Tables which map from names to PMFAccessors.  The names are the same as
-     * the PMF's property names.
-     *
-     * These PMFAccessors are particular to the case when the connection
-     * properties are configured as PersistenceManagerFactory properties;
-     * neither a connection
-     * factory nor connection factory name has been configured.
-     */
-    protected static HashMap pmfAccessors = new HashMap(4);
-    
-    /**
-     *These PMFAccessors are for configuring non-connection properties.
-     */
-    protected static HashMap propsAccessors = new HashMap(10);
-    
-    /** Get JDO implementation-specific properties
-     * (not specified by JDO specification).
-     * @return a hashmap of accessors
-     */    
-    protected HashMap getLocalAccessors() {
-        return new HashMap();
-    }
-
-    /** Initialize the Accessor hashmaps for
-    * connection and non-connection properties.
-    * <br>
-    * XXX: Jikes bug
-    * <br>
-    * If this is protected, FOStorePMF.initPropsAccessors cannot invoke it,
-    * due to a bug in jikes
-    * (http://www-124.ibm.com/developerworks/bugs/?func=detailbug&bug_id=213&group_id=10)
-     */
-    //protected static void initPropsAccessors() {
-    public static void initPropsAccessors() {
-        if (pmfAccessors.size() != 0)
-            return;
-        synchronized (pmfAccessors) {
-            if (pmfAccessors.size() != 0)
-                return;
-            //
-            // PMF accessors
-            //
-
-            pmfAccessors.put(
-                "javax.jdo.option.ConnectionURL", // NOI18N
-                new PMFAccessor() {
-                public String get(PersistenceManagerFactoryImpl pmf) { return pmf.getConnectionURL(); }
-                public String getNonDefault(PersistenceManagerFactoryImpl pmf) { return pmf.getConnectionURL(); }
-                public String getDefault() {return null;}
-                public void set(PersistenceManagerFactoryImpl pmf, String s) { pmf.setConnectionURL(s); }
-            });
-            pmfAccessors.put(
-                "javax.jdo.option.ConnectionUserName", // NOI18N
-                new PMFAccessor() {
-                public String get(PersistenceManagerFactoryImpl pmf) { return pmf.getConnectionUserName(); }
-                public String getNonDefault(PersistenceManagerFactoryImpl pmf) { return pmf.getConnectionUserName(); }
-                public String getDefault() {return null;}
-                public void set(PersistenceManagerFactoryImpl pmf, String s) { pmf.setConnectionUserName(s); }
-            });
-            pmfAccessors.put(
-                "javax.jdo.option.ConnectionPassword", // NOI18N
-                new PMFAccessor() {
-                public String get(PersistenceManagerFactoryImpl pmf) { return pmf.encrypt(pmf.getConnectionPassword()); }
-                public String getNonDefault(PersistenceManagerFactoryImpl pmf) { return pmf.encrypt(pmf.getConnectionPassword()); }
-                public String getDefault() {return null;}
-                public void set(PersistenceManagerFactoryImpl pmf, String s) { pmf.setConnectionPassword(pmf.decrypt(s)); }
-            });
-            pmfAccessors.put(
-                "javax.jdo.option.ConnectionDriverName", // NOI18N
-                new PMFAccessor() {
-                public String get(PersistenceManagerFactoryImpl pmf) { return pmf.getConnectionDriverName(); }
-                public String getNonDefault(PersistenceManagerFactoryImpl pmf) { return pmf.getConnectionDriverName(); }
-                public String getDefault() {return null;}
-                public void set(PersistenceManagerFactoryImpl pmf, String s) { pmf.setConnectionDriverName(s); }
-            });
-
-            //
-            // Props accessors
-            //
-
-            propsAccessors.put(
-                "javax.jdo.option.Multithreaded", // NOI18N
-                new PMFAccessor() {
-                public String get(PersistenceManagerFactoryImpl pmf) { return new Boolean(pmf.getMultithreaded()).toString(); }
-                public String getNonDefault(PersistenceManagerFactoryImpl pmf) { return (!pmf.getMultithreaded())?null:"true"; } // NOI18N
-                public String getDefault() { return "false"; } // NOI18N
-                public void set(PersistenceManagerFactoryImpl pmf, String s) { pmf.setMultithreaded(Boolean.valueOf(s).booleanValue()); }
-            });
-            propsAccessors.put(
-                "javax.jdo.option.Optimistic", // NOI18N
-                new PMFAccessor() {
-                public String get(PersistenceManagerFactoryImpl pmf) { return new Boolean(pmf.getOptimistic()).toString(); }
-                public String getNonDefault(PersistenceManagerFactoryImpl pmf) { return (pmf.getOptimistic())?null:"false"; } // NOI18N
-                public String getDefault() { return "true"; } // NOI18N
-                public void set(PersistenceManagerFactoryImpl pmf, String s) { pmf.setOptimistic(Boolean.valueOf(s).booleanValue()); }
-            });
-            propsAccessors.put(
-                "javax.jdo.option.RetainValues", // NOI18N
-                new PMFAccessor() {
-                public String get(PersistenceManagerFactoryImpl pmf) { return new Boolean(pmf.getRetainValues()).toString(); }
-                public String getNonDefault(PersistenceManagerFactoryImpl pmf) { return (pmf.getRetainValues())?null:"false"; } // NOI18N
-                public String getDefault() { return "true"; } // NOI18N
-                public void set(PersistenceManagerFactoryImpl pmf, String s) { pmf.setRetainValues(Boolean.valueOf(s).booleanValue()); }
-            });
-            propsAccessors.put(
-                "javax.jdo.option.RestoreValues", // NOI18N
-                new PMFAccessor() {
-                public String get(PersistenceManagerFactoryImpl pmf) { return new Boolean(pmf.getRestoreValues()).toString(); }
-                public String getNonDefault(PersistenceManagerFactoryImpl pmf) { return (pmf.getRestoreValues())?null:"false"; } // NOI18N
-                public String getDefault() { return "true"; } // NOI18N
-                public void set(PersistenceManagerFactoryImpl pmf, String s) { pmf.setRestoreValues(Boolean.valueOf(s).booleanValue()); }
-            });
-            propsAccessors.put(
-                "javax.jdo.option.NontransactionalRead", // NOI18N
-                new PMFAccessor() {
-                public String get(PersistenceManagerFactoryImpl pmf) { return new Boolean(pmf.getNontransactionalRead()).toString(); }
-                public String getNonDefault(PersistenceManagerFactoryImpl pmf) { return (pmf.getNontransactionalRead())?null:"false"; } // NOI18N
-                public String getDefault() { return "true"; } // NOI18N
-                public void set(PersistenceManagerFactoryImpl pmf, String s) { pmf.setNontransactionalRead(Boolean.valueOf(s).booleanValue()); }
-            });
-            propsAccessors.put(
-                "javax.jdo.option.NontransactionalWrite", // NOI18N
-                new PMFAccessor() {
-                public String get(PersistenceManagerFactoryImpl pmf) { return new Boolean(pmf.getNontransactionalWrite()).toString(); }
-                public String getNonDefault(PersistenceManagerFactoryImpl pmf) { return (!pmf.getNontransactionalWrite())?null:"true"; } // NOI18N
-                public String getDefault() { return "false"; } // NOI18N
-                public void set(PersistenceManagerFactoryImpl pmf, String s) { pmf.setNontransactionalWrite(Boolean.valueOf(s).booleanValue()); }
-            });
-            propsAccessors.put(
-                "javax.jdo.option.IgnoreCache", // NOI18N
-                new PMFAccessor() {
-                public String get(PersistenceManagerFactoryImpl pmf) { return new Boolean(pmf.getIgnoreCache()).toString(); }
-                public String getNonDefault(PersistenceManagerFactoryImpl pmf) { return (pmf.getIgnoreCache())?null:"false"; } // NOI18N
-                public String getDefault() { return "true"; } // NOI18N
-                public void set(PersistenceManagerFactoryImpl pmf, String s) { pmf.setIgnoreCache(Boolean.valueOf(s).booleanValue()); }
-            });
-            propsAccessors.put(
-                "javax.jdo.option.ConnectionFactoryName", // NOI18N
-                new PMFAccessor() {
-                public String get(PersistenceManagerFactoryImpl pmf) { return pmf.getConnectionFactoryName(); }
-                public String getNonDefault(PersistenceManagerFactoryImpl pmf) { return (pmf.getConnectionFactoryName()==null)?null:pmf.getConnectionFactoryName(); }
-                public String getDefault() { return null; }
-                public void set(PersistenceManagerFactoryImpl pmf, String s) { pmf.setConnectionFactoryName(s); }
-            });
-            propsAccessors.put(
-                "javax.jdo.option.ConnectionFactory2Name", // NOI18N
-                new PMFAccessor() {
-                public String get(PersistenceManagerFactoryImpl pmf) { return pmf.getConnectionFactory2Name(); }
-                public String getNonDefault(PersistenceManagerFactoryImpl pmf) { return (pmf.getConnectionFactory2Name()==null)?null:pmf.getConnectionFactory2Name(); }
-                public String getDefault() { return null; }
-                public void set(PersistenceManagerFactoryImpl pmf, String s) { pmf.setConnectionFactory2Name(s); }
-            });
-        }
-    }
-
-    /**
-     * It should *never* be the case that our translation process encounters
-     * a NumberFormatException.  If so, tell the user in the JDO-approved
-     * manner.
-     * @param s the input String
-     * @return the int representation of the String
-     */ 
-    protected static int toInt(String s) {
-        int rc = 0;
-        try {
-            rc = Integer.parseInt(s);
-        } catch (NumberFormatException ex) {
-            throw new JDOFatalInternalException(msg.msg(
-                    "EXC_IntegerInInvalidFormat")); // NOI18N
-        }
-        return rc;
-    }
-
-    /**
-     * Returns a Properties representation of this PMF.
-     * Only allow Properties representation if the caller configured
-     * this PersistenceManagerFactory.  Otherwise, this is a security
-     * exposure.
-     * @return the Properties representing the non-default properties
-     */
-    public Properties getAsProperties() {
-        assertConfigurable();
-        return getAsPropertiesInternal();
-    }
-
-    /** 
-     * Does not do assertConfigurable validation
-     * @see #getAsProperties()
-     */
-    protected Properties getAsPropertiesInternal() {
-        initPropsAccessors();
-        Properties p = new Properties();
-
-        int kind = getSerializedForm();
-
-        switch (kind) {
-          case PERSIST_CF:
-              // XXX need to handle the case of ConnectionFactory2
-              setCFProperties(p);
-              break;
-
-          case PERSIST_CF_NAME:
-              p.setProperty ("javax.jdo.option.ConnectionFactoryName",
-                             connectionFactoryName); // NOI18N
-              if (connectionFactory2Name != null) {
-                  p.setProperty ("javax.jdo.option.ConnectionFactory2Name",
-                                 connectionFactory2Name); // NOI18N
-              }
-              break;
-
-          case PERSIST_PROPS:
-              setProps(p, pmfAccessors);
-              break;
-        }
-        setProps(p, propsAccessors);
-        setPMFClassProperty(p);
-        // add the properties from the implementation class
-        setProps(p, getLocalAccessors());
-        return p;
-    }
-    
-    /** Set the PMF class property for this PMF.
-     * @param props the Properties to which to add the PMF class property
-     */
-    abstract protected void setPMFClassProperty (Properties props);
-
-    /**
-     * For each PMFAccessor in the given HashMap, gets the corresponding value
-     * from the PMF and puts it in the given Properties object.
-     */
-    void setProps(Properties p, HashMap accessors) {
-        Set s = accessors.entrySet();
-        for (Iterator i = s.iterator(); i.hasNext();) {
-            Map.Entry e = (Map.Entry)i.next();
-            String key = (String)e.getKey();
-            PMFAccessor a = (PMFAccessor)e.getValue();
-            String value = (String)a.getNonDefault(this);
-            if (null != value) {
-                p.setProperty (key, value);
-            }
-        }
-    }
-
-    /**
-     * Configures a PMF from the given Properties.
-     * @param p the Properties used to configure this PMF
-     */
-    public void setFromProperties(Properties p) {
-        initPropsAccessors();
-        assertConfigurable();
-        int kind = getSerializedForm (p);
-
-        switch (kind) {
-          case PERSIST_CF:
-              getCFFromProperties(p);
-              break;
-
-          case PERSIST_CF_NAME:
-              connectionFactoryName = p.getProperty(
-                  "javax.jdo.option.ConnectionFactoryName"); // NOI18N
-              connectionFactory2Name = p.getProperty(
-                  "javax.jdo.option.ConnectionFactory2Name"); // NOI18N
-              break;
-
-          case PERSIST_PROPS:
-              getProps(p, pmfAccessors);
-              break;
-        }
-        getProps(p, propsAccessors);
-        getProps(p, getLocalAccessors());
-    }
-
-    /**
-     * For each PMFAccessor in the given HashMap, gets the corresponding value
-     * from the Properties and sets that value in the PMF.
-     */
-    private void getProps(Properties p, HashMap accessors) {
-        Set s = accessors.entrySet();
-        for (Iterator i = s.iterator(); i.hasNext();) {
-            Map.Entry e = (Map.Entry)i.next();
-            String key = (String)e.getKey();
-            String value = p.getProperty(key);
-            if (null != value) {
-//                System.out.println("PersistenceManagerFactoryImpl setting property: " + key + " to: " + value); // NOI18N
-                PMFAccessor a = (PMFAccessor)e.getValue();
-                a.set(this, value);
-            }
-        }
-    }
-
-    /**
-     * Provides an encrypted version of the given string.
-     * <b>NOTE:</b>
-     * Be very sure that you implement this method using the kind of
-     * security that is appropriate for your JDO implementation!!!
-     * Note that this method is not static, because it must be overridden
-     * by the specialized subclass.  But it should be written as if it were
-     * static.  That is, it should not use any state in the
-     * PersistenceManagerFactoryImpl instance.
-     * @param s the String to be encrypted
-     * @return the encrypted String
-     */
-    abstract protected String encrypt(String s);
-
-    /**
-     * Provides a decrypted version of the given (encrypted) string.
-     * <b>NOTE:</b>
-     * Be very sure that you implement this method using the kind of
-     * security that is appropriate for your JDO implementation!!!
-     * @param s the String to be decrypted
-     * @return the decrypted String
-     */
-    abstract protected String decrypt(String s);
-
-    /**
-     * Set the PMF-specific ConnectionFactory's properties.
-     * @param p Properties object in which the PMF's ConnectioFactory's
-     * properties are to be set.
-     */
-    abstract protected void setCFProperties(Properties p);
-
-    /**
-     * Create a ConnectionFactory for this PMF.  The method's implementation
-     * should set the PMF's connection factory with the newly created object.
-     * @param p Properties from which the ConnectionFactory is to be created.
-     */
-        // XXX The method name contains "get" but this does not "get"
-        // anything.  It should be changed to "setup" or ???
-    abstract protected void getCFFromProperties(Properties p);
-
-    /**
-     * Returns if a connection factory is configured for this
-     * PersistenceManagerFactory. This is used to determine whether
-     * this PersistenceManagerFactory has been configured with a
-     * ConnectionFactory, a ConnectionFactoryName, or a ConnectionURL.
-     * @return if a connection factory is configured
-     */
-    abstract protected boolean isConnectionFactoryConfigured();
-    
-    /** The String representation of this PMF.
-     * @return the String representation of this PMF
-     */    
-    public String toString() {
-        return "" + // NOI18N
-            "URL: " + URL + "\n" + // NOI18N
-            "userName: " + userName + "\n" + // NOI18N
-            "password: " + password + "\n" + // NOI18N
-            "driverName: " + driverName + "\n" + // NOI18N
-
-            "connectionFactory: " + connectionFactory + "\n" + // NOI18N
-            "connectionFactoryName: " + connectionFactoryName + "\n" + // NOI18N
-
-            "connectionFactory2: " + connectionFactory2 + "\n" + // NOI18N
-            "connectionFactory2Name: " + connectionFactory2Name + "\n" + // NOI18N
-
-            "multithreaded: " + multithreaded + "\n" + // NOI18N
-            "optimistic: " + optimistic + "\n" + // NOI18N
-            "retainValues: " + retainValues + "\n" + // NOI18N
-            "restoreValues: " + restoreValues + "\n" + // NOI18N
-            "nontransactionalRead: " + nontransactionalRead + "\n" + // NOI18N
-            "nontransactionalWrite: " + nontransactionalWrite + "\n" + // NOI18N
-            "ignoreCache: " + ignoreCache + "\n" + // NOI18N
-            "queryTimeout: " + queryTimeout + "\n" + // NOI18N
-            "updateTimeout: " + updateTimeout + "\n"; // NOI18N
-    }
-    
-    /** Verify that the connection URL has been configured.
-     * This might be done by the PMF property ConnectionURL,
-     * or by the connection factory property URL, or
-     * by configuring a connection factory name.
-     */    
-    protected void verifyConfiguration() {
-        if ((!isConnectionFactoryConfigured()) &&
-            (connectionFactoryName == null) &&
-            (URL == null)) {
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_IncompleteConfiguration")); // NOI18N
-        }
-    }
-        
-    /**
-     * Set the configurable flag false so this
-     * PersistenceManagerFactory can no longer be configured.  No value is
-     * provided, because a PersistenceManagerFactory can never become
-     * re-configurable.  Once invoked, the hashCode() of this PMF will never
-     * change, except if setNonconfigured is called.
-     * @see #hashCode()
-     * @see #setNonconfigured()
-     */        
-    protected void setConfigured() {
-        configurable = false;
-        myHashCode = hashCode();
-    }
-
-    /**
-     * Set the configurable flag true so this
-     * PersistenceManagerFactory can be again configured.  Called only
-     * if the action caused change to be non-configurable failed.
-     */        
-    protected void setNonconfigured() {
-        configurable = true;
-        myHashCode = 0;
-    }
-
-    /** Given an input Properties instance, add to the output Properties instance
-     * only the non-default entries of the input Properties, based on the
-     * Accessor map provided.  The output instance can be used as the key
-     * for the PersistenceManagerFactory hashMap.
-     *
-     * <P>A properties instance will typically be filtered a number of times:
-     * once for the JDO standard PersistenceManagerFactory properties, another
-     * for the JDO implementation properties, and another for the implementation
-     * ConnectionFactory properties.
-     *
-     * <P>A properties accessor map is passed as an argument.  The map
-     * contains the PMFAccessors, keyed by property name.
-     * @param props the input Properties
-     * @param filtered the output properties
-     * @param accessors the hashmap of accessors to filter for
-     */
-    public static void filterProperties (Properties props, Properties filtered,
-                                         Map accessors) {
-        Set s = accessors.entrySet();
-        for (Iterator i = s.iterator(); i.hasNext();) {
-            // for each accessor defined
-            Map.Entry e = (Map.Entry)i.next();
-            String key = (String)e.getKey();
-            // if the key in the accessor matches a property in the properties
-            String value = props.getProperty(key);
-            // and if the property is not null
-            if (null != value) {
-                Accessor a = (Accessor)e.getValue();
-                // and the value is not the default value for the accessor
-                if (a.getDefault() != value) {
-                    // set the property in the filtered properties
-                    filtered.setProperty (key, value);
-                }
-            }
-        }
-        return;
-    }
-
-    public synchronized boolean equals(Object o) {
-        if (o == this)
-            return true;
-
-        if (!(o instanceof PersistenceManagerFactoryImpl))
-            return false;
-
-	return (this.getAsPropertiesInternal().equals(
-            ((PersistenceManagerFactoryImpl)o).getAsPropertiesInternal()));
-    }
-
-    /** The returned value can change before this PMF is configured.  Once
-    * configured it will never change (well...)
-    * @see #setConfigured()
-    * @see #setNonconfigured()
-    */
-    public synchronized int hashCode() {
-        if (0 == myHashCode) {
-            return this.getAsPropertiesInternal().hashCode();
-        } else {
-            return myHashCode;
-        }
-    }
-    
-    /** Close this PersistenceManagerFactory. Check for
-     * JDOPermission("closePersistenceManagerFactory") and if not authorized,
-     * throw SecurityException.
-     * <P>If the authorization check succeeds, check to see that all
-     * PersistenceManager instances obtained from this PersistenceManagerFactory
-     * have no active transactions. If any PersistenceManager instances have
-     * an active transaction, throw a JDOUserException, with one nested
-     * JDOUserException for each PersistenceManager with an active Transaction.
-     * <P>If there are no active transactions, then close all PersistenceManager
-     * instances obtained from this PersistenceManagerFactory, mark this
-     * PersistenceManagerFactory as closed, disallow getPersistenceManager
-     * methods, and allow all other get methods. If a set method or
-     * getPersistenceManager method is called after close, then
-     * JDOUserException is thrown.
-     */
-    public void close() {
-        synchronized(closeLock) {
-            if (closed) {
-                return;
-            }
-            SecurityManager secmgr = System.getSecurityManager();
-            if (secmgr != null) {
-                // checkPermission will throw SecurityException if not authorized
-                secmgr.checkPermission(JDOPermission.CLOSE_PERSISTENCE_MANAGER_FACTORY);
-            }
-            List activePersistenceManagers = getActivePersistenceManagers();
-            int size = activePersistenceManagers.size();
-            if (size != 0) {
-                Throwable[] thrown = new Throwable[size];
-                for (int i = 0; i < size; ++i) {
-                    PersistenceManagerImpl pm = 
-                        (PersistenceManagerImpl)activePersistenceManagers.get(i);
-                    thrown[i] = new JDOUserException(
-                        msg.msg("EXC_ActivePersistenceManager"), // NOI18N
-                        pm.getCurrentWrapper());
-                    }
-                throw new JDOUserException(
-                    msg.msg("EXC_ActivePersistenceManager"), thrown); // NOI18N
-            }
-            closeOpenPersistenceManagers();
-            // pmf is closed => remove it from collection of registered pmfs
-            registeredPMFs.remove(this);
-            setConfigured();
-            closed = true;
-        }
-    }
-    
-    /** 
-     * A <code>PersistenceManagerFactory</code> instance can be used 
-     * until it is closed.
-     * @return <code>true</code> if this <code>PersistenceManagerFactory</code>
-     * has been closed.
-     * @see #close()
-     * @since 2.0
-     */
-    public boolean isClosed() {
-        synchronized(closeLock) {
-            return closed;
-        }
-    }
-
-    /** Assert that this PersistenceManagerFactory is not closed.  This
-     * assertion precedes all getPersistenceManager calls.  "set" methods
-     * are already protected by the configured flag.
-     * This method is synchronized so if another thread is calling
-     * close at the same time, this thread will wait for the close to complete.
-     */
-    protected void assertNotClosed() {
-        synchronized(closeLock) {
-            if (closed) {
-                throw new JDOUserException(
-                    msg.msg("EXC_PersistenceManagerFactoryClosed")); // NOI18N
-            }
-        }
-    }
-    
-    /** Get all active PersistenceManagers.  This is all 
-     * PersistenceManagers that have active transactions.
-     */
-    protected List getActivePersistenceManagers() {
-        List pms = new ArrayList();
-        for (Iterator it=pmSet.iterator(); it.hasNext();) {
-            PersistenceManager pm = (PersistenceManager)it.next();
-            if (pm.currentTransaction().isActive()) {
-                pms.add(pm);
-            }
-        }
-        return pms;
-    }
-    
-    /** Close all open PersistenceManagers.  Only the PersistenceManagers
-     * in the non-transactional set are considered; there cannot be any
-     * inactive PersistenceManagers in the transactional cache.
-     * We do forceClose because we don't care if there are active wrappers.
-     */
-    protected void closeOpenPersistenceManagers() {
-        // copy to avoid concurrent modification; forceClose changes pmSet.
-        List toClose = Arrays.asList(pmSet.toArray()); 
-        for (Iterator it=toClose.iterator(); it.hasNext();) {
-            PersistenceManagerImpl pm = (PersistenceManagerImpl)it.next();
-            pm.forceClose();
-        }
-    }
-    
-
-    /** Method called by the shudown hook to close pmf instances left open 
-     * when the JVM exits.
-     */
-    protected void shutdown() {
-        closeOpenPersistenceManagers();
-    }
-
-    /** Shutdown hook to close pmf instances left open when the JVM
-     * exits. 
-     */ 
-    static class ShutdownHook extends Thread {
-        public void run() {
-            for (Iterator i = registeredPMFs.iterator(); i.hasNext();) {
-                try {
-                    ((PersistenceManagerFactoryImpl)i.next()).shutdown();
-                }
-                catch (JDOException ex) {
-                    // ignore
-                }
-            }
-        }
-    }
-}
-
diff --git a/runtime20/src/java/org/apache/jdo/impl/pm/PersistenceManagerImpl.java b/runtime20/src/java/org/apache/jdo/impl/pm/PersistenceManagerImpl.java
deleted file mode 100644
index 2656578..0000000
--- a/runtime20/src/java/org/apache/jdo/impl/pm/PersistenceManagerImpl.java
+++ /dev/null
@@ -1,2603 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * PersistenceManagerImpl.java
- *
- * Created on December 1, 2000
- */
-
-package org.apache.jdo.impl.pm;
-
-import java.lang.reflect.Constructor;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.jdo.Extent;
-import javax.jdo.FetchPlan;
-import javax.jdo.JDOException;
-import javax.jdo.JDOFatalInternalException;
-import javax.jdo.JDOFatalUserException;
-import javax.jdo.JDOUserException;
-import javax.jdo.PersistenceManager;
-import javax.jdo.PersistenceManagerFactory;
-import javax.jdo.Query;
-import javax.jdo.Transaction;
-import javax.jdo.datastore.JDOConnection;
-import javax.jdo.datastore.Sequence;
-import javax.jdo.listener.InstanceLifecycleListener;
-import javax.jdo.spi.PersistenceCapable;
-import javax.transaction.Status;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.jdo.impl.model.java.runtime.RuntimeJavaModelFactory;
-import org.apache.jdo.model.java.JavaModel;
-import org.apache.jdo.model.java.JavaType;
-import org.apache.jdo.model.jdo.JDOClass;
-import org.apache.jdo.pm.PersistenceManagerFactoryInternal;
-import org.apache.jdo.pm.PersistenceManagerInternal;
-import org.apache.jdo.sco.SCOCollection;
-import org.apache.jdo.sco.SCOMap;
-import org.apache.jdo.state.StateManagerInternal;
-import org.apache.jdo.store.StoreManager;
-import org.apache.jdo.util.I18NHelper;
-import org.apache.jdo.util.JDORIVersion;
-
-/** 
- * This is the StoreManager independent implemetation of the 
- * org.apache.jdo.pm.PersistenceManagerInternal interface. Delegates most of 
- * the method execution to the corresponding instance of the CacheManagerImpl.
- * 
- * @author Marina Vatkina
- */ 
-public abstract class PersistenceManagerImpl implements PersistenceManagerInternal {
-    
-    /**
-     * True if this PersistenceManager is closed
-     */
-    private boolean _isClosed = true;
-
-    /**
-     * Associated Transaction
-     */
-    private TransactionImpl _transaction = null;
-
-    /**
-     *  Reference to the associated JTA Transaction if any
-     */
-    private Object _jta = null;
-
-    /**
-     * Current PersistenceManagerWrapper as PersistenceManagerInternal
-     */
-    private PersistenceManagerWrapper current = null;
-
-    /**
-     * PersistenceManagerFactory that created (and could be pooling)
-     * this PersistenceManager
-     */
-    private PersistenceManagerFactoryImpl pmf = null;
-
-    /**
-     * Reference to the CacheManager
-     */
-    private CacheManagerImpl _txCache = null;
-
-    /**
-     * Reference to the StoreManager
-     */
-    private StoreManager _storeManager = null;
-    
-    /**
-     * Flag for Query. 
-     * Constructor defaults it to the PMF setting.
-     */
-    private boolean _ignoreCache;
-
-    /**
-     * Flag for detaching all objects upon PM commit. 
-     * Constructor defaults it to the PMF setting.
-     */
-    private boolean _detachAllOnCommit;
-
-    /**
-     * Flag for active transaction
-     */
-    private boolean _activeTransaction = false;
-
-    /**
-     * Flag for optimistic transaction
-     */
-    private boolean optimistic = true;
-    
-    /**
-     * Flag for multithreaded support.
-     */
-    private boolean multithreaded = true;
-
-    /**
-     * User Object
-     */
-    private Object _userObject = null;
-
-    /**
-     * Flag for flushing process
-     */
-    private boolean _flushing = false;
-
-    /**
-     * This is the ClassLoader that was the
-     *     Thread.currentThread().getContextClassLoader()
-     * at the time this PersistenceManagerImpl was created.
-     */
-    private final ClassLoader myClassLoader;
-
-    /**
-     * Constructor signatures 
-     */
-    private static final Class[] sigSCO_Short = new Class []{
-        java.lang.Object.class,
-        java.lang.String.class};
-
-        /** The signature for SCO  Collections.
-         */        
-    private static final Class[] sigSCO_Collection = new Class []{
-        java.lang.Class.class,
-        boolean.class,
-        int.class};
-
-        /** The signature for SCO  Maps.
-         */        
-    private static final Class[] sigSCO_Map = new Class []{
-        java.lang.Class.class,
-        java.lang.Class.class,
-        boolean.class,
-        int.class};
-
-        /** The signature for SCO HashSet.
-         */        
-    private static final Class[] sigSCO_HashSet = new Class []{
-        java.lang.Class.class,
-        boolean.class,
-        int.class,
-        float.class};
-
-        /** The signature for SCO TreeSet.
-         */        
-    private static final Class[] sigSCO_TreeSet = new Class []{
-        java.lang.Class.class,
-        boolean.class,
-        java.util.Comparator.class};
-
-        /** The signature for SCO HashMap.
-         */        
-    private static final Class[] sigSCO_HashMap = new Class []{
-        java.lang.Class.class,
-        java.lang.Class.class,
-        boolean.class,
-        int.class,
-        float.class};
-
-        /** The signature for SCO TreeMap.
-         */        
-    private static final Class[] sigSCO_TreeMap = new Class []{
-        java.lang.Class.class,
-        java.lang.Class.class,
-        boolean.class,
-        java.util.Comparator.class};
-
-        /** Default initialCapacity values.
-         */        
-    private static final Integer int11 = new Integer(11);
-    private static final Integer int10 = new Integer(10);
-
-    /** RuntimeJavaModelFactory. */
-    private static final RuntimeJavaModelFactory javaModelFactory =
-        (RuntimeJavaModelFactory) AccessController.doPrivileged(
-            new PrivilegedAction () {
-                public Object run () {
-                    return RuntimeJavaModelFactory.getInstance();
-                }
-            }
-        );
- 
-    /**
-     * Logger support
-     */
-    private static final Log logger = LogFactory.getFactory().getInstance(
-        "org.apache.jdo.impl.pm"); // NOI18N
-
-    /**
-     * I18N message handler
-     */
-    protected final static I18NHelper msg = 
-        I18NHelper.getInstance(PersistenceManagerImpl.class);
-
-    /**
-     * Helper objects to identify StateManager associated with the given 
-     * PersistenceCapable instance
-     */
-    private StateManagerInternal lookingFor = null;
-    private PersistenceCapable pc = null;
-
-    /**
-     * Constructs new instance of PersistenceManagerImpl for this
-     * PersistenceManagerFactoryInternal and particular combination of 
-     * username and password.
-     *
-     * @param pmf calling PersistenceManagerFactory as PersistenceManagerFactoryInternal
-     * @param username user name used for accessing Connector or null if none 
-     *      is provided.
-     * @param password user password used for accessing Connector or null if 
-     *      none is provided.
-     */
-    public PersistenceManagerImpl(PersistenceManagerFactoryInternal pmf,
-        String username, String password) {
-
-        if (debugging())
-            debug("constructor"); // NOI18N
-
-        if (javaModelFactory == null)
-            throw new JDOUserException(
-                msg.msg("EXC_CannotGetRuntimeJavaModelFactory")); // NOI18N
-
-        this.pmf = (PersistenceManagerFactoryImpl)pmf;
-        _transaction = new TransactionImpl(this, this.pmf, username, password);
-        _txCache = new CacheManagerImpl(this);
-
-        optimistic = pmf.getOptimistic();
-        _ignoreCache = pmf.getIgnoreCache();
-        _detachAllOnCommit = pmf.getDetachAllOnCommit();
-
-        _isClosed = false;
-
-        myClassLoader = getContextClassLoaderPrivileged();
-    }
-
-    /**
-     * @see javax.jdo.PersistenceManager#setIgnoreCache(boolean flag)
-     * @param flag the ignoreCache value
-     */
-    public void setIgnoreCache(boolean flag) {
-        assertIsOpen();
-        _ignoreCache = flag;
-    }
-
-    /** Get the value of the ignoreCache flag.
-     * @see javax.jdo.PersistenceManager#getIgnoreCache()
-     * @return the IgnoreCache flag
-     */
-    public boolean getIgnoreCache() {
-        assertIsOpen();
-        return _ignoreCache;
-    }
-
-    /**
-     * @see javax.jdo.PersistenceManager#setDetachAllOnCommit(boolean flag)
-     * @param flag the detachAllOnCommit value
-     */
-    public void setDetachAllOnCommit(boolean flag) {
-        assertIsOpen();
-        _detachAllOnCommit = flag;
-    }
-
-    /** Get the value of the detachAllOnCommit flag.
-     * @see javax.jdo.PersistenceManager#getDetachAllOnCommit()
-     * @return the DetachAllOnCommit flag
-     */
-    public boolean getDetachAllOnCommit() {
-        assertIsOpen();
-        return _detachAllOnCommit;
-    }
-
-    /** Set the Multithreaded flag for this PersistenceManager.  Applications
-     * that use multiple threads to invoke methods or access fields from 
-     * instances managed by this PersistenceManager must set this flag to true.
-     * Instances managed by this PersistenceManager include persistent or
-     * transactional instances of PersistenceCapable classes, as well as 
-     * helper instances such as Query, Transaction, or Extent.
-     *
-     * @param flag the Multithreaded setting.
-     */
-    public void setMultithreaded(boolean flag) {
-        assertIsOpen();
-        multithreaded = flag;
-    }
-    
-    /** Get the current Multithreaded flag for this PersistenceManager.  
-     * @see #setMultithreaded
-     * @return the Multithreaded setting.
-     */
-    public boolean getMultithreaded() {
-        assertIsOpen();
-        return multithreaded;
-    }
-
-    /** Return whether this PersistenceManager is closed.
-     * @see javax.jdo.PersistenceManager#isClosed()
-     */
-    public boolean isClosed() {
-        return _isClosed;
-    }
-
-    /**
-     * Close this persistence manager
-     * @see javax.jdo.PersistenceManager#close()
-     */
-    public synchronized void close() {
-        if (debugging())
-            debug("close"); // NOI18N
-
-        assertIsOpen();
-
-        if (_activeTransaction) {
-            throw new JDOUserException(msg.msg(
-                "EXC_ActiveTransaction"));// NOI18N
-        }
-
-        if (current == null){
-            forceClose();
-        }
-
-    }
-
-    /**
-     * Returns transaction associated with this persistence manager
-     * @return transaction    current transaction
-     */
-    public Transaction currentTransaction() {
-        assertIsOpen();
-        return (Transaction) _transaction;
-    }
-
-    //
-    // -------- ObjectId related methods --------
-    //
-
-    /** This method locates a persistent instance in the cache of instances
-    * managed by this PersistenceManager.
-    *   
-    * <P>If the validate flag is true: This method verifies that there
-    * is an instance in the data store with the same oid, constructs an
-    * instance, and returns it.  If there is no transaction active, then
-    * a hollow instance or persistent non-transactional instance is returned.
-    * If there is a transaction active, then
-    * a persistent clean instance is returned.
-    * <P>If the validate flag is false: If there is not already an instance
-    * in the cache with the same oid, then an instance is constructed and
-    * returned.  If the instance does not exist
-    * in the data store, then this method will
-    * not fail.  However, a request to access fields of the instance will
-    * throw an exception.
-    * @return the PersistenceCapable instance with the specified
-    * ObjectId
-    * @param oid an ObjectId
-    * @param validate if the existence of the instance is to be validated
-    */
-    public Object getObjectById (Object oid, boolean validate) {
-        if (debugging())
-            debug("getObjectById " + oid); // NOI18N
-
-        assertIsOpen();
-        if (oid == null)
-            return null;
-
-        return _txCache.getObjectById(oid, validate);
-    }
-    /**
-     * Looks up the instance of the given type with the given key.
-     * @param cls The type of object to load
-     * @param key either the string representation of the object id, or
-     * an object representation of a single field identity key
-     * @return the corresponding persistent instance
-     * @since 2.0
-     */
-    public Object getObjectById (Class cls, Object key) {
-        throw new UnsupportedOperationException(
-            "Method getObjectById(Class,Object) not yet implemented");
-    }
-
-    /**
-     * Looks up the instance corresponding to the specified oid. This is
-     * equivalent to <code>getObjectById(oid, true);
-     * @param oid The object id of the object to load
-     * @return the corresponding persistent instance
-     * @since 2.0
-     */
-    public Object getObjectById (Object oid) {
-        return getObjectById(oid, true);
-    }
-
-    /** The ObjectId returned by this method represents the JDO identity of
-    * the instance.  The ObjectId is a copy (clone) of the internal state
-    * of the instance, and changing it does not affect the JDO identity of
-    * the instance.
-    * Delegates actual execution to the internal method.
-    * @param pc the PersistenceCapable instance
-    * @return the corresponding ObjectId of the instance. Returns null
-    * if pc is null, not persistence-capable, or not persistent.
-    */
-    public Object getObjectId (Object pc) {
-        if (debugging())
-            debug("getObjectId"); // NOI18N
-
-        return getExternalObjectId(pc, false);
-    }
-
-
-    /**
-    * @see org.apache.jdo.pm.PersistenceManagerInternal#loadClass
-    */
-    public Class loadClass(String name, ClassLoader given)
-        throws ClassNotFoundException {
-
-        Class rc = null;
-
-        if (null != given) {
-            try {
-                rc = Class.forName(name, true, given);
-            } catch (ClassNotFoundException ex) {
-            }
-        }
-
-        if (null == rc) {
-            try {
-                rc = Class.forName(
-                    name, true,
-                    getContextClassLoaderPrivileged());
-            } catch (ClassNotFoundException ex) {
-            }
-        }
-
-        if (null == rc) {
-            rc = Class.forName(name, true, myClassLoader);
-        }
-
-        return rc;            
-    }
-
-    /**
-     * @see org.apache.jdo.pm.PersistenceManagerInternal#loadPCClassForObjectIdClass
-     */
-    public Class loadPCClassForObjectIdClass(Class objectIdClass) 
-        throws ClassNotFoundException
-    {
-        if (debugging())
-            debug("loadPCClassForObjectIdClass: " + objectIdClass.getName()); //NOI18N
-
-        JavaModel javaModel = null;
-        JDOClass jdoClass = null;
-        JavaType objectIdJavaType = javaModelFactory.getJavaType(objectIdClass);
-        // try Model of objectId's class loader
-        ClassLoader classLoader = 
-            javaModelFactory.getClassLoaderPrivileged(objectIdClass);
-        javaModel = javaModelFactory.getJavaModel(classLoader);
-        jdoClass = javaModel.getJDOModel().
-            getJDOClassForObjectIdClass(objectIdJavaType);
-        
-        if (null == jdoClass) {
-            // try Model of thread context class loader
-            classLoader = getContextClassLoaderPrivileged();
-            javaModel = javaModelFactory.getJavaModel(classLoader);
-            jdoClass = javaModel.getJDOModel().
-                getJDOClassForObjectIdClass(objectIdJavaType);
-        }
-
-        if (null == jdoClass) {
-            // try Model of the pm's thead context class loader
-            javaModel = javaModelFactory.getJavaModel(myClassLoader);
-            jdoClass = javaModel.getJDOModel().
-                getJDOClassForObjectIdClass(objectIdJavaType);
-        }
-
-        if (jdoClass == null) 
-            // persistence-capable class not found => ClassNotFoundException
-            throw new ClassNotFoundException(msg.msg(
-                "EXC_CannotFindPCClassForObjectIdClass", // NOI18N
-                objectIdClass.getName())); //NOI18N
-        return javaModelFactory.getJavaClass(jdoClass.getJavaType());
-    }
-
-    /**
-     * Gets the internal object id for this instance. Returns null
-     * if it is not a PersistenceCapable instance.
-     * @param pc
-     * @return the internal object id
-     */
-    public Object getInternalObjectId(Object pc) {
-        if (debugging())
-            debug("getInternalObjectId for " + pc.getClass().getName()); // NOI18N
-
-        assertIsOpen();
-
-        Object rc = null;
-        if ( pc instanceof PersistenceCapable ) {
-            PersistenceCapable p = (PersistenceCapable)pc;
-            if( !(p.jdoIsPersistent()) ) {
-                throw new JDOFatalInternalException(msg.msg(
-                    "EXC_TransientInstance", pc.getClass().getName()));// NOI18N
-            }
-
-            StateManagerInternal sm = findStateManager(p);
-            if (sm == null) {
-                throw new JDOFatalInternalException(
-                    msg.msg("EXC_CannotFindSM", pc.getClass().getName())); // NOI18N
-            }
-            rc = sm.getInternalObjectId();
-        }
-        return rc;
-    }
-
-    /**
-     * @see javax.jdo.PersistenceManager#getTransactionalObjectId
-     */
-    public Object getTransactionalObjectId (Object pc) {
-        if (debugging())
-            debug("getTransactionalObjectId"); // NOI18N
-
-        return getExternalObjectId(pc, true);
-    }
-
-    /** 
-     * This method returns an object id instance corresponding to the pcClass
-     * and key arguments.
-     * @param pcClass the <code>Class</code> of the persistence-capable instance
-     * @param key the value of the key field for single-field identity.
-     * @return an instance of the object identity class
-     */
-    public Object newObjectIdInstance (Class pcClass, Object key) {
-        if (debugging())
-            debug("newObjectIdInstance for: " + pcClass + ", and " + key); // NOI18N
-
-        assertIsOpen();
-        return this.getStoreManager().newObjectIdInstance (pcClass, key);
-    }
-    
-    /**
-     * Return the objects with the given oids.
-     * @param oids the oids of the objects to return
-     * @param validate if true, the existance of the objects in
-     *     the datastore will be validated.
-     * @return the objects that were looked up, in the
-     *     same order as the oids parameter.
-     * @see #getObjectById(Object,boolean)
-     * @since 2.0
-     */
-    public Collection getObjectsById (Collection oids, boolean validate) {
-        throw new UnsupportedOperationException(
-            "Method getObjectsById(Collection,boolean) not yet implemented");
-    }
-
-    /**
-     * Return the objects with the given oids. This method is equivalent 
-     * to calling {@link #getObjectsById(Collection, boolean)}
-     * with the validate flag true.
-     * @param oids the oids of the objects to return
-     * @return the objects that were looked up, in the
-     *     same order as the oids parameter.
-     * @see #getObjectsById(Collection,boolean)
-     * @since 2.0
-     */
-    public Collection getObjectsById (Collection oids) {
-        return getObjectsById(oids, true);
-    }
-
-    /**
-     * Return the objects with the given oids.
-     * @param oids the oids of the objects to return
-     * @param validate if true, the existance of the objects in
-     *     the datastore will be validated.
-     * @return the objects that were looked up, in the
-     *     same order as the oids parameter.
-     * @see #getObjectById(Object,boolean)
-     * @since 2.0
-     */
-    public Object[] getObjectsById (Object[] oids, boolean validate) {
-        throw new UnsupportedOperationException(
-            "Method getObjectsById(Object[],boolean) not yet implemented");
-    }
-
-    /**
-     * Return the objects with the given oids. This method is equivalent
-     * to calling {@link #getObjectsById(Object[],boolean)} 
-     * with the validate flag true.
-     * @param oids the oids of the objects to return
-     * @return the objects that were looked up, in the
-     *     same order as the oids parameter.
-     * @see #getObjectsById(Object[],boolean)
-     * @since 2.0
-     */
-    public Object[] getObjectsById (Object[] oids) {
-        return getObjectsById(oids, true);
-    }
-
-    /** Return the Class that implements the JDO Identity for the
-    * specified PersistenceCapable Class.  The application can use the
-    * returned Class to construct a JDO Identity instance for
-    * application identity PersistenceCapable classes.  This JDO Identity
-    * instance can then be used to get an instance of the
-    * PersistenceCapable class for use in the application.
-    *   
-    * <P>In order for the application to construct an instance of the ObjectId class
-    * it needs to know the class being used by the JDO implementation.
-    * @param cls the PersistenceCapable Class
-    * @return the Class of the ObjectId of the parameter
-    * @see #getObjectById
-    */  
-    public Class getObjectIdClass(Class cls) {
-        if (debugging())
-            debug("getObjectIdClass for: " + cls); // NOI18N
-
-        assertIsOpen();
-        return pmf.getObjectIdClass(cls);
-    }
-    
-    //
-    // -------- Query and Extent methods --------
-    //
-
-    /** Create a new Query with no elements.
-     * @return a new Query instance with no elements.
-     */  
-     public abstract Query newQuery();
-
-     /** Create a new Query using elements from another Query.  The other Query
-     * must have been created by the same JDO implementation.  It might be active
-     * in a different PersistenceManager or might have been serialized and
-     * restored.
-     * @return the new Query
-     * @param compiled another Query from the same JDO implementation
-     */  
-     public abstract Query newQuery (Object compiled);
-
-    /** Create a Construct a new query instance using the specified String 
-     * as the single-string representation of the query.
-     * @param query the single-string query
-     * @return the new <code>Query</code>
-     * @since 2.0
-     */
-    public abstract Query newQuery (String query);
-
-     /** Create a new Query using the specified language.
-      * @param language the language of the query parameter
-      * @param query the query, which is of a form determined by the language
-      * @return the new Query
-      */    
-     public abstract Query newQuery (String language, Object query);
-     
-     /** Create a new Query specifying the Class of the results.
-     * @param cls the Class of the results
-     * @return the new Query
-     */
-     public abstract Query newQuery (Class cls);
-
-     /** Create a new Query with the candidate Extent; the class is taken
-      * from the Extent.
-      * @return the new Query
-      * @param cln the Extent of candidate instances */  
-     public abstract Query newQuery(Extent cln);
-
-     /** Create a new Query with the Class of the results and candidate Collection.
-     * @param cls the Class of results
-     * @param cln the Collection of candidate instances
-     * @return the new Query
-     */
-     public abstract Query newQuery (Class cls, Collection cln);
-
-     /** Create a new Query with the Class of the results and Filter.
-     * @param cls the Class of results
-     * @param filter the Filter for candidate instances
-     * @return the new Query
-     */
-     public abstract Query newQuery (Class cls, String filter);
-
-     /** Create a new Query with the Class of the results, candidate Collection,
-     * and Filter.
-     * @param cls the Class of results
-     * @param cln the Collection of candidate instances
-     * @param filter the Filter for candidate instances
-     * @return the new Query
-     */
-     public abstract Query newQuery (Class cls, Collection cln, String filter);
-
-     /** Create a new Query with the candidate Extent and Filter.
-      * The class is taken from the Extent.
-      * @return the new Query
-      * @param cln the Extent of candidate instances
-      * @param filter the Filter for candidate instances */  
-     public abstract Query newQuery(Extent cln, String filter);
-     
-    /**
-     * Create a new <code>Query</code> with the given candidate class
-     * from a named query. The query name given must be the name of a
-     * query defined in metadata.
-     * @param cls the <code>Class</code> of candidate instances
-     * @param queryName the name of the query to look up in metadata
-     * @return the new <code>Query</code>
-     * @since 2.0
-     */
-    public abstract Query newNamedQuery (Class cls, String queryName);
-
-    /** The PersistenceManager may manage a collection of instances in the data
-     * store based on the class of the instances.  This method returns an
-     * Extent of instances in the data store that might be iterated or
-     * given to a Query as the Extent of candidate instances.
-     * @param persistenceCapableClass Class of instances
-     * @param subclasses whether to include instances of subclasses
-     * @return an Extent of instances.
-     * @see StoreManager#getExtent
-     * @see javax.jdo.Query
-     */
-    public Extent getExtent (Class persistenceCapableClass, boolean subclasses) {
-        if (debugging())
-            debug("getExtent for: " + persistenceCapableClass + // NOI18N
-            ", subclasses: " + subclasses); // NOI18N
-
-        assertIsOpen();
-        Extent rc = null;
-        if (PersistenceCapable.class.isAssignableFrom(persistenceCapableClass)) {
-            rc = this.getStoreManager().getExtent(persistenceCapableClass, subclasses, this);
-        } else {
-            throw new JDOUserException(msg.msg(
-                "EXC_ClassNotPersistenceCapable", persistenceCapableClass.getName())); // NOI18N
-        }
-        if (null == rc) {
-            // Protect against bogus store managers that return null.
-            rc = new EmptyExtent(persistenceCapableClass, subclasses);
-        }
-        return rc;
-    }
-
-    /**
-     * Equivalent to <code>getExtent (persistenceCapableClass,
-     * true)</code>.
-     * @see #getExtent(Class,boolean)
-     * @since 2.0
-     */
-    public Extent getExtent (Class persistenceCapableClass) {
-        return getExtent(persistenceCapableClass, true);
-    }
-
-    class EmptyExtent implements Extent {
-        private final Class cls;
-        private final boolean subclasses;
-        EmptyExtent(Class cls, boolean subclasses) {
-            this.cls = cls;
-            this.subclasses = subclasses;
-        }
-        public Iterator iterator() {
-            return new Iterator() {
-                public boolean hasNext() { return false; }
-                public Object next() { return null; }
-                public void remove() { }
-            };}
-        public boolean hasSubclasses() { return false; }
-        public Class getCandidateClass() { return cls; }
-        public boolean subclasses() { return subclasses; }
-        public PersistenceManager getPersistenceManager() {
-            return PersistenceManagerImpl.this.current;
-        }
-        public void closeAll() { }
-        public void close(Iterator it) { }
-        public FetchPlan getFetchPlan() {
-            throw new UnsupportedOperationException(
-                "Method getFetchPlan not yet implemented");
-        }
-    }
-
-    //
-    // -------- State transition methods --------
-    //
-
-    /** Make the transient instance persistent in this PersistenceManager.
-    * This method must be called in an active transaction.
-    * The PersistenceManager assigns an ObjectId to the instance and
-    * transitions it to persistent-new.
-    * The instance will be managed in the Extent associated with its Class.
-    * The instance will be put into the data store at commit.
-    * @param pc a transient instance of a Class that implements
-    * PersistenceCapable
-    */
-    public Object makePersistent (Object pc) {
-        if (debugging())
-            debug("makePersistent"); // NOI18N
-
-        assertIsOpen();
-        assertActiveTransaction(false);
-
-        return makePersistentInternal(pc);
-    }
-
-    /** Make an array of instances persistent.
-    * @param pcs an array of transient instances
-    * @see #makePersistent(Object pc)
-    */
-    public Object[] makePersistentAll(Object[] pcs) {
-        if (debugging())
-            debug("makePersistentAll"); // NOI18N
-
-        assertIsOpen();
-        assertIsOpen();
-        assertActiveTransaction(false);
-        return makePersistentAllInternal(pcs);
-    }
-
-    /** Make an collection of instances persistent.
-    * @param pcs an collection of transient instances
-    * @see #makePersistent(Object pc)
-    */
-    public Collection makePersistentAll(Collection pcs) {
-        if (debugging())
-            debug("makePersistentAll"); // NOI18N
-
-        assertIsOpen();
-        assertActiveTransaction(false);
-        return Arrays.asList(makePersistentAllInternal(pcs.toArray()));
-    }
-
-    /** Delete the persistent instance from the data store.
-     * This method must be called in an active transaction.
-     * The data store object will be removed at commit.
-     * Unlike makePersistent, which makes the closure of the instance persistent,
-     * the closure of the instance is not deleted from the data store.
-     * This method has no effect if the instance is already deleted in the
-     * current transaction.
-     * This method throws an exception if the instance is transient or is managed by another
-     * PersistenceManager.
-     *   
-     * @param pc a persistent instance
-     */ 
-    public void deletePersistent (Object pc) {
-        if (debugging())
-            debug("deletePersistent"); // NOI18N
-
-        assertIsOpen();
-        assertActiveTransaction(false);
-        deletePersistentInternal(pc);
-    }
-
-    /** Delete an array of instances from the data store.
-     * @param pcs a Collection of persistent instances
-     * @see #deletePersistent(Object pc)
-     */
-    public void deletePersistentAll(Object[] pcs) {
-        if (debugging())
-            debug("deletePersistentAll"); // NOI18N
-
-        assertIsOpen();
-        assertActiveTransaction(false);
-        deletePersistentAllInternal(pcs);
-
-    }
-
-    /** Delete a Collection of instances from the data store.
-     * @param pcs a Collection of persistent instances
-     * @see #deletePersistent(Object pc)
-     */  
-    public void deletePersistentAll(Collection pcs) {
-        if (debugging())
-            debug("deletePersistentAll"); // NOI18N
-
-        assertIsOpen();
-        assertActiveTransaction(false);
-        deletePersistentAllInternal(pcs.toArray());
-    }
-
-    /** Make an instance transient, removing it from management by this
-    * PersistenceManager.
-    *   
-    * <P>The instance loses its JDO identity and it is no longer associated
-    * with any PersistenceManager.  The state of fields is preserved unchanged.
-    * @param pc the instance to make transient.
-    */  
-    public void makeTransient(Object pc) {
-        if (debugging())
-            debug("makeTransient"); // NOI18N
-
-        assertIsOpen();
-        makeTransientInternal(pc);
-    }
-    
-    /** Make an array of instances transient, removing them from management by this
-    * PersistenceManager.
-    *   
-    * <P>The instances lose their JDO identity and they are no longer associated
-    * with any PersistenceManager.  The state of fields is preserved unchanged.
-    * @param pcs the instances to make transient.
-    */  
-    public void makeTransientAll(Object[] pcs) {
-        if (debugging())
-            debug("makeTransientAll"); // NOI18N
-
-        assertIsOpen();
-        makeTransientAllInternal(pcs);
-    }
-    
-    /** Make a Collection of instances transient, removing them from management by this
-    * PersistenceManager.
-    *   
-    * <P>The instances lose their JDO identity and they are no longer associated
-    * with any PersistenceManager.  The state of fields is preserved unchanged.
-    * @param pcs the instances to make transient.
-    */  
-    public void makeTransientAll(Collection pcs) {
-        if (debugging())
-            debug("makeTransientAll"); // NOI18N
-
-        assertIsOpen();
-        makeTransientAll(pcs.toArray());
-    }
-
-    /** Make an instance transient, removing it from management by this 
-     * <code>PersistenceManager</code>. Because FOStore doesn't
-     * support the notion of a fetch plan, this method behaves exactly as
-     * makeTransient(Object pc).
-     * @see javax.jdo.PersistenceManager#makeTransient(Object, boolean);
-     */
-    public void makeTransient(Object pc, boolean useFetchPlan) {
-        makeTransient(pc);
-    }
-
-    /** Make instances transient, removing them from management
-     * by this <code>PersistenceManager</code>. Because FOStore doesn't
-     * support the notion of a fetch plan, this method behaves exactly as
-     * makeTransientAll(Object[] pcs).
-     * @see javax.jdo.PersistenceManager#makeTransientAll(Object[], boolean);
-     */
-    public void makeTransientAll(Object[] pcs, boolean useFetchPlan) {
-        makeTransientAll(pcs);
-    }
-    
-    /** Make instances transient, removing them from management
-     * by this <code>PersistenceManager</code>. Because FOStore doesn't
-     * support the notion of a fetch plan, this method behaves exactly as
-     * makeTransientAll(Collection pcs).
-     * @see javax.jdo.PersistenceManager#makeTransientAll(Collection, boolean);
-     */
-    public void makeTransientAll(Collection pcs, boolean useFetchPlan) {
-        makeTransientAll(pcs);
-    }
-
-    /** Make an instance subject to transactional boundaries.
-    *   
-    * <P>Transient instances normally do not observe transaction boundaries.
-    * This method makes transient instances sensitive to transaction completion.
-    * If an instance is modified in a transaction, and the transaction rolls back,
-    * the state of the instance is restored to the state before the first change
-    * in the transaction.
-    *   
-    * <P>For persistent instances read in optimistic transactions, this method
-    * allows the application to make the state of the instance part of the
-    * transactional state.  At transaction commit, the state of the instance in
-    * cache is compared to the state of the instance in the data store.  If they
-    * are not the same, then an exception is thrown.
-    * @param pc the instance to make transactional.
-    */  
-    public void makeTransactional(Object pc) {
-        if (debugging())
-            debug("makeTransactional"); // NOI18N
-
-        assertIsOpen();
-        makeTransactionalInternal(pc);
-    }
-      
-    /** Make an array of instances subject to transactional boundaries.
-    * @param pcs the array of instances to make transactional.
-    * @see #makeTransactional(Object pc)
-    */
-    public void makeTransactionalAll(Object[] pcs) {
-        if (debugging())
-            debug("makeTransactionalAll"); // NOI18N
-
-        assertIsOpen();
-        makeTransactionalAllInternal(pcs);
-    }
-    
-    /** Make a Collection of instances subject to transactional boundaries.
-    * @param pcs the Collection of instances to make transactional.
-    * @see #makeTransactional(Object pc)
-    */
-    public void makeTransactionalAll(Collection pcs) {
-        if (debugging())
-            debug("makeTransactionalAll"); // NOI18N
-
-        assertIsOpen();
-        makeTransactionalAllInternal(pcs.toArray());
-    }
-
-    /** Make an instance non-transactional after commit.
-    *
-    * <P>Normally, at transaction completion, instances are evicted from the
-    * cache.  This method allows an application to identify an instance as
-    * not being evicted from the cache at transaction completion.  Instead,
-    * the instance remains in the cache with nontransactional state.
-    *
-    * @param pc the instance to make nontransactional.
-    */
-    public void makeNontransactional(Object pc) {
-        if (debugging())
-            debug("makeNontransactional"); // NOI18N
-
-        assertIsOpen();
-        makeNontransactionalInternal(pc);
-    }
-    
-    /** Make an array of instances non-transactional after commit.
-    *
-    * @param pcs the array of instances to make nontransactional.
-    * @see #makeNontransactional(Object pc)
-    */
-    public void makeNontransactionalAll(Object[] pcs){
-        if (debugging())
-            debug("makeNontransactionalAll"); // NOI18N
-
-        assertIsOpen();
-        makeNontransactionalAllInternal(pcs);
-    }
-
-    /** Make a Collection of instances non-transactional after commit.
-    *
-    * @param pcs the Collection of instances to make nontransactional.
-    * @see #makeNontransactional(Object pc)
-    */
-    public void makeNontransactionalAll(Collection pcs) {
-        if (debugging())
-            debug("makeNontransactionalAll"); // NOI18N
-
-        assertIsOpen();
-        makeNontransactionalAllInternal(pcs.toArray());
-    }
-
-    /** Mark an instance as no longer needed in the cache.
-    * Eviction is normally done automatically by the PersistenceManager
-    * at transaction completion.  This method allows the application to
-    * explicitly provide a hint to the PersistenceManager that the instance
-    * is no longer needed in the cache.
-    * @param pc the instance to evict from the cache.
-    */  
-    public  void evict(Object pc) {
-        if (debugging())
-            debug("evict"); // NOI18N
-
-        assertIsOpen();
-        evictInternal(pc);
-    }
-
-   /** Mark an array of instances as no longer needed in the cache.
-    * @see #evict(Object pc)
-    * @param pcs the array of instances to evict from the cache.
-    */  
-    public void evictAll(Object[] pcs) {
-        if (debugging())
-            debug("evictAll"); // NOI18N
-
-        assertIsOpen();
-        evictAllInternal(pcs);
-    }
-
-    /** Mark a Collection of instances as no longer needed in the cache.
-    * @param pcs the Collection of instance to evict from the cache.
-    */  
-    public void evictAll(Collection pcs) {
-        if (debugging())
-            debug("evictAll"); // NOI18N
-
-        assertIsOpen();
-        evictAllInternal(pcs.toArray());
-    }
-
-    /** Mark all persistent-nontransactional instances as no longer needed
-    * in the cache.  It transitions
-    * all persistent-nontransactional instances to hollow.  Transactional
-    * instances are subject to eviction based on the RetainValues setting.
-    * @see #evict(Object pc)
-    */  
-    public void evictAll() {
-        if (debugging())
-            debug("evictAll()"); // NOI18N
-
-        assertIsOpen();
-        _txCache.evictAll();
-    }
-
-
-    /** Refresh the state of the instance from the data store.
-    *   
-    * <P>In an optimistic transaction, the state of instances in the cache
-    * might not match the state in the data store.  This method is used to
-    * reload the state of the instance from the data store so that a subsequent
-    * commit is more likely to succeed.
-    * <P>Outside a transaction, this method will refresh nontransactional state.
-    * @param pc the instance to refresh.
-    */  
-    public void refresh(Object pc) { 
-        if (debugging())
-            debug("refresh"); // NOI18N
-
-        assertIsOpen();
-        refreshInternal(pc);
-    }
-     
-    /** Refresh the state of an array of instances from the data store.
-    *   
-    * @see #refresh(Object pc)
-    * @param pcs the array of instances to refresh.
-    */  
-    public void refreshAll(Object[] pcs) {
-        if (debugging())
-            debug("refreshAll"); // NOI18N
-
-        assertIsOpen();
-        refreshAllInternal(pcs);
-    }
-         
-    /** Refresh the state of a Collection of instances from the data store.
-    *
-    * @see #refresh(Object pc)
-    * @param pcs the Collection of instances to refresh.
-    */
-    public void refreshAll(Collection pcs) {
-        if (debugging())
-            debug("refreshAll"); // NOI18N
-
-        assertIsOpen();
-        refreshAllInternal(pcs.toArray());
-    }
-         
-    /** Refresh the state of all applicable instances from the data store.
-    * <P>If called with an active transaction, all transactional instances
-    * will be refreshed.  If called outside an active transaction, all
-    * nontransactional instances will be refreshed.
-    * @see #refresh(Object pc)
-    */
-    public void refreshAll() {
-        if (debugging())
-            debug("refreshAll()"); // NOI18N
-
-        assertIsOpen();
-        if (_activeTransaction) {
-            _txCache.refreshAllTransactional(); 
-        } else {
-            _txCache.refreshAllNontransactional(); 
-        }
-    }
-
-    /**
-     * Refreshes all instances in the exception that failed verification.
-     *
-     * @since 2.0
-     */
-    public void refreshAll(JDOException jdoe) {
-        throw new UnsupportedOperationException(
-            "Method refreshAll(JDOException) not yet implemented");
-    }
-
-    /** Retrieve field values of an instance from the store.  This tells
-     * the <code>PersistenceManager</code> that the application intends to use the
-     * instance, and its field values must be retrieved.
-     * <P>The <code>PersistenceManager</code> might use policy information about the
-     * class to retrieve associated instances.
-     * @param pc the instance
-     */
-    public void retrieve(Object pc) {
-        if (debugging())
-            debug("retrieve"); // NOI18N
-
-        assertIsOpen();
-        retrieveInternal(pc, false);
-    }
-    
-    /** Retrieve field values of an instance from the store.  
-     * <P>The <code>PersistenceManager</code> might use policy information 
-     * about the class to retrieve associated instances.
-     * @param pc the instance
-     * @param FGOnly whether to retrieve only the fields in the fetch plan
-     */
-    public void retrieve(Object pc, boolean FGOnly) {
-        if (debugging())
-            debug("retrieve, FGOnly: " + FGOnly); // NOI18N
-
-        assertIsOpen();
-        retrieveInternal(pc, FGOnly);
-    }
-    
-    /** Retrieve field values of instances from the store.  This tells
-     * the <code>PersistenceManager</code> that the application intends to use the
-     * instances, and all field values must be retrieved.
-     * <P>The <code>PersistenceManager</code> might use policy information about the
-     * class to retrieve associated instances.
-     * @param pcs the instances
-     */
-    public void retrieveAll(Object[] pcs) {
-        retrieveAll(pcs, false);
-    }
-    
-    /** Retrieve field values of instances from the store.  This tells
-     * the <code>PersistenceManager</code> that the application intends to use the
-     * instances, and their field values should be retrieved.  The fields
-     * in the default fetch group must be retrieved, and the implementation
-     * might retrieve more fields than the default fetch group.
-     * <P>The <code>PersistenceManager</code> might use policy information about the
-     * class to retrieve associated instances.
-     * @param pcs the instances
-     * @param FGOnly whether to retrieve only the fields in the fetch plan
-     * @since 1.0.1
-     */
-    public void retrieveAll (Object[] pcs, boolean FGOnly) {
-        if (debugging())
-            debug("retrieveAll, FGOnly: " + FGOnly); // NOI18N
-
-        assertIsOpen();
-        retrieveAllInternal(pcs, FGOnly);
-    }
-
-           
-    /** Retrieve field values of instances from the store.  This tells
-     * the <code>PersistenceManager</code> that the application intends to use the
-     * instances, and all field values must be retrieved.
-     * <P>The <code>PersistenceManager</code> might use policy information about the
-     * class to retrieve associated instances.
-     * @param pcs the instances
-     */
-    public void retrieveAll(Collection pcs) {
-        retrieveAll(pcs, false);
-    }
-    
-    /** Retrieve field values of instances from the store.  This tells
-     * the <code>PersistenceManager</code> that the application intends to use the
-     * instances, and their field values should be retrieved.  The fields
-     * in the default fetch group must be retrieved, and the implementation
-     * might retrieve more fields than the default fetch group.
-     * <P>The <code>PersistenceManager</code> might use policy information about the
-     * class to retrieve associated instances.
-     * @param pcs the instances
-     * @param FGOnly whether to retrieve only the fields in the fetch plan
-     * @since 1.0.1
-     */
-    public void retrieveAll (Collection pcs, boolean FGOnly) {
-        if (debugging())
-            debug("retrieveAll, DFGOnly: " + FGOnly); // NOI18N
-
-        assertIsOpen();
-        retrieveAllInternal(pcs.toArray(), FGOnly);
-    }
-
-    //
-    // -------- Other public methods --------
-    //
-
-    /** This method returns the PersistenceManagerFactory used to create
-    * this PersistenceManager.  It returns null if this instance was
-    * created via a constructor.
-    * @return the PersistenceManagerFactory that created
-    * this PersistenceManager
-    */  
-    public PersistenceManagerFactory getPersistenceManagerFactory() {
-        assertIsOpen();
-        return (PersistenceManagerFactory)pmf;
-    }
-   
-    /** The application can manage the PersistenceManager instances
-    * more easily by having an application object associated with each
-    * PersistenceManager instance.
-    * @param o the user instance to be remembered by the PersistenceManager
-    * @see #getUserObject
-    */  
-    public void setUserObject(Object o) {
-        assertIsOpen();
-        this._userObject = o;
-    }
-     
-    /** The application can manage the PersistenceManager instances
-    * more easily by having an application object associated with each
-    * PersistenceManager instance.
-    * @return the user object associated with this PersistenceManager
-    * @see #setUserObject
-    */  
-    public Object getUserObject() {
-        assertIsOpen();
-        return _userObject;
-    }
-     
-    /**
-     * Detach the specified object from the <code>PersistenceManager</code>.
-     * @param pc the instance to detach
-     * @return the detached instance
-     * @see #detachCopyAll(Object[])
-     * @since 2.0
-     */
-    public Object detachCopy (Object pc) {
-        throw new UnsupportedOperationException(
-            "Method detachCopy(Object) not yet implemented");
-    }
-
-    /**
-     * Detach the specified objects from the <code>PersistenceManager</code>.
-     * @param pcs the instances to detach
-     * @return the detached instances
-     * @see #detachCopyAll(Object[])
-     * @since 2.0
-     */
-    public Collection detachCopyAll (Collection pcs) {
-        throw new UnsupportedOperationException(
-            "Method detachCopy(Collection) not yet implemented");
-    }
-
-    /**
-     * Detach the specified objects from the
-     * <code>PersistenceManager</code>. The objects returned can be
-     * manipulated and re-attached with 
-     * {@link #attachCopyAll(Object[], boolean)}. 
-     * The detached instances will be
-     * unmanaged copies of the specified parameters, and are suitable
-     * for serialization and manipulation outside of a JDO
-     * environment. When detaching instances, only fields in the
-     * current {@link FetchPlan} will be traversed. Thus, to detach a
-     * graph of objects, relations to other persistent instances must
-     * either be in the <code>default-fetch-group</code>, or in the
-     * current custom {@link FetchPlan}.
-     * @param pcs the instances to detach
-     * @return the detached instances
-     * @throws JDOUserException if any of the instances do not
-     * @see #attachCopyAll(Object[], boolean)
-     * @see #getFetchPlan
-     * @since 2.0
-     */
-    public Object[] detachCopyAll (Object [] pcs) {
-        throw new UnsupportedOperationException(
-            "Method detachCopy(Object[]) not yet implemented");
-    }
-
-    /**
-     * Import the specified object into the
-     * <code>PersistenceManager</code>.
-     * @param pc instance to import
-     * @param makeTransactional if <code>true</code>, this method will
-     *     mark transactional the persistent instances corresponding
-     *     to all instances in the closure of the detached graph.
-     * @return the re-attached instance
-     * @see #attachCopyAll(Object[],boolean)
-     * @since		2.0
-     */
-    public Object attachCopy (Object pc, boolean makeTransactional) {
-        throw new UnsupportedOperationException(
-            "Method attachCopy(Object,boolean) not yet implemented");
-    }
-
-    /**
-     * Import the specified objects into the
-     * <code>PersistenceManager</code>.
-     * @param pcs Collection of instances to import
-     * @param makeTransactional if <code>true</code>, this method will
-     *     mark transactional the persistent instances corresponding
-     *     to all instances in the closure of the detached graph.
-     * @return the re-attached instances
-     * @see #attachCopyAll(Object[],boolean)
-     * @since 2.0
-     */
-    public Collection attachCopyAll (Collection pcs, boolean makeTransactional) {
-        throw new UnsupportedOperationException(
-            "Method attachCopyAll(Collection,boolean) not yet implemented");
-    }
-
-    /**
-     * Import the specified objects into the
-     * <code>PersistenceManager</code>. Instances that were
-     * previously detached from this or another
-     * <code>PersistenceManager</code> will have their changed merged
-     * into the persistent instances. Instances that are new will be
-     * persisted as new instances.
-     * @param pcs array of instances to import
-     * @param makeTransactional	if <code>true</code>, this method will
-     *     mark transactional the persistent instances corresponding
-     *     to all instances in the closure of the detached graph.
-     * @return the re-attached instances
-     * @see #detachCopyAll(Object[])
-     * @since 2.0
-     */
-    public Object[] attachCopyAll (Object[] pcs, boolean makeTransactional) {
-        throw new UnsupportedOperationException(
-            "Method attachCopyAll(Object[],boolean) not yet implemented");
-    }
-
-    /**
-     * Put the specified key-value pair into the map of user objects.
-     * @since 2.0
-     */
-    public Object putUserObject (Object key, Object val) {
-        throw new UnsupportedOperationException(
-            "Method putUserObject(Object,Object) not yet implemented");
-    }
-
-    /**
-     * Get the value for the specified key from the map of user objects.
-     * @param key the key of the object to be returned
-     * @return the object 
-     * @since 2.0
-     */
-    public Object getUserObject (Object key) {
-        throw new UnsupportedOperationException(
-            "Method getUserObject(Object) not yet implemented");
-    }
-
-    /**
-     * Remove the specified key and its value from the map of user objects.
-     * @param key the key of the object to be removed
-     * @since 2.0
-     */
-    public Object removeUserObject (Object key) {
-        throw new UnsupportedOperationException(
-            "Method removeUserObject(Object) not yet implemented");
-    }
-
-    /**
-     * Flushes all dirty, new, and deleted instances to the data
-     * store. It has no effect if a transaction is not active.
-     * <p>If a datastore transaction is active, this method
-     * synchronizes the cache with the datastore and reports any
-     * exceptions.</p>
-     * <p>If an optimistic transaction is active, this method obtains
-     * a datastore connection, synchronizes the cache with the
-     * datastore using this connection and reports any
-     * exceptions. The connection obtained by this method is held
-     * until the end of the transaction.</p>
-     * <p>If exceptions occur during flush, the implementation will
-     * set the current transaction's <code>RollbackOnly</code> flag
-     * (see {@link Transaction#setRollbackOnly}).</p>
-     * @since	2.0
-     */
-    public synchronized void flush () {
-        if (debugging())
-            debug("flush"); // NOI18N
-
-        _transaction.internalFlush();
-    }
-
-    /**
-     * Validates the <code>PersistenceManager</code> cache with the
-     * datastore. This method has no effect if a transaction is not
-     * active.
-     * <p>If a datastore transaction is active, this method verifies
-     * the consistency of instances in the cache against the
-     * datastore. An implementation might flush instances as if
-     * {@link #flush} were called, but it is not required to do
-     * so.</p>
-     * <p>If an optimistic transaction is active, this method obtains
-     * a datastore connection and verifies the consistency of the
-     * instances in the cache against the datastore. If any
-     * inconsistencies are detected, a {@link
-     * JDOOptimisticVerificationException} is thrown. This exception
-     * contains a nested {@link JDOOptimisticVerificationException}
-     * for each object that failed the consistency check. No
-     * datastore resources acquired during the execution of this
-     * method are held beyond the scope of this method.</p>
-     * @since 2.0
-     */
-    public void checkConsistency () {
-        throw new UnsupportedOperationException(
-            "Method checkConsistency() not yet implemented");
-    }
-
-    /**
-     * Returns the <code>FetchPlan</code> used by this
-     * <code>PersistenceManager</code>.
-     * @return the FetchPlan
-     * @since 2.0
-     */
-    public FetchPlan getFetchPlan () {
-        throw new UnsupportedOperationException(
-            "Method getFetchPlan() not yet implemented");
-    }
-
-    /**
-     * Creates an instance of a persistence-capable interface or
-     * abstract class. The returned instance is transient.
-     * @param pcClass Must be an abstract class or interface 
-     *     that is declared in the metadata.
-     * @return the created instance
-     * @since 2.0
-     */
-    public Object newInstance (Class pcClass) {
-        throw new UnsupportedOperationException(
-            "Method newInstance(Class) not yet implemented");
-    }
-
-    /**
-     * Returns the sequence identified by <code>name</code>.
-     * @param name the name of the Sequence
-     * @return the Sequence
-     * @since 2.0
-     */
-    public Sequence getSequence (String name) {
-        throw new UnsupportedOperationException(
-            "Method getSequence(String) not yet implemented");
-    }
-
-    /**
-     * If this method is called while a datastore transaction is
-     * active, the object returned will be enlisted in the current
-     * transaction. If called in an optimistic transaction or outside
-     * an active transaction, the object returned will not be
-     * enlisted in any transaction.
-     * @return the JDOConnection instance
-     * @since 2.0
-     */
-    public JDOConnection getDataStoreConnection () {
-        throw new UnsupportedOperationException(
-            "Method getDataStoreConnection() not yet implemented");
-    };
-
-    /**
-     * Adds the listener instance to the list of lifecycle event
-     * listeners. The <code>classes</code> parameter identifies all
-     * of the classes of interest. If the <code>classes</code>
-     * parameter is specified as <code>null</code>, events for all
-     * persistent classes and interfaces will be sent to
-     * <code>listenerInstance</code>.
-     * <p>The listenerInstance will be called for each event for which it
-     * implements the corresponding listenerInstance interface.</p>
-     * @param listener the lifecycle listener
-     * @param classes the classes of interest to the listener
-     * @since 2.0
-     */
-    public void addInstanceLifecycleListener (InstanceLifecycleListener listener,
-        Class[] classes) {
-        throw new UnsupportedOperationException(
-            "Method addInstanceLifecycleListener(InstanceLifecycleListener) not yet implemented");
-    };
-
-    /**
-     * Removes the listener instance from the list of lifecycle event listeners.
-     * @param listener the listener instance to be removed
-     * @since 2.0
-     */
-    public void removeInstanceLifecycleListener (InstanceLifecycleListener listener) {
-        throw new UnsupportedOperationException(
-            "Method removeInstanceLifecycleListener(InstanceLifecycleListener) not yet implemented");
-    }
-
-    /** The JDO vendor might store certain non-operational properties and
-    * make those properties available to applications (for troubleshooting).
-    *   
-    * <P>Standard properties include:
-    * <li>VendorName</li>
-    * <li>VersionNumber</li>
-    * @return the Properties of this PersistenceManager
-    */  
-    public Properties getProperties() {
-        assertIsOpen();
-        return JDORIVersion.getVendorProperties();
-    }
-
-    //
-    // Implement PersistenceManagerInternal methods
-    //
-
-    /**
-     * assert this PM instance is open
-     */
-    public void assertIsOpen() {
-        if (_isClosed) {
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        }
-        // this is synchronized on pmf.closeLock
-        pmf.assertNotClosed();
-    }
-
-    /**
-     * @see org.apache.jdo.pm.PersistenceManagerInternal#getStoreManager()
-     */
-    public StoreManager getStoreManager() {
-        return (_storeManager != null) ? _storeManager : 
-            pmf.getStoreManager(this);
-    }
-
-    /**
-     * @see org.apache.jdo.pm.PersistenceManagerInternal#setStoreManager(StoreManager)
-     */
-    public void setStoreManager(StoreManager storeManager) {
-        _storeManager = storeManager;
-        
-    }
-
-    //
-    // -------- SCO Instance creation methods --------
-    //
-
-    /**
-     * Called by internally by the runtime to create a new tracked instance.
-     * Will not result in marking field as dirty
-     *
-     * @see PersistenceManagerInternal#newSCOInstanceInternal (Class type)
-     */  
-    public Object newSCOInstanceInternal (Class type) {
-        if (debugging())
-            debug("newSCOInstanceInternal for: " + type); // NOI18N
-
-        Class newType = pmf.getTrackedClass(type);
-        if (newType == null) {
-            // Not found - means not supported. Return null here for
-            // the internal calls. 
-            return null;
-        }
-
-        Object obj = null;
-
-        try {
-            Constructor constr = newType.getConstructor((Class[])null);
-
-            if (constr != null) {
-                obj = constr.newInstance((Object[])null);
-            }
-        } catch (Exception e) {
-            throw new JDOUserException(msg.msg(
-                "EXC_CannotConstructSCO",// NOI18N
-                newType.getName()), e);
-        }
-
-        return obj;
-    }
-
-    /**
-     * Called by internally by the runtime to create a new tracked instance.
-     * Will not result in marking field as dirty
-     *
-     * @see PersistenceManagerInternal#newCollectionInstanceInternal(Class type,
-        Class elementType, boolean allowNulls, Integer initialSize,
-        Float loadFactor, Collection initialContents, Comparator comparator)
-     */
-    public Collection newCollectionInstanceInternal(
-        Class type,
-        Class elementType, boolean allowNulls, Integer initialSize,
-        Float loadFactor, Collection initialContents, Comparator comparator) {
-
-        if (debugging())
-            debug("newCollectionInstanceInternal for: " + type); // NOI18N
-
-        Class newType = pmf.getTrackedClass(type);
-        if (newType == null) {
-            // Not found - means not supported. Return null here for
-            // the internal calls. 
-            return null;
-        }
-
-        Object obj = null;
-        SCOCollection rc = null;
-
-
-        try {
-            if (org.apache.jdo.impl.sco.TreeSet.class == newType) {
-                // Comparator can be null.
-                Constructor constr = newType.getConstructor(sigSCO_TreeSet);
-
-                if (constr != null) {
-                    obj = constr.newInstance(
-                        new Object[] {
-                            elementType,
-                            new Boolean(allowNulls), comparator
-                        });
-                }
-            } else if (null == loadFactor) {        
-                // If loadFactor is null, then it might be a HashSet.  If loadFactor
-                // is not null, it must be a HashSet, or we'll throw an exception below.
-
-                Constructor constr = newType.getConstructor(sigSCO_Collection);
-
-                if (constr != null) {
-                    if (initialSize == null) {
-                        initialSize = getInitialSize(newType);
-                    }
-                    obj = constr.newInstance(
-                        new Object[] {
-                            elementType,
-                            new Boolean(allowNulls), initialSize
-                        });
-                }
-            } else if (org.apache.jdo.impl.sco.HashSet.class == newType) {
-                Constructor constr = newType.getConstructor(sigSCO_HashSet);
-                
-                if (constr != null) {
-                    if (initialSize == null) {
-                        initialSize = getInitialSize(newType);
-                    }
-                    obj = constr.newInstance(
-                        new Object[] {
-                            elementType,
-                            new Boolean(allowNulls), initialSize, loadFactor
-                        });
-                    // We don't have a good way of testing this, because
-                    // HashSet is opaque w.r.t. loadFactor.  Uncommenting this
-                    // is all I can suggest!
-                    /*
-                    System.out.println(
-                        "newCollection: loadFactor " + loadFactor); // NOI18N
-                    */
-                }
-            } else {
-                throw new IllegalArgumentException(msg.msg(
-                    "EXC_IllegalArguments",// NOI18N
-                    type.getName()));
-            }
-            rc = (SCOCollection)obj;
-            if (initialContents != null && initialContents.size() > 0) {
-                // Do not use addAllInternal to verify element types of
-                // initialContents.
-                rc.addAll(initialContents);
-            }
-        } catch (IllegalArgumentException e) {
-            throw e;
-        } catch (Exception e) {
-            throw new JDOUserException(msg.msg(
-                "EXC_CannotConstructSCO",// NOI18N
-                newType.getName()), e);
-        }
-        return rc;
-    }
-
-    /**
-     * Called by internally by the runtime to create a new tracked instance.
-     * Will not result in marking field as dirty.
-     *
-     * @see PersistenceManagerInternal#newMapInstanceInternal(Class type,
-        Class keyType, Class valueType, boolean allowNulls, Integer initialSize,
-        Float loadFactor, Map initialContents, Comparator comparator)
-     */
-    public Map newMapInstanceInternal(
-        Class type,
-        Class keyType, Class valueType, boolean allowNulls, Integer initialSize,
-        Float loadFactor, Map initialContents, Comparator comparator) {
-
-        if (debugging())
-            debug("newMapInstanceInternal for: " + type); // NOI18N
-
-        Class newType = pmf.getTrackedClass(type);
-        if (newType == null) {
-            // Not found - means not supported. Return null here for
-            // the internal calls. 
-            return null;
-        }
-
-        Object obj = null;
-        SCOMap rc = null;
-
-
-        try {
-            if (org.apache.jdo.impl.sco.TreeMap.class == newType) {
-                // Comparator can be null.
-                Constructor constr = newType.getConstructor(sigSCO_TreeMap);
-
-                if (constr != null) {
-                    obj = constr.newInstance(
-                        new Object[] {
-                            keyType,
-                            valueType,
-                            new Boolean(allowNulls), comparator
-                        });
-                }
-            } else if (null == loadFactor) {        
-                // It is not TreeMap, so it should be either HashMap or Hashtable
-                // and they can be constructed with or without loadFactor.
-                Constructor constr = newType.getConstructor(sigSCO_Map);
-
-                if (constr != null) {
-                    if (initialSize == null) {
-                        initialSize = getInitialSize(newType);
-                    }
-                    obj = constr.newInstance(
-                        new Object[] {
-                            keyType,
-                            valueType,
-                            new Boolean(allowNulls), initialSize
-                        });
-                }
-            } else if (org.apache.jdo.impl.sco.HashMap.class == newType ||
-                org.apache.jdo.impl.sco.Hashtable.class == newType) {
-                Constructor constr = newType.getConstructor(sigSCO_HashMap);
-                
-                if (constr != null) {
-                    if (initialSize == null) {
-                        initialSize = getInitialSize(newType);
-                    }
-                    obj = constr.newInstance(
-                        new Object[] {
-                            keyType,
-                            valueType,
-                            new Boolean(allowNulls), initialSize, loadFactor
-                        });
-                    // We don't have a good way of testing this, because
-                    // HashMap is opaque w.r.t. loadFactor.  Uncommenting this
-                    // is all I can suggest!
-                    /*
-                    System.out.println(
-                        "newMap: loadFactor " + loadFactor); // NOI18N
-                    */
-                }
-            } else {
-                throw new IllegalArgumentException(msg.msg(
-                    "EXC_IllegalArguments",// NOI18N
-                    type.getName()));
-            }
-            rc = (SCOMap)obj;
-            if (initialContents != null && initialContents.size() > 0) {
-                // Do not use putAllInternal to verify key/value types of
-                // initialContents.
-                rc.putAll(initialContents);
-            }
-        } catch (IllegalArgumentException e) {
-            throw e;
-        } catch (Exception e) {
-            throw new JDOUserException(msg.msg(
-                "EXC_CannotConstructSCO",// NOI18N
-                newType.getName()), e);
-        }
-        return rc;
-    }
-
-    //
-    // ----------- StateManger interaction methods -----------------
-    //
-
-    /**
-     *
-     * @see PersistenceManagerInternal#isSupportedSCOType (Class type)
-     */  
-    public boolean isSupportedSCOType (Class type) {
-        return (pmf.getTrackedClass(type) != null);
-    }
-
-    /**
-     * @see PersistenceManagerInternal#register(StateManagerInternal sm, Object oid, 
-     * boolean transactional, boolean throwDuplicateException)
-     */
-    public void register(StateManagerInternal sm, Object oid, boolean transactional, 
-        boolean throwDuplicateException) {
-        if (debugging())
-            debug("register" + oid); // NOI18N
-
-        _txCache.register(sm, oid, transactional, throwDuplicateException);
-    }
-
-    /**
-     * @see PersistenceManagerInternal#registerTransient(StateManagerInternal sm)
-     */
-    public void registerTransient(StateManagerInternal sm) {
-        if (debugging())
-            debug("registerTransient"); // NOI18N
-
-        _txCache.registerTransient(sm);
-    }
-
-    /**
-     * @see PersistenceManagerInternal#deregister(Object oid)
-     */
-    public void deregister(Object oid) {
-        if (debugging())
-            debug("deregister" + oid); // NOI18N
-
-        _txCache.deregister(oid);
-    }
-
-    /**
-     * @see PersistenceManagerInternal#deregisterTransient(StateManagerInternal sm)
-     */
-    public void deregisterTransient(StateManagerInternal sm) {
-        if (debugging())
-            debug("deregisterTransient"); // NOI18N
-
-        _txCache.deregisterTransient(sm);
-    }
-
-    /**
-     * @see PersistenceManagerInternal#replaceObjectId(Object oldId, Object newId)
-     */
-    public void replaceObjectId(Object oldId, Object newId) {
-        if (debugging())
-            debug("replaceObjectId old: " + oldId + " new: " + newId); // NOI18N
-
-        if (!newId.equals(oldId)) {
-            _txCache.replaceObjectId(oldId, newId);
-        }
-    }
-
-    /**
-     * @see PersistenceManagerInternal#markAsFlushed(StateManagerInternal sm)
-     */
-    public void markAsFlushed(StateManagerInternal sm) {
-        if (debugging())
-            debug("markAsFlushed"); // NOI18N
-
-        if (!_flushing) {
-            _txCache.markAsFlushed(sm);
-        }
-    }
-
-    /**
-     * @see PersistenceManagerInternal#insideCommit()
-     */
-    public boolean insideCommit() {
-        return _transaction.startedCommit();
-    }
-
-    /** A helper method called from the StateManager inside getPersistenceManager()
-     * to identify StateManager associated with this PC instance
-     * @param pc PC instance 
-     * @param sm StateManager to save
-     */
-    public synchronized void hereIsStateManager(StateManagerInternal sm, 
-        PersistenceCapable pc) {
-        if (debugging())
-            debug("hereIsStateManager"); // NOI18N
-
-        if (this.pc == pc) {
-            lookingFor = sm;
-        }
-    }
-
-    /**
-    * @see PersistenceManagerInternal#getStateManager
-    */
-    public StateManagerInternal getStateManager(Object oid, Class pcClass) {
-        if (debugging())
-            debug("getStateManager"); // NOI18N
-
-        return _txCache.getStateManager(oid, pcClass);
-    }
-
-    /** A helper method to find the StateManager associated with this PC instance
-     * @param pc PC instance
-     * @return StateManager as StateManagerInternal
-     */
-    public synchronized StateManagerInternal findStateManager(PersistenceCapable pc) {
-        if (debugging())
-            debug("findStateManager"); // NOI18N
-
-        lookingFor = null;
-        this.pc = pc;
-        // pc.jdoGetPersistenceManager() returns the wrapper. It should compare equals
-        // to this PersistenceManager:
-        PersistenceManager pm = pc.jdoGetPersistenceManager();
-        if (debugging())
-            debug("findStateManager " + pm); // NOI18N
-
-        if (pm != null && !this.equals(pm)) {
-            throw new JDOUserException(msg.msg(
-                 "EXC_AnotherPersistenceManager"));// NOI18N
-        }
-        return lookingFor;
-    }    
-
-    /**
-     * Returns current wrapper
-     */
-    public PersistenceManager getCurrentWrapper() {
-        return current;
-    }
-
-    /**
-     * Returns a Collection of instances that has been made persistent
-     * or become persistent through persistence-by-reachability
-     * algorithm in this transaction. Called by the Extent.iterator.
-     * @see PersistenceManagerInternal#getInsertedInstances
-     * @return Collection of Persistent-New instances.
-     */
-    public Collection getInsertedInstances() {
-        if (debugging())
-            debug("getInsertedInstances"); // NOI18N
-
-        return _txCache.getInsertedInstances();
-    }
-
-    /**
-     * Returns a hash code value for this PersistenceManager.
-     * @return  a hash code value for this PersistenceManager.
-     */  
-    public int hashCode() {
-        return super.hashCode();
-    }
- 
-    /**  
-     * Indicates whether some other object is "equal to" this one.
-     * @param   obj   the reference object with which to compare.
-     * @return  <code>true</code> if this object is the same as the obj
-     *          argument; <code>false</code> otherwise.
-     */  
-    public boolean equals(Object obj) {
-        if (obj instanceof PersistenceManagerWrapper) {
-            return (((PersistenceManagerWrapper)obj).getPersistenceManager() == this); 
- 
-        } else if (obj instanceof PersistenceManagerImpl) {
-            return (((PersistenceManagerImpl)obj) == this); 
-        } 
-        return false; 
-    } 
-
-    //
-    // ----------- Protected methods -----------------
-    //
-
-    /**
-     * Remember the current wrapper
-     */
-    protected void pushCurrentWrapper(PersistenceManagerWrapper pmw) {
-        if (debugging())
-            debug("pushCurrentWrapper"); // NOI18N
-
-        current = pmw;
-    }
-
-    /**
-     * Replace current wrapper with the previous
-     */
-    protected void popCurrentWrapper(PersistenceManagerWrapper prev) {
-        if (debugging())
-            debug("popCurrentWrapper"); // NOI18N
-
-        current = prev;
-        if (_jta == null && current == null) {
-            this.close();
-        }
-    }
-
-    /**
-     * with the current thread in the managed environment
-     */
-    protected void setJTATransaction(Object t) {
-        if (debugging())
-            debug("setJTATransaction"); // NOI18N
-
-        if (this._jta != null) {
-            throw new JDOFatalInternalException(
-                msg.msg("EXC_NotNullJTATransaction")); //NOI18N
-        }
-        this._jta = t;
-    }
-
-    /**
-     * Disassociate this PersistenceManager with the current JTA
-     * transaction.
-     */
-    protected void deregisterJTA() {
-        if (debugging())
-            debug("deregisterJTA"); // NOI18N
-
-        pmf.deregisterPersistenceManager(this, _jta);
-        _jta = null;
-    }
-
-    /** 
-     * Close this persistence manager even if there are open wrappers
-     * or an uncomplete transaction.
-     * Called by transaction completion in case of an inconsistent state
-     * or as a part of a normal close process.
-     */
-    protected void forceClose() {
-        if (debugging())
-            debug("forceClose"); // NOI18N
-
-        _txCache.close();
-
-        // Remove association with JTA Transaction if any and return
-        // to the pool.
-        pmf.releasePersistenceManager(this, _jta);
-
-        // Reset all references:
-        pmf = null;
-        _jta = null;
-        _isClosed = true;
-        _transaction = null;
-        _txCache = null;
-        _userObject = null;
-    }
-
-    /**
-     * Verify that cached instance of a PersistenceManager was initialy
-     * requested with the same values for username and password
-     */
-    protected boolean verify(String username, String password) {
-        if (debugging())
-            debug("verify"); // NOI18N
-
-        return _transaction.verify(username, password);
-    }
-
-    /**
-     * Called by Transaction commit()
-     * Loops through transactional cache and calls PersistentStore.updatePersistent()
-     * on each instance
-     */
-    protected void flushInstances() {
-        if (debugging())
-            debug("flushInstances"); // NOI18N
-
-        assertIsOpen();
-        assertActiveTransaction(false);
-        _flushing = true;
-
-        try {
-            _txCache.flushInstances();
-        } finally {
-            _flushing = false;
-        }
-    }
-
-    /**
-     * Called by Transaction commit() or rollback()
-     * cleans up transactional cache
-     * @param    status        javax.transaction.Status
-     */
-    protected void afterCompletion(int status) {
-        if (debugging())
-            debug("afterCompletion"); // NOI18N
-
-        assertIsOpen();
-        _flushing = true;
-        boolean abort = ((status == Status.STATUS_ROLLEDBACK) ||
-             (status == Status.STATUS_ROLLING_BACK) ||
-             (status == Status.STATUS_MARKED_ROLLBACK));
-        _txCache.afterCompletion(abort);
-        _flushing = false;
-    }
-
-    /**
-     * For Transaction to notify PersistenceManager that
-     * status is changed
-     */
-    protected synchronized void notifyStatusChange(boolean isActive) {
-        _activeTransaction = isActive;
-    }
-
-    /**
-     * For Transaction to notify PersistenceManager that
-     * optimistic flag is changed
-     */
-    protected synchronized void notifyOptimistic(boolean optimistic) {
-        this.optimistic = optimistic;
-    }
-
-    /** --------------Private Methods--------------  */
-
-    /** Returns external representation of the current or transactional
-     * objectId depending on the parameter
-     * @param pc the PersistenceCapable instance
-     * @param transactional true if the transactional Id is requested
-     * @return the corresponding ObjectId of the instance. Returns null
-     * if pc is null, not persistence-capable, or not persistent.
-     */
-    private Object getExternalObjectId(Object pc, boolean transactional) {
-        if (debugging())
-            debug("getExternalObjectId"); // NOI18N
-
-        assertIsOpen();
-        if (pc != null && pc instanceof PersistenceCapable) {
-            PersistenceCapable p = (PersistenceCapable)pc;
-            if (p.jdoIsPersistent()) {
-                return _txCache.getExternalObjectId(p, transactional);
-            }
-        }
-        // All other cases if no exception thrown
-        return null;
-    }
-
-    /**
-     * assert that the associated Transaction is active 
-     */
-    private void assertActiveTransaction(boolean insideQuery) {
-        if (_flushing || (insideQuery && _transaction.getNontransactionalRead())) {
-             return;
-        }
-
-        if (!_activeTransaction) {
-            throw new JDOUserException(msg.msg(
-                "EXC_TransactionNotActive"));// NOI18N
-        }
-
-    }
-
-    /**
-     * assert Object is PersistenceCapable
-     */
-    private void assertPersistenceCapable(Object pc, String caller) {
-        if ( !(pc instanceof PersistenceCapable) ) {
-            String message = null;
-            if (pc instanceof Collection) {
-                message = msg.msg("EXC_CollectionType", caller); // NOI18N
-            } else if (pc.getClass().isArray()) {
-                message = msg.msg("EXC_ArrayType", caller);
-            } else {
-                message = msg.msg("EXC_NotPersistenceCapable", pc.getClass().getName()); // NOI18N
-            }
-            throw new JDOUserException(message, pc);
-        }
-
-    }
-
-    /**
-     * assert PersistenceCapable is associated with this instance of PersistenceManager
-     */  
-    private void assertPersistenceManager(PersistenceCapable pc) {
-        // pc.jdoGetPersistenceManager() returns the wrapper. It should compare equals
-        // to this PersistenceManager:
-        if (!this.equals(pc.jdoGetPersistenceManager())) {
-            throw new JDOUserException(msg.msg(
-                 "EXC_AnotherPersistenceManager"));// NOI18N
-        }
-    }
-
-    /**
-     * Helper method to validate errors on processing arrays of objects.
-     * @param l actual size of the array
-     * @param err array of Throwable to validate
-     * @throws JDOUserException if <code>l</code> is greater than 0.
-     */  
-    private void validateResult(int l, Throwable[] err) {
-        if (l > 0) {
-            Throwable[] t = new Throwable[l];
-            System.arraycopy(err, 0, t, 0, l);
-            throw new JDOUserException(msg.msg(
-                "EXC_FailedToProcessAll"), t); //(Throwable[])err.toArray());// NOI18N
-        } 
-    }
-    /**
-     * Helper method to calculate initialSize of the Collection or Map if
-     * null is specifield for the new tracked instance.
-     *
-     * @param type Class type for which the request is processed.
-     * @return default initialSize as Integer.
-     */  
-    private Integer getInitialSize(Class type) {
-        if (type.equals(org.apache.jdo.impl.sco.HashSet.class) ||
-            type.equals(org.apache.jdo.impl.sco.HashMap.class) ||
-            type.equals(org.apache.jdo.impl.sco.Hashtable.class)) {
-            return int11;
-        } else {
-            return int10;
-        }
-    }
-    
-    //
-    // Internal methods to process state transitions requests.
-    //
-
-    /**
-     * Internal method for processing makePersistent request.
-     * @see #makePersistent(Object pc)
-     */
-    private Object makePersistentInternal(Object pc) {
-        if (pc == null) {
-            if (debugging())
-                debug("makePersistentInternal null"); // NOI18N
-            return null;        // ignore
-        }
-        if (debugging())
-            debug("makePersistentInternal for " + pc.getClass().getName()); // NOI18N
-
-        assertPersistenceCapable(pc, "makePersistent");
-        if (debugging())
-            debug("makePersistentInternal is pc"); // NOI18N
-
-        PersistenceCapable p = (PersistenceCapable)pc;
-        return _txCache.makePersistent(p);
-    }
-
-    /**
-     * Internal method for processing makePersistentAll request.
-     * @see #makePersistentAll(Object[] pcs)
-     */
-    private Object[] makePersistentAllInternal(Object[] pcs) {
-        Object[] result = new Object[pcs.length];
-        Throwable[] err = new Throwable[pcs.length];
-        int l = 0;
-
-        if (debugging())
-            debug("makePersistentAllInternal " + pcs.length); // NOI18N
-        for(int i = 0; i < pcs.length; i++) {
-            try {
-                result[i] = makePersistentInternal(pcs[i]);
-            } catch (Throwable e) {
-                err[l++] = e;
-            }
-        }
-        validateResult(l, err);
-        return result;
-    }
-
-    /**
-     * Internal method to process deletePersistent call.
-     * @see #deletePersistent(Object pc)
-     */
-    private void deletePersistentInternal(Object pc) {
-        if (pc == null) {
-            return;        // ignore
-        }
-        assertPersistenceCapable(pc, "deletePersistent");
-        
-        PersistenceCapable p = (PersistenceCapable)pc;
-
-        if( !(p.jdoIsPersistent()) ) {
-            throw new JDOUserException(msg.msg(
-                "EXC_TransientInstance", pc.getClass().getName()));// NOI18N
-        }
-
-        StateManagerInternal sm = findStateManager(p);
-        sm.deletePersistent();
-    }
-    
-    /**
-     * Internal method to process deletePersistentAll call.
-     * @see #deletePersistentAll(Object[] pcs)
-     */
-    private void deletePersistentAllInternal(Object[] pcs) {
-        Throwable[] err = new Throwable[pcs.length];
-        int l = 0;
-
-        for(int i = 0; i < pcs.length; i++) { 
-            try {
-                deletePersistentInternal(pcs[i]); 
-            } catch (Throwable e) {
-                err[l++] = e;
-            }
-        }
-        validateResult(l, err);
-    }
-
-    /**
-     * Internal method to process makeTransient call.
-     * @see #makeTransient(Object pc)
-     */  
-    private void makeTransientInternal(Object pc) {
-        if (pc == null) {
-            return;        // ignore
-        }
-        assertPersistenceCapable(pc, "makeTransient");
-
-        PersistenceCapable p = (PersistenceCapable)pc;
-        _txCache.makeTransient(p);
-    }
-
-    /**
-     * Internal method to process makeTransientAll call.
-     * @see #makeTransientAll(Object[] pcs)
-     */  
-    private void makeTransientAllInternal(Object[] pcs) {
-        Throwable[] err = new Throwable[pcs.length];
-        int l = 0;
-
-        for(int i = 0; i < pcs.length; i++) { 
-            try {
-                makeTransientInternal(pcs[i]);
-            } catch (Throwable e) {
-                err[l++] = e;
-            }
-        }
-        validateResult(l, err);
-    }
-
-    /**
-     * Internal method to process makeTransactional call.
-     * @see #makeTransactional(Object pc)
-     */  
-    private void makeTransactionalInternal(Object pc) {
-        if (pc == null) {
-            return;        // ignore
-        }
-        assertPersistenceCapable(pc, "makeTransactional");
-        
-        PersistenceCapable p = (PersistenceCapable)pc;
-        if (p.jdoIsPersistent()) {
-            assertActiveTransaction(false);
-        }
-
-        _txCache.makeTransactional(p);
-    }
-
-    /**
-     * Internal method to process makeTransactionalAll call.
-     * @see #makeTransactionalAll(Object[] pcs)
-     */  
-    private void makeTransactionalAllInternal(Object[] pcs) {
-        Throwable[] err = new Throwable[pcs.length];
-        int l = 0;
-
-        for(int i = 0; i < pcs.length; i++) {
-            try {
-                makeTransactionalInternal(pcs[i]);
-            } catch (Throwable e) {
-                err[l++] = e;
-            }
-        }
-        validateResult(l, err);
-    }
-
-    /**
-     * Internal method to process makeNontransactional  call.
-     * @see #makeNontransactional(Object pc)
-     */  
-    private void makeNontransactionalInternal(Object pc) {
-        if (pc == null) {
-            return;        // ignore
-        }
-        assertPersistenceCapable(pc, "makeNontransactional");
-        
-        PersistenceCapable p = (PersistenceCapable)pc;
-        _txCache.makeNontransactional(p);
-    }
-
-    /**
-     * Internal method to process makeNontransactionalAll  call.
-     * @see #makeNontransactionalAll(Object[] pcs)
-     */  
-    private void makeNontransactionalAllInternal(Object[] pcs) {
-        Throwable[] err = new Throwable[pcs.length];
-        int l = 0;
-
-        for(int i = 0; i < pcs.length; i++) {
-            try {
-                makeNontransactionalInternal(pcs[i]);
-            } catch (Throwable e) {
-                err[l++] = e;
-            }
-        }
-        validateResult(l, err);
-    }
-
-    /**
-     * Internal method to process evict call.
-     * @see #evict(Object pc)
-     */  
-    private void evictInternal(Object pc) {
-        if (pc == null) {
-            return;        // ignore
-        }
-        assertPersistenceCapable(pc, "evict");
-
-        PersistenceCapable p = (PersistenceCapable)pc;
-        _txCache.evict(p);
-    }
-
-    /**
-     * Internal method to process evictAll call.
-     * @see #evictAll(Object[] pcs)
-     */  
-    private void evictAllInternal(Object[] pcs) {
-        Throwable[] err = new Throwable[pcs.length];
-        int l = 0;
-
-        for(int i = 0; i < pcs.length; i++) {
-            try {
-                evict(pcs[i]);
-            } catch (Throwable e) {
-                err[l++] = e;
-            }
-        }
-        validateResult(l, err);
-    }
-
-    /**
-     * Internal method to process refresh call.
-     * @see #refresh(Object pc)
-     */  
-    private void refreshInternal(Object pc) {
-        if (pc == null) {
-            return;        // ignore
-        }
-        assertPersistenceCapable(pc, "refresh");
-
-        PersistenceCapable p = (PersistenceCapable)pc;
-        _txCache.refresh(p);
-    }
-
-    /**
-     * Internal method to process refreshAll call.
-     * @see #refreshAll(Object[] pcs)
-     */  
-    private void refreshAllInternal(Object[] pcs) {
-        Throwable[] err = new Throwable[pcs.length];
-        int l = 0;
-
-        for(int i = 0; i < pcs.length; i++) {
-            try {
-                refresh(pcs[i]);
-            } catch (Throwable e) {
-                err[l++] = e;
-            }
-        }
-        validateResult(l, err);
-    }
-
-    /**
-     * Internal method to process retrieve call.
-     * @see #retrieve(Object pc)
-     */  
-    private void retrieveInternal(Object pc, boolean DFGOnly) {
-        // XXX the DFGOnly flag is ignored here.
-        if (pc == null) {
-            return;        // ignore
-        }
-        assertPersistenceCapable(pc, "retrieve");
-
-        PersistenceCapable p = (PersistenceCapable)pc;
-        _txCache.retrieve(p);
-    }
-
-    /**
-     * Internal method to process retrieveAll call.
-     * @see #retrieveAll(Object[] pcs)
-     */  
-    private void retrieveAllInternal(Object[] pcs, boolean DFGOnly) {
-        Throwable[] err = new Throwable[pcs.length];
-        int l = 0;
-
-        for(int i = 0; i < pcs.length; i++) {
-            try {
-                retrieveInternal(pcs[i], DFGOnly);
-            } catch (Throwable e) {
-                err[l++] = e;
-            }
-        }
-        validateResult(l, err);
-    }
-
-    /**
-     * Tracing method
-     * @param msg String to display
-     */
-    private void debug(String msg) {
-        logger.debug("In PersistenceManagerImpl " + msg); // NOI18N
-    }
-
-    /**
-     * Verifies if debugging is enabled.
-     * @return true if debugging is enabled.
-     */
-    private boolean debugging() {
-        return logger.isDebugEnabled();
-    }
-
-    /**
-     * Calls getContextClassLoader for the current Thread in a
-     * doPrivileged block. 
-     * @return the context class loader of the current Thread
-     * @exception SecurityException thrown by getContextClassLoader.
-     */
-    public ClassLoader getContextClassLoaderPrivileged()
-        throws SecurityException
-    {
-        return (ClassLoader) AccessController.doPrivileged (
-            new PrivilegedAction () {
-                public Object run () {
-                    return Thread.currentThread().getContextClassLoader();
-                }
-            }
-            );
-    }
-    
-    /**
-     * Assert the NontransactionalRead flag is true or a transaction is active.
-     */
-    public void assertReadAllowed() {
-        assertIsOpen();
-        _transaction.assertReadAllowed();
-    }
-    
-}
diff --git a/runtime20/src/java/org/apache/jdo/impl/pm/PersistenceManagerWrapper.java b/runtime20/src/java/org/apache/jdo/impl/pm/PersistenceManagerWrapper.java
deleted file mode 100644
index 5c5cf13..0000000
--- a/runtime20/src/java/org/apache/jdo/impl/pm/PersistenceManagerWrapper.java
+++ /dev/null
@@ -1,1179 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * PersistenceManagerWrapper.java
- *
- * Created on January 16, 2001
- */
- 
-package org.apache.jdo.impl.pm;
-
-import java.util.*;
-
-import javax.jdo.*;
-import javax.jdo.datastore.JDOConnection;
-import javax.jdo.datastore.Sequence;
-import javax.jdo.listener.InstanceLifecycleListener;
-
-import org.apache.jdo.pm.PersistenceManagerInternal;
-import org.apache.jdo.util.I18NHelper;
-
-
-/**  
- * This is a thin wrapper for the current implemetation of javax.jdo.PersistenceManager
- * interface. Delegates most of method execution to the corresponding instance of 
- * the PersistenceManagerImpl. Becomes invalid after PersistenceManager is closed.
- *  
- * @author Marina Vatkina 
- */  
-public class PersistenceManagerWrapper implements PersistenceManager {
-
-    // Previous  PersistenceManagerWrapper
-    private PersistenceManagerWrapper prev = null;
-
-    // Actual  PersistenceManager
-    private PersistenceManagerImpl pm = null;
-
-    // Boolean flag that allows to use this wrapper
-    private boolean isValid = false;
-
-    /**
-     * I18N message handler
-     */
-     private final static I18NHelper msg = 
-        I18NHelper.getInstance("org.apache.jdo.impl.pm.Bundle"); // NOI18N
-
-    // Constructed by  PersistenceManagerFactoryImpl
-    PersistenceManagerWrapper(PersistenceManagerImpl pm) {
-        this.pm = pm;
-        prev = (PersistenceManagerWrapper)pm.getCurrentWrapper();
-        pm.pushCurrentWrapper(this);
-        isValid = true;
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#isClosed()
-     */
-    public boolean isClosed() {
-        if (isValid) {
-            return pm.isClosed();
-        } else {
-            return true;
-        }
-    }
-
-
-   /**
-    * @see javax.jdo.PersistenceManager#close()
-    */
-    public void close() {
-        if (isValid) { 
-            pm.popCurrentWrapper(prev);
-            isValid = false;
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-     /** 
-      * @see javax.jdo.PersistenceManager#currentTransaction()
-      */
-    public Transaction currentTransaction() {
-        if (isValid) { 
-            return pm.currentTransaction();
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-   }
-
-    /**
-     * @see javax.jdo.PersistenceManager#setIgnoreCache(boolean flag)
-     */
-    public void setIgnoreCache(boolean flag) {
-        if (isValid) {
-            pm.setIgnoreCache(flag);
-        } else {
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        }
-    }
-
-    /**
-     * @see javax.jdo.PersistenceManager#getIgnoreCache()
-     */
-    public boolean getIgnoreCache() {
-        if (isValid) {
-            return pm.getIgnoreCache();
-        } else {
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        }
-
-    }
-
-    /**
-     * @see javax.jdo.PersistenceManager#setIgnoreCache(boolean flag)
-     */
-    public void setDetachAllOnCommit(boolean flag) {
-        if (isValid) {
-            pm.setDetachAllOnCommit(flag);
-        } else {
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        }
-    }
-
-    /**
-     * @see javax.jdo.PersistenceManager#getIgnoreCache()
-     */
-    public boolean getDetachAllOnCommit() {
-        if (isValid) {
-            return pm.getDetachAllOnCommit();
-        } else {
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        }
-    }
-
-    /**
-     * @see javax.jdo.PersistenceManager#getMultithreaded()
-     */
-    public boolean getMultithreaded() {
-        if (isValid) {
-            return pm.getMultithreaded();
-        } else {
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        }
-    }
-
-    /**
-     * @see javax.jdo.PersistenceManager#setMultithreaded(boolean flag)
-     */
-    public void setMultithreaded(boolean flag) {
-        if (isValid) {
-            pm.setMultithreaded(flag);
-        } else {
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        }
-    }
-
-    /**
-     * @see javax.jdo.PersistenceManager#evict(Object pc)
-     */
-    public  void evict(Object pc) {
-        if (isValid) {
-            pm.evict(pc);
-        } else {
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        }
-    }
-
-    /**
-     * @see javax.jdo.PersistenceManager#evictAll(Object[] pcs)
-     */
-    public  void evictAll(Object[] pcs) {
-        if (isValid) {
-            pm.evictAll(pcs);
-        } else {
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        }
-    }
-
-    /**
-     * @see javax.jdo.PersistenceManager#evictAll(Collection pcs)
-     */
-    public  void evictAll(Collection pcs) {
-        if (isValid) {
-            pm.evictAll(pcs);
-        } else {
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        }
-    }
-
-    /**
-     * @see javax.jdo.PersistenceManager#evictAll()
-     */
-    public  void evictAll() {
-        if (isValid) {
-            pm.evictAll();
-        } else {
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        }
-    }
-
-    /**
-     * @see javax.jdo.PersistenceManager#refresh(Object pc)
-     */
-    public  void refresh(Object pc) {
-        if (isValid) {
-            pm.refresh(pc);
-        } else {
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        }
-    }
-
-    /**
-     * @see javax.jdo.PersistenceManager#refreshAll(Object[] pcs)
-     */
-    public  void refreshAll(Object[] pcs) {
-        if (isValid) {
-            pm.refreshAll(pcs);
-        } else {
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        }
-    }
-
-    /**
-     * @see javax.jdo.PersistenceManager#refreshAll(Collection pcs)
-     */
-    public  void refreshAll(Collection pcs) {
-        if (isValid) {
-            pm.refreshAll(pcs);
-        } else {
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        }
-    }
-
-    /**
-     * @see javax.jdo.PersistenceManager#refreshAll()
-     */
-    public  void refreshAll() {
-        if (isValid) {
-            pm.refreshAll();
-        } else {
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        }
-    }
-
-    /**
-     * @see javax.jdo.PersistenceManager#refreshAll(JDOException jdoe)
-     */
-    public  void refreshAll(JDOException jdoe) {
-        if (isValid) {
-            pm.refreshAll(jdoe);
-        } else {
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        }
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#newQuery()
-     */
-    public Query newQuery(){
-        if (isValid) { 
-            return pm.newQuery();
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#newQuery(Object compiled)
-     */
-    public Query newQuery(Object compiled){
-        if (isValid) { 
-            return pm.newQuery(compiled);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#newQuery(String query)
-     */
-    public Query newQuery(String query){
-        if (isValid) { 
-            return pm.newQuery(query);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#newQuery(Class cls)
-     */
-    public Query newQuery(Class cls){
-        if (isValid) { 
-            return pm.newQuery(cls);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#newQuery(Extent cln)
-     */
-    public Query newQuery(Extent cln){
-        if (isValid) { 
-            return pm.newQuery(cln);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#newQuery(Class cls,Collection cln)
-     */
-    public Query newQuery(Class cls,Collection cln){
-        if (isValid) { 
-            return pm.newQuery(cls, cln);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-   }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#newQuery(String language, Object query)
-     */
-    public Query newQuery (String language, Object query){
-        if (isValid) { 
-            return pm.newQuery(language, query);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#newQuery(Class cls, String filter)
-     */
-    public Query newQuery (Class cls, String filter){
-        if (isValid) { 
-            return pm.newQuery(cls, filter);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#newQuery(Class cls, Collection cln, String filter)
-     */
-    public Query newQuery (Class cls, Collection cln, String filter){
-        if (isValid) { 
-            return pm.newQuery(cls, cln, filter);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#newQuery(Extent cln, String filter)
-     */
-    public Query newQuery (Extent cln, String filter){
-        if (isValid) { 
-            return pm.newQuery(cln, filter);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#newNamedQuery(Class cls, String queryName)
-     */
-    public Query newNamedQuery(Class cls, String queryName) {
-        if (isValid) { 
-            return pm.newNamedQuery(cls, queryName);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#getExtent(Class persistenceCapableClass,
-     * boolean subclasses)
-     */
-    public Extent getExtent(Class persistenceCapableClass,boolean subclasses){
-        if (isValid) { 
-            return pm.getExtent(persistenceCapableClass, subclasses);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#getExtent(Class persistenceCapableClass)
-     */
-    public Extent getExtent(Class persistenceCapableClass){
-        if (isValid) { 
-            return pm.getExtent(persistenceCapableClass);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#getObjectById(Object oid, boolean validate)
-     */
-    public Object getObjectById(Object oid, boolean validate){
-        if (isValid) { 
-            return pm.getObjectById(oid, validate);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#getObjectById(Class cls, Object key)
-     */
-    public Object getObjectById(Class cls, Object key){
-        if (isValid) { 
-            return pm.getObjectById(cls, key);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#getObjectById(Object oid)
-     */
-    public Object getObjectById(Object oid){
-        if (isValid) { 
-            return pm.getObjectById(oid);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#getObjectId(Object pc)
-     */
-    public Object getObjectId(Object pc){
-        if (isValid) { 
-            return pm.getObjectId(pc);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-   }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#getTransactionalObjectId (Object pc)
-     */
-    public Object getTransactionalObjectId (Object pc) {
-        if (isValid) { 
-            return pm.getTransactionalObjectId(pc);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-   }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#newObjectIdInstance (Class pcClass, Object key)
-     */
-    public Object newObjectIdInstance (Class pcClass, Object key) {
-        if (isValid) { 
-            return pm.newObjectIdInstance (pcClass, key);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#getObjectsById (Collection oids, boolean validate)
-     */
-    public Collection getObjectsById (Collection oids, boolean validate) {
-        if (isValid) { 
-            return pm.getObjectsById (oids, validate);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#getObjectsById (Collection oids)
-     */
-    public Collection getObjectsById (Collection oids) {
-        if (isValid) { 
-            return pm.getObjectsById (oids);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#getObjectsById (Object[] oids, boolean validate)
-     */
-    public Object[] getObjectsById (Object[] oids, boolean validate) {
-        if (isValid) { 
-            return pm.getObjectsById (oids, validate);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#getObjectsById (Object[] oids)
-     */
-    public Object[] getObjectsById (Object[] oids) {
-        if (isValid) { 
-            return pm.getObjectsById (oids);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#makePersistent(Object pc)
-     */
-    public Object makePersistent(Object pc){
-        if (isValid) { 
-            return pm.makePersistent(pc);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-   }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#makePersistentAll(Object[] pc)
-     */
-    public Object[] makePersistentAll(Object[] pcs){
-        if (isValid) { 
-            return pm.makePersistentAll(pcs);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-   }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#makePersistentAll(Collection pcs)
-     */
-    public Collection makePersistentAll (Collection pcs){
-        if (isValid) { 
-            return pm.makePersistentAll(pcs);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-   }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#deletePersistent(Object pc)
-     */
-    public void deletePersistent(Object pc){
-        if (isValid) { 
-            pm.deletePersistent(pc);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-   }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#deletePersistentAll(Object[] pc)
-     */
-    public void deletePersistentAll (Object[] pcs){
-        if (isValid) { 
-            pm.deletePersistentAll(pcs);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-   }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#deletePersistentAll(Collection pc)
-     */
-    public void deletePersistentAll (Collection pcs){
-        if (isValid) { 
-            pm.deletePersistentAll(pcs);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-   }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#makeTransient(Object pc)
-     */
-    public void makeTransient(Object pc){
-        if (isValid) { 
-            pm.makeTransient(pc);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-   }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#makeTransientAll(Object[] pc)
-     */
-    public void makeTransientAll(Object[] pcs){
-        if (isValid) { 
-            pm.makeTransientAll(pcs);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-   }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#makeTransientAll(Collection pcs)
-     */
-    public void makeTransientAll (Collection pcs){
-        if (isValid) { 
-            pm.makeTransientAll(pcs);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-   }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#makeTransient
-     * (Object pc, boolean useFetchPlan)
-     */
-    public void makeTransient(Object pc, boolean useFetchPlan){
-        if (isValid) { 
-            pm.makeTransient(pc, useFetchPlan);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-   }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#makeTransientAll
-     * (Object[] pc, boolean useFetchPlan)
-     */
-    public void makeTransientAll(Object[] pcs, boolean useFetchPlan){
-        if (isValid) { 
-            pm.makeTransientAll(pcs, useFetchPlan);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-   }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#makeTransientAll
-     * (Collection pcs, boolean useFetchPlan)
-     */
-    public void makeTransientAll (Collection pcs, boolean useFetchPlan){
-        if (isValid) { 
-            pm.makeTransientAll(pcs, useFetchPlan);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-   }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#makeTransactional(Object pc)
-     */
-    public void makeTransactional(Object pc){
-        if (isValid) { 
-            pm.makeTransactional(pc);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-   }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#makeTransactionalAll(Object[] pc)
-     */
-    public void makeTransactionalAll(Object[] pcs){
-        if (isValid) { 
-            pm.makeTransactionalAll(pcs);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-   }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#makeTransactionalAll(Collection pcs)
-     */
-    public void makeTransactionalAll (Collection pcs){
-        if (isValid) { 
-            pm.makeTransactionalAll(pcs);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-   }
-    
-    /*
-     * @see javax.jdo.PersistenceManager#makeNontransactional(Object pc)
-     */
-    public void makeNontransactional(Object pc){
-        if (isValid) { 
-            pm.makeNontransactional(pc);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-   }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#makeNontransactionalAll(Object[] pc)
-     */
-    public void makeNontransactionalAll(Object[] pcs){
-        if (isValid) { 
-            pm.makeNontransactionalAll(pcs);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-   }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#makeNontransactionalAll(Collection pcs)
-     */
-    public void makeNontransactionalAll (Collection pcs){
-        if (isValid) { 
-            pm.makeNontransactionalAll(pcs);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-   }
-    
-    /** Retrieve all field values of an instance from the store. 
-     * <P>The PersistenceManager might use policy information about the
-     * class to retrieve associated instances.
-     * @param pc the instance to retrieve
-     */
-    public void retrieve(Object pc) {
-        if (isValid) { 
-            pm.retrieve(pc);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-    
-    /** Retrieve field values of an instance from the store. If the FGOnly
-     * flag is false, retrieve all field values. If the FGOnly flag is true,
-     * retrieve only fields defined in the fetch plan.
-     * <P>The PersistenceManager might use policy information about the
-     * class to retrieve associated instances.
-     * @param pc the instance to retrieve
-     * @param FGOnly whether to retrieve only the fetch group fields defined
-     * in the fetch plan
-     * @since 2.0
-     */
-    public void retrieve(Object pc, boolean FGOnly) {
-        if (isValid) { 
-            pm.retrieve(pc, FGOnly);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-    
-    /** Retrieve field values of instances from the store.  This tells
-     * the <code>PersistenceManager</code> that the application intends to use the
-     * instances, and all field values must be retrieved.
-     * <P>The <code>PersistenceManager</code> might use policy information about the
-     * class to retrieve associated instances.
-     * @param pcs the instances
-     */
-    public void retrieveAll(Object[] pcs) {
-        if (isValid) { 
-            pm.retrieveAll(pcs);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-    
-    /** Retrieve field values of instances from the store.  This tells
-     * the <code>PersistenceManager</code> that the application intends to use the
-     * instances, and their field values should be retrieved.  The fields
-     * in the default fetch group must be retrieved, and the implementation
-     * might retrieve more fields than the default fetch group.
-     * <P>The <code>PersistenceManager</code> might use policy information about the
-     * class to retrieve associated instances.
-     * @param pcs the instances
-     * @param FGOnly whether to retrieve only the fetch group fields defined
-     * in the fetch plan
-     * @since 1.0.1
-     */
-    public void retrieveAll (Object[] pcs, boolean FGOnly) {
-        if (isValid) { 
-            pm.retrieveAll(pcs, FGOnly);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-           
-    /** Retrieve field values of instances from the store.  This tells
-     * the <code>PersistenceManager</code> that the application intends to use the
-     * instances, and all field values must be retrieved.
-     * <P>The <code>PersistenceManager</code> might use policy information about the
-     * class to retrieve associated instances.
-     * @param pcs the instances
-     */
-    public void retrieveAll(Collection pcs) {
-        if (isValid) { 
-            pm.retrieveAll(pcs);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** Retrieve field values of instances from the store.  This tells
-     * the <code>PersistenceManager</code> that the application intends to use the
-     * instances, and their field values should be retrieved.  The fields
-     * in the default fetch group must be retrieved, and the implementation
-     * might retrieve more fields than the default fetch group.
-     * <P>The <code>PersistenceManager</code> might use policy information about the
-     * class to retrieve associated instances.
-     * @param pcs the instances
-     * @param FGOnly whether to retrieve only the fetch group fields defined
-     * in the fetch plan
-     * @since 1.0.1
-     */
-    public void retrieveAll (Collection pcs, boolean FGOnly) {
-        if (isValid) {
-            pm.retrieveAll(pcs, FGOnly);
-        } else {
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-            
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#getPersistenceManagerFactory()
-     */
-    public PersistenceManagerFactory getPersistenceManagerFactory(){
-        if (isValid) { 
-            return pm.getPersistenceManagerFactory();
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-   }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#setUserObject(Object o)
-     */
-    public void setUserObject(Object o){
-        if (isValid) { 
-            pm.setUserObject(o);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#getUserObject()
-     */
-    public Object getUserObject(){
-        if (isValid) { 
-            return pm.getUserObject();
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-    
-    /** 
-     * @see javax.jdo.PersistenceManager#getObjectIdClass(Class cls)
-     */
-    public Class getObjectIdClass(Class cls){
-        if (isValid) { 
-            return pm.getObjectIdClass(cls);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#detachCopy (Object pc)
-     */
-    public Object detachCopy (Object pc) {
-        if (isValid) { 
-            return pm.detachCopy(pc);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#detachCopyAll (Collection pcs)
-     */
-    public Collection detachCopyAll (Collection pcs) {
-        if (isValid) { 
-            return pm.detachCopyAll(pcs);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#detachCopyAll (Object [] pcs)
-     */
-    public Object[] detachCopyAll (Object [] pcs) {
-        if (isValid) { 
-            return pm.detachCopyAll(pcs);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#attachCopy (Object pc, boolean makeTransactional)
-     */
-    public Object attachCopy (Object pc, boolean makeTransactional) {
-        if (isValid) { 
-            return pm.attachCopy(pc, makeTransactional);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#attachCopyAll (Collection pcs, boolean makeTransactional)
-     */
-    public Collection attachCopyAll (Collection pcs, boolean makeTransactional) {
-        if (isValid) { 
-            return pm.attachCopyAll(pcs, makeTransactional);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#attachCopyAll (Object[] pcs, boolean makeTransactional)
-     */
-    public Object[] attachCopyAll (Object[] pcs, boolean makeTransactional) {
-        if (isValid) { 
-            return pm.attachCopyAll(pcs, makeTransactional);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#putUserObject (Object key, Object val)
-     */
-    public Object putUserObject (Object key, Object val) {
-        if (isValid) { 
-            return pm.putUserObject(key, val);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#getUserObject (Object key)
-     */
-    public Object getUserObject (Object key) {
-        if (isValid) { 
-            return pm.getUserObject(key);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#removeUserObject (Object key)
-     */
-    public Object removeUserObject (Object key) {
-        if (isValid) { 
-            return pm.removeUserObject(key);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#flush ()
-     */
-    public void flush () {
-        if (isValid) { 
-            pm.flush();
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#checkConsistency ()
-     */
-    public void checkConsistency () {
-        if (isValid) { 
-            pm.checkConsistency();
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#getFetchPlan ()
-     */
-    public FetchPlan getFetchPlan () {
-        if (isValid) { 
-            return pm.getFetchPlan();
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#newInstance (Class pcClass)
-     */
-    public Object newInstance (Class pcClass) {
-        if (isValid) { 
-            return pm.newInstance(pcClass);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#getSequence (String name)
-     */
-    public Sequence getSequence (String name) {
-        if (isValid) { 
-            return pm.getSequence(name);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#getDataStoreConnection ()
-     */
-    public JDOConnection getDataStoreConnection () {
-        if (isValid) { 
-            return pm.getDataStoreConnection();
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#addInstanceLifecycleListener (
-     * InstanceLifecycleListener listener, Class[] classes)
-     */
-    public void addInstanceLifecycleListener (
-        InstanceLifecycleListener listener, Class[] classes) {
-        if (isValid) { 
-            pm.addInstanceLifecycleListener(listener, classes);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /** 
-     * @see javax.jdo.PersistenceManager#removeInstanceLifecycleListener (
-     * InstanceLifecycleListener listener)
-     */
-    public void removeInstanceLifecycleListener (
-        InstanceLifecycleListener listener) {
-        if (isValid) { 
-            pm.removeInstanceLifecycleListener(listener);
-        } else { 
-            throw new JDOFatalUserException(msg.msg(
-                "EXC_PersistenceManagerClosed"));// NOI18N
-        } 
-    }
-
-    /**
-     * Returns PersistenceManagerInternal associated with this wrapper.
-     * This method should be accessed by the PersistenceManagerInternal
-     * only.
-     * @return PersistenceManagerInternal.
-     */
-    protected PersistenceManagerInternal getPersistenceManager() {
-        return (PersistenceManagerInternal)pm;
-    }
-
-    /** 
-     * Returns a hash code value for this PersistenceManagerWrapper.
-     * @return  a hash code value for this PersistenceManagerWrapper.
-     */
-    public int hashCode() {
-        return pm.hashCode();
-    }
-
-    /**  
-     * Indicates whether some other object is "equal to" this one.
-     * @param   obj   the reference object with which to compare.
-     * @return  <code>true</code> if this object is the same as the obj
-     *          argument; <code>false</code> otherwise.
-     */  
-    public boolean equals(Object obj) {
-        if (obj instanceof PersistenceManagerWrapper) {
-            return (((PersistenceManagerWrapper)obj).pm == this.pm);
-
-        } else if (obj instanceof PersistenceManagerImpl) {
-            return (((PersistenceManagerImpl)obj) == this.pm);
-        }
-        return false;
-    }
-}
diff --git a/runtime20/src/java/org/apache/jdo/impl/pm/TransactionImpl.java b/runtime20/src/java/org/apache/jdo/impl/pm/TransactionImpl.java
deleted file mode 100644
index 663c1ef..0000000
--- a/runtime20/src/java/org/apache/jdo/impl/pm/TransactionImpl.java
+++ /dev/null
@@ -1,1181 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * TransactionImpl.java
- *
- * Create on December 1, 2000
- */
-
-package org.apache.jdo.impl.pm;
-
-import java.util.*;
-import javax.transaction.*;
-
-import javax.jdo.*;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.jdo.ejb.EJBImplHelper;
-import org.apache.jdo.store.Connector;
-import org.apache.jdo.store.StoreManager;
-import org.apache.jdo.util.I18NHelper;
-
-/**
- *
- * The Transaction interface allows operations to be performed against
- * the transaction in the target Transaction object. A Transaction 
- * object is created corresponding to each PersistentManagerImpl creation.
- * The Transaction object can be used for synchronization registration, 
- * transaction completion and status query operations.
- *
- * This implementation is StoreManager independent.
- *
- * @author Marina Vatkina
- */
-class TransactionImpl implements javax.jdo.Transaction {
-
-    /**
-     * Transaction status (from javax.transaction.Status).
-     */
-    private int            status;
-
-    /**
-     * The commit process has already begun (even though the status is still
-     * STATUS_ACTIVE).  This is the first thing set during commit or rollback.
-     */
-    private boolean        startedCommit;
-
-    /**
-     * Registered Synchronization object.
-     */
-    private Object    synchronization;
-
-    /**
-     * Synchronisation object associated with this transaction instance
-     */
-    private Object txSync = null;
-    
-    /**
-     * PersistenceManagerFactory associated with this transaction 
-     */
-    private PersistenceManagerFactoryImpl pmFactory = null;
-    
-    /**
-     * PersistenceManager associated with this transaction (1-1)
-     */
-    private PersistenceManagerImpl    persistenceManager     = null;
-
-    /**
-     * Connector associated with this transaction 
-     */
-    private Connector    connector     = null;
-
-    /**
-     * javax.transaction.Transaction instance associated with the current
-     * thread or null if there is none.
-     */
-    private javax.transaction.Transaction jta = null;
-
-    /**
-     * Flag that indicates how to handle objects after commit.
-     * If true, at commit instances retain their values and the instances
-     */
-    private boolean retainValues = true;
-
-    /**
-     * Flag that indicates how to handle objects after rollback.
-     * If true, at rollback instances have their values restored.
-     */
-    private boolean restoreValues = true;
-
-    /**
-     * Flag that indicates type of the transaction.
-     * Optimistic transactions do not hold data store locks until commit time.
-     */
-    private boolean optimistic = true;
-
-    /**
-     * Flag that indicates if queries and navigation are allowed
-     * without an active transaction
-     */
-    private boolean nontransactionalRead = true;    
-
-    /**
-     * Flag that indicates if write access is allowed
-     * without an active transaction
-     */
-    private boolean nontransactionalWrite = true;
-
-    /** values for the datasource user and user password to access
-     * security connections
-     */
-    private String         username     = null;
-    private String         password     = null;
-
-    /**
-     * Possible values of txType
-     */
-    protected static final int NON_MGD = 0;
-    protected static final int CMT = 1;
-    protected static final int BMT_UT = 2;
-    protected static final int BMT_JDO = 3;
-
-    /**
-     * Flag to indicate usage mode (non-managed versus managed, and so on).
-     */
-    private int txType = -1;
-
-    /**
-     * Logger instance
-     */
-    private static final Log logger = LogFactory.getFactory().getInstance(
-        "org.apache.jdo.impl.pm"); // NOI18N
-
-    /**
-     * I18N message handler
-     */
-     private final static I18NHelper msg = 
-        I18NHelper.getInstance("org.apache.jdo.impl.pm.Bundle"); // NOI18N
-    
-    /**
-     * Constructors new instance of TransactionImpl for the corresponding
-     * PersistenceManagerImpl. Username and password are provided for future
-     * validation and Connector request.
-     *
-     * @param pm calling instance of PersistenceManagerImpl
-     * @param pmf PersistenceManagerFactoryImpl associated with the instance of
-     * PersistenceManagerImpl
-     * @param username user name for Connector request
-     * @param password user password for Connector request
-     */
-    TransactionImpl(PersistenceManagerImpl pm, PersistenceManagerFactoryImpl pmf,
-        String username, String password) {
-
-        this.status = Status.STATUS_NO_TRANSACTION;
-        this.startedCommit = false;
-        this.persistenceManager = pm;
-
-        pmFactory = pmf;
-        optimistic = pmFactory.getOptimistic();
-        retainValues = pmFactory.getRetainValues();
-        restoreValues = pmFactory.getRestoreValues();
-        nontransactionalRead = pmFactory.getNontransactionalRead();
-        nontransactionalWrite = pmFactory.getNontransactionalWrite();
-
-        this.username = username;
-        this.password = password;
-
-    }
-
-    //
-    // ----- Methods from javax.jdo.Transaction interface ------
-    //
-
-    /**
-     * Returns PersistenceManager associated with this transaction
-     * @see javax.jdo.Transaction#getPersistenceManager()
-     */
-    public javax.jdo.PersistenceManager getPersistenceManager() {
-        persistenceManager.assertIsOpen();
-        return (javax.jdo.PersistenceManager) persistenceManager.getCurrentWrapper();
-    }
-
-    /**
-     * @see javax.jdo.Transaction#isActive()
-     */
-    public boolean isActive() {
-        persistenceManager.assertIsOpen();
-        return !isTerminated();
-    }
-
-    /**
-     * @see javax.jdo.Transaction#setRetainValues(boolean flag)
-     */
-    public void setRetainValues(boolean flag) {
-        persistenceManager.assertIsOpen();
-
-        // Cannot change flag value when transaction commit is in progress.
-        if (startedCommit)
-            throw new JDOUserException(msg.msg(
-                "EXC_CannotSetFlag")); // NOI18N
-
-        this.retainValues = flag;
-    }
-
-    /**
-     * @see javax.jdo.Transaction#getRetainValues()
-     */
-    public boolean getRetainValues() {
-        persistenceManager.assertIsOpen();
-        return retainValues;
-    }
-
-    /**
-     * @see javax.jdo.Transaction#setRestoreValues(boolean flag)
-     */
-    public void setRestoreValues(boolean flag) {
-        persistenceManager.assertIsOpen();
-        // Cannot change flag if transaction is active.
-        if (isActive()) {
-            throw new JDOUserException(msg.msg(
-                "EXC_CannotSetFlagIfActive")); // NOI18N
-        }
-        this.restoreValues = flag;
-    }
-
-    /**
-     * @see javax.jdo.Transaction#getRestoreValues()
-     */
-    public boolean getRestoreValues() {
-        persistenceManager.assertIsOpen();
-        return restoreValues;
-    }
-
-    /**
-     * @see javax.jdo.Transaction#setNontransactionalRead(boolean flag)
-     */
-    public synchronized void setNontransactionalRead (boolean flag) {
-        persistenceManager.assertIsOpen();
-
-        // Cannot change flag value when transaction commit is in progress.
-        if (startedCommit)
-            throw new JDOUserException(msg.msg(
-                "EXC_CannotSetFlag")); // NOI18N
-
-        this.nontransactionalRead = flag;
-
-    }
-
-    /**
-     * @see javax.jdo.Transaction#getNontransactionalRead()
-     */
-    public boolean getNontransactionalRead() {
-        persistenceManager.assertIsOpen();
-        return nontransactionalRead;
-    }
-
-    /**
-     * @see javax.jdo.Transaction#setNontransactionalWrite(boolean flag)
-     */
-    public synchronized void setNontransactionalWrite (boolean flag) {
-        persistenceManager.assertIsOpen();
-
-        // Cannot change flag value when transaction commit is in progress.
-        if (startedCommit)
-            throw new JDOUserException(msg.msg(
-                "EXC_CannotSetFlag")); // NOI18N
-
-        this.nontransactionalWrite = flag;
-    }
-
-    /**
-     * @see javax.jdo.Transaction#getNontransactionalWrite()
-     */
-    public boolean getNontransactionalWrite() {
-        persistenceManager.assertIsOpen();
-        return nontransactionalWrite;
-    }
-
-    /**
-     * @see javax.jdo.Transaction#setOptimistic(boolean flag)
-     */
-    public synchronized void setOptimistic(boolean flag) {
-        persistenceManager.assertIsOpen();
-
-        if (isTerminated()) {
-            this.optimistic = flag;
-        } else {
-            // Cannot change flag value inside an active transaction.
-            throw new JDOUserException(msg.msg(
-                "EXC_CannotChangeType")); // NOI18N
-        }
-
-        // Notify PM about Tx type change
-        persistenceManager.notifyOptimistic(flag);
-    }
-
-    /**
-     * @see javax.jdo.Transaction#getOptimistic()
-     */
-    public boolean getOptimistic() {
-        persistenceManager.assertIsOpen();
-        return optimistic;
-    }
-
-    /**
-     * @see javax.jdo.Transaction#setSynchronization(Synchronization sync)
-     */
-    public void setSynchronization(Synchronization sync) {
-        persistenceManager.assertIsOpen();
-        if (sync == synchronization) {
-            return; // the same Synchronization.
-
-        } else if (sync != null && synchronization != null) {
-            throw new JDOUserException(msg.msg(
-                "EXC_SynchronizationNotNull")); // NOI18N
-        }
-
-        this.registerSynchronization(sync);
-    }
-
-    /**
-     * @see javax.jdo.Transaction#getRetainValues()
-     */
-    public Synchronization getSynchronization() {
-        persistenceManager.assertIsOpen();
-        return (Synchronization)synchronization;
-    }
-
-    public void assertReadAllowed() {
-        if ((!isActive()) && (!getNontransactionalRead())) {
-            throw new JDOUserException(msg.msg(
-                "EXC_NontransactionalRead"));// NOI18N
-        }
-    }
-    
-    /**
-     * Begin a transaction.
-     * @see javax.jdo.Transaction#begin()
-     */
-    public void begin() {
-        // Check and set status...
-        beginInternal();
-
-       // BMT with JDO Transaction
-       if (EJBImplHelper.isManaged()) {
-           txType = BMT_JDO;
-           try {
-                EJBImplHelper.getUserTransaction().begin();
-                jta = EJBImplHelper.getTransaction();
-                if (txSync == null)
-                    txSync = new TransactionSynchronization(this);
-
-                jta.registerSynchronization((Synchronization)txSync);
-                pmFactory.registerPersistenceManager(persistenceManager, jta);
-
-            } catch (JDOException e) {
-                throw e;     // re-throw it.
-            } catch (Exception e) {
-                throw new JDOFatalInternalException(
-                    "EXC_ErrorRegister", e); // NOI18N
-            }
-        } else {
-            // Mark as non-managed transaction.
-            txType = NON_MGD;
-        }
-        
-    }
-
-    /**
-     * Commit the transaction represented by this Transaction object
-     * @see javax.jdo.Transaction#commit()
-     */
-    public void commit() {
-        persistenceManager.assertIsOpen();
-
-        if (txType == CMT || txType == BMT_UT) {
-            // Error - should not be called
-            throw new JDOUserException(msg.msg(
-                 "EXC_WrongMgdOperation", "commit")); //NOI18N
-        } else if (txType == BMT_JDO) {
-            // Send request to the container:
-            try {
-                EJBImplHelper.getUserTransaction().commit();
-                return;
-            } catch (Exception e) { 
-                throw new JDOException("", e); // NOI18N
-            }
-        }
- 
-        // Proceede with non-managed environment call.
-        synchronized (this) {
-            if (persistenceManager.getDetachAllOnCommit()) {
-                throw new JDOUnsupportedOptionException(msg.msg(
-                    "notsupported", "DetachAllOnCommit"));
-            }
-        
-            //
-            // Disallow parallel transaction completion calls:
-            //
-            if (startedCommit) {
-                throw new JDOUserException(msg.msg(
-                    "EXC_TransactionCommitting")); // NOI18N
-            }
-        
-            // This flag prevents user from making any changes to the transaction object.
-            this.startedCommit = true;
-        }
-
-        if (debugging())
-            this.traceCall("commit"); // NOI18N
-
-        try {
-            this.prepareFlush(true); // do actual beforeComplition.
-            this.commitPrepare(); // check internal status.
-            this.commitComplete(); // commitConnector and set status to success.
-
-        } catch (Throwable e) {
-            try {
-                this.internalRollback();
-            } catch (Exception re) {
-                // Do not rethrow the rollback exception - just log it.
-                if (debugging())
-                    logger.debug("Exception during rollback after failed commit: " + re);
-            }
-
-            if (e instanceof JDOException) {
-                throw (JDOException)e;
-            }
-            throw new JDOException("", e); // NOI18N
-        } finally {
-            this.internalAfterCompletion(); // do afterCompletion and cleanup.
-        }
-    }
-
-    /**
-     * Rollback the transaction represented by this transaction object.
-     * @see javax.jdo.Transaction#rollback()
-     */
-    public void rollback() {
-        persistenceManager.assertIsOpen();
-        if (txType == CMT || txType == BMT_UT) {
-            // Error - should not be called
-            throw new JDOUserException(msg.msg(
-                 "EXC_WrongMgdOperation", "rollback")); //NOI18N
-        }
-
-        if (debugging())
-            this.traceCall("rollback"); // NOI18N
-
-        synchronized (this) {
-            //
-            // Disallow parallel transaction completion calls:
-            //
-            if (startedCommit) {
-                throw new JDOUserException(msg.msg(
-                    "EXC_TransactionCommitting")); // NOI18N
-
-            } else if ((this.status != Status.STATUS_ACTIVE) &&    
-                (this.status != Status.STATUS_MARKED_ROLLBACK)) {
-
-                throw new JDOUserException(msg.msg(
-                    "EXC_TransactionNotActive")); // NOI18N
-            }
-        
-            // This flag prevents user from making any changes to the transaction object.
-            this.startedCommit = true;
-        }
-
-        try {
-            this.internalRollback();
-
-            if (txType == BMT_JDO) {
-                // Send request to the container:
-                EJBImplHelper.getUserTransaction().rollback();
-            }
-        } catch (JDOException e) { 
-            throw e;
-
-        } catch (Exception e) { 
-            throw new JDOException("", e); // NOI18N
-
-        } finally {
-            if (txType == NON_MGD) {
-                // afterCompletion and cleanup in case of the managed env. had been
-                // done already.
-                this.internalAfterCompletion(); 
-            }
-        }
-    }
-
-    /**
-     * Returns the rollback-only status of the transaction. When
-     * begun, the rollback-only status is false. Either the 
-     * application or the JDO implementation may set this flag
-     * using setRollbackOnly.
-     * @return <code>true</code> if the transaction has been
-     * marked for rollback.
-     * @since 2.0
-     */
-    public boolean getRollbackOnly() {
-        throw new UnsupportedOperationException(
-            "Method getRollbackOnly not yet implemented");
-    }
-
-    /**
-     * Sets the rollback-only status of the transaction to <code>true</code>.
-     * After this flag is set to <code>true</code>, the transaction 
-     * can no longer be committed, and any attempt to commit the 
-     * transaction will throw <code>JDOUserException<code>.
-     */
-    public void setRollbackOnly() {
-        if (debugging())
-            this.traceCall("setRollbackOnly"); // NOI18N
-
-        if ((this.status == Status.STATUS_ROLLING_BACK)
-                ||    (this.status == Status.STATUS_ROLLEDBACK)
-                ||     (this.status == Status.STATUS_MARKED_ROLLBACK)) {
-            //
-            // Already rolled back, rollback in progress or already marked.
-            //
-            return;
-        }
-
-        if (txType == NON_MGD) {
-            this.setStatus(Status.STATUS_MARKED_ROLLBACK);
-        } else {
-            try {
-                jta.setRollbackOnly();
-            } catch (Exception e) { 
-                throw new JDOException("", e); // NOI18N
-            }
-        }
-
-    }
-
-    //
-    // ----- Other public methods ------
-    //
-
-    /**
-     * Obtain the status of this transaction object.
-     * 
-     * @return The transaction status. 
-     */
-    public int getStatus() {
-        synchronized (this) {
-            return this.status;
-        }
-    }
-
-    /**
-     * Translates a javax.transaction.Status value into a string. 
-     *
-     * @param   status   Status object to translate.
-     * @return  Printable String for a Status object.
-     */
-    public static String statusString(int status) {
-        switch (status) {
-            case Status.STATUS_ACTIVE:            return "STATUS_ACTIVE"; // NOI18N
-            case Status.STATUS_MARKED_ROLLBACK:    return "STATUS_MARKED_ROLLBACK"; // NOI18N
-            case Status.STATUS_PREPARED:        return "STATUS_PREPARED"; // NOI18N
-            case Status.STATUS_COMMITTED:        return "STATUS_COMMITTED"; // NOI18N
-            case Status.STATUS_ROLLEDBACK:        return "STATUS_ROLLEDBACK"; // NOI18N
-            case Status.STATUS_UNKNOWN:            return "STATUS_UNKNOWN"; // NOI18N
-            case Status.STATUS_NO_TRANSACTION:    return "STATUS_NO_TRANSACTION"; // NOI18N
-            case Status.STATUS_PREPARING:        return "STATUS_PREPARING"; // NOI18N
-            case Status.STATUS_COMMITTING:        return "STATUS_COMMITTING"; // NOI18N
-            case Status.STATUS_ROLLING_BACK:    return "STATUS_ROLLING_BACK"; // NOI18N
-            default:                            break;
-        }
-        return "STATUS_Invalid[" + status + "]"; // NOI18N
-    }
-
-    /**
-     * Returns a string representation of this transaction object.
-     *
-     * @return  String describing contents of this Transaction object.
-     */
-    public String toString() {
-        StringBuffer    s = new StringBuffer();
-
-        s.append("  Transaction: \n   status        = " + this.statusString(this.status)+ "\n"); // NOI18N
-        if (this.startedCommit)
-            s.append("   startedCommit = true\n"); // NOI18N
-
-        if (synchronization != null) 
-            s.append("   sync          = " + synchronization.getClass().getName() + "\n"); // NOI18N
-        
-        return s.toString();
-    }
-
-    //
-    // ----- protected methods ------
-    //
-
-    /**
-     * Returns current transaction type
-     * @return current transaction type as int.
-     */
-    protected int getTransactionType() {
-        return txType;
-    }
-
-    /** Verify that username and password are equal to ones stored before
-     *
-     * @param username as String
-     * @param password as String
-     * @return true if they are equal
-     */
-    protected boolean verify(String username, String password) {
-        if ((this.username != null && !this.username.equals(username)) ||
-            (this.username == null && username != null) ||
-            (this.password != null && !this.password.equals(password)) ||
-            (this.password  == null && password != null)) {
-            return false;
-        }
-        return true;
-    }
-
-    /** Returns true if commit has started
-     * @return true if commit has started
-     */
-    protected boolean startedCommit() {
-        return startedCommit;
-    } 
-
-    /**
-     * Flush changes to the datastore. Performed in an active datastore 
-     * transaction only.
-     */
-    protected void internalFlush() {
-        if (this.status != Status.STATUS_ACTIVE) { 
-            throw new JDOUserException(msg.msg(
-                "EXC_TransactionNotActive")); // NOI18N
-        }
-
-        this.prepareFlush(false); // prepare the flush.
-    }
-
-    /**
-     * Begin a transaction in a managed environment. Called by 
-     * PersistenceManagerFactoryImpl when JTA Transaction associated with 
-     * the current thread is active.
-     *
-     * @param t JTA Transaction associated with the current thread
-     */
-    protected void begin(javax.transaction.Transaction t) {
-
-        beginInternal();
-        try {
-            jta = t;
-            if (txSync == null) 
-                txSync = new TransactionSynchronization(this); 
-
-            jta.registerSynchronization((Synchronization)txSync);
-        } catch (Exception e) {
-            throw new JDOFatalInternalException(msg.msg(
-                "EXC_ErrorRegister")); //NOI18N
-        }
-
-        // Set transaction type.
-        txType = CMT;
-    }
-
-    /** 
-     * Called in the managed environment only for transaction completion
-     * by TransactionSynchronization#beforeCompletion().
-     */
-    protected void beforeCompletion() {
-    
-        if (txType == NON_MGD) {
-            // Error - should not be called
-            throw new JDOUserException(msg.msg(
-                "EXC_WrongNonMgdOperation", "beforeCompletion")); //NOI18N
-        }      
- 
-        Object o = null;
- 
-        // This flag prevents user from making any changes to the transaction object.
-        this.startedCommit = true;
-
-        try {
-            o = EJBImplHelper.enlistBeforeCompletion(
-                new Object[] {this, persistenceManager, jta});
-            this.prepareFlush(true); // do actual beforeComplition.
-            this.commitPrepare(); // check internal status.
-
-            // do not do commitConnector() in the managed environment:
-            this.setStatus(Status.STATUS_COMMITTED); 
-
-        } finally {
-            EJBImplHelper.delistBeforeCompletion(o);
-        }
-    }
- 
-    /** 
-     * Called in the managed environment only for transaction completion
-     * by TransactionSynchronization#afterCompletion(int st).
-     */
-    protected void afterCompletion(int st) {
-        if (txType == NON_MGD) {
-            // Error - should not be called
-            throw new JDOUserException(msg.msg(
-                "EXC_WrongNonMgdOperation", "afterCompletion")); //NOI18N
-        }
-        st = EJBImplHelper.translateStatus(st); // translate Status
-
-        if (debugging()) {
-            this.traceCall("afterCompletion", st); // NOI18N
-        }
-
-        if (st == Status.STATUS_ROLLEDBACK) {
-            this.internalRollback();
-        } 
-
-        if (st != this.status) {
-            // Status mismatch - should not happen.
-            throw new JDOUserException(msg.msg(
-                 "EXC_InvalidStatus", // NOI18N
-                 "afterCompletion", this.statusString(this.status),  // NOI18N
-                 this.statusString(st)));
-         }
-
-         this.internalAfterCompletion();
-
-    }
-
-    //
-    // ----- private methods ------
-    //
-
-    /** 
-     * Status change and validation. Called by begin methods.
-     */
-    private void beginInternal() {
-        persistenceManager.assertIsOpen();
-
-        if (debugging())
-            this.traceCall("begin");  // NOI18N
-
-        if (this.isActive()) {
-            throw new JDOUserException(msg.msg(
-                "EXC_ErrorBegin"));  // NOI18N
-
-        }
-        this.setStatus(Status.STATUS_ACTIVE);
-
-            connector = this.getConnector();
-            connector.begin(optimistic);
-    }
-
-    /**
-     * Lower-level before-commit method - phase 1.
-     *
-     * This is called to flush changes to the store.
-     * State transition:
-     *        STATUS_ACTIVE        starting state
-     *        internalBeforeCompletion()    called while still active
-     *        STATUS_PREPARING    no longer active, about to "really" commit
-     *
-     * @param _commit true if called during the commit processing
-     * For exceptions see commit() method.
-     */
-    private void prepareFlush(boolean _commit) {
-        boolean        rollbackOnly = false; //marked for rollback
-
-        if (debugging())
-            this.traceCall("prepareFlush"); // NOI18N
-        //
-        // Prepare connection
-        //
-        connector = this.getConnector();
-
-        //
-        // Validate transaction state before we commit
-        //
-
-        if ((this.status == Status.STATUS_ROLLING_BACK)
-            ||    (this.status == Status.STATUS_ROLLEDBACK)) {
-            throw new JDOUserException(msg.msg(
-                "EXC_TransactionRolledback")); // NOI18N
-        }
-
-        if (connector.getRollbackOnly() ||
-            this.status == Status.STATUS_MARKED_ROLLBACK) {
-            rollbackOnly = true;
-
-        } else if (this.status != Status.STATUS_ACTIVE) {
-            throw new JDOUserException(msg.msg(
-                "EXC_TransactionNotActive")); // NOI18N
-        }
-
-        //
-        // User notifications done outside of lock - check for concurrent
-        // rollback or setRollbackOnly during notification.
-        //
-        if (!rollbackOnly) {
-            this.flushInstances(_commit);
-
-            if (this.status == Status.STATUS_ACTIVE) {        // All ok
-                if (this.startedCommit) { // inside commit - change status.
-                    this.setStatus(Status.STATUS_PREPARING);
-                }
-
-            } else if (this.status == Status.STATUS_MARKED_ROLLBACK) {
-                // This could happen only if this.setRollbackOnly() was called 
-                // during flushInstances() without throwing an
-                // exception.
-                rollbackOnly = true;
-
-            } else {    // concurrently rolled back - should not happen.
-                throw new JDOUserException(msg.msg(
-                    "EXC_TransactionRolledback")); // NOI18N
-            }
-        }
-        if (rollbackOnly) {
-            // Do not rollback here, but throw the exception and the rollback
-            // will happen in the 'catch' block. Usually happens if the
-            // connector was set rollback-only before the commit.
-            this.setRollbackOnly();
-
-            throw new JDOUserException(msg.msg(
-               "EXC_MarkedRolledback")); // NOI18N
-
-        }
-    }
-
-    /**
-     * Lower-level prepare-commit method - phase 2. 
-     *
-     * This is called when flush is finished but before connectorCommit.
-     * Will allow to support 2-phase commit.
-     * State transition:
-     *        STATUS_PREPARING    starting state
-     *        STATUS_PREPARED
-     *
-     * For exceptions see commit() method.
-     */
-    private void commitPrepare() {
-        if (debugging())
-            this.traceCall("commitPrepare"); // NOI18N
-        //
-        // Once we've reached the Status.STATUS_PREPARING state we do not need
-        // to check for concurrent state changes.  All user-level methods
-        // (rollback, setRollbackOnly, register, enlist, etc) are no longer
-        // allowed.
-        //
-
-        //
-        // Validate initial state
-        //
-        if (this.status != Status.STATUS_PREPARING) {
-            throw new JDOUserException(msg.msg(
-               "EXC_WrongStateCommit")); // NOI18N
-        }
-
-        this.setStatus(Status.STATUS_PREPARED);
-    }
-
-    /**
-     * Lower-level commit method - phase 3. Called only in a non-
-     * managed environment.
-     *
-     * State transition:
-     *        STATUS_PREPARED        starting state
-     *        STATUS_COMMITTING    starting to do final phase
-     *        commitConnector()        commit the flush.
-     *        STATUS_COMMITTED
-     *
-     */
-    private void commitComplete() {
-        if (debugging())
-            this.traceCall("commitComplete"); // NOI18N
-
-        //
-        // Validate initial state
-        //
-        if (this.status == Status.STATUS_ROLLING_BACK) {
-            this.setStatus(Status.STATUS_ROLLING_BACK); 
-
-            this.setStatus(Status.STATUS_ROLLEDBACK);
-
-        } else if (this.status == Status.STATUS_PREPARED) {
-            this.setStatus(Status.STATUS_COMMITTING);
-            this.commitConnector();
-            this.setStatus(Status.STATUS_COMMITTED);
-
-        } else {
-            throw new JDOUserException(msg.msg(
-                "EXC_WrongStateCommit")); // NOI18N
-        }
-    }
-
-    /**
-     * Lower-level internal rollback method. This is to avoid concurrent rollbacks.
-     *
-     */
-    private void internalRollback() {
-        if (debugging())
-            this.traceCall("internalRollback"); // NOI18N
-
-        this.setStatus(Status.STATUS_ROLLING_BACK);
-        try {
-            if (txType == NON_MGD) {
-                this.rollbackConnector();
-            }
-        } catch (JDOException ex) {
-            throw ex;
-
-        } catch (Exception ex) {
-            throw new JDOException("", ex);
-
-        } finally {
-            this.setStatus(Status.STATUS_ROLLEDBACK);
-        }
-    }
-
-    /**
-     *
-     * Force rollback.  This is called when something goes wrong during
-     * a late state check (i.e. some failure occurred during the prepare
-     * stage).  Unless we're not already rolling back (or rolled back) this
-     * will blindly change the state of the transaction and complete the
-     * latter stage of rollback.
-     *
-     * @return the final status of the transaction.
-     *
-     * See internalRollback() for exceptions
-     */
-    private int forceRollback() {
-        if (debugging())
-            this.traceCall("forceRollback"); // NOI18N
-
-        if ((this.status == Status.STATUS_ROLLING_BACK)        // Already
-            ||    (this.status == Status.STATUS_ROLLEDBACK)        // Done
-            ||    (this.status == Status.STATUS_COMMITTED)        // Too late
-            ||    (this.status == Status.STATUS_NO_TRANSACTION)    // Never was
-           ) {
-            return this.status;
-        }
-        try {
-            this.internalRollback();
-        } finally {
-            this.internalAfterCompletion();
-        }
-
-        return this.status;
-    }
-
-    /** 
-     * Register a Synchronization object for this transaction object.
-     * The transction manager invokes the beforeCompletion method prior to
-     * starting the transaction commit process. After the transaction is
-     * completed (or aborted), the transaction manager invokes the
-     * afterCompletion method.
-     *
-     * @param sync The Synchronization object for the transaction.
-     */
-    private void registerSynchronization(Synchronization sync) {
-        if (debugging())
-            this.traceCall("registerSynchronization"); // NOI18N
-        synchronized (this) {
-            //
-            // Disallow registration of new synchronization objects during
-            // beforeCompletion or afterCompletion processing.  Synchronizations
-            // are themselves involved in the process.
-            //
-            if (this.startedCommit) {
-                throw new JDOUserException(msg.msg(
-                    "EXC_TransactionCommitting")); // NOI18N
-            }
-
-            synchronization = sync;
-
-            if (debugging()) {
-                this.traceCall("registerSynchronization"); // NOI18N
-            }
-        }
-    }
-
-
-    /**
-     * Confirm that transaction is terminated.
-     * 
-     * @return True if transaction is completed or not started.
-     */
-    private boolean isTerminated() {
-        synchronized (this) {
-            return (    (this.status == Status.STATUS_COMMITTED)
-                    ||    (this.status == Status.STATUS_ROLLEDBACK)
-                    ||    (this.status == Status.STATUS_NO_TRANSACTION));
-        }
-    }
-
-    /**
-     * Flush dirty persistent instances to the datastore.
-     * If called during the commit processing, notifies registered 
-     * Synchronization interfaces with beforeCompletion().
-     */
-    private void flushInstances(boolean commit) {
-        if (commit) {
-            this.getConnector().beforeCompletion();
-            if (synchronization != null) {
-                ((Synchronization)synchronization).beforeCompletion();
-            }
-        }
-
-        persistenceManager.flushInstances();
-    }
-
-    /**
-     * Notify Connector, PersistenceManager, and registered Synchronization 
-     * instances about afterCompletion(). 
-     * All status changes occured before executing this method.
-     */
-    private void internalAfterCompletion() {
-        //
-        // This will execute w/o an active transaction context
-        //
-        persistenceManager.afterCompletion(status);
-
-        try {
-            if (synchronization != null)
-                ((Synchronization)synchronization).afterCompletion(status);
-        } catch (Exception ex) {
-            //
-            // Exceptions ignored
-            //
-        }
-        
-        this.finish();
-    }
-
-    /**
-     * Set status under lock (may be a nested lock which is ok)
-     */
-    private void setStatus(int status) {
-        if (debugging()) {
-            logger.debug(
-                "Tran[" + this.toString() + "].setStatus: " + // NOI18N
-                this.statusString(this.status) + " => " + // NOI18N
-                this.statusString(status));
-        }
-
-        synchronized(this) {
-            this.status = status;
-            persistenceManager.notifyStatusChange(!isTerminated());
-        }
-    }
-
-    /**
-     * Finish this transaction
-     */
-    private void finish() {
-        if (debugging())
-            this.traceCall("finish"); // NOI18N
-
-        //
-        // Do not clear:
-        //
-        //    .status            -- users can still check status
-        //
-        this.startedCommit = false;
-
-        if (txType == CMT || txType == BMT_UT) {
-            persistenceManager.forceClose();
-        } else if (txType == BMT_JDO) {
-            persistenceManager.deregisterJTA();
-        }
-
-        jta = null;
-        txType = NON_MGD;       // Restore the flag
-    }
-
-    //
-    // ----- Connector utilities -----
-    //
-
-    /**
-     * Get a connector 
-     */
-    private Connector getConnector() {
-        StoreManager srm = persistenceManager.getStoreManager();
-
-        if (username != null) {
-            return srm.getConnector(username, password);
-        }
-        return srm.getConnector();
-    }
-
-    /**
-     * Close a connector does flush of the changes and close
-     */
-    private void flushConnector() {
-            connector = this.getConnector();
-            connector.flush();
-    }
-
-    /** 
-     * Rollback a connector does rollback and close
-     */
-    private void rollbackConnector() {
-        connector = this.getConnector();
-        connector.rollback();
-    }
-
-    /** 
-     * Commit a connector does flush if necessary, commit and close
-     */
-    private void commitConnector() {
-        connector = this.getConnector();
-        connector.commit();
-    }
- 
-    //
-    // ----- Debugging utilities -----
-    //
-
-    /**
-     * Verifies if debugging is enabled.
-     * @return true if debugging is enabled.
-     */
-    private boolean debugging() {
-        return logger.isDebugEnabled();
-    }
-
-
-    /**
-     * Trace method call.
-     */
-    private void traceCall(String call) {
-        logger.debug(
-            "Tran[" + this.toString() + "]." + call + // NOI18N
-            ": status = " + this.statusString(this.status) + // NOI18N
-            ", txType: " + txTypeString()); // NOI18N
-    }
-
-    /**
-     * Trace method call with a provided status.
-     */
-    private void traceCall(String call, int st) {
-        logger.debug(
-            "Tran[" + this.toString() + "]." + call + // NOI18N
-            ": status = " + this.statusString(st) + // NOI18N
-            ", txType: " + txTypeString()); // NOI18N
-    }
-
-    /**
-     * Translates a txType value into a string.
-     * 
-     * @return  Printable String for a txType value
-     */
-    private String txTypeString() {
-        switch (txType) {
-            case NON_MGD:                   return "NON_MGD"; // NOI18N
-            case CMT:                       return "CMT"; // NOI18N
-            case BMT_UT:                    return "BMT_UT"; // NOI18N
-            case BMT_JDO:                   return "BMT_JDO"; // NOI18N
-            default:                        break;
-        }
-        return "UNKNOWN"; // NOI18N
-    }      
-}
-
-
-
diff --git a/runtime20/src/java/org/apache/jdo/impl/pm/TransactionSynchronization.java b/runtime20/src/java/org/apache/jdo/impl/pm/TransactionSynchronization.java
deleted file mode 100644
index a3abc2d..0000000
--- a/runtime20/src/java/org/apache/jdo/impl/pm/TransactionSynchronization.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * TransactionSynchronization.java
- *
- * Create on August 1, 20001
- */
-
-package org.apache.jdo.impl.pm;
-
-import javax.transaction.*;
-
-
-/**   
- * This is a Synchronization instance associated with the corresponding instance
- * of the TransactionImpl. Is used for synchronization callbacks in a managed
- * environment. This is a separate object to avoid a requirement for a non-managed
- * application have JTA classes in its classpath.
- *  
- * @author Marina Vatkina  
- */ 
-class TransactionSynchronization implements Synchronization {
-    /** Reference to TransactionImpl instance associated
-     * with this instance of TransactionSynchronization
-     */
-    private TransactionImpl tx = null;
-
-    TransactionSynchronization(TransactionImpl newtx) {
-        tx = newtx;
-    }
-
-    /**
-     * @see javax.transaction.Synchronization#beforeCompletion()
-     */
-    public void beforeCompletion() {
-        tx.beforeCompletion();
-    }
-
-    /** 
-     * @see javax.transaction.Synchronization#afterCompletion(int status) 
-     */ 
-    public void afterCompletion(int status) { 
-        tx.afterCompletion(status); 
-    } 
-
-}
diff --git a/runtime20/src/java/org/apache/jdo/impl/pm/package.html b/runtime20/src/java/org/apache/jdo/impl/pm/package.html
deleted file mode 100644
index 417f286..0000000
--- a/runtime20/src/java/org/apache/jdo/impl/pm/package.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
- Copyright 2005 The Apache Software Foundation.
- 
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- 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.
--->
-
-<html>
-<head>
-<title>Package org.apache.jdo.impl.pm</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
-</head>
-
-<body bgcolor="#FFFFFF">
-<p>This package contains classes that are for use across all kinds of implementations 
-  of the JDO Reference Implementation. The classes herein by and large implement 
-  the interfaces defined in <a href="../package-summary.html">org.apache.jdo.pm</a>. 
-</body>
-</html>
diff --git a/runtime20/src/java/org/apache/jdo/impl/sco/ArrayList.java b/runtime20/src/java/org/apache/jdo/impl/sco/ArrayList.java
deleted file mode 100644
index 2f76a56..0000000
--- a/runtime20/src/java/org/apache/jdo/impl/sco/ArrayList.java
+++ /dev/null
@@ -1,605 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * sco.ArrayList.java
- */
-
-package org.apache.jdo.impl.sco;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-import javax.jdo.JDOUserException;
-import javax.jdo.JDOFatalInternalException;
-
-import org.apache.jdo.sco.SCO;
-import org.apache.jdo.sco.SCOCollection;
-import org.apache.jdo.state.StateManagerInternal;
-import org.apache.jdo.util.I18NHelper;
-
-
-/**
- * A mutable 2nd class object that represents ArrayList.
- * @author Marina Vatkina
- * @version 1.0.1
- * @see java.util.ArrayList
- */
-public class ArrayList extends java.util.ArrayList
-    implements SCOCollection {
-
-    private transient StateManagerInternal owner;
-
-    private transient int fieldNumber = -1;
-
-    private transient     Class elementType;
- 
-    private transient boolean allowNulls;
-
-    private transient java.util.Vector added = new java.util.Vector();
-
... 15898 lines suppressed ...

[db-jdo] 24/43: Create branch for TCK bug fixes

Posted by cl...@apache.org.
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 e983960958452777dc1e152a1dd0503a7b65dce1
Author: Craig L Russell <cl...@apache.org>
AuthorDate: Mon Oct 2 23:05:39 2006 +0000

    Create branch for TCK bug fixes

[db-jdo] 32/43: JDO-399, JDO-395: merge changes from trunk into branch 2.0.1

Posted by cl...@apache.org.
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 26a322c2106bed1c7c9f4d85d94e055244e16b19
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Wed Oct 4 19:12:49 2006 +0000

    JDO-399, JDO-395: merge changes from trunk into branch 2.0.1
---
 .../tck/lifecycle/NontransactionalWriteTest.java   | 35 +++++++++++++---------
 1 file changed, 21 insertions(+), 14 deletions(-)

diff --git a/tck20/src/java/org/apache/jdo/tck/lifecycle/NontransactionalWriteTest.java b/tck20/src/java/org/apache/jdo/tck/lifecycle/NontransactionalWriteTest.java
index 9a19be5..c466fc6 100644
--- a/tck20/src/java/org/apache/jdo/tck/lifecycle/NontransactionalWriteTest.java
+++ b/tck20/src/java/org/apache/jdo/tck/lifecycle/NontransactionalWriteTest.java
@@ -127,16 +127,19 @@ abstract public class NontransactionalWriteTest extends JDO_Test {
      */
     protected void checkXValue(String location, int expectedXValue) {
         PersistenceManager pmCheck = pmf.getPersistenceManager();
-        pmCheck.currentTransaction().begin();
-        VersionedPCPoint instance = 
+        try {
+            pmCheck.currentTransaction().begin();
+            VersionedPCPoint instance = 
                 (VersionedPCPoint)pmCheck.getObjectById(oid, true);
-        int actualXValue = instance.getX();
-        pmCheck.currentTransaction().commit();
-        cleanupPM(pmCheck);
-        if (expectedXValue != actualXValue) {
-            appendMessage(location + NL + 
-                    "expected: " + expectedXValue + NL +
-                    "  actual: " + actualXValue);
+            int actualXValue = instance.getX();
+            pmCheck.currentTransaction().commit();
+            if (expectedXValue != actualXValue) {
+                appendMessage(location + NL + 
+                              "expected: " + expectedXValue + NL +
+                              "  actual: " + actualXValue);
+            }
+        } finally {
+            cleanupPM(pmCheck);
         }
     }
 
@@ -148,12 +151,16 @@ abstract public class NontransactionalWriteTest extends JDO_Test {
      */
     protected void conflictingUpdate() {
         PersistenceManager pmConflict = pmf.getPersistenceManager();
-        pmConflict.currentTransaction().setOptimistic(false);
-        VersionedPCPoint instance = 
+        try {
+            pmConflict.currentTransaction().setOptimistic(false);
+            pmConflict.currentTransaction().begin();
+            VersionedPCPoint instance = 
                 (VersionedPCPoint)pmConflict.getObjectById(oid);
-        instance.setX(conflictXValue);
-        pmConflict.currentTransaction().commit();
-        cleanupPM(pmConflict);
+            instance.setX(conflictXValue);
+            pmConflict.currentTransaction().commit();
+        } finally {
+            cleanupPM(pmConflict);
+        }
     }
 
     /** 

[db-jdo] 14/43: JDO-366 Updated RunRules.html

Posted by cl...@apache.org.
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 534c7d12e25048e4e2f6f36c91d6f888ad8537c0
Author: Craig L Russell <cl...@apache.org>
AuthorDate: Thu Apr 13 23:19:02 2006 +0000

    JDO-366 Updated RunRules.html
---
 tck20/RunRules.html | 80 ++++++++++++++++++++++++++---------------------------
 1 file changed, 40 insertions(+), 40 deletions(-)

diff --git a/tck20/RunRules.html b/tck20/RunRules.html
index 97a3865..ec39205 100644
--- a/tck20/RunRules.html
+++ b/tck20/RunRules.html
@@ -2,10 +2,10 @@
 <HTML>
 <HEAD>
 	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
-	<TITLE></TITLE>
+	<TITLE>JDO 2.0 Technology Compatibility Kit Run Rules</TITLE>
 	<META NAME="GENERATOR" CONTENT="NeoOffice/J 1.1  (Unix)">
 	<META NAME="CREATED" CONTENT="20051228;16322200">
-	<META NAME="CHANGED" CONTENT="20060331;15262300">
+	<META NAME="CHANGED" CONTENT="20060412;21332100">
 	<STYLE>
 	<!--
 		@page { size: 8.5in 11in }
@@ -16,12 +16,13 @@
 <H1 ALIGN=CENTER>Running the JDO 2.0 Technology Compatibility Kit</H1>
 <P ALIGN=CENTER><BR><BR>
 </P>
-<P ALIGN=CENTER>30-Mar-2006</P>
+<P ALIGN=CENTER>13-Apr-2006</P>
 <P STYLE="margin-top: 0.17in; page-break-after: avoid"><FONT FACE="Albany, sans-serif"><FONT SIZE=4>Overview</FONT></FONT></P>
 <P>In order to demonstrate compliance with the Java Data Objects
 specification, an implementation must successfully run all of the TCK
-tests that are not on the “excluded” list. The implementation is
-hereinafter referred to as the IUT (Implementation Under Test).</P>
+tests that are not on the &quot;excluded&quot; list. The
+implementation is hereinafter referred to as the IUT (Implementation
+Under Test).</P>
 <P>The results must be posted on a publicly accessible web site for
 examination by the public. The posting includes the output of the
 test run, which consists of multiple log files containing
@@ -38,8 +39,7 @@ This includes different hardware and operating systems, different
 versions of Java, and different datastores. The TCK supports Java
 versions from JDK 1.3 to 1.5.</P>
 <P STYLE="margin-top: 0.17in; page-break-after: avoid"><FONT FACE="Albany, sans-serif"><FONT SIZE=4>Installation</FONT></FONT></P>
-<P>Download the zip file from the distribution at the Java Community
-Process web site http://jcp.org/en/jsr/detail?id=243. Unpack the zip
+<P>Download the zip file from the distribution location.  Unpack the zip
 file into a directory of your choice. In this directory you will
 find: 
 </P>
@@ -50,8 +50,8 @@ find:
 		<LI><P>maven configuration files project.properties and project.xml
 		(common project definition for all Apache JDO projects including
 		the TCK). These files must not be changed.</P>
-		<LI><P STYLE="margin-bottom: 0.2in">lib – this directory contains
-		a directory ext that should contain jar fi<FONT FACE="Times New Roman, serif">les
+		<LI><P ALIGN=LEFT STYLE="margin-bottom: 0.2in">lib - this directory
+		contains a directory ext that should contain jar fi<FONT FACE="Times New Roman, serif">les
 		<FONT COLOR="#000000">fscontext.jar and providerutil.jar </FONT>us</FONT>ed
 		by the JNDI tests. <FONT FACE="Times New Roman, serif"><FONT COLOR="#000000">The
 		jar files can be found at
@@ -65,44 +65,44 @@ find:
 		<LI><P>the TCK directory, which has a release-specific name (e.g.
 		jdo2-tck-2.0) and contains:</P>
 		<UL>
-			<LI><P>maven.xml, project.properties, project.xml – the maven
+			<LI><P>maven.xml, project.properties, project.xml - the maven
 			definition of the project. These files must not be modified.</P>
-			<LI><P>build.properties – the maven definition for the IUT. This
+			<LI><P>build.properties - the maven definition for the IUT. This
 			file may be modified to change any of the IUT properties needed.</P>
 			<LI><P>this RunRules.html</P>
-			<LI><P>assertions – contains the assertions file identifying the
+			<LI><P>assertions - contains the assertions file identifying the
 			assertions tested by the tests. This is for reference.</P>
-			<LI><P>target – this directory contains artifacts of compiling
-			and running the tests. It does not exist in the distribution and
-			will be created by the maven build script.</P>
-			<LI><P>iut_jars – this directory is where the JDO implementation
+			<LI><P>target - this directory contains artifacts of compiling and
+			running the tests. It does not exist in the distribution and will
+			be created by the maven build script.</P>
+			<LI><P>iut_jars - this directory is where the JDO implementation
 			jars are installed. It is empty in the distribution. To use the
 			maven target runtck.iut (required for an implementation to prove
 			compliance), copy the JDO implementation jar files into this
 			directory. Alternatively, update the build.properties file in the
 			TCK directory to refer to an existing location of the IUT jar
 			files.</P>
-			<LI><P>src – this directory contains the test configuration
-			files and directories:</P>
+			<LI><P>src - this directory contains the test configuration files
+			and directories:</P>
 			<UL>
-				<LI><P>testdata – this directory contains data (represented as
+				<LI><P>testdata - this directory contains data (represented as
 				.xml files) loaded into the datastore for tests. These files must
 				not be modified.</P>
-				<LI><P>sql – this directory contains DDL to define the tables
+				<LI><P>sql - this directory contains DDL to define the tables
 				used in the tests. The files distributed must not be modified.
 				Files may be created for databases for which the DDL for the
 				database under test is not provided. 
 				</P>
-				<LI><P>jdo – this directory contains .jdo metadata files for
-				the persistent classes used in the tests. These files must not be
+				<LI><P>jdo - this directory contains .jdo metadata files for the
+				persistent classes used in the tests. These files must not be
 				modified.</P>
-				<LI><P>orm – this directory contains .orm metadata files to map
+				<LI><P>orm - this directory contains .orm metadata files to map
 				the persistent classes to the sql tables. These files must not be
 				modified except to add DDL-generation information (which is not
 				used by the TCK).</P>
-				<LI><P>java – this directory contains the source code to the
-				TCK tests. These files must not be modified.</P>
-				<LI><P>conf – this directory contains the configuration
+				<LI><P>java - this directory contains the source code to the TCK
+				tests. These files must not be modified.</P>
+				<LI><P>conf - this directory contains the configuration
 				information for the test runs. The file iut-pmf.properties in
 				this directory must be changed to provide properties for the IUT
 				persistence manager factory. The file jndi.properties may be
@@ -134,12 +134,12 @@ by the JDO implementation under test.</P>
 <P STYLE="margin-top: 0.17in; page-break-after: avoid"><FONT FACE="Albany, sans-serif"><FONT SIZE=4>Running
 the Tests</FONT></FONT></P>
 <P>From the installation directory, change to the TCK directory. From
-the TCK directory, call “maven build” which will build the jar
-files used in the tests, create the Derby database, install the
+the TCK directory, call &quot;maven build&quot; which will build the
+jar files used in the tests, create the Derby database, install the
 schema into the Derby database, and run the TCK on the Reference
 Implementation. Success indicates that the TCK was installed
 correctly.</P>
-<P>Then call “maven runtck.iut” to run the tests on the
+<P>Then call &quot;maven runtck.iut&quot; to run the tests on the
 Implementation Under Test. This will produce console output plus a
 directory in the TCK/target/logs directory whose name contains the
 date/time the tests were started. This directory contains the output
@@ -148,10 +148,10 @@ of the tests. This is the directory to be published.</P>
 20 instances of PersistenceManager with open transactions
 simultaneously.</P>
 <P STYLE="margin-top: 0.17in; page-break-after: avoid"><FONT FACE="Albany, sans-serif"><FONT SIZE=4>Debugging
-the IUT while running TCK tests</FONT></FONT></P>
-<P>Execute “maven help” in the TCK directory in order to get
-information on running the TCK tests with a debugger. In particular,
-properties jdo.tck.cleanupaftertest, jdo.tck.cfglist,
+the IUT while Running TCK tests</FONT></FONT></P>
+<P>Execute &quot;maven help&quot; in the TCK directory in order to
+get information on running the TCK tests with a debugger. In
+particular, properties jdo.tck.cleanupaftertest, jdo.tck.cfglist,
 jdo.tck.identitytypes, and jdo.tck.dblist may be useful.</P>
 <P>If you make a change to the IUT enhancer while debugging the TCK
 tests (for implementations that use an enhancer) you must remove the
@@ -165,13 +165,13 @@ unmodified directory is the self-certification of the successful TCK
 test run.</P>
 <P STYLE="margin-top: 0.17in; page-break-after: avoid"><FONT FACE="Albany, sans-serif"><FONT SIZE=4>First
 Level TCK Appeals Process</FONT></FONT></P>
-<P STYLE="margin-top: 0.17in; page-break-after: avoid">If any test
-does not pass on the JDO implementation under test, this may be due
-to an error in the implementation or in the TCK test. If you believe
-that the failure is due to an error in the TCK test, you may
+<P ALIGN=LEFT STYLE="margin-top: 0.17in; page-break-after: avoid">If
+any test does not pass on the JDO implementation under test, this may
+be due to an error in the implementation or in the TCK test. If you
+believe that the failure is due to an error in the TCK test, you may
 challenge the test. To do so, send email to: <A HREF="mailto:jdo-dev@db.apache.org">jdo-dev@db.apache.org</A>
-with a subject line containing “CHALLENGE” and the name of the
-test program, e.g.
+with a subject line containing &quot;CHALLENGE&quot; and the name of
+the test program, e.g.
 org.apache.jdo.tck.api.persistencemanager.ThreadSafe.java; and the
 body of the email containing the details of the challenge.</P>
 <P>The Maintenance Lead will respond within 15 working days with a
@@ -188,4 +188,4 @@ the Maintenance Lead, and a majority of votes cast will decide the
 issue. The Maintenance Lead has one vote, as does each member of the
 expert group at the time of the vote.</P>
 </BODY>
-</HTML>
\ No newline at end of file
+</HTML>

[db-jdo] 21/43: JDO-375: obtain tearDown classes from correct reader + fix list of tearDown classes in CompanyFactoryPMClass

Posted by cl...@apache.org.
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 d5945031615bbc3dcc32c10f17da31b2417a59d2
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Sun Apr 30 14:59:20 2006 +0000

    JDO-375: obtain tearDown classes from correct reader + fix list of tearDown classes in CompanyFactoryPMClass
---
 .../java/org/apache/jdo/tck/mapping/CompletenessTest.java   | 13 +++++--------
 .../apache/jdo/tck/pc/company/CompanyFactoryPMClass.java    |  2 +-
 2 files changed, 6 insertions(+), 9 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 de9d90f..1137d2a 100644
--- a/tck20/src/java/org/apache/jdo/tck/mapping/CompletenessTest.java
+++ b/tck20/src/java/org/apache/jdo/tck/mapping/CompletenessTest.java
@@ -49,9 +49,6 @@ public class CompletenessTest extends JDO_Test {
     private final boolean isTestToBePerformed = isTestToBePerformed();
 
     /** */
-    private CompanyModelReader reader;
-    
-    /** */
     protected List rootOids;
     
     /** */
@@ -71,14 +68,10 @@ public class CompletenessTest extends JDO_Test {
      */
     protected void localSetUp() {
         if (isTestToBePerformed) {
-            // 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);
+            addTearDownClass(reader.getTearDownClassesFromFactory());
             // persist test data
             pm.currentTransaction().begin();
             List rootList = reader.getRootList();
@@ -96,6 +89,10 @@ 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/CompanyFactoryPMClass.java b/tck20/src/java/org/apache/jdo/tck/pc/company/CompanyFactoryPMClass.java
index a54113e..fb5accc 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
@@ -29,7 +29,7 @@ public class CompanyFactoryPMClass
     
     /** */
     public static final Class[] tearDownClasses = new Class[] {
-        DentalInsurance.class, IMedicalInsurance.class,
+        DentalInsurance.class, MedicalInsurance.class,
         Person.class, Employee.class, 
         PartTimeEmployee.class, FullTimeEmployee.class,  
         Project.class, Department.class, Company.class

[db-jdo] 31/43: JDO-410: merge changes from trunk into branch 2.0.1

Posted by cl...@apache.org.
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 675a30ae52729a03347495df26ad1512c68d8108
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Tue Oct 3 22:02:35 2006 +0000

    JDO-410: merge changes from trunk into branch 2.0.1
---
 .../jdo/tck/query/result/AggregateResult.java      | 36 +++++++++++-----------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/tck20/src/java/org/apache/jdo/tck/query/result/AggregateResult.java b/tck20/src/java/org/apache/jdo/tck/query/result/AggregateResult.java
index 1e26190..2f2ccb1 100644
--- a/tck20/src/java/org/apache/jdo/tck/query/result/AggregateResult.java
+++ b/tck20/src/java/org/apache/jdo/tck/query/result/AggregateResult.java
@@ -197,10 +197,10 @@ public class AggregateResult extends QueryTest {
         /*FROM*/        null,
         /*TO*/          null),
         
-        // SUM(manager.salary)
+        // SUM(((FullTimeEmployee)manager).salary)
         new QueryElementHolder(
         /*UNIQUE*/      null,
-        /*RESULT*/      "SUM(manager.salary)",
+        /*RESULT*/      "SUM(((FullTimeEmployee)manager).salary)",
         /*INTO*/        null, 
         /*FROM*/        FullTimeEmployee.class,
         /*EXCLUDE*/     null,
@@ -213,10 +213,10 @@ public class AggregateResult extends QueryTest {
         /*FROM*/        null,
         /*TO*/          null),
         
-        // SUM(DISTINCT manager.salary)
+        // SUM(DISTINCT ((FullTimeEmployee)manager).salary)
         new QueryElementHolder(
         /*UNIQUE*/      null,
-        /*RESULT*/      "SUM(DISTINCT manager.salary)",
+        /*RESULT*/      "SUM(DISTINCT ((FullTimeEmployee)manager).salary)",
         /*INTO*/        null, 
         /*FROM*/        FullTimeEmployee.class,
         /*EXCLUDE*/     null,
@@ -293,10 +293,10 @@ public class AggregateResult extends QueryTest {
         /*FROM*/        null,
         /*TO*/          null),
         
-        // MIN(manager.salary)
+        // MIN(((FullTimeEmployee)manager).salary)
         new QueryElementHolder(
         /*UNIQUE*/      null,
-        /*RESULT*/      "MIN(manager.salary)",
+        /*RESULT*/      "MIN(((FullTimeEmployee)manager).salary)",
         /*INTO*/        null, 
         /*FROM*/        FullTimeEmployee.class,
         /*EXCLUDE*/     null,
@@ -373,10 +373,10 @@ public class AggregateResult extends QueryTest {
         /*FROM*/        null,
         /*TO*/          null),
         
-        // MAX(manager.salary)
+        // MAX(((FullTimeEmployee)manager).salary)
         new QueryElementHolder(
         /*UNIQUE*/      null,
-        /*RESULT*/      "MAX(manager.salary)",
+        /*RESULT*/      "MAX(((FullTimeEmployee)manager).salary)",
         /*INTO*/        null, 
         /*FROM*/        FullTimeEmployee.class,
         /*EXCLUDE*/     null,
@@ -453,10 +453,10 @@ public class AggregateResult extends QueryTest {
         /*FROM*/        null,
         /*TO*/          null),
         
-        // AVG(manager.salary)
+        // AVG(((FullTimeEmployee)manager).salary)
         new QueryElementHolder(
         /*UNIQUE*/      null,
-        /*RESULT*/      "AVG(manager.salary)",
+        /*RESULT*/      "AVG(((FullTimeEmployee)manager).salary)",
         /*INTO*/        null, 
         /*FROM*/        FullTimeEmployee.class,
         /*EXCLUDE*/     null,
@@ -469,10 +469,10 @@ public class AggregateResult extends QueryTest {
         /*FROM*/        null,
         /*TO*/          null),
         
-        // AVG(DISTINCT manager.salary)
+        // AVG(DISTINCT ((FullTimeEmployee)manager).salary)
         new QueryElementHolder(
         /*UNIQUE*/      null,
-        /*RESULT*/      "AVG(DISTINCT manager.salary)",
+        /*RESULT*/      "AVG(DISTINCT ((FullTimeEmployee)manager).salary)",
         /*INTO*/        null, 
         /*FROM*/        FullTimeEmployee.class,
         /*EXCLUDE*/     null,
@@ -532,9 +532,9 @@ public class AggregateResult extends QueryTest {
             (new BigDecimal("50000.00")).add(new BigDecimal("2000.99")),
         // SUM(budget)
         null,
-        // SUM(manager.salary)
+        // SUM(((FullTimeEmployee)manager).salary)
         new Double(20000),
-        // SUM(DISTINCT manager.salary)
+        // SUM(DISTINCT ((FullTimeEmployee)manager).salary)
         new Double(10000),
         // MIN(long)
         new Long(1),
@@ -544,7 +544,7 @@ public class AggregateResult extends QueryTest {
         new BigDecimal("2000.99"),
         // MIN(budget)
         null,
-        // MIN(manager.salary)
+        // MIN(((FullTimeEmployee)manager).salary)
         new Double(10000),
         // MAX(long)
         new Long(5),
@@ -554,7 +554,7 @@ public class AggregateResult extends QueryTest {
         new BigDecimal("2500000.99"),
         // MAX(budget)
         null,
-        // MAX(manager.salary)
+        // MAX(((FullTimeEmployee)manager).salary)
         new Double(10000),
         // AVG(long)
         new Long(3),
@@ -564,9 +564,9 @@ public class AggregateResult extends QueryTest {
         new BigDecimal("99.999"),
         // AVG(lifetimeOrthoBenefit)
         null,
-        // AVG(manager.salary)
+        // AVG(((FullTimeEmployee)manager).salary)
         new Double(10000),
-        // AVG(DISTINCT manager.salary)
+        // AVG(DISTINCT ((FullTimeEmployee)manager).salary)
         new Double(10000)
     };
             

[db-jdo] 42/43: JDO-534 removed debug printstacktrace

Posted by cl...@apache.org.
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 901714b3d20e419bc6659b7e9abd5fbb093a33f6
Author: Craig L Russell <cl...@apache.org>
AuthorDate: Fri Oct 5 23:45:53 2007 +0000

    JDO-534 removed debug printstacktrace
---
 .../src/java/org/apache/jdo/tck/util/signature/SignatureVerifier.java  | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/tck20/src/java/org/apache/jdo/tck/util/signature/SignatureVerifier.java b/tck20/src/java/org/apache/jdo/tck/util/signature/SignatureVerifier.java
index 78bd1ec..3ffbc4b 100644
--- a/tck20/src/java/org/apache/jdo/tck/util/signature/SignatureVerifier.java
+++ b/tck20/src/java/org/apache/jdo/tck/util/signature/SignatureVerifier.java
@@ -268,14 +268,11 @@ public class SignatureVerifier {
         // load class
         try {
             final String r = TypeHelper.reflectionTypeName(userTypeName);
-           // System.out.println("userTypeName is " + userTypeName 
-           //    + "  reflectionTypeName is " + r);
             cls = Class.forName(r, false, classLoader);
             loading.add(userTypeName);
         } catch (LinkageError err) {
             handleNotLoading(err);
         } catch (ClassNotFoundException ex) {
-            ex.printStackTrace();
             handleNotLoading(ex);
         }
         return cls;

[db-jdo] 39/43: JDO-479

Posted by cl...@apache.org.
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 1fbe649b44c89cdefdc9d0d2c5c163219a25a634
Author: Michelle Caisse <mc...@apache.org>
AuthorDate: Fri Apr 6 23:29:33 2007 +0000

    JDO-479
---
 .../org/apache/jdo/tck/lifecycle/StateTransitionsReturnedObjects.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tck20/src/java/org/apache/jdo/tck/lifecycle/StateTransitionsReturnedObjects.java b/tck20/src/java/org/apache/jdo/tck/lifecycle/StateTransitionsReturnedObjects.java
index 5628eab..68ccd77 100644
--- a/tck20/src/java/org/apache/jdo/tck/lifecycle/StateTransitionsReturnedObjects.java
+++ b/tck20/src/java/org/apache/jdo/tck/lifecycle/StateTransitionsReturnedObjects.java
@@ -126,7 +126,7 @@ public class StateTransitionsReturnedObjects extends JDO_Test {
         {   UNCHANGED,                      IMPOSSIBLE,                         IMPOSSIBLE,
             IMPOSSIBLE,                     DETACHED_CLEAN,                     IMPOSSIBLE,
             IMPOSSIBLE,                     IMPOSSIBLE,                         IMPOSSIBLE,
-            DETACHED_CLEAN,                 TRANSIENT,                          UNCHANGED,
+            DETACHED_CLEAN,                 UNSPECIFIED,                          UNCHANGED,
             UNCHANGED},
 
         // serialize with active tx

[db-jdo] 27/43: JDO-401: merged trunk change into branch 2.0.1

Posted by cl...@apache.org.
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 c4ee5acb567447dfdf47c9410750a2365394c1f1
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Tue Oct 3 21:01:11 2006 +0000

    JDO-401: merged trunk change into branch 2.0.1
---
 .../org/apache/jdo/tck/api/instancecallbacks/CallingJdoPreclear.java     | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tck20/src/java/org/apache/jdo/tck/api/instancecallbacks/CallingJdoPreclear.java b/tck20/src/java/org/apache/jdo/tck/api/instancecallbacks/CallingJdoPreclear.java
index 95824eb..1562efd 100644
--- a/tck20/src/java/org/apache/jdo/tck/api/instancecallbacks/CallingJdoPreclear.java
+++ b/tck20/src/java/org/apache/jdo/tck/api/instancecallbacks/CallingJdoPreclear.java
@@ -96,6 +96,7 @@ public class CallingJdoPreclear extends TestParts {
         t.commit();
 
         InstanceCallbackClass.performPreClearTests = true;
+        t.setOptimistic(false);
         t.begin();
         try {
             primaryObj = (InstanceCallbackClass)pm.getObjectById(primaryObjId, true);

[db-jdo] 11/43: JDO-359 Remove DOCTYPE from .jdo file

Posted by cl...@apache.org.
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 95fe3adaab4660cd2f8f373560d9afe344e0aa28
Author: Craig L Russell <cl...@apache.org>
AuthorDate: Sun Apr 2 06:41:44 2006 +0000

    JDO-359 Remove DOCTYPE from .jdo file
---
 tck20/src/jdo/applicationidentity/org/apache/jdo/tck/package.jdo | 1 -
 tck20/src/jdo/datastoreidentity/org/apache/jdo/tck/package.jdo   | 1 -
 2 files changed, 2 deletions(-)

diff --git a/tck20/src/jdo/applicationidentity/org/apache/jdo/tck/package.jdo b/tck20/src/jdo/applicationidentity/org/apache/jdo/tck/package.jdo
index f0b9b5d..7250973 100644
--- a/tck20/src/jdo/applicationidentity/org/apache/jdo/tck/package.jdo
+++ b/tck20/src/jdo/applicationidentity/org/apache/jdo/tck/package.jdo
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE jdo PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 2.0//EN" "http://java.sun.com/dtd/jdo_2_0.dtd">
 <!--
 This file contains the schema information for persistence-aware classes 
 and SimpleClass, which is needed for several fieldtypes tests.
diff --git a/tck20/src/jdo/datastoreidentity/org/apache/jdo/tck/package.jdo b/tck20/src/jdo/datastoreidentity/org/apache/jdo/tck/package.jdo
index 1586026..79c696d 100644
--- a/tck20/src/jdo/datastoreidentity/org/apache/jdo/tck/package.jdo
+++ b/tck20/src/jdo/datastoreidentity/org/apache/jdo/tck/package.jdo
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE jdo PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 2.0//EN" "http://java.sun.com/dtd/jdo_2_0.dtd">
 <!--
 This file contains the schema information for persistence-aware classes 
 and SimpleClass, which is needed for several fieldtypes tests.

[db-jdo] 43/43: Use cvs 2.0.1 branch, not source distribution to run TCK.

Posted by cl...@apache.org.
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 1c3475872b87591d6d4616d4d625a100d497a63e
Author: Michelle Caisse <mc...@apache.org>
AuthorDate: Thu Dec 6 18:25:03 2007 +0000

    Use cvs 2.0.1 branch, not source distribution to run TCK.
---
 tck20/RunRules.html | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/tck20/RunRules.html b/tck20/RunRules.html
index ec39205..d5319ef 100644
--- a/tck20/RunRules.html
+++ b/tck20/RunRules.html
@@ -39,9 +39,8 @@ This includes different hardware and operating systems, different
 versions of Java, and different datastores. The TCK supports Java
 versions from JDK 1.3 to 1.5.</P>
 <P STYLE="margin-top: 0.17in; page-break-after: avoid"><FONT FACE="Albany, sans-serif"><FONT SIZE=4>Installation</FONT></FONT></P>
-<P>Download the zip file from the distribution location.  Unpack the zip
-file into a directory of your choice. In this directory you will
-find: 
+<P>Check out the JDO source code from the 2.0.1 branch.
+In the top level directory you will find: 
 </P>
 <UL>
 	<UL>

[db-jdo] 01/43: Create JDO 2.0 final release

Posted by cl...@apache.org.
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 b39176085ce6557436a379b8214506a3acbe1c20
Author: Craig L Russell <cl...@apache.org>
AuthorDate: Wed Mar 29 22:37:38 2006 +0000

    Create JDO 2.0 final release

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

Posted by cl...@apache.org.
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)
 );

[db-jdo] 36/43: JDO-404: changed test GetFetchPlan to not check whether fields are loaded because a certain fetch group is active

Posted by cl...@apache.org.
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 2c5611633facfe6eb38916b3a516edd03180aec3
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Thu Oct 5 15:19:13 2006 +0000

    JDO-404: changed test GetFetchPlan to not check whether fields are loaded because a certain fetch group is active
---
 .../org/apache/jdo/tck/query/api/GetFetchPlan.java | 72 ++--------------------
 1 file changed, 4 insertions(+), 68 deletions(-)

diff --git a/tck20/src/java/org/apache/jdo/tck/query/api/GetFetchPlan.java b/tck20/src/java/org/apache/jdo/tck/query/api/GetFetchPlan.java
index 700266d..2cb6d96 100644
--- a/tck20/src/java/org/apache/jdo/tck/query/api/GetFetchPlan.java
+++ b/tck20/src/java/org/apache/jdo/tck/query/api/GetFetchPlan.java
@@ -20,10 +20,7 @@ import java.util.Collection;
 
 import javax.jdo.FetchPlan;
 import javax.jdo.Query;
-import javax.jdo.Transaction;
 
-import org.apache.jdo.tck.JDO_Test;
-import org.apache.jdo.tck.pc.mylib.MylibReader;
 import org.apache.jdo.tck.pc.mylib.PCClass;
 import org.apache.jdo.tck.query.QueryTest;
 import org.apache.jdo.tck.util.BatchTestRunner;
@@ -60,11 +57,7 @@ public class GetFetchPlan extends QueryTest {
 
     /** */
     private Query createQuery() {
-        // initialize the PM with datastore transactions and no retain values
-        getPM().currentTransaction().setOptimistic(false);
-        getPM().currentTransaction().setRetainValues(false);
-        Query query = getPM().newQuery(PCClass.class, "number1 == param");
-        query.declareParameters("int param");
+        Query query = getPM().newQuery(PCClass.class, "true");
         query.getFetchPlan().setGroup(FETCH_GROUP_1);
         return query;
     }
@@ -105,30 +98,6 @@ public class GetFetchPlan extends QueryTest {
         assertTrue("FetchPlan should include fetchGroup1 and not fetchGroup2",
                 fetchgroups.contains(FETCH_GROUP_1) && 
                 !fetchgroups.contains(FETCH_GROUP_2));
-        Transaction transaction = query.getPersistenceManager().
-            currentTransaction();
-        transaction.begin();
-        Collection result = (Collection) query.execute(new Integer(10));
-        if (result.size() != 1) {
-            fail(ASSERTION_FAILED + "Query returned " + result.size() + 
-                    " instances, expected size is " + 1);
-        }
-        PCClass pcClass = (PCClass) result.iterator().next();
-        int transient1 = pcClass.getTransientNumber1();
-        int transient2 = pcClass.getTransientNumber2();
-        boolean field1loaded = transient1 == 10;
-        boolean field2loaded = transient2 == 10;
-        transaction.commit();
-
-        if (!field1loaded || field2loaded) {
-            fail(ASSERTION_FAILED +
-                    "\nUnexpected: TransientNumber1 = " + transient1 +
-                    ", and TransientNumber2 = " + transient2 + ".\n" +
-                    "Field number1 loaded = " + field1loaded + 
-                    ", Field number2 loaded = " + field2loaded + ".\n" +
-                    "With fetchGroup1 active, expect field number1 " +
-                    " loaded and field number2 not loaded.");
-        }
     }
     
     /**
@@ -144,45 +113,12 @@ public class GetFetchPlan extends QueryTest {
         FetchPlan fetchplan = query.getFetchPlan();
         fetchplan.addGroup(FETCH_GROUP_2);
         Collection fetchgroups = fetchplan.getGroups();
-        assertTrue("FetchPlan should include fetchGroup1 and fetchGroup2",
-                fetchgroups.contains(FETCH_GROUP_1) && 
-                fetchgroups.contains(FETCH_GROUP_2));
         try {
-            Transaction transaction = query.getPersistenceManager().
-                currentTransaction();
-            transaction.begin();
-            Collection result = (Collection) query.execute(new Integer(20));
-            if (result.size() != 1) {
-                fail(ASSERTION_FAILED + "Query returned " + result.size() + 
-                        " instances, expected size is " + 1);
-            }
-            PCClass pcClass = (PCClass) result.iterator().next();
-            int transient1 = pcClass.getTransientNumber1();
-            int transient2 = pcClass.getTransientNumber2();
-            boolean field1loaded = transient1 == 20;
-            boolean field2loaded = transient2 == 20;
-            transaction.commit();
-
-            if (!field1loaded || !field2loaded) {
-                fail(ASSERTION_FAILED +
-                        "\nUnexpected: TransientNumber1 = " + transient1 +
-                        ", and TransientNumber2 = " + transient2 + ".\n" +
-                        "Field number1 loaded = " + field1loaded + 
-                        ", Field number2 loaded = " + field2loaded + ".\n" +
-                        "With fetchGroup1 and fetchGroup2 active, expect" +
-                        " field number1 loaded and field number2 loaded.");
-            }
+            assertTrue("FetchPlan should include fetchGroup1 and fetchGroup2",
+                       fetchgroups.contains(FETCH_GROUP_1) && 
+                       fetchgroups.contains(FETCH_GROUP_2));
         } finally {
             query.getFetchPlan().removeGroup(FETCH_GROUP_2);
         }
     }
-    
-    /**
-     * @see JDO_Test#localSetUp()
-     */
-    protected void localSetUp() {
-        addTearDownClass(MylibReader.getTearDownClasses());
-        loadAndPersistMylib(getPM());
-        cleanupPM();
-    }
 }

[db-jdo] 38/43: JDO-427 JDO-429 JDO-431 StateTransitionsReturnedObjects.java is modified to make several state transitions UNSPECIFIED, since the specification is ambiguous. These changes apply only to the branches/2.0.1, as we intend to clarify the specification for JDO 2.1 maintenance release.

Posted by cl...@apache.org.
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 73d09980e2928ef4c61662e64ead8d0de43857f6
Author: Craig L Russell <cl...@apache.org>
AuthorDate: Tue Oct 10 19:43:35 2006 +0000

    JDO-427 JDO-429 JDO-431
    StateTransitionsReturnedObjects.java is modified to make several state transitions
    UNSPECIFIED, since the specification is ambiguous.
    These changes apply only to the branches/2.0.1, as we intend to clarify the
    specification for JDO 2.1 maintenance release.
---
 .../tck/lifecycle/StateTransitionsReturnedObjects.java  | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/tck20/src/java/org/apache/jdo/tck/lifecycle/StateTransitionsReturnedObjects.java b/tck20/src/java/org/apache/jdo/tck/lifecycle/StateTransitionsReturnedObjects.java
index 6e233d1..5628eab 100644
--- a/tck20/src/java/org/apache/jdo/tck/lifecycle/StateTransitionsReturnedObjects.java
+++ b/tck20/src/java/org/apache/jdo/tck/lifecycle/StateTransitionsReturnedObjects.java
@@ -89,6 +89,7 @@ public class StateTransitionsReturnedObjects extends JDO_Test {
     private static final int ERROR                       = -2;
     private static final int IMPOSSIBLE                  = -3;
     private static final int NOT_APPLICABLE              = -4;
+    private static final int UNSPECIFIED                 = -5;
 
     /**
      * State transitions
@@ -109,7 +110,7 @@ public class StateTransitionsReturnedObjects extends JDO_Test {
 
         // detachCopy outside tx
         {   ERROR,                          IMPOSSIBLE,                         IMPOSSIBLE,
-            IMPOSSIBLE,                     DETACHED_CLEAN,                     IMPOSSIBLE,
+            IMPOSSIBLE,                     UNSPECIFIED,                        IMPOSSIBLE,
             IMPOSSIBLE,                     IMPOSSIBLE,                         IMPOSSIBLE,
             DETACHED_CLEAN,                 ERROR,                              UNCHANGED,
             DETACHED_CLEAN},
@@ -118,8 +119,8 @@ public class StateTransitionsReturnedObjects extends JDO_Test {
         {   DETACHED_CLEAN,                 DETACHED_CLEAN,                     DETACHED_CLEAN,
             DETACHED_CLEAN,                 DETACHED_CLEAN,                     DETACHED_CLEAN,
             DETACHED_CLEAN,                 ERROR,                              ERROR,
-            DETACHED_CLEAN,                 ERROR,                              UNCHANGED,
-            DETACHED_CLEAN},
+            DETACHED_CLEAN,                 ERROR,                              UNSPECIFIED,
+            UNSPECIFIED},
 
         // serialize outside tx
         {   UNCHANGED,                      IMPOSSIBLE,                         IMPOSSIBLE,
@@ -131,8 +132,8 @@ public class StateTransitionsReturnedObjects extends JDO_Test {
         // serialize with active tx
         {   UNCHANGED,                      DETACHED_CLEAN,                     DETACHED_CLEAN,
             DETACHED_CLEAN,                 DETACHED_CLEAN,                     TRANSIENT,
-            TRANSIENT,                      TRANSIENT,                          TRANSIENT,
-            DETACHED_CLEAN,                 TRANSIENT,                          UNCHANGED,
+            TRANSIENT,                      UNSPECIFIED,                        UNSPECIFIED,
+            DETACHED_CLEAN,                 UNSPECIFIED,                        UNCHANGED,
             UNCHANGED},
     };
 
@@ -147,10 +148,7 @@ public class StateTransitionsReturnedObjects extends JDO_Test {
     private static final boolean[][] applies_to_scenario = {
         //  Datastore   Optimistic      No tx
         {   true,          true,        false },  // makePersistent
-        // since the spec leaves detachCopy outside tx a bit underspecified,
-        // we decided to disable this scanario for now
-        //{   false,         false,       true },   // detachCopy outside tx
-        {   false,         false,       false },   // detachCopy outside tx
+        {   false,         false,       true },   // detachCopy outside tx
         {   true,          true,        false },  // detachCopy with active tx
         {   false,         false,       true },   // serialize outside tx
         {   true,          true,        false }   // serialize with active tx
@@ -258,6 +256,7 @@ public class StateTransitionsReturnedObjects extends JDO_Test {
                 expected_state = statesOfReturnedObjects[operation][current_state];
                 if( expected_state == IMPOSSIBLE ) continue;
                 if( expected_state == NOT_APPLICABLE ) continue;
+                if( expected_state == UNSPECIFIED ) continue;
                 if( expected_state == UNCHANGED ) expected_state = current_state;
                 try {
                     transaction = pm.currentTransaction();

[db-jdo] 34/43: JDO-415

Posted by cl...@apache.org.
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 319899d9870357e72ec4f7025e38f14111d854a8
Author: Craig L Russell <cl...@apache.org>
AuthorDate: Thu Oct 5 02:48:26 2006 +0000

    JDO-415
---
 .../api/persistencemanager/DataStoreConnection.java   | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/DataStoreConnection.java b/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/DataStoreConnection.java
index 9c81e4d..cc639bb 100644
--- a/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/DataStoreConnection.java
+++ b/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/DataStoreConnection.java
@@ -86,12 +86,26 @@ public class DataStoreConnection extends PersistenceManagerTest {
                     "getDataStoreConnection AND SQLSupported.");
             return;
         }
+        getPM().currentTransaction().setOptimistic(false);
+        executeSQLWithDataStoreConnection();
+        if (!isOptimisticSupported()) {
+            printUnsupportedOptionalFeatureNotTested(
+                    this.getClass().getName(),
+                    "getDataStoreConnection AND SQLSupported AND Optimistic.");
+            return;
+        }
+        getPM().currentTransaction().setOptimistic(true);
+        executeSQLWithDataStoreConnection();
+    }
+
+    private void executeSQLWithDataStoreConnection() {
         String schema = getPMFProperty("javax.jdo.mapping.Schema");
         String sql = "SELECT X, Y FROM " + schema + ".PCPoint";
-        JDOConnection jconn = pm.getDataStoreConnection();
-        Connection conn = (Connection)jconn;
+        JDOConnection jconn = null;
         try {
             getPM().currentTransaction().begin();
+            jconn = pm.getDataStoreConnection();
+            Connection conn = (Connection)jconn;
             if (conn.getAutoCommit()) {
                 appendMessage(ASSERTION_FAILED + 
                         "Autocommit must not be true in JDO connection.");
@@ -123,6 +137,7 @@ public class DataStoreConnection extends PersistenceManagerTest {
             appendMessage(ASSERTION_FAILED + " caught exception:" + ex);
         } finally {
             jconn.close();
+            getPM().currentTransaction().commit();
             failOnError();
         }
     }

[db-jdo] 18/43: JDO-372: cleanup pm2 instances in test case ConcurrentPersistenceManagersSameClasses

Posted by cl...@apache.org.
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 4978bff3d236f6285146a216b48d5cb724ffbafe
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Mon Apr 24 11:39:55 2006 +0000

    JDO-372: cleanup pm2 instances in test case ConcurrentPersistenceManagersSameClasses
---
 .../ConcurrentPersistenceManagersSameClasses.java  | 37 +++++++++++++++++-----
 1 file changed, 29 insertions(+), 8 deletions(-)

diff --git a/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/ConcurrentPersistenceManagersSameClasses.java b/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/ConcurrentPersistenceManagersSameClasses.java
index 5e78bab..33c0d1a 100644
--- a/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/ConcurrentPersistenceManagersSameClasses.java
+++ b/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/ConcurrentPersistenceManagersSameClasses.java
@@ -61,11 +61,20 @@ public class ConcurrentPersistenceManagersSameClasses extends PersistenceManager
     
     /** */
     public void test() {
-    	Properties pmfProperties = loadPMF2Properties();
+        if (!isBinaryCompatibilitySupported()) {
+            printUnsupportedOptionalFeatureNotTested(
+                "org.apache.jdo.tck.api.persistencemanager.ConcurrentPersistenceManagersSameClasses", 
+                "javax.jdo.option.BinaryCompatibility");
+            return;
+        }
+        Properties pmfProperties = loadPMF2Properties();
         PersistenceManagerFactory pmf2 = JDOHelper.getPersistenceManagerFactory(pmfProperties);
         PersistenceManager pm2 = pmf2.getPersistenceManager();
         Transaction tx2 = pm2.currentTransaction();
-        
+        PCPoint p21 = null;
+        PCPoint p22 = null;
+        PCRect rect2 = null;
+
         pm = getPM();
         Transaction tx = pm.currentTransaction();
         try {
@@ -77,9 +86,9 @@ public class ConcurrentPersistenceManagersSameClasses extends PersistenceManager
             PCRect rect1 = new PCRect (0, p11, p12);
             pm.makePersistent (rect1);
             
-            PCPoint p21 = new PCPoint(210, 220);
-            PCPoint p22 = new PCPoint(220, 240);
-            PCRect rect2 = new PCRect (0, p21, p22);
+            p21 = new PCPoint(210, 220);
+            p22 = new PCPoint(220, 240);
+            rect2 = new PCRect (0, p21, p22);
             pm2.makePersistent (rect2);
             
             tx.commit();
@@ -108,9 +117,21 @@ public class ConcurrentPersistenceManagersSameClasses extends PersistenceManager
         finally {
             cleanupPM(pm);
             pm = null;
-            cleanupPM(pm2);
-            pm2 = null;
-            pmf2.close();
+            try {
+                // delete pm2 instances
+                if (pm2.currentTransaction().isActive()) {
+                    pm2.currentTransaction().rollback();
+                }
+                pm2.currentTransaction().begin();
+                pm2.deletePersistent(rect2);
+                pm2.deletePersistent(p21);
+                pm2.deletePersistent(p22);
+                pm2.currentTransaction().commit();
+            } finally {
+                cleanupPM(pm2);
+                pm2 = null;
+                pmf2.close();
+            }
         }
     }
 

[db-jdo] 30/43: JDO-411: merged changes from trunk into branch 2.0.1

Posted by cl...@apache.org.
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 6780c8cd13baf5ae1408f556d502ce8dcd90839b
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Tue Oct 3 21:54:39 2006 +0000

    JDO-411: merged changes from trunk into branch 2.0.1
---
 .../jdo/tck/query/delete/DeletePersistentAll.java  | 28 +++++++--------
 .../jdo/tck/query/delete/DeleteQueryElements.java  | 41 +++++++++++-----------
 2 files changed, 35 insertions(+), 34 deletions(-)

diff --git a/tck20/src/java/org/apache/jdo/tck/query/delete/DeletePersistentAll.java b/tck20/src/java/org/apache/jdo/tck/query/delete/DeletePersistentAll.java
index d6daaa0..c2644f2 100644
--- a/tck20/src/java/org/apache/jdo/tck/query/delete/DeletePersistentAll.java
+++ b/tck20/src/java/org/apache/jdo/tck/query/delete/DeletePersistentAll.java
@@ -21,7 +21,7 @@ import java.util.Map;
 
 import org.apache.jdo.tck.JDO_Test;
 import org.apache.jdo.tck.pc.company.CompanyModelReader;
-import org.apache.jdo.tck.pc.company.Person;
+import org.apache.jdo.tck.pc.company.Insurance;
 import org.apache.jdo.tck.query.QueryElementHolder;
 import org.apache.jdo.tck.query.QueryTest;
 import org.apache.jdo.tck.util.BatchTestRunner;
@@ -58,7 +58,7 @@ public class DeletePersistentAll extends QueryTest {
         /*UNIQUE*/      null,
         /*RESULT*/      null, 
         /*INTO*/        null, 
-        /*FROM*/        Person.class,
+        /*FROM*/        Insurance.class,
         /*EXCLUDE*/     null,
         /*WHERE*/       null,
         /*VARIABLES*/   null,
@@ -72,9 +72,9 @@ public class DeletePersistentAll extends QueryTest {
         /*UNIQUE*/      null,
         /*RESULT*/      null, 
         /*INTO*/        null, 
-        /*FROM*/        Person.class,
+        /*FROM*/        Insurance.class,
         /*EXCLUDE*/     null,
-        /*WHERE*/       "firstname == param",
+        /*WHERE*/       "carrier == param",
         /*VARIABLES*/   null,
         /*PARAMETERS*/  "String param",
         /*IMPORTS*/     null,
@@ -96,43 +96,43 @@ public class DeletePersistentAll extends QueryTest {
     /** */
     public void testNoParametersAPI() {
         deletePersistentAllByAPIQuery(ASSERTION_FAILED, 
-                VALID_QUERIES[0], null, 5);
+                VALID_QUERIES[0], null, 10);
     }
     
     /** */
     public void testNoParametersSingleString() {
         deletePersistentAllBySingleStringQuery(ASSERTION_FAILED, 
-                VALID_QUERIES[0], null, 5);
+                VALID_QUERIES[0], null, 10);
     }
     
     /** */
     public void testObjectArrayParametersAPI() {
-        Object[] parameters = new Object[] {"emp1First"};
+        Object[] parameters = new Object[] {"Carrier1"};
         deletePersistentAllByAPIQuery(ASSERTION_FAILED, 
-                VALID_QUERIES[1], parameters, 1);
+                VALID_QUERIES[1], parameters, 2);
     }
     
     /** */
     public void testObjectArrayParametersSingleString() {
-        Object[] parameters = new Object[] {"emp1First"};
+        Object[] parameters = new Object[] {"Carrier1"};
         deletePersistentAllBySingleStringQuery(ASSERTION_FAILED, 
-                VALID_QUERIES[1], parameters, 1);
+                VALID_QUERIES[1], parameters, 2);
     }
     
     /** */
     public void testMapParametersAPI() {
         Map parameters = new HashMap();
-        parameters.put("param", "emp1First");
+        parameters.put("param", "Carrier1");
         deletePersistentAllByAPIQuery(ASSERTION_FAILED, 
-                VALID_QUERIES[1], parameters, 1);
+                VALID_QUERIES[1], parameters, 2);
     }
     
     /** */
     public void testMapParametersSingleString() {
         Map parameters = new HashMap();
-        parameters.put("param", "emp1First");
+        parameters.put("param", "Carrier1");
         deletePersistentAllBySingleStringQuery(ASSERTION_FAILED, 
-                VALID_QUERIES[1], parameters, 1);
+                VALID_QUERIES[1], parameters, 2);
     }
     
     /**
diff --git a/tck20/src/java/org/apache/jdo/tck/query/delete/DeleteQueryElements.java b/tck20/src/java/org/apache/jdo/tck/query/delete/DeleteQueryElements.java
index b90d378..440c2e8 100644
--- a/tck20/src/java/org/apache/jdo/tck/query/delete/DeleteQueryElements.java
+++ b/tck20/src/java/org/apache/jdo/tck/query/delete/DeleteQueryElements.java
@@ -20,8 +20,9 @@ import java.math.BigDecimal;
 
 import org.apache.jdo.tck.JDO_Test;
 import org.apache.jdo.tck.pc.company.CompanyModelReader;
+import org.apache.jdo.tck.pc.company.DentalInsurance;
 import org.apache.jdo.tck.pc.company.FullTimeEmployee;
-import org.apache.jdo.tck.pc.company.Person;
+import org.apache.jdo.tck.pc.company.Insurance;
 import org.apache.jdo.tck.query.QueryElementHolder;
 import org.apache.jdo.tck.query.QueryTest;
 import org.apache.jdo.tck.query.result.classes.FullName;
@@ -57,10 +58,10 @@ public class DeleteQueryElements extends QueryTest {
         /*UNIQUE*/      Boolean.TRUE,
         /*RESULT*/      null, 
         /*INTO*/        null, 
-        /*FROM*/        FullTimeEmployee.class,
+        /*FROM*/        DentalInsurance.class,
         /*EXCLUDE*/     null,
-        /*WHERE*/       "salary > 10000 & projects.contains(p) & " +
-                        "p.budget > limit",
+        /*WHERE*/       "((FullTimeEmployee)employee).salary > 10000 & " +
+                        "employee.projects.contains(p) & p.budget > limit",
         /*VARIABLES*/   "Project p",
         /*PARAMETERS*/  "BigDecimal limit",
         /*IMPORTS*/     "import org.apache.jdo.tck.pc.company.Project; " +
@@ -79,9 +80,9 @@ public class DeleteQueryElements extends QueryTest {
         // The query is invalid because it defines a result clause.
         new QueryElementHolder(
         /*UNIQUE*/      null,
-        /*RESULT*/      "firstname, lastname", 
+        /*RESULT*/      "carrier", 
         /*INTO*/        null, 
-        /*FROM*/        Person.class,
+        /*FROM*/        Insurance.class,
         /*EXCLUDE*/     null,
         /*WHERE*/       null,
         /*VARIABLES*/   null,
@@ -95,8 +96,8 @@ public class DeleteQueryElements extends QueryTest {
         new QueryElementHolder(
         /*UNIQUE*/      null,
         /*RESULT*/      null, 
-        /*INTO*/        FullName.class, 
-        /*FROM*/        Person.class,
+        /*INTO*/        String.class, 
+        /*FROM*/        Insurance.class,
         /*EXCLUDE*/     null,
         /*WHERE*/       null,
         /*VARIABLES*/   null,
@@ -110,9 +111,9 @@ public class DeleteQueryElements extends QueryTest {
         // and a result class.
         new QueryElementHolder(
         /*UNIQUE*/      null,
-        /*RESULT*/      "firstname, lastname", 
-        /*INTO*/        FullName.class, 
-        /*FROM*/        Person.class,
+        /*RESULT*/      "carrier", 
+        /*INTO*/        String.class, 
+        /*FROM*/        Insurance.class,
         /*EXCLUDE*/     null,
         /*WHERE*/       null,
         /*VARIABLES*/   null,
@@ -127,13 +128,13 @@ public class DeleteQueryElements extends QueryTest {
         /*UNIQUE*/      null,
         /*RESULT*/      null, 
         /*INTO*/        null, 
-        /*FROM*/        Person.class,
+        /*FROM*/        Insurance.class,
         /*EXCLUDE*/     null,
         /*WHERE*/       null,
         /*VARIABLES*/   null,
         /*PARAMETERS*/  null,
         /*IMPORTS*/     null,
-        /*GROUP BY*/    "lastname",
+        /*GROUP BY*/    "carrier",
         /*ORDER BY*/    null,
         /*FROM*/        null,
         /*TO*/          null),
@@ -141,15 +142,15 @@ public class DeleteQueryElements extends QueryTest {
         // and a grouping clause
         new QueryElementHolder(
         /*UNIQUE*/      null,
-        /*RESULT*/      "lastname", 
+        /*RESULT*/      "carrier", 
         /*INTO*/        null, 
-        /*FROM*/        Person.class,
+        /*FROM*/        Insurance.class,
         /*EXCLUDE*/     null,
         /*WHERE*/       null,
         /*VARIABLES*/   null,
         /*PARAMETERS*/  null,
         /*IMPORTS*/     null,
-        /*GROUP BY*/    "lastname",
+        /*GROUP BY*/    "carrier",
         /*ORDER BY*/    null,
         /*FROM*/        null,
         /*TO*/          null),
@@ -158,14 +159,14 @@ public class DeleteQueryElements extends QueryTest {
         /*UNIQUE*/      null,
         /*RESULT*/      null, 
         /*INTO*/        null, 
-        /*FROM*/        Person.class,
+        /*FROM*/        Insurance.class,
         /*EXCLUDE*/     null,
         /*WHERE*/       null,
         /*VARIABLES*/   null,
         /*PARAMETERS*/  null,
         /*IMPORTS*/     null,
         /*GROUP BY*/    null,
-        /*ORDER BY*/    "lastname",
+        /*ORDER BY*/    "carrier",
         /*FROM*/        null,
         /*TO*/          null),
         // The query is invalid because it defines a range clause.
@@ -173,7 +174,7 @@ public class DeleteQueryElements extends QueryTest {
         /*UNIQUE*/      null,
         /*RESULT*/      null, 
         /*INTO*/        null, 
-        /*FROM*/        Person.class,
+        /*FROM*/        Insurance.class,
         /*EXCLUDE*/     null,
         /*WHERE*/       null,
         /*VARIABLES*/   null,
@@ -190,7 +191,7 @@ public class DeleteQueryElements extends QueryTest {
         /*UNIQUE*/      Boolean.TRUE,
         /*RESULT*/      null, 
         /*INTO*/        null, 
-        /*FROM*/        Person.class,
+        /*FROM*/        Insurance.class,
         /*EXCLUDE*/     null,
         /*WHERE*/       null,
         /*VARIABLES*/   null,

[db-jdo] 41/43: JDO-534 fixed

Posted by cl...@apache.org.
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 25b58751e71fe642e947a323b5e4c3490815df19
Author: Michelle Caisse <mc...@apache.org>
AuthorDate: Fri Oct 5 23:17:31 2007 +0000

    JDO-534 fixed
---
 .../java/org/apache/jdo/tck/util/signature/SignatureVerifier.java    | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/tck20/src/java/org/apache/jdo/tck/util/signature/SignatureVerifier.java b/tck20/src/java/org/apache/jdo/tck/util/signature/SignatureVerifier.java
index aebcafa..78bd1ec 100644
--- a/tck20/src/java/org/apache/jdo/tck/util/signature/SignatureVerifier.java
+++ b/tck20/src/java/org/apache/jdo/tck/util/signature/SignatureVerifier.java
@@ -268,11 +268,14 @@ public class SignatureVerifier {
         // load class
         try {
             final String r = TypeHelper.reflectionTypeName(userTypeName);
-            cls = classLoader.loadClass(r);
+           // System.out.println("userTypeName is " + userTypeName 
+           //    + "  reflectionTypeName is " + r);
+            cls = Class.forName(r, false, classLoader);
             loading.add(userTypeName);
         } catch (LinkageError err) {
             handleNotLoading(err);
         } catch (ClassNotFoundException ex) {
+            ex.printStackTrace();
             handleNotLoading(ex);
         }
         return cls;

[db-jdo] 08/43: JDO-293

Posted by cl...@apache.org.
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 d00b6363ce34d75f9ed62070c8a95b83a334ef62
Author: Michelle Caisse <mc...@apache.org>
AuthorDate: Sat Apr 1 01:07:12 2006 +0000

    JDO-293
---
 tck20/COVERAGE.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tck20/COVERAGE.txt b/tck20/COVERAGE.txt
index 04ce249..a50f5ff 100755
--- a/tck20/COVERAGE.txt
+++ b/tck20/COVERAGE.txt
@@ -57,7 +57,7 @@ which separate assertions were not developed. The metadata is extensively
 tested by a small number of tests using a number of different metadata sets.
 - Tests: 538
 - Test cases: 1158
-- Assertion coverage: 1242/1663 = 75%
+- Assertion coverage: 1342/1561 = 86%
 - API Signature Coverage: 100% for all defined public and protected members
 
 Quality Assurance

[db-jdo] 04/43: Updated project.xml to change dependencies from SNAPSHOT to 2.0

Posted by cl...@apache.org.
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 4446837ea1b144b2d996a6e4e7dff8b825f932fb
Author: Craig L Russell <cl...@apache.org>
AuthorDate: Fri Mar 31 04:12:10 2006 +0000

    Updated project.xml to change dependencies from SNAPSHOT to 2.0
---
 api20/project.xml      |  2 +-
 core20/project.xml     |  2 +-
 enhancer20/project.xml |  6 +++---
 tck20/project.xml      | 16 ++++++++--------
 4 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/api20/project.xml b/api20/project.xml
index f453b70..43d53ce 100644
--- a/api20/project.xml
+++ b/api20/project.xml
@@ -24,7 +24,7 @@
     <name>JDO2 API</name>
     <groupId>javax.jdo</groupId>
     <artifactId>jdo2-api</artifactId>
-    <currentVersion>SNAPSHOT</currentVersion>
+    <currentVersion>2.0</currentVersion>
     <package>javax.jdo</package>
     <shortDescription>Java Data Objects 2.0 (JDO) API</shortDescription>
     <description>The Java Data Objects 2.0 (JDO) API is a standard interface-based 
diff --git a/core20/project.xml b/core20/project.xml
index 8484126..e6e6cb4 100644
--- a/core20/project.xml
+++ b/core20/project.xml
@@ -25,7 +25,7 @@
     <name>JDO2 Implementation (Core)</name>
     <groupId>org.apache.jdo</groupId>
     <artifactId>jdo2-core</artifactId>
-    <currentVersion>SNAPSHOT</currentVersion>
+    <currentVersion>2.0</currentVersion>
     <package>org.apache.jdo</package>
     <shortDescription>Java Data Objects 2.0 (JDO) Core</shortDescription>
     <description>The Java Data Objects 2.0 (JDO) API is a standard interface-based 
diff --git a/enhancer20/project.xml b/enhancer20/project.xml
index 1a33011..89e7c6e 100644
--- a/enhancer20/project.xml
+++ b/enhancer20/project.xml
@@ -25,7 +25,7 @@
     <name>JDO2 Implementation (Enhancer)</name>
     <groupId>org.apache.jdo</groupId>
     <artifactId>jdo2-enhancer</artifactId>
-    <currentVersion>SNAPSHOT</currentVersion>
+    <currentVersion>2.0</currentVersion>
     <package>org.apache.jdo</package>
     <shortDescription>Java Data Objects 2.0 (JDO) Enhancer</shortDescription>
     <description>The Java Data Objects 2.0 (JDO) API is a standard interface-based 
@@ -39,12 +39,12 @@ Request JSR 243 under the auspices of the Java Community Process.</description>
         <dependency>
             <groupId>javax.jdo</groupId>
             <artifactId>jdo2-api</artifactId>
-            <version>SNAPSHOT</version>
+            <version>2.0</version>
         </dependency>
         <dependency>
             <groupId>org.apache.jdo</groupId>
             <artifactId>jdo2-core</artifactId>
-            <version>SNAPSHOT</version>
+            <version>2.0</version>
         </dependency>
         <dependency>
             <id>commons-logging</id>
diff --git a/tck20/project.xml b/tck20/project.xml
index 6f58451..f4984c4 100644
--- a/tck20/project.xml
+++ b/tck20/project.xml
@@ -23,7 +23,7 @@
     <name>JDO2 Technology Compatibility Kit</name>
     <groupId>org.apache.jdo</groupId>
     <artifactId>jdo2-tck</artifactId>
-    <currentVersion>SNAPSHOT</currentVersion>
+    <currentVersion>2.0</currentVersion>
     <package>org.apache.jdo.tck</package>
     <shortDescription>Java Data Objects 2.0 (JDO) TCK</shortDescription>
     <description>The Java Data Objects 2.0 (JDO) API is a standard interface-based Java model abstraction of persistence, developed as Java Specification Request JSR 243 under the auspices of the Java Community Process.
@@ -39,28 +39,28 @@ NOTE!! There are no unit tests in this project.</description>
         <dependency>
             <groupId>javax.jdo</groupId>
             <artifactId>jdo2-api</artifactId>
-            <version>SNAPSHOT</version>
+            <version>2.0</version>
         </dependency>
         <dependency>
             <groupId>org.apache.jdo</groupId>
             <artifactId>jdo2-enhancer</artifactId>
-            <version>SNAPSHOT</version>
+            <version>2.0</version>
         </dependency>
         <dependency>
             <groupId>org.apache.jdo</groupId>
             <artifactId>jdo2-core</artifactId>
-            <version>SNAPSHOT</version>
+            <version>2.0</version>
         </dependency>
         <dependency>
             <groupId>jpox</groupId>
             <artifactId>jpox</artifactId>
-            <version>SNAPSHOT</version>
+            <version>1.1.0</version>
             <url>http://www.jpox.org/docs/download.html</url>
         </dependency>
         <dependency>
             <groupId>jpox</groupId>
             <artifactId>jpox-enhancer</artifactId>
-            <version>SNAPSHOT</version>
+            <version>1.1.0</version>
             <url>http://www.jpox.org/docs/download.html</url>
         </dependency>
         <dependency>
@@ -113,13 +113,13 @@ NOTE!! There are no unit tests in this project.</description>
         <dependency>
             <groupId>jpox</groupId>
             <artifactId>jpox-c3p0</artifactId>
-            <version>SNAPSHOT</version>
+            <version>1.1.0</version>
             <url>http://www.jpox.org/docs/download.html</url>
         </dependency>
         <dependency>
             <groupId>jpox</groupId>
             <artifactId>jpox-dbcp</artifactId>
-            <version>SNAPSHOT</version>
+            <version>1.1.0</version>
             <url>http://www.jpox.org/docs/download.html</url>
         </dependency>
         <dependency>

[db-jdo] 28/43: JDO-400: merged trunk change into branch 2.0.1

Posted by cl...@apache.org.
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 0914e35e7c2c132e4bb9edf4236298f2dba23326
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Tue Oct 3 21:27:20 2006 +0000

    JDO-400: merged trunk change into branch 2.0.1
---
 .../src/java/org/apache/jdo/tck/api/jdohelper/IsTransactionalFalse.java  | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tck20/src/java/org/apache/jdo/tck/api/jdohelper/IsTransactionalFalse.java b/tck20/src/java/org/apache/jdo/tck/api/jdohelper/IsTransactionalFalse.java
index 013d03c..e98c287 100644
--- a/tck20/src/java/org/apache/jdo/tck/api/jdohelper/IsTransactionalFalse.java
+++ b/tck20/src/java/org/apache/jdo/tck/api/jdohelper/IsTransactionalFalse.java
@@ -68,6 +68,7 @@ public class IsTransactionalFalse extends JDO_Test {
     public void testIsTransactionalFalse() {
     	pm = getPM();
     	Transaction tx = pm.currentTransaction();
+        tx.setOptimistic(false);
     	tx.begin();
     	PCPoint p1 = new PCPoint(1,3);
     	pm.makePersistent(p1);

[db-jdo] 19/43: JDO-376: need to call closePM on correct pm instance

Posted by cl...@apache.org.
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 a54fbbf9b80855e5d1801fe0b589881369ff9627
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Sun Apr 30 13:46:53 2006 +0000

    JDO-376: need to call closePM on correct pm instance
---
 ...letePersistentFailsIfInstanceManagedByAnotherPersistenceManager.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistentFailsIfInstanceManagedByAnotherPersistenceManager.java b/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistentFailsIfInstanceManagedByAnotherPersistenceManager.java
index 3633fbf..6e3f28d 100644
--- a/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistentFailsIfInstanceManagedByAnotherPersistenceManager.java
+++ b/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistentFailsIfInstanceManagedByAnotherPersistenceManager.java
@@ -74,7 +74,7 @@ public class DeletePersistentFailsIfInstanceManagedByAnotherPersistenceManager e
         }
         finally {
             cleanupPM(pm2);
-            pm = null;
+            pm2 = null;
             cleanupPM(pm);
             pm = null;
         }

[db-jdo] 26/43: JDO-412: set retainValues=false to make sure the instance gets loaded in the next tx and jdoPostLoad is called

Posted by cl...@apache.org.
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 7ee075cee221ea10972ebe290ff1cf8d57a6fb5d
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Tue Oct 3 19:51:47 2006 +0000

    JDO-412: set retainValues=false to make sure the instance gets loaded in the next tx and jdoPostLoad is called
---
 .../org/apache/jdo/tck/api/instancecallbacks/CallingJdoPostload.java     | 1 +
 .../ModificationOfNontransactionalNonpersistentFields.java               | 1 +
 2 files changed, 2 insertions(+)

diff --git a/tck20/src/java/org/apache/jdo/tck/api/instancecallbacks/CallingJdoPostload.java b/tck20/src/java/org/apache/jdo/tck/api/instancecallbacks/CallingJdoPostload.java
index f948c66..9a431ca 100644
--- a/tck20/src/java/org/apache/jdo/tck/api/instancecallbacks/CallingJdoPostload.java
+++ b/tck20/src/java/org/apache/jdo/tck/api/instancecallbacks/CallingJdoPostload.java
@@ -80,6 +80,7 @@ public class CallingJdoPostload extends JDO_Test {
     {
         pm = getPM();
         Transaction t = pm.currentTransaction();
+        t.setRetainValues(false);
 
         InstanceCallbackNonPersistFdsClass.initializeStaticsForTest();
 
diff --git a/tck20/src/java/org/apache/jdo/tck/api/instancecallbacks/ModificationOfNontransactionalNonpersistentFields.java b/tck20/src/java/org/apache/jdo/tck/api/instancecallbacks/ModificationOfNontransactionalNonpersistentFields.java
index e09f996..56bc18d 100644
--- a/tck20/src/java/org/apache/jdo/tck/api/instancecallbacks/ModificationOfNontransactionalNonpersistentFields.java
+++ b/tck20/src/java/org/apache/jdo/tck/api/instancecallbacks/ModificationOfNontransactionalNonpersistentFields.java
@@ -76,6 +76,7 @@ public class ModificationOfNontransactionalNonpersistentFields extends JDO_Test
     {
         pm = getPM();
         Transaction t = pm.currentTransaction(); 
+        t.setRetainValues(false);
 
         InstanceCallbackNonPersistFdsClass.initializeStaticsForTest();
         

[db-jdo] 23/43: JDO-375: adds names to the foreign key constraints for the company model in schema 0

Posted by cl...@apache.org.
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 080336e43005e54d3df13254234bd6767e0e7e3d
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Mon May 1 16:05:30 2006 +0000

    JDO-375: adds names to the foreign key constraints for the company model in schema 0
---
 tck20/src/sql/derby/applicationidentity/schema.sql | 28 ++++++++++++++++------
 tck20/src/sql/derby/datastoreidentity/schema.sql   | 28 ++++++++++++++++------
 2 files changed, 42 insertions(+), 14 deletions(-)

diff --git a/tck20/src/sql/derby/applicationidentity/schema.sql b/tck20/src/sql/derby/applicationidentity/schema.sql
index 5be13c8..63733a6 100644
--- a/tck20/src/sql/derby/applicationidentity/schema.sql
+++ b/tck20/src/sql/derby/applicationidentity/schema.sql
@@ -161,8 +161,15 @@ CREATE TABLE PCPointSingleFieldDate (
 -------------------------
 
 ALTER TABLE departments DROP CONSTRAINT EMP_MO_FK;
+ALTER TABLE departments DROP CONSTRAINT DEPTS_COMP_FK;
 ALTER TABLE project_reviewer DROP CONSTRAINT PR_PROJ_FK;
 ALTER TABLE project_reviewer DROP CONSTRAINT PR_REV_FK;
+ALTER TABLE persons DROP CONSTRAINT PERS_DEPT_FK;
+ALTER TABLE persons DROP CONSTRAINT PERS_FUNDDEPT_FK;
+ALTER TABLE persons DROP CONSTRAINT PERS_MANAGER_FK;
+ALTER TABLE persons DROP CONSTRAINT PERS_MENTOR_FK;
+ALTER TABLE persons DROP CONSTRAINT PERS_HRADVISOR_FK;
+ALTER TABLE insuranceplans DROP CONSTRAINT INS_EMP_FK;
 DROP TABLE insuranceplans;
 DROP TABLE project_reviewer;
 DROP TABLE project_member;
@@ -190,8 +197,9 @@ CREATE TABLE departments (
     ID INTEGER NOT NULL,
     NAME VARCHAR(32) NOT NULL,
     EMP_OF_THE_MONTH INTEGER,
-    COMPANYID INTEGER REFERENCES companies,
+    COMPANYID INTEGER,
     DISCRIMINATOR VARCHAR(255),
+    CONSTRAINT DEPTS_COMP_FK FOREIGN KEY (COMPANYID) REFERENCES companies,
     CONSTRAINT DEPTS_PK PRIMARY KEY (ID)
 );
 
@@ -209,14 +217,19 @@ CREATE TABLE persons (
     COUNTRY VARCHAR(64),
     HIREDATE VARCHAR(32),
     WEEKLYHOURS REAL,
-    DEPARTMENT INTEGER REFERENCES departments,
-    FUNDINGDEPT INTEGER REFERENCES departments,
-    MANAGER INTEGER REFERENCES persons,
-    MENTOR INTEGER REFERENCES persons,
-    HRADVISOR INTEGER REFERENCES persons,
+    DEPARTMENT INTEGER,
+    FUNDINGDEPT INTEGER,
+    MANAGER INTEGER,
+    MENTOR INTEGER,
+    HRADVISOR INTEGER,
     SALARY REAL,
     WAGE REAL,
     DISCRIMINATOR varchar(64) NOT NULL,
+    CONSTRAINT PERS_DEPT_FK FOREIGN KEY (DEPARTMENT) REFERENCES departments,
+    CONSTRAINT PERS_FUNDDEPT_FK FOREIGN KEY (FUNDINGDEPT) REFERENCES departments,
+    CONSTRAINT PERS_MANAGER_FK FOREIGN KEY (MANAGER) REFERENCES persons,
+    CONSTRAINT PERS_MENTOR_FK FOREIGN KEY (MENTOR) REFERENCES persons,
+    CONSTRAINT PERS_HRADVISOR_FK FOREIGN KEY (HRADVISOR) REFERENCES persons,
     CONSTRAINT EMPS_PK PRIMARY KEY (PERSONID)
 );
 
@@ -226,7 +239,8 @@ CREATE TABLE insuranceplans (
     LIFETIME_ORTHO_BENEFIT DECIMAL(22,3),
     PLANTYPE VARCHAR(8),
     DISCRIMINATOR varchar(64) NOT NULL,
-    EMPLOYEE INTEGER REFERENCES persons,
+    EMPLOYEE INTEGER,
+    CONSTRAINT INS_EMP_FK FOREIGN KEY (EMPLOYEE) REFERENCES persons,
     CONSTRAINT INS_PK PRIMARY KEY (INSID)
 );
 
diff --git a/tck20/src/sql/derby/datastoreidentity/schema.sql b/tck20/src/sql/derby/datastoreidentity/schema.sql
index bdc376a..7cd19c1 100644
--- a/tck20/src/sql/derby/datastoreidentity/schema.sql
+++ b/tck20/src/sql/derby/datastoreidentity/schema.sql
@@ -108,8 +108,15 @@ CREATE TABLE NoExtent (
 -------------------------
 
 ALTER TABLE departments DROP CONSTRAINT EMP_MO_FK;
+ALTER TABLE departments DROP CONSTRAINT DEPTS_COMP_FK;
 ALTER TABLE project_reviewer DROP CONSTRAINT PR_PROJ_FK;
 ALTER TABLE project_reviewer DROP CONSTRAINT PR_REV_FK;
+ALTER TABLE persons DROP CONSTRAINT PERS_DEPT_FK;
+ALTER TABLE persons DROP CONSTRAINT PERS_FUNDDEPT_FK;
+ALTER TABLE persons DROP CONSTRAINT PERS_MANAGER_FK;
+ALTER TABLE persons DROP CONSTRAINT PERS_MENTOR_FK;
+ALTER TABLE persons DROP CONSTRAINT PERS_HRADVISOR_FK;
+ALTER TABLE insuranceplans DROP CONSTRAINT INS_EMP_FK;
 DROP TABLE insuranceplans;
 DROP TABLE project_reviewer;
 DROP TABLE project_member;
@@ -139,8 +146,9 @@ CREATE TABLE departments (
     ID INTEGER,
     NAME VARCHAR(32) NOT NULL,
     EMP_OF_THE_MONTH INTEGER,
-    COMPANYID INTEGER REFERENCES companies,
+    COMPANYID INTEGER,
     DISCRIMINATOR VARCHAR(255),
+    CONSTRAINT DEPTS_COMP_FK FOREIGN KEY (COMPANYID) REFERENCES companies,
     CONSTRAINT DEPTS_PK PRIMARY KEY (DATASTORE_IDENTITY)
 );
 
@@ -159,14 +167,19 @@ CREATE TABLE persons (
     COUNTRY VARCHAR(64),
     HIREDATE VARCHAR(32),
     WEEKLYHOURS REAL,
-    DEPARTMENT INTEGER REFERENCES departments,
-    FUNDINGDEPT INTEGER REFERENCES departments,
-    MANAGER INTEGER REFERENCES persons,
-    MENTOR INTEGER REFERENCES persons,
-    HRADVISOR INTEGER REFERENCES persons,
+    DEPARTMENT INTEGER,
+    FUNDINGDEPT INTEGER,
+    MANAGER INTEGER,
+    MENTOR INTEGER,
+    HRADVISOR INTEGER,
     SALARY REAL,
     WAGE REAL,
     DISCRIMINATOR varchar(64) NOT NULL,
+    CONSTRAINT PERS_DEPT_FK FOREIGN KEY (DEPARTMENT) REFERENCES departments,
+    CONSTRAINT PERS_FUNDDEPT_FK FOREIGN KEY (FUNDINGDEPT) REFERENCES departments,
+    CONSTRAINT PERS_MANAGER_FK FOREIGN KEY (MANAGER) REFERENCES persons,
+    CONSTRAINT PERS_MENTOR_FK FOREIGN KEY (MENTOR) REFERENCES persons,
+    CONSTRAINT PERS_HRADVISOR_FK FOREIGN KEY (HRADVISOR) REFERENCES persons,
     CONSTRAINT PERS_UK UNIQUE (PERSONID),
     CONSTRAINT PERS_PK PRIMARY KEY (DATASTORE_IDENTITY)
 );
@@ -178,7 +191,8 @@ CREATE TABLE insuranceplans (
     LIFETIME_ORTHO_BENEFIT DECIMAL(22,3),
     PLANTYPE VARCHAR(8),
     DISCRIMINATOR varchar(64) NOT NULL,
-    EMPLOYEE INTEGER REFERENCES persons,
+    EMPLOYEE INTEGER,
+    CONSTRAINT INS_EMP_FK FOREIGN KEY (EMPLOYEE) REFERENCES persons,
     CONSTRAINT INS_PK PRIMARY KEY (DATASTORE_IDENTITY)
 );
 

[db-jdo] 20/43: JDO-374 add tck20.dist goal and dist postGoal copying the release articats to the releases directory

Posted by cl...@apache.org.
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 2915cf78afb7a1b61cec0a78cc9aab3cf4c4ebcc
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Sun Apr 30 14:11:05 2006 +0000

    JDO-374 add tck20.dist goal and dist postGoal copying the release articats to the releases directory
---
 maven.xml          | 40 ++++++++++++++++++++++++++++++++++++++++
 project.properties |  6 ++++++
 tck20/maven.xml    | 23 ++++++++++++-----------
 3 files changed, 58 insertions(+), 11 deletions(-)

diff --git a/maven.xml b/maven.xml
index 6837ed2..f8c85ad 100644
--- a/maven.xml
+++ b/maven.xml
@@ -36,6 +36,7 @@
         <echo>  tck20.build   - builds tck20 and dependent JDO2 projects</echo>
         <echo>  tck20.default - calls the default goal for tck20 and dependent JDO2 projects</echo>
         <echo>  tck20.clean   - cleans tck20 and dependent JDO2 projects</echo>
+        <echo>  tck20.dist    - creates distributions of tck20 and dependent JDO2 projects</echo>
         <echo>  fostore20.clean   - cleans fostore20 and dependencies</echo>
         <echo>  fostore20.build   - builds fostore20 and dependencies</echo>
         <echo>  fostore20.default - calls the default goal for fostore20 and dependencies</echo>
@@ -110,6 +111,13 @@
         <attainGoal name="multiproject:clean"/>
     </goal>
 
+    <goal name="tck20.dist"
+          description="Creates distributions of tck20 and dependent JDO2 projects">
+        <j:set var="maven.multiproject.includes">${tck20.projects}</j:set>
+        <j:set var="goal">dist</j:set>
+        <attainGoal name="multiproject:goal"/>
+    </goal> 
+
     <goal name="fostore20.build"
       description="Builds fostore20 and dependencies">
         <j:set var="maven.multiproject.includes">${fostore20.projects}</j:set>
@@ -158,6 +166,10 @@
         </j:forEach>
     </goal>
 
+    <!-- ==================== -->
+    <!-- Distribution support -->
+    <!-- ==================== -->
+
     <preGoal name="dist:build-src">
         <echo>Copying top-level project.xml, project.properties, and README.txt to ${maven.dist.src.archive.dir}</echo>
         <copy toDir="${maven.dist.src.archive.dir}">
@@ -171,4 +183,32 @@
         <mkdir dir="${maven.dist.src.archive.dir}/lib/ext"/>
     </preGoal>
 
+    <postGoal name="dist">
+        <attainGoal name="copy-release-artifacts"/>
+    </postGoal>
+
+    <goal name="copy-release-artifacts">
+        <attainGoal name="copy-distribution"/>
+        <attainGoal name="copy-dependency-artifacts"/>
+    </goal>
+
+    <goal name="copy-dependency-artifacts">
+        <mkdir dir="${jdo.releases.dist.dir}/java-repository/${pom.groupId}/jars"/>
+        <mkdir dir="${jdo.releases.dist.dir}/java-repository/${pom.groupId}/poms"/>
+
+        <!-- Copy the artifacts for the remote repository -->
+        <copy file="${maven.build.dir}/${maven.final.name}.jar" 
+              todir="${jdo.releases.dist.dir}/java-repository/${pom.groupId}/jars"/>
+        <copy file="project.xml" 
+              toFile="${jdo.releases.dist.dir}/java-repository/${pom.groupId}/poms/${maven.final.name}.pom" />
+    </goal>
+
+    <goal name="copy-distribution">
+        <mkdir dir="${jdo.releases.dist.dir}/db/jdo/${pom.currentVersion}"/>
+         <!-- Copy distributions -->
+        <copy todir="${jdo.releases.dist.dir}/db/jdo/${pom.currentVersion}">
+            <fileset dir="${maven.build.dir}/distributions"/>
+        </copy>
+    </goal>
+
 </project>
diff --git a/project.properties b/project.properties
index b09c271..aaff8e9 100644
--- a/project.properties
+++ b/project.properties
@@ -21,6 +21,9 @@ maven.compile.target = 1.3
 # checkstyle settings
 maven.checkstyle.properties = ${basedir}/../jdo_checks.xml
 
+# changelog settings
+maven.changelog.factory = org.apache.maven.svnlib.SvnChangeLogFactory
+
 # Set the javadoc title 
 maven.javadoc.windowtitle = ${pom.name} ${pom.currentVersion}
 
@@ -33,3 +36,6 @@ tck20/project.xml
 tck20.projects=api20/project.xml,core20/project.xml,enhancer20/project.xml,tck20/project.xml
 fostore20.projects=api20/project.xml,core20/project.xml,runtime20/project.xml,query20/project.xml,btree/project.xml,fostore20/project.xml,enhancer20/project.xml
 
+# release properties
+jdo.releases.dir = ${basedir.substring(0, basedir.lastIndexOf('jdo'))}jdo/releases
+jdo.releases.dist.dir = ${jdo.releases.dir}/${pom.currentVersion}/dist
diff --git a/tck20/maven.xml b/tck20/maven.xml
index 8ca6862..12da66e 100644
--- a/tck20/maven.xml
+++ b/tck20/maven.xml
@@ -760,6 +760,15 @@
         </copy>
     </goal>
 
+    <!-- ==================== -->
+    <!-- Distribution support -->
+    <!-- ==================== -->
+
+    <goal name="dist">
+        <!-- Just do a source distribution for tck20. -->
+        <attainGoal name="dist:build-src"/>
+    </goal>
+
     <preGoal name="dist:build-src">
         <echo>Copying build.properties, RunRules.html, assertions, and iut_jars to ${maven.dist.src.archive.dir}/${maven.final.name}</echo>
         <copy toDir="${maven.dist.src.archive.dir}/${maven.final.name}">
@@ -784,16 +793,8 @@
         <mkdir dir="${maven.dist.src.archive.dir}/lib/ext"/>
     </preGoal>
 
-    <postGoal name="dist:build-src">
-         <!-- copy zip distribution to file with date in the name -->   
-         <tstamp>
-             <format property="distdate" pattern="dd_MMM_yyyy" locale="en"/>
-         </tstamp>
-         <u:replace var="version" oldChar="." newChar="_" value="${pom.currentVersion}"/>
-         <j:set var="zipfile" value="${maven.dist.dir}/${maven.final.name}-src.zip"/>
-         <j:set var="distfile" value="${maven.dist.dir}/${maven.final.name}-src-${distdate}.zip"/>
-         <echo>Create ${distfile}</echo>
-         <copy file="${zipfile}" tofile="${distfile}" failonerror="false"/>
-    </postGoal>
+    <goal name="copy-release-artifacts">
+        <attainGoal name="copy-distribution"/>
+    </goal>
 
 </project>

[db-jdo] 25/43: Updated initial 2.0.1 branch: - Removed api20 directory. - Updated currentVersion entry to 2.0.1 in core20, enhancer20, and tck20. - Updated the JPOX dependency to 1.1.1. - Updated the Derby dependency to 10.1.3.1.

Posted by cl...@apache.org.
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 01439560a4d8218e913675000123dbec4ad43060
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Tue Oct 3 19:17:10 2006 +0000

    Updated initial 2.0.1 branch:
    - Removed api20 directory.
    - Updated currentVersion entry to 2.0.1 in core20, enhancer20, and tck20.
    - Updated the JPOX dependency to 1.1.1.
    - Updated the Derby dependency to 10.1.3.1.
---
 api20/LICENSE.txt                                  |  202 ----
 api20/maven.xml                                    |   71 --
 api20/project.properties                           |   24 -
 api20/project.xml                                  |  104 --
 api20/src/java/javax/jdo/Bundle.properties         |   78 --
 api20/src/java/javax/jdo/Extent.java               |   89 --
 api20/src/java/javax/jdo/FetchPlan.java            |  219 ----
 api20/src/java/javax/jdo/InstanceCallbacks.java    |   70 --
 api20/src/java/javax/jdo/JDOCanRetryException.java |   94 --
 .../src/java/javax/jdo/JDODataStoreException.java  |   95 --
 .../javax/jdo/JDODetachedFieldAccessException.java |   73 --
 api20/src/java/javax/jdo/JDOException.java         |  295 -----
 .../java/javax/jdo/JDOFatalDataStoreException.java |   74 --
 api20/src/java/javax/jdo/JDOFatalException.java    |   95 --
 .../java/javax/jdo/JDOFatalInternalException.java  |   67 --
 .../src/java/javax/jdo/JDOFatalUserException.java  |   94 --
 api20/src/java/javax/jdo/JDOHelper.java            |  835 --------------
 .../java/javax/jdo/JDONullIdentityException.java   |   77 --
 .../java/javax/jdo/JDOObjectNotFoundException.java |   69 --
 .../jdo/JDOOptimisticVerificationException.java    |   70 --
 .../javax/jdo/JDOUnsupportedOptionException.java   |   66 --
 .../java/javax/jdo/JDOUserCallbackException.java   |   67 --
 api20/src/java/javax/jdo/JDOUserException.java     |   94 --
 api20/src/java/javax/jdo/PersistenceManager.java   | 1086 -------------------
 .../java/javax/jdo/PersistenceManagerFactory.java  |  432 --------
 api20/src/java/javax/jdo/Query.java                |  586 ----------
 api20/src/java/javax/jdo/Transaction.java          |  198 ----
 .../java/javax/jdo/datastore/DataStoreCache.java   |  169 ---
 .../java/javax/jdo/datastore/JDOConnection.java    |   55 -
 api20/src/java/javax/jdo/datastore/Sequence.java   |   82 --
 api20/src/java/javax/jdo/datastore/package.html    |   26 -
 .../src/java/javax/jdo/identity/ByteIdentity.java  |  131 ---
 .../src/java/javax/jdo/identity/CharIdentity.java  |  143 ---
 api20/src/java/javax/jdo/identity/IntIdentity.java |  128 ---
 .../src/java/javax/jdo/identity/LongIdentity.java  |  130 ---
 .../java/javax/jdo/identity/ObjectIdentity.java    |  152 ---
 .../src/java/javax/jdo/identity/ShortIdentity.java |  128 ---
 .../javax/jdo/identity/SingleFieldIdentity.java    |  188 ----
 .../java/javax/jdo/identity/StringIdentity.java    |   96 --
 api20/src/java/javax/jdo/identity/package.html     |   26 -
 .../java/javax/jdo/listener/AttachCallback.java    |   49 -
 .../jdo/listener/AttachLifecycleListener.java      |   55 -
 .../src/java/javax/jdo/listener/ClearCallback.java |   42 -
 .../javax/jdo/listener/ClearLifecycleListener.java |   58 -
 .../jdo/listener/CreateLifecycleListener.java      |   41 -
 .../java/javax/jdo/listener/DeleteCallback.java    |   41 -
 .../jdo/listener/DeleteLifecycleListener.java      |   53 -
 .../java/javax/jdo/listener/DetachCallback.java    |   47 -
 .../jdo/listener/DetachLifecycleListener.java      |   54 -
 .../javax/jdo/listener/DirtyLifecycleListener.java |   48 -
 .../javax/jdo/listener/InstanceLifecycleEvent.java |  190 ----
 .../jdo/listener/InstanceLifecycleListener.java    |   34 -
 .../src/java/javax/jdo/listener/LoadCallback.java  |   41 -
 .../javax/jdo/listener/LoadLifecycleListener.java  |   41 -
 .../src/java/javax/jdo/listener/StoreCallback.java |   44 -
 .../javax/jdo/listener/StoreLifecycleListener.java |   52 -
 api20/src/java/javax/jdo/listener/package.html     |   54 -
 api20/src/java/javax/jdo/package.html              |   90 --
 api20/src/java/javax/jdo/spi/Detachable.java       |   46 -
 api20/src/java/javax/jdo/spi/I18NHelper.java       |  403 -------
 api20/src/java/javax/jdo/spi/JDOImplHelper.java    |  935 ----------------
 api20/src/java/javax/jdo/spi/JDOPermission.java    |  134 ---
 .../src/java/javax/jdo/spi/PersistenceCapable.java |  593 ----------
 .../src/java/javax/jdo/spi/RegisterClassEvent.java |  122 ---
 .../java/javax/jdo/spi/RegisterClassListener.java  |   43 -
 .../src/java/javax/jdo/spi/StateInterrogation.java |  250 -----
 api20/src/java/javax/jdo/spi/StateManager.java     |  515 ---------
 api20/src/java/javax/jdo/spi/package.html          |   47 -
 api20/src/schema/javax/jdo/jdo.dtd                 |  226 ----
 api20/src/schema/javax/jdo/jdo.xsd                 | 1144 --------------------
 api20/src/schema/javax/jdo/jdoquery.dtd            |   28 -
 api20/src/schema/javax/jdo/jdoquery.xsd            |  108 --
 api20/src/schema/javax/jdo/orm.dtd                 |  167 ---
 api20/src/schema/javax/jdo/orm.xsd                 |  775 -------------
 api20/test/java/javax/jdo/JDOHelperTest.java       |  525 ---------
 .../java/javax/jdo/identity/ByteIdentityTest.java  |  129 ---
 .../java/javax/jdo/identity/CharIdentityTest.java  |  138 ---
 .../javax/jdo/identity/ConcreteTestIdentity.java   |   53 -
 .../java/javax/jdo/identity/IntIdentityTest.java   |  128 ---
 .../java/javax/jdo/identity/LongIdentityTest.java  |  129 ---
 .../javax/jdo/identity/ObjectIdentityTest.java     |  425 --------
 .../java/javax/jdo/identity/ShortIdentityTest.java |  128 ---
 .../jdo/identity/SingleFieldIdentityTest.java      |  109 --
 .../javax/jdo/identity/StringIdentityTest.java     |   91 --
 .../jdo/listener/InstanceLifecycleEventTest.java   |  130 ---
 api20/test/java/javax/jdo/pc/PCPoint.java          |  460 --------
 api20/test/java/javax/jdo/schema/XMLTest.java      |  128 ---
 .../test/java/javax/jdo/spi/JDOImplHelperTest.java |  202 ----
 .../java/javax/jdo/spi/StateInterrogationTest.java |  540 ---------
 api20/test/java/javax/jdo/util/AbstractTest.java   |  102 --
 .../java/javax/jdo/util/BatchResultPrinter.java    |  103 --
 .../test/java/javax/jdo/util/BatchTestRunner.java  |  163 ---
 api20/test/java/javax/jdo/util/XMLTestUtil.java    |  561 ----------
 api20/test/schema/Negative0-dtd.jdo                |    7 -
 api20/test/schema/Negative0-dtd.jdoquery           |    7 -
 api20/test/schema/Negative0-dtd.orm                |    7 -
 api20/test/schema/Negative0-xsd.jdo                |    7 -
 api20/test/schema/Negative0-xsd.jdoquery           |    8 -
 api20/test/schema/Negative0-xsd.orm                |    7 -
 api20/test/schema/Positive0-dtd.jdo                |    9 -
 api20/test/schema/Positive0-dtd.jdoquery           |   14 -
 api20/test/schema/Positive0-dtd.orm                |    9 -
 api20/test/schema/Positive0-xsd.jdo                |    9 -
 api20/test/schema/Positive0-xsd.jdoquery           |   14 -
 api20/test/schema/Positive0-xsd.orm                |    9 -
 api20/test/schema/Positive1-dtd.jdo                |  130 ---
 api20/test/schema/Positive1-dtd.orm                |   97 --
 api20/test/schema/Positive1-xsd.jdo                |  131 ---
 api20/test/schema/Positive1-xsd.orm                |   99 --
 api20/test/schema/Positive15.1-dtd.orm             |   17 -
 api20/test/schema/Positive15.1-xsd.orm             |   17 -
 api20/test/schema/Positive15.2.1-dtd.orm           |   26 -
 api20/test/schema/Positive15.2.1-xsd.orm           |   26 -
 api20/test/schema/Positive15.2.2-dtd.orm           |   23 -
 api20/test/schema/Positive15.2.2-xsd.orm           |   23 -
 api20/test/schema/Positive15.3.1-dtd.orm           |   16 -
 api20/test/schema/Positive15.3.1-xsd.orm           |   16 -
 api20/test/schema/Positive15.3.2-dtd.orm           |   18 -
 api20/test/schema/Positive15.3.2-xsd.orm           |   18 -
 api20/test/schema/Positive15.3.3-dtd.orm           |   16 -
 api20/test/schema/Positive15.3.3-xsd.orm           |   16 -
 api20/test/schema/Positive15.3.4-dtd.orm           |   20 -
 api20/test/schema/Positive15.3.4-xsd.orm           |   20 -
 api20/test/schema/Positive15.3.5-dtd.orm           |   24 -
 api20/test/schema/Positive15.3.5-xsd.orm           |   24 -
 api20/test/schema/Positive15.3.6-dtd.orm           |   21 -
 api20/test/schema/Positive15.3.6-xsd.orm           |   21 -
 api20/test/schema/Positive15.4-dtd.orm             |   35 -
 api20/test/schema/Positive15.4-xsd.orm             |   35 -
 api20/test/schema/Positive15.5-dtd.orm             |   20 -
 api20/test/schema/Positive15.5-xsd.orm             |   20 -
 api20/test/schema/Positive15.6-dtd.orm             |   20 -
 api20/test/schema/Positive15.6-xsd.orm             |   20 -
 api20/test/schema/Positive15.8.1-dtd.orm           |   27 -
 api20/test/schema/Positive15.8.1-xsd.orm           |   27 -
 api20/test/schema/Positive15.8.2-dtd.orm           |   27 -
 api20/test/schema/Positive15.8.2-xsd.orm           |   27 -
 api20/test/schema/Positive15.8.3-dtd.orm           |   21 -
 api20/test/schema/Positive15.8.3-xsd.orm           |   21 -
 api20/test/schema/Positive99-dtd.jdo               |  430 --------
 api20/test/schema/Positive99-dtd.jdoquery          |   45 -
 api20/test/schema/Positive99-dtd.orm               |  337 ------
 api20/test/schema/Positive99-xsd.jdo               |  432 --------
 api20/test/schema/Positive99-xsd.jdoquery          |   47 -
 api20/test/schema/Positive99-xsd.orm               |  339 ------
 api20/xdocs/index.xml                              |   37 -
 api20/xdocs/navigation.xml                         |   37 -
 core20/project.xml                                 |    2 +-
 enhancer20/project.xml                             |    4 +-
 project.xml                                        |    2 +-
 tck20/project.xml                                  |   18 +-
 151 files changed, 13 insertions(+), 20535 deletions(-)

diff --git a/api20/LICENSE.txt b/api20/LICENSE.txt
deleted file mode 100644
index d645695..0000000
--- a/api20/LICENSE.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed 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.
diff --git a/api20/maven.xml b/api20/maven.xml
deleted file mode 100644
index 78b9b48..0000000
--- a/api20/maven.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright 2005 The Apache Software Foundation
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    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.
--->
-
-<project default="default"
-    xmlns:j="jelly:core"
-    xmlns:ant="jelly:ant"
-    >
-
-    <!-- ==================== -->
-    <!-- Default Global Goals -->
-    <!-- ==================== -->
-
-    <goal name="default">
-        <attainGoal name="jar:install"/>
-    </goal>
-
-    <goal name="build">
-        <attainGoal name="javadoc"/>
-        <attainGoal name="default"/>
-    </goal>
-
-    <goal name="rebuild">
-        <attainGoal name="clean"/>
-        <attainGoal name="build"/>
-    </goal>
-
-    <goal name="clobber">
-        <attainGoal name="clean"/>
-        <delete>
-            <fileset dir="." defaultexcludes="no" includes="**/*~"/>
-        </delete>
-    </goal>
-
-    <!-- ======== -->
-    <!-- XML test -->
-    <!-- ======== -->
-
-    <!-- Run XML parser on JDO metadata files (suffix .jdo, .orm or .jdoquery).             -->
-    <!-- The tool uses the following system properties:                                     -->
-    <!--   javax.jdo.metadata: a comma separated list of JDO metadata files or directories. -->
-    <!--   javax.jdo.recursive: recursively serach directories.                             -->
-    <goal name="xmltest" prereqs="test:compile">
-        <java classname="javax.jdo.util.XMLTestUtil" fork="true">
-            <classpath> 
-                <pathelement location="${xmlapis.jarfile}"/>
-                <pathelement location="${xerces.jarfile}"/>
-                <pathelement location="${maven.build.dir}/classes"/>
-                <pathelement location="${maven.build.dir}/test-classes"/>
-            </classpath> 
-            <sysproperty key="javax.jdo.metadata" value="${javax.jdo.metadata}"/>
-            <sysproperty key="javax.jdo.recursive" value="${javax.jdo.recursive}"/>
-            <sysproperty key="javax.xml.parsers.DocumentBuilderFactory" 
-                         value="${javax.xml.parsers.DocumentBuilderFactory}"/>
-        </java>
-    </goal>
-
-</project>
diff --git a/api20/project.properties b/api20/project.properties
deleted file mode 100644
index e02241a..0000000
--- a/api20/project.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# Copyright 2006 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# 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.
-
-maven.junit.sysproperties = javax.xml.parsers.DocumentBuilderFactory basedir
-javax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
-
-xmlapis.jarfile = ${pom.getDependencyPath('xml-apis:xml-apis')}
-xerces.jarfile = ${pom.getDependencyPath('xerces:xerces')}
-junit.jarfile = ${pom.getDependencyPath('junit:junit')}
-
-# Manifest seed file
-maven.jar.manifest = ${basedir}/../JDO20.MF
diff --git a/api20/project.xml b/api20/project.xml
deleted file mode 100644
index 43d53ce..0000000
--- a/api20/project.xml
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright 2006 The Apache Software Foundation
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    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.
--->
-
-<project>
-    <pomVersion>3</pomVersion>
-    <extend>../project.xml</extend>
-    <!-- ============== -->
-    <!-- Identification -->
-    <!-- ============== -->
-    <name>JDO2 API</name>
-    <groupId>javax.jdo</groupId>
-    <artifactId>jdo2-api</artifactId>
-    <currentVersion>2.0</currentVersion>
-    <package>javax.jdo</package>
-    <shortDescription>Java Data Objects 2.0 (JDO) API</shortDescription>
-    <description>The Java Data Objects 2.0 (JDO) API is a standard interface-based 
-Java model abstraction of persistence, developed as Java Specification 
-Request 243 under the auspices of the Java Community Process.</description>
-    <repository />
-    <!-- ============ -->
-    <!-- Dependencies -->
-    <!-- ============ -->
-    <dependencies>
-        <dependency>
-            <groupId>geronimo-spec</groupId>
-            <artifactId>geronimo-spec-jta</artifactId>
-            <version>1.0.1B-rc2</version>
-        </dependency>
-        <dependency>
-            <groupId>xerces</groupId>
-            <artifactId>xerces</artifactId>
-            <version>2.4.0</version>
-        </dependency>
-        <dependency>
-            <groupId>xml-apis</groupId>
-            <artifactId>xml-apis</artifactId>
-            <version>1.0.b2</version>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>3.8.1</version>
-        </dependency>
-    </dependencies>
-    <!-- =================== -->
-    <!-- Build Specification -->
-    <!-- =================== -->
-    <build>
-        <sourceDirectory>src/java</sourceDirectory>
-        <unitTestSourceDirectory>test/java</unitTestSourceDirectory>
-        <!-- Unit test cases -->
-        <unitTest>
-            <includes>
-                <include>**/*Test.java</include>
-            </includes>
-            <excludes>
-                <exclude>javax/jdo/util/AbstractTest.java</exclude>
-                <exclude>javax/jdo/pc/*.java</exclude>
-            </excludes>
-            <resources>
-                <resource>
-                <directory>${basedir}/test/schema</directory>
-                <includes>
-                    <include>**/*.jdo</include>
-                    <include>**/*.jdoquery</include>
-                    <include>**/*.orm</include>
-                </includes>
-                </resource>
-            </resources>
-        </unitTest>
-        <!-- J A R  R E S O U R C E S -->
-        <!-- Resources that are packaged up inside the JAR file -->
-        <resources>
-            <resource>
-                <directory>${basedir}/src/java</directory>
-                <includes>
-                    <include>javax/jdo/*.properties</include>
-                </includes>
-            </resource>
-            <resource>
-                <directory>${basedir}/src/schema</directory>
-                <includes>
-                    <include>javax/jdo/*.dtd</include>
-                    <include>javax/jdo/*.xsd</include>
-                </includes>
-            </resource>
-        </resources>
-    </build>
-</project>
-
diff --git a/api20/src/java/javax/jdo/Bundle.properties b/api20/src/java/javax/jdo/Bundle.properties
deleted file mode 100644
index 3aa8d5f..0000000
--- a/api20/src/java/javax/jdo/Bundle.properties
+++ /dev/null
@@ -1,78 +0,0 @@
-#
-# Copyright 2005 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# 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.
-
-# ResourceBundle properties file for JDO
-ERR_AbstractClassNoIdentity=Abstract class {0} does not implement key field helper methods
-ERR_CannotInitCause=The initCause method cannot be used. To set the cause of this exception, \
-use a constructor with a Throwable[] argument.
-ERR_StateManagerClassCast=An element of the parameter collection is of class {0}.  \
-The parameter collection must contain only elements that are instances of java.lang.Class.
-ERR_NoMetadata=No metadata has been registered for class {0}.
-EXC_GetPMFNoSuchMethod=Method getPersistenceManagerFactory(Properties) does not exist or is not public.
-EXC_GetPMFUnexpectedException=Unexpected exception caught.
-EXC_GetPMFClassNotFound=Class {0} was not found.
-EXC_GetPMFIllegalAccess=Illegal Access for class {0}.
-EXC_GetPMFNoClassNameProperty=A property named javax.jdo.PersistenceManagerFactoryClass must be specified.
-MSG_FailedObject=FailedObject:
-MSG_NestedThrowables=NestedThrowables:
-MSG_NestedThrowablesStackTrace=NestedThrowablesStackTrace:
-MSG_ExceptionGettingFailedToString=Exception getting failed.toString(): ''{0}''.
-MSG_ExceptionGettingFailedToStringObjectId=Exception getting failed.toString(): ''{0}''. ObjectId of failed instance: ''{1}''. 
-ERR_NullClass=JDO implementation error: the parameter class object must not be null.
-EXC_GetPMFNullResource: The resource name argument to this method cannot be null.
-EXC_GetPMFNullLoader: The class loader argument to this method cannot be null.
-EXC_GetPMFNullPropsLoader: The class loader argument to this method cannot be null.
-EXC_GetPMFNullPMFLoader: The class loader argument to this method cannot be null.
-EXC_GetPMFNullStream: The stream argument to this method cannot be null.
-EXC_GetPMFNoResource: The resource named "{0}" could not be found in the class loader "{1}".
-EXC_GetPMFIOExceptionRsrc: An IOException was thrown while loading the resource \
-named "{0}" into a java.util.Properties object.
-EXC_GetPMFIOExceptionStream: An IOException was thrown while loading the stream \
-into a java.util.Properties object.
-EXC_GetPMFNullFile: The file argument to this method cannot be null.
-EXC_GetPMFNoFile: The file named "{0}" could not be found.
-EXC_GetPMFIOExceptionFile: An IOException was thrown while loading the file \
-named "{0}" into a java.util.Properties object.
-EXC_GetPMFNullJndiLoc: The JNDI location argument to this method cannot be null.
-EXC_GetPMFNamingException: A NamingException was thrown while obtaining the \
-PersistenceManagerFactory at "{0}" from JNDI.
-EXC_GetPMFNullPointerException: The PersistenceManagerFactory class must define a static \
-method \nPersistenceManagerFactory getPersistenceManagerFactory(Map props). \nThe class "{0}"\n\
-defines a non-static getPersistenceManagerFactory(Map props) method.
-EXC_GetPMFClassCastException: The PersistenceManagerFactory class must define a static \
-method \nPersistenceManagerFactory getPersistenceManagerFactory(Map props). \nThe class "{0}"\n\
-has the wrong return type for the getPersistenceManagerFactory(Map props) method.
-EXC_StringWrongLength: There must be exactly one character in the id in the input String for CharIdentity.
-EXC_IllegalEventType:The event type is outside the range of valid event types.
-EXC_SingleFieldIdentityNullParameter: The identity must not be null.
-EXC_ObjectIdentityStringConstruction: The identity instance could not be constructed. \
-\nThe exception thrown was: "{0}". \
-\nParsed the class name as "{1}" and key as "{2}".
-EXC_ObjectIdentityStringConstructionNoDelimiter: Missing delimiter ":".
-EXC_ObjectIdentityStringConstructionTooShort: Parameter is too short.
-EXC_ObjectIdentityStringConstructionUsage: The instance could not be constructed \
-from the parameter String "{0}". \
-\nThe parameter String is of the form "<className>:<keyString>".
-EXC_CreateKeyAsObjectMustNotBeCalled: The method createKeyAsObject must not be called \
-because the keyAsObject field must never be null for this class.
-EXC_CurrencyStringConstructorIllegalArgument: The instance could not be constructed \
-with the argument "{0}". Try "USD".
-EXC_CurrencyStringConstructorException: An exception was thrown during construction \
-of the Currency instance.
-EXC_LocaleStringConstructorException: An exception was thrown during construction \
-of the Locale instance.
-EXC_DateStringConstructor: Error parsing Date string "{0}" at position {1} \
-using date format "{2}".
-MSG_unknown: unknown
diff --git a/api20/src/java/javax/jdo/Extent.java b/api20/src/java/javax/jdo/Extent.java
deleted file mode 100644
index 44811af..0000000
--- a/api20/src/java/javax/jdo/Extent.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * Extent.java
- *
- */
-
-package javax.jdo;
-
-import java.util.Iterator;
-
-/** Instances of the <code>Extent</code> class represent the entire collection
- * of instances in the data store of the candidate class
- * possibly including its subclasses.
- * <P>The <code>Extent</code> instance has two possible uses:
- * <ol>
- * <li>to iterate all instances of a particular class 
- * <li>to execute a <code>Query</code> in the data store over all instances
- * of a particular class
- * </ol>
- * @version 2.0
- */
-public interface Extent {
-        
-    /** Returns an iterator over all the instances in the <code>Extent</code>.
-     * The behavior of the returned iterator might depend on the setting of the
-     * <code>ignoreCache</code> flag in the owning <code>PersistenceManager</code>.
-     * @return an iterator over all instances in the <code>Extent</code>
-     */
-    Iterator iterator();
-
-    /** Returns whether this <code>Extent</code> was defined to contain subclasses.
-     * @return true if this <code>Extent</code> was defined to contain instances
-     * that are of a subclass type.
-     */    
-    boolean hasSubclasses();
-
-    /** An <code>Extent</code> contains all instances of a particular class in the data
-     * store; this method returns the <code>Class</code> of the instances.
-      * @return the <code>Class</code> of instances of this <code>Extent</code>.
-      */
-    Class getCandidateClass();
-
-    /** An <code>Extent</code> is managed by a <code>PersistenceManager</code>;
-     * this method gives access to the owning <code>PersistenceManager</code>.
-     * @return the owning <code>PersistenceManager</code>
-     */
-    PersistenceManager getPersistenceManager();
-    
-    /** Close all <code>Iterator</code>s associated with this <code>Extent</code> instance.
-     * <code>Iterator</code>s closed by this method will return <code>false</code>
-     * to <code>hasNext()</code> and will throw
-     * <code>NoSuchElementException</code> on <code>next()</code>.
-     * The <code>Extent</code> instance can still be used
-     * as a parameter of <code>Query.setExtent</code>, and to get an <code>Iterator</code>.
-     */    
-    void closeAll ();
-    
-    /** Close an <code>Iterator</code> associated with this <code>Extent</code> instance.
-     * <code>Iterator</code>s closed by this method will return <code>false</code>
-     * to <code>hasNext()</code> and will throw <code>NoSuchElementException</code>
-     * on <code>next()</code>. The <code>Extent</code> instance can still be used
-     * as a parameter of <code>Query.setExtent</code>, and to get an <code>Iterator</code>.
-     * @param it an <code>Iterator</code> obtained by the method
-     * <code>iterator()</code> on this <code>Extent</code> instance.
-     */    
-    void close (Iterator it);
-    
-    /** Get the fetch plan associated with this Extent.
-     * @return the fetch plan
-     * @since 2.0
-     */
-    FetchPlan getFetchPlan();
-}
-
diff --git a/api20/src/java/javax/jdo/FetchPlan.java b/api20/src/java/javax/jdo/FetchPlan.java
deleted file mode 100644
index 24c3ab2..0000000
--- a/api20/src/java/javax/jdo/FetchPlan.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * FetchPlan.java
- *
- */
- 
-package javax.jdo;
-
-import java.util.Collection;
-import java.util.Set;
-
-/**
- * Fetch groups are activated using methods on this interface. An
- * instance of this interface can be obtained from {@link
- * PersistenceManager#getFetchPlan}, {@link Extent#getFetchPlan}, and
- * {@link Query#getFetchPlan}. When a <code>Query</code> or
- * <code>Extent</code> is retrieved from a
- * <code>PersistenceManager</code>, its <code>FetchPlan</code> is
- * initialized to the same settings as that of the
- * <code>PersistenceManager</code>. Subsequent modifications of the
- * <code>Query</code> or <code>Extent</code>'s <code>FetchPlan</code>
- * are not reflected in the <code>FetchPlan</code> of the
- * <code>PersistenceManager</code>.
- * @version 2.0
- * @since 2.0
- */
-public interface FetchPlan {
-
-    /**
-     * For use with {@link #addGroup}, {@link #removeGroup}, and the
-     * various {@link #setGroups} calls. Value: <code>default</code>.
-     * @since 2.0
-     */
-    public static final String DEFAULT = "default";
-
-    /**
-     * For use with {@link #addGroup}, {@link #removeGroup}, and the
-     * various {@link #setGroups} calls. Value: <code>all</code>.
-     * @since 2.0
-     */
-    public static final String ALL = "all";
-
-    /**
-     * For use with {@link PersistenceManager#detachCopy} and
-     * {@link #setDetachmentOptions}. Specifies that
-     * fields that are loaded but not in the current fetch plan should
-     * be unloaded prior to detachment.
-     * @since 2.0
-     */
-    public static final int DETACH_UNLOAD_FIELDS = 2;
-
-    /**
-     * For use with {@link PersistenceManager#detachCopy} and
-     * {@link #setDetachmentOptions}. Specifies that
-     * fields that are not loaded but are in the current fetch plan should
-     * be loaded prior to detachment.
-     * @since 2.0
-     */
-    public static final int DETACH_LOAD_FIELDS = 1;
-
-    /**
-     * For use with {@link #setFetchSize}. Value: -1.
-     * @since 2.0
-     */
-    public static final int FETCH_SIZE_GREEDY = -1;
-
-    /**
-     * For use with {@link #setFetchSize}. Value: 0.
-     * @since 2.0
-     */
-    public static final int FETCH_SIZE_OPTIMAL = 0;
-
-    /** 
-     * Add the fetch group to the set of active fetch groups.
-     * @return the FetchPlan
-     * @since 2.0
-     */
-    FetchPlan addGroup(String fetchGroupName);
-
-    /** 
-     * Remove the fetch group from the set active fetch groups. 
-     * @return the FetchPlan
-     * @since 2.0
-     */
-    FetchPlan removeGroup(String fetchGroupName);
-
-    /** 
-     * Remove all active groups leaving no active fetch group.
-     * @return the FetchPlan
-     * @since 2.0
-     */ 
-    FetchPlan clearGroups();
-
-    /** 
-     * Return an immutable collection containing the names 
-     * of all active fetch groups.
-     * @return an immutable collection containing the names 
-     * of all active fetch groups
-     * @since 2.0
-     */
-    Set getGroups();
-
-    /** 
-     * Set a collection of groups.
-     * @param fetchGroupNames a collection of names of fetch groups
-     * @return the FetchPlan
-     * @since 2.0
-     */
-    FetchPlan setGroups(Collection fetchGroupNames);
-
-    /** 
-     * Set a collection of groups.
-     * @param fetchGroupNames a String array of names of fetch groups
-     * @return the FetchPlan
-     * @since 2.0
-     */
-    FetchPlan setGroups(String[]fetchGroupNames);
-
-    /** 
-     * Set the active fetch groups to the single named fetch group.
-     * @param fetchGroupName the single fetch group
-     * @return the FetchPlan
-     * @since 2.0
-     */
-    FetchPlan setGroup(String fetchGroupName);
-
-    /**
-     * Set the maximum fetch depth when fetching. 
-     * A value of 0 has no meaning and will throw a JDOUserException.
-     * A value of -1 means that no limit is placed on fetching.
-     * A positive integer will result in that number of references from the
-     * initial object to be fetched.
-     * @param fetchDepth the depth
-     * @return the FetchPlan
-     * @since 2.0
-     */
-    FetchPlan setMaxFetchDepth(int fetchDepth);
-
-    /**
-     * Return the maximum fetch depth used when fetching instances.
-     * @return the maximum fetch depth
-     * @since 2.0
-     */
-    int getMaxFetchDepth(); 
-
-    /**
-     * Set the roots for DetachAllOnCommit.
-     * @param roots Collection of the detachment roots.
-     * @since 2.0
-     */
-    FetchPlan setDetachmentRoots(Collection roots);
-
-    /**
-     * Get the roots for DetachAllOnCommit.
-     * @return Collection of detachment roots.
-     * @since 2.0
-     */
-    Collection getDetachmentRoots();
-
-    /**
-     * Set the root classes for DetachAllOnCommit.
-     * @param rootClasses The root classes.
-     * @since 2.0
-     */
-    FetchPlan setDetachmentRootClasses(Class[] rootClasses);
-
-    /**
-     * Get the root classes for DetachAllOnCommit.
-     * @return The detachment root classes
-     * @since 2.0
-     */
-    Class[] getDetachmentRootClasses();
-
-    /**
-     * Set the fetch size for large result set support. Use
-     * {@link #FETCH_SIZE_OPTIMAL} to unset, and {@link #FETCH_SIZE_GREEDY}
-     * to force loading of everything.
-     * @param fetchSize the fetch size
-     * @return the FetchPlan
-     * @since 2.0
-     */
-    FetchPlan setFetchSize(int fetchSize);
-
-    /**
-     * Return the fetch size, or {@link #FETCH_SIZE_OPTIMAL} if not set,
-     * or {@link #FETCH_SIZE_GREEDY} to fetch all.
-     * @return the fetch size
-     * @since 2.0
-     */
-    int getFetchSize(); 
-
-    /**
-     * Set options to be used during detachment. Options are {@link
-     * #DETACH_LOAD_FIELDS} and {@link #DETACH_UNLOAD_FIELDS}.
-     */
-    FetchPlan setDetachmentOptions(int options);
- 
-    /**
-     * Get options used during detachment.
-     */
-    int getDetachmentOptions();
-  
-}
-
diff --git a/api20/src/java/javax/jdo/InstanceCallbacks.java b/api20/src/java/javax/jdo/InstanceCallbacks.java
deleted file mode 100644
index 8d7b934..0000000
--- a/api20/src/java/javax/jdo/InstanceCallbacks.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * InstanceCallbacks.java
- *
- */
- 
-package javax.jdo;
-
-/** A <code>PersistenceCapable</code> class that provides callback methods for life
- * cycle events implements this interface.
- *
- * <P>For JDO 2.0, <code>InstanceCallbacks</code> has been refactored to extend 
- * four other interfaces, without changing any of the methods or semantics. 
- * This allows fine-grained control over callbacks, for
- * example to allow a class to implement the load callback without
- * implementing any of the other callbacks. For backward compatibility
- * with JDO 1.0, the <code>InstanceCallbacks</code> interface is preserved.
- *
- * <P>Classes which include non-persistent fields whose values depend
- * on the values of persistent fields require callbacks on specific
- * JDO instance life cycle events in order to correctly populate the
- * values in these fields.
- *
- * <P>The callbacks might also be used if the persistent instances
- * need to be put into the runtime infrastructure of the application.
- * For example, a persistent instance might notify other instances
- * on changes to state.  The persistent instance might be in a list of
- * managed instances. When the persistent instance is made hollow,
- * it can no longer generate change events, and the persistent
- * instance should be removed from the list of managed instances.
- *
- * <P>To implement this, the application programmer would implement
- * <code>jdoPostLoad</code> to put itself into the list of managed
- * instances, and implement <code>jdoPreClear</code> to remove itself from
- * the list. With JDO 1.0, the domain class would be declared to implement
- * <code>InstanceCallbacks</code>. With JDO 2.0, the domain class 
- * would be declared to implement
- * <code>javax.jdo.listener.LoadCallback</code> and 
- * <code>javax.jdo.listener.ClearCallback</code>.
- *
- * <P>Note that JDO does not manage the state of non-persistent
- * fields, and when a JDO instance transitions to hollow, JDO clears
- * the persistent fields.  It is the programmer's responsibility to
- * clear non-persistent fields so that garbage collection of
- * referred instances can occur.
- *
- * @since 1.0
- * @version 2.0
- */
-public interface InstanceCallbacks 
-    extends javax.jdo.listener.ClearCallback, 
-        javax.jdo.listener.DeleteCallback,
-        javax.jdo.listener.LoadCallback,
-        javax.jdo.listener.StoreCallback {
-}
diff --git a/api20/src/java/javax/jdo/JDOCanRetryException.java b/api20/src/java/javax/jdo/JDOCanRetryException.java
deleted file mode 100644
index cef0363..0000000
--- a/api20/src/java/javax/jdo/JDOCanRetryException.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOCanRetryException.java
- *
- */
-
-package javax.jdo;
-
-/** This is the base class for exceptions that can be retried.
- *
- * @version 1.0
- */
-public class JDOCanRetryException extends JDOException {
-
-  /**
-   * Constructs a new <code>JDOCanRetryException</code> without a detail message.
-   */
-  public JDOCanRetryException() {
-  }
-  
-
-  /**
-   * Constructs a new <code>JDOCanRetryException</code> with the specified detail message.
-   * @param msg the detail message.
-   */
-  public JDOCanRetryException(String msg) {
-    super(msg);
-  }
-
-  /**
-   * Constructs a new <code>JDOCanRetryException</code> with the specified detail
-   * message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDOCanRetryException(String msg, Throwable[] nested) {
-    super(msg, nested);
-  }
-  
-  /**
-   * Constructs a new <code>JDOCanRetryException</code> with the specified detail
-   * message and nested <code>Throwable<code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   */
-  public JDOCanRetryException(String msg, Throwable nested) {
-    super(msg, nested);
-  }
-  
-  /** Constructs a new <code>JDOCanRetryException</code> with the specified detail message
-   * and failed object.
-   * @param msg the detail message.
-   * @param failed the failed object.
-   */
-  public JDOCanRetryException(String msg, Object failed) {
-    super(msg, failed);
-  }
-  
-  /** Constructs a new <code>JDOCanRetryException</code> with the specified detail message,
-   * nested <code>Throwable</code>s, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   * @param failed the failed object.
-   */
-  public JDOCanRetryException(String msg, Throwable[] nested, Object failed) {
-    super(msg, nested, failed);
-    
-  }
-  /** Constructs a new <code>JDOCanRetryException</code> with the specified detail message,
-   * nested <code>Throwable</code>s, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   * @param failed the failed object.
-   */
-  public JDOCanRetryException(String msg, Throwable nested, Object failed) {
-    super(msg, nested, failed);
-  }
-}
-
diff --git a/api20/src/java/javax/jdo/JDODataStoreException.java b/api20/src/java/javax/jdo/JDODataStoreException.java
deleted file mode 100644
index 9736108..0000000
--- a/api20/src/java/javax/jdo/JDODataStoreException.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDODataStoreException.java
- *
- */
-
-package javax.jdo;
-
-/** This class represents data store exceptions that can be retried.
- *
- * @version 1.0
- */
-public class JDODataStoreException extends JDOCanRetryException {
-
-  /**
-   * Constructs a new <code>JDODataStoreException</code> without a detail message.
-   */
-  public JDODataStoreException() {
-  }
-  
-
-  /**
-   * Constructs a new <code>JDODataStoreException</code> with the specified detail message.
-   * @param msg the detail message.
-   */
-  public JDODataStoreException(String msg) {
-    super(msg);
-  }
-
-  /**
-   * Constructs a new <code>JDODataStoreException</code> with the specified 
-   * detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDODataStoreException(String msg, Throwable[] nested) {
-    super(msg, nested);
-  }
-
-  /**
-   * Constructs a new <code>JDODataStoreException</code> with the specified 
-   * detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   */
-  public JDODataStoreException(String msg, Throwable nested) {
-    super(msg, nested);
-  }
-
-  /** Constructs a new <code>JDODataStoreException</code> with the specified detail message
-   * and failed object.
-   * @param msg the detail message.
-   * @param failed the failed object.
-   */
-  public JDODataStoreException(String msg, Object failed) {
-    super(msg, failed);
-  }
- 
-  /** Constructs a new <code>JDODataStoreException</code> with the specified detail message,
-   * nested <code>Throwable</code>s, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   * @param failed the failed object.
-   */
-  public JDODataStoreException(String msg, Throwable[] nested, Object failed) {
-    super(msg, nested, failed);
-  }
-
-  /** Constructs a new <code>JDODataStoreException</code> with the specified detail message,
-   * nested <code>Throwable</code>s, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   * @param failed the failed object.
-   */
-  public JDODataStoreException(String msg, Throwable nested, Object failed) {
-    super(msg, nested, failed);
-  }
-
-}
-
diff --git a/api20/src/java/javax/jdo/JDODetachedFieldAccessException.java b/api20/src/java/javax/jdo/JDODetachedFieldAccessException.java
deleted file mode 100644
index 343e019..0000000
--- a/api20/src/java/javax/jdo/JDODetachedFieldAccessException.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDODetachedFieldAccessException.java
- *
- */
-
-package javax.jdo;
-
-/** This class represents exceptions caused by access of an unloaded field while
- *  the instance is detached.
- *
- * @version 2.0
- * @since 2.0
- */
-public class JDODetachedFieldAccessException extends JDOUserException {
-
-  /**
-   * Constructs a new <code>JDODetachedFieldAccessException</code> without a 
-   * detail message.
-   * @since 2.0
-   */
-  public JDODetachedFieldAccessException() {
-  }
-  
-
-  /**
-   * Constructs a new <code>JDODetachedFieldAccessException</code> with the 
-   * specified detail message.
-   * @param msg the detail message.
-   * @since 2.0
-   */
-  public JDODetachedFieldAccessException(String msg) {
-    super(msg);
-  }
-
-  /**
-   * Constructs a new <code>JDODetachedFieldAccessException</code> with the
-   * specified detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   * @since 2.0
-   */
-  public JDODetachedFieldAccessException(String msg, Throwable[] nested) {
-    super(msg, nested);
-  }
-
-  /**
-   * Constructs a new <code>JDODetachedFieldAccessException</code> with the
-   * specified detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   * @since 2.0
-   */
-  public JDODetachedFieldAccessException(String msg, Throwable nested) {
-    super(msg, nested);
-  }
-}
-
diff --git a/api20/src/java/javax/jdo/JDOException.java b/api20/src/java/javax/jdo/JDOException.java
deleted file mode 100644
index 813b559..0000000
--- a/api20/src/java/javax/jdo/JDOException.java
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOException.java
- *
- */
-
-package javax.jdo;
-
-import javax.jdo.spi.I18NHelper;
-
-/** This is the root of all JDO Exceptions.  It contains an optional detail
- * message, an optional nested <code>Throwable</code> array and an optional failed object.
- * @author Craig Russell
- * @version 1.0.2
- */
-public class JDOException extends java.lang.RuntimeException {
-  
-  /** This exception was generated because of an exception in the runtime library.
-   * @serial the nested <code>Throwable</code> array
-   */
-  Throwable[] nested;
-  
-  /** This exception may be the result of incorrect parameters supplied
-   * to an API.  This is the object from which the user can determine
-   * the cause of the problem.
-   * @serial the failed <code>Object</code>
-   */
-  Object failed;
-
-    /** The Internationalization message helper.
-     */
-    private static I18NHelper msg = I18NHelper.getInstance ("javax.jdo.Bundle"); //NOI18N
-
-    /** Flag indicating whether printStackTrace is being executed.
-     */
-    private boolean inPrintStackTrace = false;
-    
-  /**
-   * Constructs a new <code>JDOException</code> without a detail message.
-   */
-  public JDOException() {
-  }
-  
-
-  /**
-   * Constructs a new <code>JDOException</code> with the specified detail message.
-   * @param msg the detail message.
-   */
-  public JDOException(String msg) {
-    super(msg);
-  }
-
-  /** Constructs a new <code>JDOException</code> with the specified detail message
-   * and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDOException(String msg, Throwable[] nested) {
-    super(msg);
-    this.nested = nested;
-  }
-  
-  /** Constructs a new <code>JDOException</code> with the specified detail message
-   * and nested <code>Throwable</code>.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   */
-  public JDOException(String msg, Throwable nested) {
-    super(msg);
-    this.nested = new Throwable[] {nested};
-  }
-  
-  /** Constructs a new <code>JDOException</code> with the specified detail message
-   * and failed object.
-   * @param msg the detail message.
-   * @param failed the failed object.
-   */
-  public JDOException(String msg, Object failed) {
-    super(msg);
-    this.failed = failed;
-  }
-  
-  /** Constructs a new <code>JDOException</code> with the specified detail message,
-   * nested <code>Throwable</code>s, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   * @param failed the failed object.
-   */
-  public JDOException(String msg, Throwable[] nested, Object failed) {
-    super(msg);
-    this.nested = nested;
-    this.failed = failed;
-  }
-  
-  /** Constructs a new <code>JDOException</code> with the specified detail message,
-   * nested <code>Throwable</code>, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   * @param failed the failed object.
-   */
-  public JDOException(String msg, Throwable nested, Object failed) {
-    super(msg);
-    this.nested = new Throwable[] {nested};
-    this.failed = failed;
-  }
-  
-  /** The exception may include a failed object.
-   * @return the failed object.
-   */
-  public Object getFailedObject() {
-    return failed;
-  }
-  
-  /** The exception may have been caused by multiple exceptions in the runtime.
-   * If multiple objects caused the problem, each failed object will have
-   * its own <code>Exception</code>.
-   * @return the nested Throwable array.
-   */
-  public Throwable[] getNestedExceptions() {
-    return nested;
-  }
-  
-  /** Often there is only one nested exception, and this method returns it.
-   * If there are more than one, then this method returns the first nested
-   * exception. If there is no nested exception, then null is returned.
-   * @return the first or only nested Throwable.
-   * @since 1.0.1
-   */
-  public synchronized Throwable getCause() {
-      // super.printStackTrace calls getCause to handle the cause. 
-      // Returning null prevents the superclass from handling the cause;
-      // instead the local implementation of printStackTrace should
-      // handle the cause. Otherwise, the cause is printed twice.
-      if (nested == null || nested.length == 0 || inPrintStackTrace) {
-          return null;
-      } else {
-          return nested[0];
-      }
-  }
-  
-  /** JDK 1.4 includes a new chaining mechanism for Throwable, but since
-   * JDO has its own "legacy" chaining mechanism, the "standard" mechanism
-   * cannot be used. This method always throws a JDOFatalInternalException.
-   * @param cause ignored.
-   * @return never.
-   */
-  public Throwable initCause(Throwable cause) {
-      throw new JDOFatalInternalException(msg.msg("ERR_CannotInitCause"));
-  }
-  
-  /** The <code>String</code> representation includes the name of the class,
-   * the descriptive comment (if any),
-   * the <code>String</code> representation of the failed <code>Object</code> (if any),
-   * and the <code>String</code> representation of the nested <code>Throwable</code>s (if any).
-   * @return the <code>String</code>.
-   */
-  public synchronized String toString() {
-    int len = nested==null?0:nested.length;
-    // calculate approximate size of the String to return
-    StringBuffer sb = new StringBuffer (10 + 100 * len);
-    sb.append (super.toString());
-    // include failed object information
-    if (failed != null) {
-        sb.append ("\n").append (msg.msg ("MSG_FailedObject"));
-      String failedToString = null;
-      try {
-          failedToString = failed.toString();
-      } catch (Exception ex) {
-          // include the information from the exception thrown by failed.toString
-          Object objectId = JDOHelper.getObjectId(failed);
-          if (objectId == null) {
-              failedToString = msg.msg("MSG_ExceptionGettingFailedToString", //NOI18N
-                                       exceptionToString(ex));
-          }
-          else {
-              // include the ObjectId information
-              String objectIdToString = null;
-              try {
-                  objectIdToString = objectId.toString();
-              }
-              catch (Exception ex2) {
-                  objectIdToString = exceptionToString(ex2);
-              }
-              failedToString = msg.msg("MSG_ExceptionGettingFailedToStringObjectId", //NOI18N
-                                       exceptionToString(ex), objectIdToString);
-          }
-      }
-      sb.append (failedToString);
-    }
-    // include nested Throwable information, but only if not called by
-    // printStackTrace; the stacktrace will include the cause anyway.
-    if (len > 0 && !inPrintStackTrace) {
-      sb.append ("\n").append (msg.msg ("MSG_NestedThrowables")).append ("\n");
-      Throwable exception = nested[0];
-      sb.append (exception==null?"null":exception.toString()); //NOI18N
-      for (int i=1; i<len; ++i) {
-        sb.append ("\n"); //NOI18N
-        exception = nested[i];
-      sb.append (exception==null?"null":exception.toString()); //NOI18N
-      }
-    }
-    return sb.toString();
-  }    
-  
-    /**
-     * Prints this <code>JDOException</code> and its backtrace to the 
-     * standard error output.
-     * Print nested Throwables' stack trace as well.
-     */
-    public void printStackTrace() { 
-        printStackTrace (System.err);
-    }
-
-    /**
-     * Prints this <code>JDOException</code> and its backtrace to the 
-     * specified print stream.
-     * Print nested Throwables' stack trace as well.
-     * @param s <code>PrintStream</code> to use for output
-     */
-    public synchronized void printStackTrace(java.io.PrintStream s) { 
-    int len = nested==null?0:nested.length;
-        synchronized (s) {
-            inPrintStackTrace = true;
-            super.printStackTrace(s);
-            if (len > 0) {
-                s.println (msg.msg ("MSG_NestedThrowablesStackTrace"));
-                for (int i=0; i<len; ++i) {
-                    Throwable exception = nested[i];
-                    if (exception != null) {
-                        exception.printStackTrace(s);
-                    }
-                }
-            }
-            inPrintStackTrace = false;
-        }
-    }
-
-    /**
-     * Prints this <code>JDOException</code> and its backtrace to the specified
-     * print writer.
-     * Print nested Throwables' stack trace as well.
-     * @param s <code>PrintWriter</code> to use for output
-     */
-    public synchronized void printStackTrace(java.io.PrintWriter s) { 
-    int len = nested==null?0:nested.length;
-        synchronized (s) {
-            inPrintStackTrace = true;
-            super.printStackTrace(s);
-            if (len > 0) {
-                s.println (msg.msg ("MSG_NestedThrowablesStackTrace"));
-                for (int i=0; i<len; ++i) {
-                    Throwable exception = nested[i];
-                    if (exception != null) {
-                        exception.printStackTrace(s);
-                    }
-                }
-            }
-            inPrintStackTrace = false;
-        }
-    }
-
-    /**
-     * Helper method returning a short description of the exception passed
-     * as an argument. The returned string has the format defined by
-     * Throwable.toString. If the exception has a non-null detail message 
-     * string, then it returns the name of exception class concatenated
-     * with ": " concatenated with the detailed message. Otherwise it
-     * returns the name of exception class.
-     * @param ex the exception to be represented.
-     * @return a string representation of the exception passed as an argument.
-     */
-    private static String exceptionToString(Exception ex)
-    {
-        if (ex == null) return null;
-        String s = ex.getClass().getName();
-        String message = ex.getMessage();
-        return (message != null) ? (s + ": " + message) : s;
-    }
-}
-
diff --git a/api20/src/java/javax/jdo/JDOFatalDataStoreException.java b/api20/src/java/javax/jdo/JDOFatalDataStoreException.java
deleted file mode 100644
index f7c0ca0..0000000
--- a/api20/src/java/javax/jdo/JDOFatalDataStoreException.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOFatalDataStoreException.java
- *
- */
-
-package javax.jdo;
-
-/** This class represents data store exceptions that cannot be retried.
- *
- * @version 1.0.1
- */
-public class JDOFatalDataStoreException extends JDOFatalException {
-
-  /**
-   * Constructs a new <code>JDOFatalDataStoreException</code> without a detail message.
-   */
-  public JDOFatalDataStoreException() {
-  }
-  
-
-  /**
-   * Constructs a new <code>JDOFatalDataStoreException</code> with the specified detail message.
-   * @param msg the detail message.
-   */
-  public JDOFatalDataStoreException(String msg) {
-    super(msg);
-  }
-
-  /** Constructs a new <code>JDOFatalDataStoreException</code> with the specified detail message
-   * and failed object.
-   * @param msg the detail message.
-   * @param failed the failed object.
-   */
-  public JDOFatalDataStoreException(String msg, Object failed) {
-    super(msg, failed);
-  }
-  
-  /**
-   * Constructs a new <code>JDOFatalDataStoreException</code> with the specified
-   * detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDOFatalDataStoreException(String msg, Throwable[] nested) {
-    super(msg, nested);
-  }
-
-  /**
-   * Constructs a new <code>JDOFatalDataStoreException</code> with the specified
-   * detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   */
-  public JDOFatalDataStoreException(String msg, Throwable nested) {
-    super(msg, nested);
-  }
-}
-
diff --git a/api20/src/java/javax/jdo/JDOFatalException.java b/api20/src/java/javax/jdo/JDOFatalException.java
deleted file mode 100644
index 4df8e6c..0000000
--- a/api20/src/java/javax/jdo/JDOFatalException.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOFatalException.java
- *
- */
-
-package javax.jdo;
-
-/** This class represents exceptions that are fatal; that is, the condition
- * that caused it cannot be bypassed even if the operation is retried.
- *
- * @version 1.0
- */
-public class JDOFatalException extends JDOException {
-
-  /**
-   * Constructs a new <code>JDOFatalException</code> without a detail message.
-   */
-  public JDOFatalException() {
-  }
-  
-
-  /**
-   * Constructs a new <code>JDOFatalException</code> with the specified detail message.
-   * @param msg the detail message.
-   */
-  public JDOFatalException(String msg) {
-    super(msg);
-  }
-
-  /**
-   * Constructs a new <code>JDOFatalException</code> with the specified detail
-   * message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDOFatalException(String msg, Throwable[] nested) {
-    super(msg, nested);
-  }
-  
-  /**
-   * Constructs a new <code>JDOFatalException</code> with the specified detail
-   * message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   */
-  public JDOFatalException(String msg, Throwable nested) {
-    super(msg, nested);
-  }
-  
-  /** Constructs a new <code>JDOFatalException</code> with the specified detail message
-   * and failed object.
-   * @param msg the detail message.
-   * @param failed the failed object.
-   */
-  public JDOFatalException(String msg, Object failed) {
-    super(msg, failed);
-  }
-  
-  /** Constructs a new <code>JDOFatalException</code> with the specified detail message,
-   * nested <code>Throwable</code>s, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   * @param failed the failed object.
-   */
-  public JDOFatalException(String msg, Throwable[] nested, Object failed) {
-    super(msg, nested, failed);
-    
-  }
-  /** Constructs a new <code>JDOFatalException</code> with the specified detail message,
-   * nested <code>Throwable</code>s, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   * @param failed the failed object.
-   */
-  public JDOFatalException(String msg, Throwable nested, Object failed) {
-    super(msg, nested, failed);
-  }
-}
-
diff --git a/api20/src/java/javax/jdo/JDOFatalInternalException.java b/api20/src/java/javax/jdo/JDOFatalInternalException.java
deleted file mode 100644
index 264ee4c..0000000
--- a/api20/src/java/javax/jdo/JDOFatalInternalException.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOFatalInternalException.java
- *
- */
-
-package javax.jdo;
-
-/** This class represents errors in the implementation for which no user
- * error handling is possible.  The error should be reported to the JDO
- * vendor for corrective action.
- *
- * @version 1.0
- */
-public class JDOFatalInternalException extends JDOFatalException {
-
-  /**
-   * Constructs a new <code>JDOFatalInternalException</code> without a detail message.
-   */
-  public JDOFatalInternalException() {
-  }
-  
-
-  /**
-   * Constructs a new <code>JDOFatalInternalException</code> with the specified detail message.
-   * @param msg the detail message.
-   */
-  public JDOFatalInternalException(String msg) {
-    super(msg);
-  }
-
-  /**
-   * Constructs a new <code>JDOFatalInternalException</code> with the specified
-   * detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDOFatalInternalException(String msg, Throwable[] nested) {
-    super(msg, nested);
-  }
-
-  /**
-   * Constructs a new <code>JDOFatalInternalException</code> with the specified
-   * detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   */
-  public JDOFatalInternalException(String msg, Throwable nested) {
-    super(msg, nested);
-  }
-}
-
diff --git a/api20/src/java/javax/jdo/JDOFatalUserException.java b/api20/src/java/javax/jdo/JDOFatalUserException.java
deleted file mode 100644
index c704730..0000000
--- a/api20/src/java/javax/jdo/JDOFatalUserException.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOUserException.java
- *
- */
-
-package javax.jdo;
-
-/** This class represents user errors that cannot be retried.  
- *
- * @version 1.0
- */
-public class JDOFatalUserException extends JDOFatalException {
-
-  /**
-   * Constructs a new <code>JDOFatalUserException</code> without a detail message.
-   */
-  public JDOFatalUserException() {
-  }
-  
-
-  /**
-   * Constructs a new <code>JDOFatalUserException</code> with the specified detail message.
-   * @param msg the detail message.
-   */
-  public JDOFatalUserException(String msg) {
-    super(msg);
-  }
-
-  /**
-   * Constructs a new <code>JDOFatalUserException</code> with the specified
-   * detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDOFatalUserException(String msg, Throwable[] nested) {
-    super(msg, nested);
-  }
-  
-  /**
-   * Constructs a new <code>JDOFatalUserException</code> with the specified
-   * detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   */
-  public JDOFatalUserException(String msg, Throwable nested) {
-    super(msg, nested);
-  }
-  
-  /** Constructs a new <code>JDOFatalUserException</code> with the specified
-   * detail message and failed object.
-   * @param msg the detail message.
-   * @param failed the failed object.
-   */
-  public JDOFatalUserException(String msg, Object failed) {
-    super(msg, failed);
-  }
-  
-  /** Constructs a new <code>JDOFatalUserException</code> with the specified
-   * detail message, nested <code>Throwable</code>s, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   * @param failed the failed object.
-   */
-  public JDOFatalUserException(String msg, Throwable[] nested, Object failed) {
-    super(msg, nested, failed);
-  }
-  
-  /** Constructs a new <code>JDOFatalUserException</code> with the specified
-   * detail message, nested <code>Throwable</code>s, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   * @param failed the failed object.
-   */
-  public JDOFatalUserException(String msg, Throwable nested, Object failed) {
-    super(msg, nested, failed);
-  }
-}
-
diff --git a/api20/src/java/javax/jdo/JDOHelper.java b/api20/src/java/javax/jdo/JDOHelper.java
deleted file mode 100644
index 44d0622..0000000
--- a/api20/src/java/javax/jdo/JDOHelper.java
+++ /dev/null
@@ -1,835 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOHelper.java
- *
- */
- 
-package javax.jdo;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-import java.io.IOException;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.InvocationTargetException;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Properties;
-
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-
-import javax.jdo.spi.I18NHelper;
-import javax.jdo.spi.JDOImplHelper;
-import javax.jdo.spi.JDOImplHelper.StateInterrogationBooleanReturn;
-import javax.jdo.spi.JDOImplHelper.StateInterrogationObjectReturn;
-import javax.jdo.spi.PersistenceCapable;
-import javax.jdo.spi.StateInterrogation;
-
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-
-import javax.rmi.PortableRemoteObject;
-
-
-/**
- * This class can be used by a JDO-aware application to call the JDO behavior
- * of <code>PersistenceCapable</code> instances without declaring them to be
- * <code>PersistenceCapable</code>.
- * <P>It is also used to acquire a <code>PersistenceManagerFactory</code> via 
- * various methods.
- * <P>This helper class defines static methods that allow a JDO-aware
- * application to examine the runtime state of instances.  For example,
- * an application can discover whether the instance is persistent, 
- * transactional, dirty, new, deleted, or detached; and to get its associated
- * <code>PersistenceManager</code> if it has one.
- * 
- * @version 2.0
- */
-public class JDOHelper extends Object {
-      
-    /** The Internationalization message helper.
-     */
-    private final static I18NHelper msg = 
-        I18NHelper.getInstance ("javax.jdo.Bundle"); //NOI18N
-
-    /** The JDOImplHelper instance used for handling non-binary-compatible
-     *  implementations.
-     */
-    private static JDOImplHelper implHelper = (JDOImplHelper)
-        AccessController.doPrivileged(
-            new PrivilegedAction () {
-                public Object run () {
-                    return JDOImplHelper.getInstance();
-                }
-            }
-        );
-
-   /** The stateless instance used for handling non-binary-compatible
-    *  implementations of getPersistenceManager.
-    */
-    static StateInterrogationObjectReturn getPersistenceManager =
-        new StateInterrogationObjectReturn() {
-            public Object get(Object pc, StateInterrogation si) {
-                return si.getPersistenceManager(pc);
-            }
-        };
-
-   /** The stateless instance used for handling non-binary-compatible
-    *  implementations of getObjectId.
-    */
-    static StateInterrogationObjectReturn getObjectId =
-        new StateInterrogationObjectReturn() {
-            public Object get(Object pc, StateInterrogation si) {
-                return si.getObjectId(pc);
-            }
-        };
-
-   /** The stateless instance used for handling non-binary-compatible
-    *  implementations of getTransactionalObjectId.
-    */
-    static StateInterrogationObjectReturn getTransactionalObjectId =
-        new StateInterrogationObjectReturn() {
-            public Object get(Object pc, StateInterrogation si) {
-                return si.getTransactionalObjectId(pc);
-            }
-        };
-
-   /** The stateless instance used for handling non-binary-compatible
-    *  implementations of getVersion.
-    */
-    static StateInterrogationObjectReturn getVersion =
-        new StateInterrogationObjectReturn() {
-            public Object get(Object pc, StateInterrogation si) {
-                return si.getVersion(pc);
-            }
-        };
-
-   /** The stateless instance used for handling non-binary-compatible
-    *  implementations of isPersistent.
-    */
-    static StateInterrogationBooleanReturn isPersistent =
-        new StateInterrogationBooleanReturn() {
-            public Boolean is(Object pc, StateInterrogation si) {
-                return si.isPersistent(pc);
-            }
-        };
-
-   /** The stateless instance used for handling non-binary-compatible
-    *  implementations of isTransactional.
-    */
-    static StateInterrogationBooleanReturn isTransactional =
-        new StateInterrogationBooleanReturn() {
-            public Boolean is(Object pc, StateInterrogation si) {
-                return si.isTransactional(pc);
-            }
-        };
-
-   /** The stateless instance used for handling non-binary-compatible
-    *  implementations of isDirty.
-    */
-    static StateInterrogationBooleanReturn isDirty =
-        new StateInterrogationBooleanReturn() {
-            public Boolean is(Object pc, StateInterrogation si) {
-                return si.isDirty(pc);
-            }
-        };
-
-   /** The stateless instance used for handling non-binary-compatible
-    *  implementations of isNew.
-    */
-    static StateInterrogationBooleanReturn isNew =
-        new StateInterrogationBooleanReturn() {
-            public Boolean is(Object pc, StateInterrogation si) {
-                return si.isNew(pc);
-            }
-        };
-
-   /** The stateless instance used for handling non-binary-compatible
-    *  implementations of isDeleted.
-    */
-    static StateInterrogationBooleanReturn isDeleted =
-        new StateInterrogationBooleanReturn() {
-            public Boolean is(Object pc, StateInterrogation si) {
-                return si.isDeleted(pc);
-            }
-        };
-
-   /** The stateless instance used for handling non-binary-compatible
-    *  implementations of isDetached.
-    */
-    static StateInterrogationBooleanReturn isDetached =
-        new StateInterrogationBooleanReturn() {
-            public Boolean is(Object pc, StateInterrogation si) {
-                return si.isDetached(pc);
-            }
-        };
-
-    /** Return the associated <code>PersistenceManager</code> if there is one.
-     * Transactional and persistent instances return the associated
-     * <code>PersistenceManager</code>.  
-     *
-     * <P>Transient non-transactional instances and instances of classes 
-     * that do not implement <code>PersistenceCapable</code> return 
-     * <code>null</code>.
-     * @see PersistenceCapable#jdoGetPersistenceManager()
-     * @param pc the <code>PersistenceCapable</code> instance.
-     * @return the <code>PersistenceManager</code> associated with the parameter
-     * instance.
-     */
-     public static PersistenceManager getPersistenceManager(Object pc) {
-        if (pc instanceof PersistenceCapable) {
-            return ((PersistenceCapable)pc).jdoGetPersistenceManager();
-        } else {
-            return (PersistenceManager)
-                implHelper.nonBinaryCompatibleGet(pc, getPersistenceManager);
-        }
-      }
-    
-    /** Explicitly mark the parameter instance and field dirty.
-     * Normally, <code>PersistenceCapable</code> classes are able to detect 
-     * changes made to their fields.  However, if a reference to an array is 
-     * given to a method outside the class, and the array is modified, then the
-     * persistent instance is not aware of the change.  This API allows the
-     * application to notify the instance that a change was made to a field.
-     *
-     * <P>Transient instances and instances of classes 
-     * that do not implement <code>PersistenceCapable</code> ignore this method.
-     * @see PersistenceCapable#jdoMakeDirty(String fieldName)
-     * @param pc the <code>PersistenceCapable</code> instance.
-     * @param fieldName the name of the field to be marked dirty.
-     */
-    public static void makeDirty(Object pc, String fieldName) {
-        if (pc instanceof PersistenceCapable) {
-            ((PersistenceCapable)pc).jdoMakeDirty(fieldName);
-        } else {
-             implHelper.nonBinaryCompatibleMakeDirty(pc, fieldName);
-        }
-    }
-    
-    /** Return a copy of the JDO identity associated with the parameter 
-     * instance.
-     *
-     * <P>Persistent instances of <code>PersistenceCapable</code> classes have a
-     * JDO identity managed by the <code>PersistenceManager</code>.  This method
-     * returns a copy of the ObjectId that represents the JDO identity.  
-     * 
-     * <P>Transient instances and instances of classes that do not implement 
-     * <code>PersistenceCapable</code> return <code>null</code>.
-     *
-     * <P>The ObjectId may be serialized
-     * and later restored, and used with a <code>PersistenceManager</code> from 
-     * the same JDO implementation to locate a persistent instance with the same
-     * data store identity.
-     *
-     * <P>If the JDO identity is managed by the application, then the ObjectId 
-     * may be used with a <code>PersistenceManager</code> from any JDO 
-     * implementation that supports the <code>PersistenceCapable</code> class.
-     *
-     * <P>If the JDO identity is not managed by the application or the data 
-     * store, then the ObjectId returned is only valid within the current 
-     * transaction.
-     *<P>
-     * @see PersistenceManager#getObjectId(Object pc)
-     * @see PersistenceCapable#jdoGetObjectId()
-     * @see PersistenceManager#getObjectById(Object oid, boolean validate)
-     * @param pc the PersistenceCapable instance.
-     * @return a copy of the ObjectId of the parameter instance as of the 
-     * beginning of the transaction.
-     */
-    public static Object getObjectId(Object pc) {
-      if (pc instanceof PersistenceCapable) {
-          return ((PersistenceCapable)pc).jdoGetObjectId();
-        } else {
-            return implHelper.nonBinaryCompatibleGet(pc, getObjectId);
-        }
-    }
-
-    /** Get object ids for a collection of instances. For each instance
-     * in the parameter, the getObjectId method is called. This method
-     * returns one identity instance for each element 
-     * in the parameter. The order of iteration of the returned
-     * Collection exactly matches the order of iteration of the
-     * parameter Collection.
-     * @param pcs the persistence-capable instances
-     * @return the object ids of the parameters
-     * @see #getObjectId(Object pc)
-     * @see #getObjectIds(Object[] pcs)
-     * @since 2.0
-     */
-    public static Collection getObjectIds(Collection pcs) {
-        ArrayList result = new ArrayList();
-        for (Iterator it = pcs.iterator(); it.hasNext();) {
-            result.add(getObjectId(it.next()));
-        }
-        return result;
-    }
-
-    /** Get object ids for an array of instances. For each instance
-     * in the parameter, the getObjectId method is called. This method
-     * returns one identity instance for each element 
-     * in the parameter. The order of instances of the returned
-     * array exactly matches the order of instances of the
-     * parameter array.
-     * @param pcs the persistence-capable instances
-     * @return the object ids of the parameters
-     * @see #getObjectId(Object pc)
-     * @see #getObjectIds(Collection pcs)
-     * @since 2.0
-     */
-    public static Object[] getObjectIds(Object[] pcs) {
-        Object[] result = new Object[pcs.length];
-        for (int i = 0; i < pcs.length; ++i) {
-            result[i] = getObjectId(pcs[i]);
-        }
-        return result;
-    }
-
-    /** Return a copy of the JDO identity associated with the parameter 
-     * instance.
-     *
-     * @see PersistenceCapable#jdoGetTransactionalObjectId()
-     * @see PersistenceManager#getObjectById(Object oid, boolean validate)
-     * @param pc the <code>PersistenceCapable</code> instance.
-     * @return a copy of the ObjectId of the parameter instance as modified in 
-     * this transaction.
-     */
-    public static Object getTransactionalObjectId(Object pc) {
-      if (pc instanceof PersistenceCapable) {
-          return ((PersistenceCapable)pc).jdoGetTransactionalObjectId();
-        } else {
-            return implHelper.nonBinaryCompatibleGet(
-                pc, getTransactionalObjectId);
-        }
-    }
-    
-    /**
-     * Return the version of the instance.
-     * @since 2.0
-     * @param pc the instance
-     * @return the version of the instance
-     */
-    public static Object getVersion (Object pc) {
-      if (pc instanceof PersistenceCapable) {
-          return ((PersistenceCapable)pc).jdoGetVersion();
-        } else {
-            return implHelper.nonBinaryCompatibleGet(pc, getVersion);
-        }
-    }
-    /** Tests whether the parameter instance is dirty.
-     *
-     * Instances that have been modified, deleted, or newly 
-     * made persistent in the current transaction return <code>true</code>.
-     *
-     *<P>Transient instances and instances of classes that do not implement 
-     * <code>PersistenceCapable</code> return <code>false</code>.
-     *<P>
-     * @see javax.jdo.spi.StateManager#makeDirty(PersistenceCapable pc, 
-     * String fieldName)
-     * @see PersistenceCapable#jdoIsDirty()
-     * @param pc the <code>PersistenceCapable</code> instance.
-     * @return <code>true</code> if the parameter instance has been modified in 
-     * the current transaction.
-     */
-    public static boolean isDirty(Object pc) {
-      if (pc instanceof PersistenceCapable) {
-          return ((PersistenceCapable)pc).jdoIsDirty();
-        } else {
-            return implHelper.nonBinaryCompatibleIs(pc, isDirty);
-        }
-    }
-
-    /** Tests whether the parameter instance is transactional.
-     *
-     * Instances whose state is associated with the current transaction 
-     * return true. 
-     *
-     *<P>Transient instances and instances of classes that do not implement 
-     * <code>PersistenceCapable</code> return <code>false</code>.
-     * @see PersistenceCapable#jdoIsTransactional()
-     * @param pc the <code>PersistenceCapable</code> instance.
-     * @return <code>true</code> if the parameter instance is transactional.
-     */
-    public static boolean isTransactional(Object pc) {
-      if (pc instanceof PersistenceCapable) {
-          return ((PersistenceCapable)pc).jdoIsTransactional();
-        } else {
-            return implHelper.nonBinaryCompatibleIs(pc, isTransactional);
-        }
-    }
-
-    /** Tests whether the parameter instance is persistent.
-     *
-     * Instances that represent persistent objects in the data store 
-     * return <code>true</code>. 
-     *
-     *<P>Transient instances and instances of classes that do not implement 
-     * <code>PersistenceCapable</code> return <code>false</code>.
-     *<P>
-     * @see PersistenceManager#makePersistent(Object pc)
-     * @see PersistenceCapable#jdoIsPersistent()
-     * @param pc the <code>PersistenceCapable</code> instance.
-     * @return <code>true</code> if the parameter instance is persistent.
-     */
-    public static boolean isPersistent(Object pc) {
-      if (pc instanceof PersistenceCapable) {
-          return ((PersistenceCapable)pc).jdoIsPersistent();
-        } else {
-            return implHelper.nonBinaryCompatibleIs(pc, isPersistent);
-        }
-    }
-
-    /** Tests whether the parameter instance has been newly made persistent.
-     *
-     * Instances that have been made persistent in the current transaction 
-     * return <code>true</code>.
-     *
-     *<P>Transient instances and instances of classes that do not implement 
-     * <code>PersistenceCapable</code> return <code>false</code>.
-     *<P>
-     * @see PersistenceManager#makePersistent(Object pc)
-     * @see PersistenceCapable#jdoIsNew()
-     * @param pc the <code>PersistenceCapable</code> instance.
-     * @return <code>true</code> if the parameter instance was made persistent
-     * in the current transaction.
-     */
-    public static boolean isNew(Object pc) {
-      if (pc instanceof PersistenceCapable) {
-          return ((PersistenceCapable)pc).jdoIsNew();
-        } else {
-            return implHelper.nonBinaryCompatibleIs(pc, isNew);
-        }
-    }
-
-    /** Tests whether the parameter instance has been deleted.
-     *
-     * Instances that have been deleted in the current transaction return 
-     * <code>true</code>.
-     *
-     *<P>Transient instances and instances of classes that do not implement 
-     * <code>PersistenceCapable</code> return <code>false</code>.
-     *<P>
-     * @see PersistenceManager#deletePersistent(Object pc)
-     * @see PersistenceCapable#jdoIsDeleted()
-     * @param pc the <code>PersistenceCapable</code> instance.
-     * @return <code>true</code> if the parameter instance was deleted
-     * in the current transaction.
-     */
-    public static boolean isDeleted(Object pc) {
-      if (pc instanceof PersistenceCapable) {
-          return ((PersistenceCapable)pc).jdoIsDeleted();
-        } else {
-            return implHelper.nonBinaryCompatibleIs(pc, isDeleted);
-        }
-    }
-    
-    /**
-     * Tests whether the parameter instance has been detached.
-     * 
-     * Instances that have been detached return true.
-     * 
-     * <P>Transient instances return false.
-     * <P>
-     * @see PersistenceCapable#jdoIsDetached()
-     * @return <code>true</code> if this instance is detached.
-     * @since 2.0
-     * @param pc the instance
-     */
-    public static boolean isDetached(Object pc) {
-      if (pc instanceof PersistenceCapable) {
-          return ((PersistenceCapable)pc).jdoIsDetached();
-        } else {
-            return implHelper.nonBinaryCompatibleIs(pc, isDetached);
-        }
-    }
-    
-    /** Get a <code>PersistenceManagerFactory</code> based on a <code>Properties</code> 
-     * instance, using the current thread's context class loader to locate the
-     * <code>PersistenceManagerFactory</code> class.
-     * @return the <code>PersistenceManagerFactory</code>.
-     * @param props a <code>Properties</code> instance with properties of the 
-     * <code>PersistenceManagerFactory</code>.
-     * @see #getPersistenceManagerFactory(Map,ClassLoader)
-     */
-    public static PersistenceManagerFactory getPersistenceManagerFactory
-            (Map props) {
-        ClassLoader cl = getContextClassLoader();
-        return getPersistenceManagerFactory (props, cl);
-    }
-    
-    /**
-     * Get a <code>PersistenceManagerFactory</code> based on a 
-     * <code>Properties</code> instance and a class loader.
-     * The following are standard key values:
-     * <BR><code>"javax.jdo.PersistenceManagerFactoryClass"
-     * <BR>"javax.jdo.option.Optimistic",
-     * <BR>"javax.jdo.option.RetainValues",
-     * <BR>"javax.jdo.option.RestoreValues",
-     * <BR>"javax.jdo.option.IgnoreCache",
-     * <BR>"javax.jdo.option.NontransactionalRead",
-     * <BR>"javax.jdo.option.NontransactionalWrite",
-     * <BR>"javax.jdo.option.Multithreaded",
-     * <BR>"javax.jdo.option.ConnectionUserName",
-     * <BR>"javax.jdo.option.ConnectionPassword",
-     * <BR>"javax.jdo.option.ConnectionURL",
-     * <BR>"javax.jdo.option.ConnectionFactoryName",
-     * <BR>"javax.jdo.option.ConnectionFactory2Name",
-     * <BR>"javax.jdo.option.Mapping",
-     * <BR>"javax.jdo.mapping.Catalog",
-     * <BR>"javax.jdo.mapping.Schema".
-     * </code><P>JDO implementations
-     * are permitted to define key values of their own.  Any key values not
-     * recognized by the implementation must be ignored.  Key values that are
-     * recognized but not supported by an implementation must result in a
-     * <code>JDOFatalUserException</code> thrown by the method.
-     * <P>The returned <code>PersistenceManagerFactory</code> is not 
-     * configurable (the <code>set<I>XXX</I></code> methods will throw an 
-     * exception).
-     * <P>JDO implementations might manage a map of instantiated
-     * <code>PersistenceManagerFactory</code> instances based on specified 
-     * property key values, and return a previously instantiated 
-     * <code>PersistenceManagerFactory</code> instance.  In this case, the 
-     * properties of the returned instance must exactly match the requested 
-     * properties.
-     * @return the <code>PersistenceManagerFactory</code>.
-     * @param props a <code>Properties</code> instance with properties of the 
-     * <code>PersistenceManagerFactory</code>.
-     * @param cl the class loader to use to load the 
-     * <code>PersistenceManagerFactory</code> class
-     */
-    public static PersistenceManagerFactory getPersistenceManagerFactory
-            (Map props, ClassLoader cl) {
-        String pmfClassName = (String) props.get (
-            "javax.jdo.PersistenceManagerFactoryClass"); //NOI18N
-        if (pmfClassName == null) {
-            throw new JDOFatalUserException (msg.msg(
-                "EXC_GetPMFNoClassNameProperty")); // NOI18N
-        }
-        try {
-            Class pmfClass = cl.loadClass (pmfClassName);
-            Method pmfMethod = pmfClass.getMethod(
-                "getPersistenceManagerFactory", //NOI18N
-                    new Class[] {Map.class});
-            return (PersistenceManagerFactory) pmfMethod.invoke (
-                null, new Object[] {props});
-        } catch (ClassNotFoundException cnfe) {
-            throw new JDOFatalUserException (msg.msg(
-                "EXC_GetPMFClassNotFound", pmfClassName), cnfe); //NOI18N
-        } catch (IllegalAccessException iae) {
-            throw new JDOFatalUserException (msg.msg(
-                "EXC_GetPMFIllegalAccess", pmfClassName), iae); //NOI18N
-        } catch (NoSuchMethodException nsme) {
-            throw new JDOFatalInternalException (msg.msg(
-                "EXC_GetPMFNoSuchMethod"), nsme); //NOI18N
-        } catch (InvocationTargetException ite) {
-            Throwable nested = ite.getTargetException();
-            if  (nested instanceof JDOException) {
-                throw (JDOException)nested;
-            } else throw new JDOFatalInternalException (msg.msg(
-                "EXC_GetPMFUnexpectedException"), ite); //NOI18N
-        } catch (NullPointerException e) {
-            throw new JDOFatalInternalException (msg.msg(
-                "EXC_GetPMFNullPointerException", pmfClassName), e); //NOI18N
-        } catch (ClassCastException e) {
-            throw new JDOFatalInternalException (msg.msg(
-                "EXC_GetPMFClassCastException", pmfClassName), e); //NOI18N
-        } catch (Exception e) {
-            throw new JDOFatalInternalException (msg.msg(
-                "EXC_GetPMFUnexpectedException"), e); //NOI18N
-        }
-    }
-    
-    /**
-     * Returns a {@link PersistenceManagerFactory} configured based
-     * on the properties stored in the resource at
-     * <code>propsResource</code>. This method is equivalent to
-     * invoking {@link
-     * #getPersistenceManagerFactory(String,ClassLoader)} with
-     * <code>Thread.currentThread().getContextClassLoader()</code> as
-     * the <code>loader</code> argument.
-     * @since 2.0
-     * @param propsResource the resource containing the Properties
-     * @return the PersistenceManagerFactory
-     */
-    public static PersistenceManagerFactory getPersistenceManagerFactory
-        (String propsResource) {
-        return getPersistenceManagerFactory (propsResource,
-            getContextClassLoader());
-    }
-
-    /**
-     * Returns a {@link PersistenceManagerFactory} configured based
-     * on the properties stored in the resource at
-     * <code>propsResource</code>. Loads the resource via
-     * <code>loader</code>, and creates a {@link
-     * PersistenceManagerFactory} with <code>loader</code>. Any
-     * <code>IOException</code>s thrown during resource loading will
-     * be wrapped in a {@link JDOFatalUserException}.
-     * @since 2.0
-     * @param propsResource the resource containing the Properties
-     * @param loader the class loader to use to load both the propsResource and 
-     * the <code>PersistenceManagerFactory</code> class
-     * @return the PersistenceManagerFactory
-     */
-    public static PersistenceManagerFactory getPersistenceManagerFactory
-        (String propsResource, ClassLoader loader) {
-        return getPersistenceManagerFactory(propsResource, loader, loader);
-    }
-        
-    /**
-     * Returns a {@link PersistenceManagerFactory} configured based
-     * on the properties stored in the resource at
-     * <code>propsResource</code>. Loads the Properties via
-     * <code>propsLoader</code>, and creates a {@link
-     * PersistenceManagerFactory} with <code>pmfLoader</code>. Any
-     * <code>IOException</code>s thrown during resource loading will
-     * be wrapped in a {@link JDOFatalUserException}.
-     * @since 2.0
-     * @param propsResource the resource containing the Properties
-     * @param propsLoader the class loader to use to load the propsResource
-     * @param pmfLoader the class loader to use to load the 
-     * <code>PersistenceManagerFactory</code> class
-     * @return the PersistenceManagerFactory
-     */
-    public static PersistenceManagerFactory getPersistenceManagerFactory
-        (String propsResource, ClassLoader propsLoader, ClassLoader pmfLoader) {
-        
-        if (propsResource == null)
-            throw new JDOFatalUserException (msg.msg (
-                "EXC_GetPMFNullResource")); //NOI18N
-        if (propsLoader == null)
-            throw new JDOFatalUserException (msg.msg (
-                "EXC_GetPMFNullPropsLoader")); //NOI18N
-        if (pmfLoader == null)
-            throw new JDOFatalUserException (msg.msg (
-                "EXC_GetPMFNullPMFLoader")); //NOI18N
-
-        Properties props = new Properties ();
-        InputStream in = null;
-        try {
-            in = propsLoader.getResourceAsStream (propsResource);
-            if (in == null)
-                throw new JDOFatalUserException (msg.msg (
-                    "EXC_GetPMFNoResource", propsResource, propsLoader)); //NOI18N
-            props.load (in);
-        } catch (IOException ioe) {
-            throw new JDOFatalUserException (msg.msg (
-                "EXC_GetPMFIOExceptionRsrc", propsResource), ioe); //NOI18N
-        }
-        finally {
-            if (in != null)
-                try {
-                    in.close (); 
-                } catch (IOException ioe) { }
-        }
-
-        return getPersistenceManagerFactory (props, pmfLoader);
-    }
-
-
-    /**
-     * Returns a {@link PersistenceManagerFactory} configured based
-     * on the properties stored in the file at
-     * <code>propsFile</code>. This method is equivalent to
-     * invoking {@link
-     * #getPersistenceManagerFactory(File,ClassLoader)} with
-     * <code>Thread.currentThread().getContextClassLoader()</code> as
-     * the <code>loader</code> argument.
-     * @since 2.0
-     * @param propsFile the file containing the Properties
-     * @return the PersistenceManagerFactory
-     */
-    public static PersistenceManagerFactory getPersistenceManagerFactory
-        (File propsFile) {
-        return getPersistenceManagerFactory (propsFile,
-            getContextClassLoader());
-    }
-
-    /**
-     * Returns a {@link PersistenceManagerFactory} configured based
-     * on the properties stored in the file at
-     * <code>propsFile</code>. Creates a {@link
-     * PersistenceManagerFactory} with <code>loader</code>. Any
-     * <code>IOException</code>s or
-     * <code>FileNotFoundException</code>s thrown during resource
-     * loading will be wrapped in a {@link JDOFatalUserException}.
-     * @since 2.0
-     * @param propsFile the file containing the Properties
-     * @param loader the class loader to use to load the 
-     * <code>PersistenceManagerFactory</code> class
-     * @return the PersistenceManagerFactory
-     */
-    public static PersistenceManagerFactory getPersistenceManagerFactory
-        (File propsFile, ClassLoader loader) {
-        if (propsFile == null)
-            throw new JDOFatalUserException (msg.msg (
-                "EXC_GetPMFNullFile")); //NOI18N
-        if (loader == null)
-            throw new JDOFatalUserException (msg.msg (
-                "EXC_GetPMFNullLoader")); //NOI18N
-        Properties props = new Properties ();
-        InputStream in = null;
-        try {
-            in = new FileInputStream (propsFile);
-            props.load (in);
-        } catch (FileNotFoundException fnfe) {
-            throw new JDOFatalUserException (msg.msg (
-                "EXC_GetPMFNoFile", propsFile, loader), fnfe); //NOI18N
-        } catch (IOException ioe) {
-            throw new JDOFatalUserException (msg.msg (
-                "EXC_GetPMFIOExceptionFile", propsFile), ioe); //NOI18N
-        } finally {
-            if (in != null)
-                try { 
-                    in.close (); 
-                } catch (IOException ioe) { }
-        }
-        return getPersistenceManagerFactory (props, loader);
-    }
-
-    /**
-     * Returns a {@link PersistenceManagerFactory} at the JNDI
-     * location specified by <code>jndiLocation</code> in the context
-     * <code>context</code>. If <code>context</code> is
-     * <code>null</code>, <code>new InitialContext()</code> will be
-     * used. This method is equivalent to invoking {@link
-     * #getPersistenceManagerFactory(String,Context,ClassLoader)}
-     * with <code>Thread.currentThread().getContextClassLoader()</code> as
-     * the <code>loader</code> argument.
-     * @since 2.0
-     * @param jndiLocation the JNDI location containing the 
-     * PersistenceManagerFactory
-     * @param context the context in which to find the named
-     * PersistenceManagerFactory
-     * @return the PersistenceManagerFactory
-     */
-    public static PersistenceManagerFactory getPersistenceManagerFactory
-        (String jndiLocation, Context context) {
-        return getPersistenceManagerFactory (jndiLocation, context,
-            getContextClassLoader());
-    }
-
-
-    /**
-     * Returns a {@link PersistenceManagerFactory} at the JNDI
-     * location specified by <code>jndiLocation</code> in the context
-     * <code>context</code>. If <code>context</code> is
-     * <code>null</code>, <code>new InitialContext()</code> will be
-     * used. Creates a {@link PersistenceManagerFactory} with
-     * <code>loader</code>. Any <code>NamingException</code>s thrown
-     * will be wrapped in a {@link JDOFatalUserException}.
-     * @since 2.0
-     * @param jndiLocation the JNDI location containing the 
-     * PersistenceManagerFactory
-     * @param context the context in which to find the named 
-     * PersistenceManagerFactory
-     * @param loader the class loader to use to load the 
-     * <code>PersistenceManagerFactory</code> class
-     * @return the PersistenceManagerFactory
-     */
-    public static PersistenceManagerFactory getPersistenceManagerFactory
-        (String jndiLocation, Context context, ClassLoader loader) {
-        if (jndiLocation == null)
-            throw new JDOFatalUserException (msg.msg (
-                "EXC_GetPMFNullJndiLoc")); //NOI18N
-        if (loader == null)
-            throw new JDOFatalUserException (msg.msg (
-                "EXC_GetPMFNullLoader")); //NOI18N
-        try {
-            if (context == null)
-                context = new InitialContext ();
-
-            Object o = context.lookup (jndiLocation);
-            return (PersistenceManagerFactory) PortableRemoteObject.narrow
-                (o, PersistenceManagerFactory.class);
-        } catch (NamingException ne) {
-            throw new JDOFatalUserException (msg.msg (
-                "EXC_GetPMFNamingException", jndiLocation, loader), ne); //NOI18N
-        }
-    }
-    
-    /**
-     * Returns a {@link PersistenceManagerFactory} configured based
-     * on the Properties stored in the input stream at
-     * <code>stream</code>. This method is equivalent to
-     * invoking {@link
-     * #getPersistenceManagerFactory(InputStream,ClassLoader)} with
-     * <code>Thread.currentThread().getContextClassLoader()</code> as
-     * the <code>loader</code> argument.
-     * @since 2.0
-     * @param stream the stream containing the Properties
-     * @return the PersistenceManagerFactory
-     */
-    public static PersistenceManagerFactory getPersistenceManagerFactory
-        (InputStream stream) {
-        return getPersistenceManagerFactory (stream,
-            getContextClassLoader());
-    }
-
-    /**
-     * Returns a {@link PersistenceManagerFactory} configured based
-     * on the Properties stored in the input stream at
-     * <code>stream</code>. Creates a {@link
-     * PersistenceManagerFactory} with <code>loader</code>. Any
-     * <code>IOException</code>s thrown during resource
-     * loading will be wrapped in a {@link JDOFatalUserException}.
-     * @since 2.0
-     * @param stream the stream containing the Properties
-     * @param loader the class loader to use to load the 
-     * <code>PersistenceManagerFactory</code> class
-     * @return the PersistenceManagerFactory
-     */
-    public static PersistenceManagerFactory getPersistenceManagerFactory
-        (InputStream stream, ClassLoader loader) {
-        if (stream == null)
-            throw new JDOFatalUserException (msg.msg (
-                "EXC_GetPMFNullStream")); //NOI18N
-        if (loader == null)
-            throw new JDOFatalUserException (msg.msg (
-                "EXC_GetPMFNullLoader")); //NOI18N
-        Properties props = new Properties ();
-        try {
-            props.load (stream);
-        } catch (IOException ioe) {
-            throw new JDOFatalUserException
-                (msg.msg ("EXC_GetPMFIOExceptionStream"), ioe); //NOI18N
-        }
-        return getPersistenceManagerFactory (props, loader);
-    }
-
-    /** Get the context class loader associated with the current thread. 
-     * This is done in a doPrivileged block because it is a secure method.
-     * @return the current thread's context class loader.
-     * @since 2.0
-     */
-    private static ClassLoader getContextClassLoader() {
-        return (ClassLoader)AccessController.doPrivileged(
-            new PrivilegedAction () {
-                public Object run () {
-                    return Thread.currentThread().getContextClassLoader();
-                }
-            }
-        );
-    }
-}
diff --git a/api20/src/java/javax/jdo/JDONullIdentityException.java b/api20/src/java/javax/jdo/JDONullIdentityException.java
deleted file mode 100644
index dece60e..0000000
--- a/api20/src/java/javax/jdo/JDONullIdentityException.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDONullIdentityException.java
- *
- */
-
-package javax.jdo;
-
-/** An instance of this class is thrown when attempting to create an object id
- *  when the object id constructor parameter is null. This might occur when 
- *  creating an object id instance from a transient instance where an identity 
- *  field is null.
- *
- * @since 2.0
- * @version 2.0
- */
-public class JDONullIdentityException extends JDOUserException {
-
-  /**
-   * Constructs a new <code>JDONullIdentityException</code> without a detail message.
-   */
-  public JDONullIdentityException() {
-  }
-
-  /**
-   * Constructs a new <code>JDONullIdentityException</code> with the specified detail message.
-   * @param msg the detail message.
-   */
-  public JDONullIdentityException(String msg) {
-    super(msg);
-  }
-
-  /** Constructs a new <code>JDONullIdentityException</code> with the specified detail message
-   * and failed object.
-   * @param msg the detail message.
-   * @param failed the failed object.
-   */
-  public JDONullIdentityException(String msg, Object failed) {
-    super(msg, failed);
-  }
-
-  /**
-   * Constructs a new <code>JDONullIdentityException</code> with the specified
-   * detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDONullIdentityException(String msg, Throwable[] nested) {
-    super(msg, nested);
-  }
-
-  /**
-   * Constructs a new <code>JDONullIdentityException</code> with the specified detail message
-   * and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   */
-  public JDONullIdentityException(String msg, Throwable nested) {
-    super(msg, nested);
-  }
-
-}
diff --git a/api20/src/java/javax/jdo/JDOObjectNotFoundException.java b/api20/src/java/javax/jdo/JDOObjectNotFoundException.java
deleted file mode 100644
index b407e0a..0000000
--- a/api20/src/java/javax/jdo/JDOObjectNotFoundException.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOObjectNotFoundException.java
- *
- */
-
-package javax.jdo;
-
-/** This class represents exceptions caused by the user accessing 
- * an object that does not exist in the datastore.
- *
- * @since 1.0.1
- * @version 1.0.1
- */
-public class JDOObjectNotFoundException extends JDODataStoreException {
-
-  /**
-   * Constructs a new <code>JDOObjectNotFoundException</code> 
-   * without a detail message.
-   */
-  public JDOObjectNotFoundException() {
-  }
-  
-
-  /**
-   * Constructs a new <code>JDOObjectNotFoundException</code> 
-   * with the specified detail message.
-   * @param msg the detail message.
-   */
-  public JDOObjectNotFoundException(String msg) {
-    super(msg);
-  }
-
-  /** Constructs a new <code>JDOObjectNotFoundException</code> with the specified detail message
-   * and failed object.
-   * @param msg the detail message.
-   * @param failed the failed object.
-   */
-  public JDOObjectNotFoundException(String msg, Object failed) {
-    super(msg, failed);
-  }
-  
-  /**
-   * Constructs a new <code>JDOObjectNotFoundException</code> with the
-   * specified detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDOObjectNotFoundException(String msg, Throwable[] nested) {
-    super(msg, nested);
-  }
-
-}
-
diff --git a/api20/src/java/javax/jdo/JDOOptimisticVerificationException.java b/api20/src/java/javax/jdo/JDOOptimisticVerificationException.java
deleted file mode 100644
index 06d75c6..0000000
--- a/api20/src/java/javax/jdo/JDOOptimisticVerificationException.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOOptimisticVerificationException.java
- *
- */
-
-package javax.jdo;
-
-/** This class represents optimistic verification failures.  The nested
- * exception array contains an exception for each instance that failed
- * the optimistic verification.
- *
- * @since 1.0.1
- * @version 1.0.1
- */
-public class JDOOptimisticVerificationException extends JDOFatalDataStoreException {
-
-  /**
-   * Constructs a new <code>JDOOptimisticVerificationException</code> without a 
-   * detail message.
-   */
-  public JDOOptimisticVerificationException() {
-  }
-  
-
-  /**
-   * Constructs a new <code>JDOOptimisticVerificationException</code> with the 
-   * specified detail message.
-   * @param msg the detail message.
-   */
-  public JDOOptimisticVerificationException(String msg) {
-    super(msg);
-  }
-
-  /** Constructs a new <code>JDOOptimisticVerificationException</code> with the 
-   * specified detail message and failed object.
-   * @param msg the detail message.
-   * @param failed the failed object.
-   */
-  public JDOOptimisticVerificationException(String msg, Object failed) {
-    super(msg, failed);
-  }
-  
-  /**
-   * Constructs a new <code>JDOOptimisticVerificationException</code> with the 
-   * specified detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDOOptimisticVerificationException(String msg, Throwable[] nested) {
-    super(msg, nested);
-  }
-
-}
-
diff --git a/api20/src/java/javax/jdo/JDOUnsupportedOptionException.java b/api20/src/java/javax/jdo/JDOUnsupportedOptionException.java
deleted file mode 100644
index 9d06f31..0000000
--- a/api20/src/java/javax/jdo/JDOUnsupportedOptionException.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOUnsupportedOptionException.java
- *
- */
-
-package javax.jdo;
-
-/** This class represents exceptions caused by the use of optional features
- * not supported by the JDO implementation.
- *
- * @version 1.0
- */
-public class JDOUnsupportedOptionException extends JDOUserException {
-
-  /**
-   * Constructs a new <code>JDOUnsupportedOptionException</code> without a detail message.
-   */
-  public JDOUnsupportedOptionException() {
-  }
-  
-
-  /**
-   * Constructs a new <code>JDOUnsupportedOptionException</code> with the specified detail message.
-   * @param msg the detail message.
-   */
-  public JDOUnsupportedOptionException(String msg) {
-    super(msg);
-  }
-
-  /**
-   * Constructs a new <code>JDOUnsupportedOptionException</code> with the
-   * specified detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDOUnsupportedOptionException(String msg, Throwable[] nested) {
-    super(msg, nested);
-  }
-
-  /**
-   * Constructs a new <code>JDOUnsupportedOptionException</code> with the
-   * specified detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   */
-  public JDOUnsupportedOptionException(String msg, Throwable nested) {
-    super(msg, nested);
-  }
-}
-
diff --git a/api20/src/java/javax/jdo/JDOUserCallbackException.java b/api20/src/java/javax/jdo/JDOUserCallbackException.java
deleted file mode 100644
index 31b2374..0000000
--- a/api20/src/java/javax/jdo/JDOUserCallbackException.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOUserCallbackException.java
- *
- */
-
-package javax.jdo;
-
-/** This class represents exceptions caused by exceptions thrown
- * during execution of callbacks or listeners.
- *
- * @version 2.0
- */
-public class JDOUserCallbackException extends JDOUserException {
-
-  /**
-   * Constructs a new <code>JDOUserCallbackException</code> 
-   * without a detail message.
-   */
-  public JDOUserCallbackException() {
-  }
-
-  /**
-   * Constructs a new <code>JDOUserCallbackException</code> 
-   * with the specified detail message.
-   * @param msg the detail message.
-   */
-  public JDOUserCallbackException(String msg) {
-    super(msg);
-  }
-
-  /**
-   * Constructs a new <code>JDOUserCallbackException</code> with the
-   * specified detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDOUserCallbackException(String msg, Throwable[] nested) {
-    super(msg, nested);
-  }
-
-  /**
-   * Constructs a new <code>JDOUserCallbackException</code> with the
-   * specified detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   */
-  public JDOUserCallbackException(String msg, Throwable nested) {
-    super(msg, nested);
-  }
-}
-
diff --git a/api20/src/java/javax/jdo/JDOUserException.java b/api20/src/java/javax/jdo/JDOUserException.java
deleted file mode 100644
index cb3e48d..0000000
--- a/api20/src/java/javax/jdo/JDOUserException.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOUserException.java
- *
- */
-
-package javax.jdo;
-
-/** This class represents user errors that can possibly be retried.
- *
- * @version 1.0
- */
-public class JDOUserException extends JDOCanRetryException {
-
-  /**
-   * Constructs a new <code>JDOUserException</code> without a detail message.
-   */
-  public JDOUserException() {
-  }
-  
-
-  /**
-   * Constructs a new <code>JDOUserException</code> with the specified detail message.
-   * @param msg the detail message.
-   */
-  public JDOUserException(String msg) {
-    super(msg);
-  }
-
-  /**
-   * Constructs a new <code>JDOUserException</code> with the specified detail message
-   * and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDOUserException(String msg, Throwable[] nested) {
-    super(msg, nested);
-  }
-
-  /**
-   * Constructs a new <code>JDOUserException</code> with the specified detail message
-   * and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   */
-  public JDOUserException(String msg, Throwable nested) {
-    super(msg, nested);
-  }
-  
-  /** Constructs a new <code>JDOUserException</code> with the specified detail message
-   * and failed object.
-   * @param msg the detail message.
-   * @param failed the failed object.
-   */
-  public JDOUserException(String msg, Object failed) {
-    super(msg, failed);
-  }
-  
-  /** Constructs a new <code>JDOUserException</code> with the specified detail message,
-   * nested <code>Throwable</code>s, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   * @param failed the failed object.
-   */
-  public JDOUserException(String msg, Throwable[] nested, Object failed) {
-    super(msg, nested, failed);
-  }
-  
-  /** Constructs a new <code>JDOUserException</code> with the specified detail message,
-   * nested <code>Throwable</code>s, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   * @param failed the failed object.
-   */
-  public JDOUserException(String msg, Throwable nested, Object failed) {
-    super(msg, nested, failed);
-  }
-}
-
diff --git a/api20/src/java/javax/jdo/PersistenceManager.java b/api20/src/java/javax/jdo/PersistenceManager.java
deleted file mode 100644
index c3f84b6..0000000
--- a/api20/src/java/javax/jdo/PersistenceManager.java
+++ /dev/null
@@ -1,1086 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * PersistenceManager.java
- *
- */
- 
-package javax.jdo;
-
-import java.util.Collection;
-
-import javax.jdo.datastore.JDOConnection;
-import javax.jdo.datastore.Sequence;
-
-import javax.jdo.listener.InstanceLifecycleListener;
-
-/** <code>PersistenceManager</code> is the primary interface for JDO-aware 
- * application components.  It is the factory for <code>Query</code> and 
- * <code>Transaction</code> instances, and contains methods to manage the 
- * life cycle of <code>PersistenceCapable</code> instances.
- *
- * <P>A <code>PersistenceManager</code> is obtained from the
- * {@link PersistenceManagerFactory}
- * (recommended) or by construction.
- * @version 2.0
- */
-
-public interface PersistenceManager {
-    /** 
-     * A <code>PersistenceManager</code> instance can be used until it is 
-     * closed.
-     * @return <code>true</code> if this <code>PersistenceManager</code> has 
-     * been closed.
-     * @see #close()
-     */
-    boolean isClosed ();
-    
-    /** Close this <code>PersistenceManager</code> so that no further requests 
-     * may be made on it.  A <code>PersistenceManager</code> instance can be 
-     * used only until it is closed.
-     *
-     * <P>Closing a <code>PersistenceManager</code> might release it to the pool 
-     * of available <code>PersistenceManager</code>s, or might be garbage 
-     * collected, at the option of the JDO implementation.  Before being used 
-     * again to satisfy a <code>getPersistenceManager()</code> request, the 
-     * default values for options will be restored to their values as specified 
-     * in the <code>PersistenceManagerFactory</code>.
-     *
-     * <P>This method closes the <code>PersistenceManager</code>.
-     */
-    void close ();
-
-    /** Return the <code>Transaction</code> instance associated with a 
-     * <code>PersistenceManager</code>. There is one <code>Transaction</code> 
-     * instance associated with each <code>PersistenceManager</code> instance.  
-     * The <code>Transaction</code> instance supports options as well as
-     * transaction completion requests.
-     * @return the <code>Transaction</code> associated with this
-     * <code>PersistenceManager</code>.
-     */
-    Transaction currentTransaction();
-
-    /** Mark an instance as no longer needed in the cache.  Eviction is normally
-     * done automatically by the <code>PersistenceManager</code> at transaction
-     * completion.  This method allows the application to explicitly provide a 
-     * hint to the <code>PersistenceManager</code> that the  instance is no 
-     * longer needed in the cache.
-     * @param pc the instance to evict from the cache.
-     */
-    void evict (Object pc);
-    
-    /** Mark an array of instances as no longer needed in the cache.
-     * @see #evict(Object pc)
-     * @param pcs the array of instances to evict from the cache.
-     */
-    void evictAll (Object[] pcs);
-    
-    /** Mark a <code>Collection</code> of instances as no longer needed in the 
-     * cache.
-     * @see #evict(Object pc)
-     * @param pcs the <code>Collection</code> of instances to evict from the 
-     * cache.
-     */
-    void evictAll (Collection pcs);
-    
-    /** Mark all persistent-nontransactional instances as no longer needed 
-     * in the cache.  It transitions
-     * all persistent-nontransactional instances to hollow.  Transactional
-     * instances are subject to eviction based on the RetainValues setting.
-     * @see #evict(Object pc)
-     */
-    void evictAll ();
-    
-    /** Refresh the state of the instance from the data store.
-     *
-     * <P>In an optimistic transaction, the state of instances in the cache
-     * might not match the state in the data store.  This method is used to
-     * reload the state of the instance from the data store so that a subsequent
-     * commit is more likely to succeed.
-     * <P>Outside a transaction, this method will refresh nontransactional 
-     * state.
-     * @param pc the instance to refresh.
-     */
-    void refresh (Object pc);
-    
-    /** Refresh the state of an array of instances from the data store.
-     *
-     * @see #refresh(Object pc)
-     * @param pcs the array of instances to refresh.
-     */
-    void refreshAll (Object[] pcs);
-    
-    /** Refresh the state of a <code>Collection</code> of instances from the 
-     * data store.
-     *
-     * @see #refresh(Object pc)
-     * @param pcs the <code>Collection</code> of instances to refresh.
-     */
-    void refreshAll (Collection pcs);
-    
-    /** Refresh the state of all applicable instances from the data store.
-     * <P>If called with an active transaction, all transactional instances
-     * will be refreshed.  If called outside an active transaction, all
-     * nontransactional instances will be refreshed.
-     * @see #refresh(Object pc)
-     */
-    void refreshAll ();
-
-    /**
-     * Refreshes all instances in the exception that failed verification.
-     *
-     * @since 2.0
-     */
-    void refreshAll (JDOException jdoe);
-    
-    /** Create a new <code>Query</code> with no elements.
-     * @return the new <code>Query</code>.
-     */
-    Query newQuery ();
-    
-    /** Create a new <code>Query</code> using elements from another 
-     * <code>Query</code>. The other <code>Query</code> must have been created 
-     * by the same JDO implementation. It might be active in a different 
-     * <code>PersistenceManager</code> or might have been serialized and 
-     * restored.
-     * <P>All of the settings of the other <code>Query</code> are copied to this 
-     * <code>Query</code>, except for the candidate <code>Collection</code> or 
-     * <code>Extent</code>.
-     * @return the new <code>Query</code>
-     * @param compiled another <code>Query</code> from the same JDO 
-     * implementation
-     */
-    Query newQuery (Object compiled);
-    
-    /** Create a Construct a new query instance using the specified String 
-     * as the single-string representation of the query.
-     * @param query the single-string query
-     * @return the new <code>Query</code>
-     * @since 2.0
-     */
-    Query newQuery (String query);
-    
-    /** Create a new <code>Query</code> using the specified language.
-     * @param language the language of the query parameter
-     * @param query the query, which is of a form determined by the language
-     * @return the new <code>Query</code>
-     */    
-    Query newQuery (String language, Object query);
-    
-    /** Create a new <code>Query</code> specifying the <code>Class</code> of the 
-     * candidate instances.
-     * @param cls the <code>Class</code> of the candidate instances
-     * @return the new <code>Query</code>
-     */
-    Query newQuery (Class cls);
-    
-    /** Create a new <code>Query</code> with the <code>Class</code> of the
-     * candidate instances and candidate <code>Extent</code>.
-     * @param cln the <code>Extent</code> of candidate instances
-     * @return the new <code>Query</code>
-     */
-    Query newQuery (Extent cln);
-    
-    /** Create a new <code>Query</code> with the candidate <code>Class</code> 
-     * and <code>Collection</code>.
-     * @param cls the <code>Class</code> of results
-     * @param cln the <code>Collection</code> of candidate instances
-     * @return the new <code>Query</code>
-     */
-    Query newQuery (Class cls, Collection cln);
-    
-    /** Create a new <code>Query</code> with the <code>Class</code> of the
-     * candidate instances and filter.
-     * @param cls the <code>Class</code> of results
-     * @param filter the filter for candidate instances
-     * @return the new <code>Query</code>
-     */
-    Query newQuery (Class cls, String filter);
-    
-    /** Create a new <code>Query</code> with the <code>Class</code> of the 
-     * candidate instances, 
-     * candidate <code>Collection</code>, and filter.
-     * @param cls the <code>Class</code> of candidate instances
-     * @param cln the <code>Collection</code> of candidate instances
-     * @param filter the filter for candidate instances
-     * @return the new <code>Query</code>
-     */
-    Query newQuery (Class cls, Collection cln, String filter);
-    
-    /** Create a new <code>Query</code> with the
-     * candidate <code>Extent</code> and filter; the class
-     * is taken from the <code>Extent</code>.
-     * @param cln the <code>Extent</code> of candidate instances
-     * @param filter the filter for candidate instances
-     * @return the new <code>Query</code>
-     */
-    Query newQuery (Extent cln, String filter);
-
-    /**
-     * Create a new <code>Query</code> with the given candidate class
-     * from a named query. The query name given must be the name of a
-     * query defined in metadata.
-     * @param cls the <code>Class</code> of candidate instances
-     * @param queryName the name of the query to look up in metadata
-     * @return the new <code>Query</code>
-     */
-    Query newNamedQuery (Class cls, String queryName);
-
-    /** The <code>PersistenceManager</code> manages a collection of instances in
-     * the data store based on the class of the instances.  This method returns
-     * an <code>Extent</code> of instances in the data store that might be 
-     * iterated or given to a <code>Query</code>.  The <code>Extent</code> 
-     * itself might not reference any instances, but only hold the class name 
-     * and an indicator as to whether subclasses are included in the 
-     * <code>Extent</code>.
-     * <P>Note that the <code>Extent</code> might be very large.
-     * @param persistenceCapableClass <code>Class</code> of instances
-     * @param subclasses whether to include instances of subclasses
-     * @return an <code>Extent</code> of the specified <code>Class</code>
-     * @see Query
-     */
-    Extent getExtent (Class persistenceCapableClass, boolean subclasses);
-
-    /**
-     * Equivalent to <code>getExtent (persistenceCapableClass,
-     * true)</code>.
-     * @see #getExtent(Class,boolean)
-     * @since 2.0
-     */
-    Extent getExtent (Class persistenceCapableClass);
-
-    /** This method locates a persistent instance in the cache of instances
-     * managed by this <code>PersistenceManager</code>.
-     * The <code>getObjectById</code> method attempts 
-     * to find an instance in the cache with the specified JDO identity. 
-     * The <code>oid</code> parameter object might have been returned by an 
-     * earlier call to <code>getObjectId</code> or 
-     * <code>getTransactionalObjectId</code>, or might have been constructed by
-     * the application. 
-     * <P>If the <code>PersistenceManager</code> is unable to resolve the 
-     * <code>oid</code> parameter to an ObjectId instance, then it throws a 
-     * <code>JDOUserException</code>.
-     * <P>If the <code>validate</code> flag is <code>false</code>, and there is 
-     * already an instance in the cache with the same JDO identity as the 
-     * <code>oid</code> parameter, then this method returns it. There is no 
-     * change made to the state of the returned instance.
-     * <P>If there is not an instance already in the cache with the same JDO
-     * identity as the <code>oid</code> parameter, then this method creates an 
-     * instance with the specified JDO identity and returns it. If there is no
-     * transaction in progress, the returned instance will be hollow or
-     * persistent-nontransactional, at the choice of the implementation.
-     * <P>If there is a transaction in progress, the returned instance will
-     * be hollow, persistent-nontransactional, or persistent-clean, at the
-     * choice of the implementation.
-     * <P>It is an implementation decision whether to access the data store,
-     * if required to determine the exact class. This will be the case of
-     * inheritance, where multiple <code>PersistenceCapable</code> classes share 
-     * the same ObjectId class.
-     * <P>If the validate flag is <code>false</code>, and the instance does not 
-     * exist in the data store, then this method might not fail. It is an
-     * implementation choice whether to fail immediately with a
-     * <code>JDOObjectNotFoundException</code>. But a subsequent access
-     * of the fields of the
-     * instance will throw a <code>JDOObjectNotFoundException</code>
-     * if the instance does not
-     * exist at that time. Further, if a relationship is established to this
-     * instance, then the transaction in which the association was made will
-     * fail.
-     * <P>If the <code>validate</code> flag is <code>true</code>, and there is 
-     * already a transactional instance in the cache with the same JDO identity 
-     * as the <code>oid</code> parameter, then this method returns it. There is 
-     * no change made to the state of the returned instance.
-     * <P>If there is an instance already in the cache with the same JDO 
-     * identity as the <code>oid</code> parameter, but the instance is not 
-     * transactional, then it must be verified in the data store. If the 
-     * instance does not exist in the datastore, then a 
-     * <code>JDOObjectNotFoundException</code> is thrown.
-     * <P>If there is not an instance already in the cache with the same JDO
-     * identity as the <code>oid</code> parameter, then this method creates an 
-     * instance with the specified JDO identity, verifies that it exists in the 
-     * data store, and returns it. If there is no transaction in progress, the
-     * returned instance will be hollow or persistent-nontransactional,
-     * at the choice of the implementation.
-     * <P>If there is a data store transaction in progress, the returned
-     * instance will be persistent-clean.
-     * If there is an optimistic transaction in progress, the returned
-     * instance will be persistent-nontransactional.
-     * @see #getObjectId(Object pc)
-     * @see #getTransactionalObjectId(Object pc)
-     * @return the <code>PersistenceCapable</code> instance with the specified 
-     * ObjectId
-     * @param oid an ObjectId
-     * @param validate if the existence of the instance is to be validated
-     */
-    Object getObjectById (Object oid, boolean validate);
-
-    /**
-     * Looks up the instance of the given type with the given key.
-     * @param cls The type of object to load
-     * @param key either the string representation of the object id, or
-     * an object representation of a single field identity key
-     * @return the corresponding persistent instance
-     * @since 2.0
-     */
-    Object getObjectById (Class cls, Object key);
-
-    /**
-     * Looks up the instance corresponding to the specified oid. This is
-     * equivalent to <code>getObjectById(oid, true);
-     * @param oid The object id of the object to load
-     * @return the corresponding persistent instance
-     */
-    Object getObjectById (Object oid);
-
-    /** The ObjectId returned by this method represents the JDO identity of
-     * the instance.  The ObjectId is a copy (clone) of the internal state
-     * of the instance, and changing it does not affect the JDO identity of
-     * the instance.  
-     * <P>The <code>getObjectId</code> method returns an ObjectId instance that 
-     * represents the object identity of the specified JDO instance. The 
-     * identity is guaranteed to be unique only in the context of the JDO
-     * <code>PersistenceManager</code> that created the identity, and only for 
-     * two types of JDO Identity: those that are managed by the application, and
-     * those that are managed by the data store.
-     * <P>If the object identity is being changed in the transaction, by the
-     * application modifying one or more of the application key fields,
-     * then this method returns the identity as of the beginning of the
-     * transaction. The value returned by <code>getObjectId</code> will be 
-     * different following <code>afterCompletion</code> processing for 
-     * successful transactions. <P>Within a transaction, the ObjectId returned 
-     * will compare equal to the ObjectId returned by only one among all JDO 
-     * instances associated with the <code>PersistenceManager</code> regardless
-     * of the type of ObjectId.
-     * <P>The ObjectId does not necessarily contain any internal state of the
-     * instance, nor is it necessarily an instance of the class used to
-     * manage identity internally. Therefore, if the application makes a
-     * change to the ObjectId instance returned by this method, there is
-     * no effect on the instance from which the ObjectId was obtained.
-     * <P>The <code>getObjectById</code> method can be used between instances of
-     * <code>PersistenceManager</code> of different JDO vendors only for 
-     * instances of persistence capable classes using application-managed 
-     * (primary key) JDO identity. If it is used for instances of classes using
-     * datastore identity, the method might succeed, but there are no guarantees
-     * that the parameter and return instances are related in any way.
-     * @see #getTransactionalObjectId(Object pc)
-     * @see #getObjectById(Object oid, boolean validate)
-     * @param pc the <code>PersistenceCapable</code> instance
-     * @return the ObjectId of the instance
-     */
-    Object getObjectId (Object pc);
-    
-    /** The ObjectId returned by this method represents the JDO identity of
-     * the instance.  The ObjectId is a copy (clone) of the internal state
-     * of the instance, and changing it does not affect the JDO identity of
-     * the instance.
-     * <P>If the object identity is being changed in the transaction, by the
-     * application modifying one or more of the application key fields,
-     * then this method returns the current identity in the transaction.
-     * <P>If there is no transaction in progress, or if none of the key fields
-     * is being modified, then this method will return the same value as
-     * <code>getObjectId</code>.
-     * @see #getObjectId(Object pc)
-     * @see #getObjectById(Object oid, boolean validate)
-     * @param pc a <code>PersistenceCapable</code> instance
-     * @return the ObjectId of the instance
-     */
-    Object getTransactionalObjectId (Object pc);
-
-    /** 
-     * This method returns an object id instance corresponding to the pcClass
-     * and key arguments.
-     * @param pcClass the <code>Class</code> of the persistence-capable instance
-     * @param key for single-field identity, the parameter for the
-     * constructor; for non-single-field application identity, the result 
-     * of toString() on the object id instance.
-     * @return an instance of the object identity class
-     */
-    Object newObjectIdInstance (Class pcClass, Object key);
-    
-    /**
-     * Return the objects with the given oids.
-     * @param oids the oids of the objects to return
-     * @param validate if true, the existance of the objects in
-     *     the datastore will be validated.
-     * @return the objects that were looked up, in the
-     *     same order as the oids parameter.
-     * @see #getObjectById(Object,boolean)
-     * @since 2.0
-     */
-    Collection getObjectsById (Collection oids, boolean validate);
-
-    /**
-     * Return the objects with the given oids. This method is equivalent 
-     * to calling {@link #getObjectsById(Collection, boolean)}
-     * with the validate flag true.
-     * @param oids the oids of the objects to return
-     * @return the objects that were looked up, in the
-     *     same order as the oids parameter.
-     * @see #getObjectsById(Collection,boolean)
-     * @since 2.0
-     */
-    Collection getObjectsById (Collection oids);
-
-    /**
-     * Return the objects with the given oids.
-     * @param oids the oids of the objects to return
-     * @param validate if true, the existance of the objects in
-     *     the datastore will be validated.
-     * @return the objects that were looked up, in the
-     *     same order as the oids parameter.
-     * @see #getObjectById(Object,boolean)
-     * @since 2.0
-     */
-    Object[] getObjectsById (Object[] oids, boolean validate);
-
-    /**
-     * Return the objects with the given oids. This method is equivalent
-     * to calling {@link #getObjectsById(Object[],boolean)} 
-     * with the validate flag true.
-     * @param oids the oids of the objects to return
-     * @return the objects that were looked up, in the
-     *     same order as the oids parameter.
-     * @see #getObjectsById(Object[],boolean)
-     * @since 2.0
-     */
-    Object[] getObjectsById (Object[] oids);
-
-    /** Make the parameter instance persistent in this 
-     * <code>PersistenceManager</code>.
-     * This method makes transient instances persistent and applies detached
-     * instance changes to the cache. It must be called in the context of
-     * an active transaction, or a JDOUserException is thrown. For a transient
-     * instance, it assigns an object identity to the instance and transitions
-     * it to persistent-new. Any transient instances reachable from this
-     * instance via persistent fields of this instance become provisionally
-     * persistent, transitively. That is, they behave as persistent-new
-     * instances (return true to isPersistent, isNew, and isDirty).
-     * But at commit time, the reachability algorithm is run again,
-     * and instances made provisionally persistent that are not then
-     * reachable from persistent instances will revert to transient.
-     * <P>During makePersistent of transient instances, the create life cycle
-     * listener is called.
-     * <P>For detached instances, it locates or instantiates a persistent
-     * instance with the same JDO identity as the detached instance,
-     * and merges the persistent state of the detached instance into the
-     * persistent instance. Only the state of persistent fields is merged.
-     * If non-persistent state needs to be copied, the application should
-     * use the jdoPostAttach callback or the postAttach lifecycle event
-     * listener. Any references to the detached instances from instances
-     * in the closure of the parameter instances are modified to refer to
-     * the corresponding persistent instance instead of to the
-     * detached instance.
-     * <P>During attachment of detached instances, the attach callbacks
-     * and attach life cycle listeners are called.
-     * <P>During application of changes of the detached state, if the JDO
-     * implementation can determine that there were no changes made during
-     * detachment, then the implementation is not required to mark the
-     * corresponding instance dirty. If it cannot determine if changes
-     * were made, then it must mark the instance dirty.
-     * No consistency checking is done during makePersistent of detached
-     * instances. If consistency checking is required by the application,
-     * then flush or checkConsistency should be called after attaching the
-     * instances.
-     * <P>These methods have no effect on parameter persistent instances
-     * already managed by this PersistenceManager. They will throw a
-     * JDOUserException if the parameter instance is managed by a
-     * different PersistenceManager.
-     * If an instance is of a class whose identity type (application, 
-     * datastore, or none) is not supported by the JDO implementation, 
-     * then a JDOUserException will be thrown for that instance.
-     * The return value for parameter instances in the transient or persistent
-     * states is the same as the parameter value. The return value for
-     * parameter instances in the detached state is the persistent instance
-     * corresponding to the detached instance.
-     * The return values for makePersistentAll methods correspond by position
-     * to the parameter instances.
-     * @param pc an instance of a <code>Class</code> that is persistent
-     * capable.
-     * @return the parameter instance for parameters in the transient or
-     * persistent state, or the corresponding persistent instance 
-     * for detached parameter instances
-     */
-    Object makePersistent (Object pc);
-    
-    /** Make an array of instances persistent.
-     * @param pcs an array of instances
-     * @return the parameter instances for parameters in the transient or
-     * persistent state, or the corresponding persistent instance 
-     * for detached parameter instances, in the same order as in the 
-     * parameter array
-     * @see #makePersistent(Object pc)
-     */
-    Object[] makePersistentAll (Object[] pcs);
-    
-    /** Make a <code>Collection</code> of instances persistent.
-     * @param pcs a <code>Collection</code> of instances
-     * @return the parameter instance for parameters in the transient or
-     * persistent state, or the corresponding persistent instance 
-     * for detached parameter instances, with an iteration in the same order
-     * as in the parameter Collection
-     * @see #makePersistent(Object pc)
-     */
-    Collection makePersistentAll (Collection pcs);
-    
-    /** Delete the persistent instance from the data store.
-     * This method must be called in an active transaction.
-     * The data store object will be removed at commit.
-     * Unlike <code>makePersistent</code>, which makes the closure of the 
-     * instance persistent, the closure of the instance is not deleted from the
-     * data store.  This method has no effect if the instance is already deleted
-     * in the current transaction.
-     * This method throws <code>JDOUserException</code> if the instance is 
-     * transient or is managed by another <code>PersistenceManager</code>.
-     *
-     * @param pc a persistent instance
-     */
-    void deletePersistent (Object pc);
-    
-    /** Delete an array of instances from the data store.
-     * @param pcs a <code>Collection</code> of persistent instances
-     * @see #deletePersistent(Object pc)
-     */
-    void deletePersistentAll (Object[] pcs);
-    
-    /** Delete a <code>Collection</code> of instances from the data store.
-     * @param pcs a <code>Collection</code> of persistent instances
-     * @see #deletePersistent(Object pc)
-     */
-    void deletePersistentAll (Collection pcs);
-    
-    /** Make an instance transient, removing it from management by this
-     * <code>PersistenceManager</code>.
-     *
-     * <P>The instance loses its JDO identity and it is no longer associated
-     * with any <code>PersistenceManager</code>.  The state of fields is 
-     * preserved unchanged.
-     * @param pc the instance to make transient.
-     */
-    void makeTransient (Object pc);
-    
-    /** Make an array of instances transient, removing them from management by 
-     * this <code>PersistenceManager</code>.
-     *
-     * <P>The instances lose their JDO identity and they are no longer 
-     * associated with any <code>PersistenceManager</code>.  The state of fields
-     * is preserved unchanged.
-     * @param pcs the instances to make transient.
-     */
-    void makeTransientAll (Object[] pcs);
-    
-    /** Make a <code>Collection</code> of instances transient, removing them 
-     * from management by this <code>PersistenceManager</code>.
-     *
-     * <P>The instances lose their JDO identity and they are no longer 
-     * associated with any <code>PersistenceManager</code>.  The state of fields
-     * is preserved unchanged.
-     * @param pcs the instances to make transient.
-     */ 
-    void makeTransientAll (Collection pcs);
-
-    /** Make an instance transient, removing it from management by this 
-     * <code>PersistenceManager</code>. If the useFetchPlan parameter is 
-     * false, this method behaves exactly as makeTransient(Object pc). 
-     * <P>The affected instance(s) lose their JDO identity and are no longer 
-     * associated with any <code>PersistenceManager</code>.  The state 
-     * of fields is unchanged.
-     * <P>If the useFetchPlan parameter is true, then the current FetchPlan
-     * is applied to the pc parameter, as if detachCopy(Object) had been
-     * called. After the graph of instances is loaded, the instances 
-     * reachable via loaded fields is made transient. The state of fields
-     * in the affected instances is as specified by the FetchPlan.
-     * <P>Unlike detachCopy, the instances are not detached; there is no
-     * detachment information in the instances.
-     * <P>The instances to be made transient do not need to
-     * implement the javax.jdo.spi.Detachable interface.
-     * @param pc the root instance to make transient.
-     * @param useFetchPlan whether to use the current fetch plan to determine
-     * which fields to load and which instances to make transient
-     * @since 2.0
-     */
-    void makeTransient (Object pc, boolean useFetchPlan);
-
-    /** Make instances transient, removing them from management
-     * by this <code>PersistenceManager</code>. If the useFetchPlan parameter
-     * is false, this method behaves exactly as makeTransientAll(Object[] pcs). 
-     * <P>The affected instance(s) lose their JDO identity and are no longer 
-     * associated with any <code>PersistenceManager</code>.  The state 
-     * of fields is unchanged.
-     * <P>If the useFetchPlan parameter is true, then the current FetchPlan
-     * is applied to the pcs parameters and the entire graph of instances 
-     * reachable via loaded fields is made transient. The state of fields
-     * in the affected instances is as specified by the FetchPlan.
-     * <P>Unlike detachCopy, the instances are not detached; there is no
-     * detachment information in the instances.
-     * <P>The instances to be made transient do not need to
-     * implement the javax.jdo.spi.Detachable interface.
-     * @param pcs the root instances to make transient.
-     * @param useFetchPlan whether to use the current fetch plan to determine
-     * which fields to load and which instances to make transient
-     * @since 2.0
-     */
-    void makeTransientAll (Object[] pcs, boolean useFetchPlan);
-    
-    /** Make instances transient, removing them from management
-     * by this <code>PersistenceManager</code>. If the useFetchPlan parameter
-     * is false, this method behaves exactly as 
-     * makeTransientAll(Collection pcs). 
-     * <P>The affected instance(s) lose their JDO identity and are no longer 
-     * associated with any <code>PersistenceManager</code>.  The state 
-     * of fields is unchanged.
-     * <P>If the useFetchPlan parameter is true, then the current FetchPlan
-     * is applied to the pcs parameters and the entire graph of instances 
-     * reachable via loaded fields is made transient. The state of fields
-     * in the affected instances is as specified by the FetchPlan.
-     * <P>Unlike detachCopy, the instances are not detached; there is no
-     * detachment information in the instances.
-     * <P>The instances to be made transient do not need to
-     * implement the javax.jdo.spi.Detachable interface.
-     * @param pcs the root instances to make transient.
-     * @param useFetchPlan whether to use the current fetch plan to determine
-     * which fields to load and which instances to make transient
-     * @since 2.0
-     */
-    void makeTransientAll (Collection pcs, boolean useFetchPlan);
-
-    /** Make an instance subject to transactional boundaries.
-     *
-     * <P>Transient instances normally do not observe transaction boundaries.
-     * This method makes transient instances sensitive to transaction 
-     * completion.  If an instance is modified in a transaction, and the 
-     * transaction rolls back, the state of the instance is restored to the 
-     * state before the first change in the transaction.
-     *
-     * <P>For persistent instances read in optimistic transactions, this method
-     * allows the application to make the state of the instance part of the
-     * transactional state.  At transaction commit, the state of the instance in
-     * the cache is compared to the state of the instance in the data store.  If 
-     * they are not the same, then an exception is thrown.
-     * @param pc the instance to make transactional.
-     */
-    void makeTransactional (Object pc);
-
-    /** Make an array of instances subject to transactional boundaries.
-     * @param pcs the array of instances to make transactional.
-     * @see #makeTransactional(Object pc)
-     */
-    void makeTransactionalAll (Object[] pcs);
-
-    /** Make a <code>Collection</code> of instances subject to transactional 
-     * boundaries.
-     * @param pcs the <code>Collection</code> of instances to make 
-     * transactional.
-     * @see #makeTransactional(Object pc)
-     */
-    void makeTransactionalAll (Collection pcs);
-    
-    /** Make an instance non-transactional after commit.
-     *
-     * <P>Normally, at transaction completion, instances are evicted from the
-     * cache.  This method allows an application to identify an instance as
-     * not being evicted from the cache at transaction completion.  Instead,
-     * the instance remains in the cache with nontransactional state.
-     *
-     * @param pc the instance to make nontransactional.
-     */
-    void makeNontransactional (Object pc);
-    
-    /** Make an array of instances non-transactional after commit.
-     *
-     * @param pcs the array of instances to make nontransactional.
-     * @see #makeNontransactional(Object pc)
-     */
-    void makeNontransactionalAll (Object[] pcs);
-    
-    /** Make a <code>Collection</code> of instances non-transactional after 
-     * commit.
-     *
-     * @param pcs the <code>Collection</code> of instances to make 
-     * nontransactional.
-     * @see #makeNontransactional(Object pc)
-     */
-    void makeNontransactionalAll (Collection pcs);
-
-    /** Retrieve field values of an instance from the store.  This tells
-     * the <code>PersistenceManager</code> that the application intends to use 
-     * the instance, and its field values must be retrieved.
-     * <P>The <code>PersistenceManager</code> might use policy information about 
-     * the class to retrieve associated instances.
-     * @param pc the instance
-     */
-    void retrieve (Object pc);
-    
-    /** Retrieve field values of an instance from the store.  This tells
-     * the <code>PersistenceManager</code> that the application intends to use 
-     * the instance, and its field values must be retrieved.
-     * <P>If the useFetchPlan parameter is false, this method behaves exactly
-     * as the corresponding method without the useFetchPlan parameter. 
-     * If the useFetchPlan parameter is true, and the fetch plan has not been
-     * modified from its default setting, all fields in the current fetch plan
-     * are fetched, and other fields might be fetched lazily by the
-     * implementation. If the useFetchPlan parameter is true, and the fetch
-     * plan has been changed from its default setting, then the fields
-     * specified by the fetch plan are loaded, along with related instances
-     * specified by the fetch plan.
-     * @param pc the instance
-     * @param useFetchPlan whether to use the current fetch plan to determine
-     * which fields to load and which instances to retrieve.
-     * @since 2.0
-     */
-    void retrieve (Object pc, boolean useFetchPlan);
-    
-    /** Retrieve field values of instances from the store.  This tells
-     * the <code>PersistenceManager</code> that the application intends to use 
-     * the instances, and all field values must be retrieved.
-     * <P>The <code>PersistenceManager</code> might use policy information about 
-     * the class to retrieve associated instances.
-     * @param pcs the instances
-     */
-    void retrieveAll (Collection pcs);
-    
-    /** Retrieve field values of instances from the store.  This tells
-     * the <code>PersistenceManager</code> that the application intends to use 
-     * the instances, and their field values should be retrieved.  The fields
-     * in the current fetch group must be retrieved, and the implementation
-     * might retrieve more fields than the current fetch group.
-     * <P>If the useFetchPlan parameter is false, this method behaves exactly
-     * as the corresponding method without the useFetchPlan parameter. 
-     * If the useFetchPlan parameter is true, and the fetch plan has not been
-     * modified from its default setting, all fields in the current fetch plan
-     * are fetched, and other fields might be fetched lazily by the
-     * implementation. If the useFetchPlan parameter is true, and the fetch
-     * plan has been changed from its default setting, then the fields
-     * specified by the fetch plan are loaded, along with related instances
-     * specified by the fetch plan.
-     * @param pcs the instances
-     * @param useFetchPlan whether to use the current fetch plan to determine
-     * which fields to load and which instances to retrieve.
-     * @since 1.0.1
-     */
-    void retrieveAll (Collection pcs, boolean useFetchPlan);
-    
-    /** Retrieve field values of instances from the store.  This tells
-     * the <code>PersistenceManager</code> that the application intends to use 
-     * the instances, and all field values must be retrieved.
-     * <P>The <code>PersistenceManager</code> might use policy information about 
-     * the class to retrieve associated instances.
-     * @param pcs the instances
-     */
-    void retrieveAll (Object[] pcs);
-           
-    /** Retrieve field values of instances from the store.  This tells
-     * the <code>PersistenceManager</code> that the application intends to use 
-     * the instances, and their field values should be retrieved.  The fields
-     * in the current fetch group must be retrieved, and the implementation
-     * might retrieve more fields than the current fetch group.
-     * <P>If the useFetchPlan parameter is false, this method behaves exactly
-     * as the corresponding method without the useFetchPlan parameter. 
-     * If the useFetchPlan parameter is true, and the fetch plan has not been
-     * modified from its default setting, all fields in the current fetch plan
-     * are fetched, and other fields might be fetched lazily by the
-     * implementation. If the useFetchPlan parameter is true, and the fetch
-     * plan has been changed from its default setting, then the fields
-     * specified by the fetch plan are loaded, along with related instances
-     * specified by the fetch plan.
-     * @param pcs the instances
-     * @param useFetchPlan whether to use the current fetch plan to determine
-     * which fields to load and which instances to retrieve.
-     * @since 1.0.1
-     */
-    void retrieveAll (Object[] pcs, boolean useFetchPlan);
-           
-    /** The application can manage the <code>PersistenceManager</code> instances
-     * more easily by having an application object associated with each
-     * <code>PersistenceManager</code> instance.
-     * @param o the user instance to be remembered by the 
-     * <code>PersistenceManager</code>
-     * @see #getUserObject
-     */
-    void setUserObject (Object o);
-    
-    /** The application can manage the <code>PersistenceManager</code> instances
-     * more easily by having an application object associated with each
-     * <code>PersistenceManager</code> instance.
-     * @return the user object associated with this 
-     * <code>PersistenceManager</code>
-     * @see #setUserObject
-     */
-    Object getUserObject ();
-     
-    /** This method returns the <code>PersistenceManagerFactory</code> used to 
-     * create this <code>PersistenceManager</code>.  
-     * @return the <code>PersistenceManagerFactory</code> that created
-     * this <code>PersistenceManager</code>
-     */
-    PersistenceManagerFactory getPersistenceManagerFactory();
-
-    /** Return the <code>Class</code> that implements the JDO Identity for the
-     * specified <code>PersistenceCapable</code> class.  The application can use 
-     * the returned <code>Class</code> to construct a JDO Identity instance for
-     * application identity <code>PersistenceCapable</code> classes.  This JDO 
-     * Identity instance can then be used to get an instance of the
-     * <code>PersistenceCapable</code> class for use in the application.
-     *
-     * <P>In order for the application to construct an instance of the ObjectId 
-     * class it needs to know the class being used by the JDO implementation.
-     * @param cls the <code>PersistenceCapable Class</code>
-     * @return the <code>Class</code> of the ObjectId of the parameter
-     * @see #getObjectById
-     */
-    Class getObjectIdClass(Class cls);
-  
-    /** Set the Multithreaded flag for this <code>PersistenceManager</code>.  
-     * Applications that use multiple threads to invoke methods or access fields 
-     * from instances managed by this <code>PersistenceManager</code> must set 
-     * this flag to <code>true</code>. 
-     * Instances managed by this <code>PersistenceManager</code> include 
-     * persistent or transactional instances of <code>PersistenceCapable</code> 
-     * classes, as well as helper instances such as <code>Query</code>, 
-     * <code>Transaction</code>, or <code>Extent</code>.
-     * @param flag the Multithreaded setting.
-     */
-    void setMultithreaded (boolean flag);
-  
-    /** Get the current Multithreaded flag for this 
-     * <code>PersistenceManager</code>.  
-     * @see #setMultithreaded
-     * @return the Multithreaded setting.
-     */
-    boolean getMultithreaded();
-    
-    /** Set the ignoreCache parameter for queries.
-     *
-     * <P>IgnoreCache set to <code>true</code> specifies that for all 
-     * <code>Query</code> instances created by this 
-     * <code>PersistenceManager</code>, the default is the cache should be 
-     * ignored for queries.
-     * @param flag the ignoreCache setting.
-     */
-    void setIgnoreCache(boolean flag);
-  
-    /** Get the ignoreCache setting for queries.
-     *
-     * <P>IgnoreCache set to <code>true</code> specifies that for all 
-     * <code>Query</code> instances created by this 
-     * <code>PersistenceManager</code>, the default is the cache should be 
-     * ignored for queries.
-     * @return the ignoreCache setting.
-     */
-   boolean getIgnoreCache();
-   
-   /** Gets the detachAllOnCommit setting.
-    * @see #setDetachAllOnCommit(boolean)
-    * @since 2.0
-    * @return the detachAllOnCommit setting.
-    */
-   boolean getDetachAllOnCommit();
-
-   /** Sets the detachAllOnCommit setting.
-    *
-    * <P>DetachAllOnCommit set to <code>false</code> specifies that the
-    * state of persistent instances in the cache after commit is defined
-    * by the <code>retainValues</code> flag. With this flag set to true,
-    * during beforeCompletion all cached instances are prepared for
-    * detachment according to the fetch plan in effect at commit. Loading
-    * fields and unloading fields required by the fetch plan is done after
-    * calling the user's <code>beforeCompletion</code> callback. During
-    * <code>afterCompletion</code>, before calling the user's
-    * <code>afterCompletion</code> callback, all detachable persistent
-    * instances in the cache transition to detached; non-detachable
-    * persistent instances transition to transient; and detachable
-    * instances can be serialized as detached instances. Transient
-    * transactional instances are unaffected by this flag.
-    *
-    * @see #getDetachAllOnCommit()
-    * @since 2.0
-    */
-   void setDetachAllOnCommit(boolean flag);
-   
-    /**
-     * Detach the specified instance from the <code>PersistenceManager</code>.
-     * The flags for detachment (DETACH_LOAD_FIELDS and DETACH_UNLOAD_FIELDS)
-     * and the active fetch groups determine the scope of fetching for the
-     * graph of instances reachable from the pc parameter. The state of fields
-     * in the affected instances is as specified by the FetchPlan.
-     * @param pc the instance to detach
-     * @return the detached instance
-     * @see #detachCopyAll(Object[])
-     * @since 2.0
-     */
-    Object detachCopy (Object pc);
-
-    /**
-     * Detach the specified instances from the <code>PersistenceManager</code>.
-     * The flags for detachment (DETACH_LOAD_FIELDS and DETACH_UNLOAD_FIELDS)
-     * and the active fetch groups determine the scope of fetching for the
-     * graph of instances reachable from the pcs parameter. The state of fields
-     * in the affected instances is as specified by the FetchPlan.
-     * @param pcs the instances to detach
-     * @return the detached instances
-     * @see #detachCopyAll(Object[])
-     * @since 2.0
-     */
-    Collection detachCopyAll (Collection pcs);
-
-    /**
-     * Detach the specified instances from the <code>PersistenceManager</code>.
-     * The flags for detachment (DETACH_LOAD_FIELDS and DETACH_UNLOAD_FIELDS)
-     * and the active fetch groups determine the scope of fetching for the
-     * graph of instances reachable from the pcs parameter. The state of fields
-     * in the affected instances is as specified by the FetchPlan.
-     * The objects returned can be manipulated and re-attached with 
-     * {@link #makePersistentAll(Object[])}. 
-     * The detached instances will be
-     * unmanaged copies of the specified parameters, and are suitable
-     * for serialization and manipulation outside of a JDO
-     * environment. When detaching instances, only fields in the
-     * current {@link FetchPlan} will be traversed. Thus, to detach a
-     * graph of objects, relations to other persistent instances must
-     * either be in the <code>default-fetch-group</code>, or in the
-     * current custom {@link FetchPlan}.
-     * @param pcs the instances to detach
-     * @return the detached instances
-     * @throws JDOUserException if any of the instances to be detached do not
-     * implement the javax.jdo.spi.Detachable interface.
-     * @see #makePersistentAll(Object[])
-     * @see #getFetchPlan
-     * @since 2.0
-     */
-    Object[] detachCopyAll (Object [] pcs);
-
-    /**
-     * Put the specified key-value pair into the map of user objects.
-     * @since 2.0
-     */
-    Object putUserObject (Object key, Object val);
-
-    /**
-     * Get the value for the specified key from the map of user objects.
-     * @param key the key of the object to be returned
-     * @return the object 
-     * @since 2.0
-     */
-    Object getUserObject (Object key);
-
-    /**
-     * Remove the specified key and its value from the map of user objects.
-     * @param key the key of the object to be removed
-     * @since 2.0
-     */
-    Object removeUserObject (Object key);
-
-    /**
-     * Flushes all dirty, new, and deleted instances to the data
-     * store. It has no effect if a transaction is not active.
-     * <p>If a datastore transaction is active, this method
-     * synchronizes the cache with the datastore and reports any
-     * exceptions.</p>
-     * <p>If an optimistic transaction is active, this method obtains
-     * a datastore connection, synchronizes the cache with the
-     * datastore using this connection and reports any
-     * exceptions. The connection obtained by this method is held
-     * until the end of the transaction.</p>
-     * <p>If exceptions occur during flush, the implementation will
-     * set the current transaction's <code>RollbackOnly</code> flag
-     * (see {@link Transaction#setRollbackOnly}).</p>
-     * @since	2.0
-     */
-    void flush ();
-
-    /**
-     * Validates the <code>PersistenceManager</code> cache with the
-     * datastore. This method has no effect if a transaction is not
-     * active.
-     * <p>If a datastore transaction is active, this method verifies
-     * the consistency of instances in the cache against the
-     * datastore. An implementation might flush instances as if
-     * {@link #flush} were called, but it is not required to do
-     * so.</p>
-     * <p>If an optimistic transaction is active, this method obtains
-     * a datastore connection and verifies the consistency of the
-     * instances in the cache against the datastore. If any
-     * inconsistencies are detected, a {@link
-     * JDOOptimisticVerificationException} is thrown. This exception
-     * contains a nested {@link JDOOptimisticVerificationException}
-     * for each object that failed the consistency check. No
-     * datastore resources acquired during the execution of this
-     * method are held beyond the scope of this method.</p>
-     * @since 2.0
-     */
-    void checkConsistency ();
-
-    /**
-     * Returns the <code>FetchPlan</code> used by this
-     * <code>PersistenceManager</code>.
-     * @return the FetchPlan
-     * @since 2.0
-     */
-    FetchPlan getFetchPlan ();
-
-    /**
-     * Creates an instance of a persistence-capable interface, 
-     * or of a concrete or abstract class. 
-     * The returned instance is transient.
-     * @param pcClass Must be a persistence-capable interface, 
-     * or a concrete or abstract class that is declared in the metadata.
-     * @return the created instance
-     * @since 2.0
-     */
-    Object newInstance (Class pcClass);
-
-    /**
-     * Returns the sequence identified by <code>name</code>.
-     * @param name the name of the Sequence
-     * @return the Sequence
-     * @since 2.0
-     */
-    Sequence getSequence (String name);
-
-    /**
-     * If this method is called while a datastore transaction is
-     * active, the object returned will be enlisted in the current
-     * transaction. If called in an optimistic transaction or outside
-     * an active transaction, the object returned will not be
-     * enlisted in any transaction.
-     * @return the JDOConnection instance
-     * @since 2.0
-     */
-    JDOConnection getDataStoreConnection ();
-
-    /**
-     * Adds the listener instance to the list of lifecycle event
-     * listeners. The <code>classes</code> parameter identifies all
-     * of the classes of interest. If the <code>classes</code>
-     * parameter is specified as <code>null</code>, events for all
-     * persistent classes and interfaces will be sent to
-     * <code>listenerInstance</code>.
-     * <p>The listenerInstance will be called for each event for which it
-     * implements the corresponding listenerInstance interface.</p>
-     * @param listener the lifecycle listener
-     * @param classes the classes of interest to the listener
-     * @since 2.0
-     */
-    void addInstanceLifecycleListener (InstanceLifecycleListener listener,
-        Class[] classes);
-
-    /**
-     * Removes the listener instance from the list of lifecycle event listeners.
-     * @param listener the listener instance to be removed
-     * @since 2.0
-     */
-    void removeInstanceLifecycleListener (InstanceLifecycleListener listener);
-}
diff --git a/api20/src/java/javax/jdo/PersistenceManagerFactory.java b/api20/src/java/javax/jdo/PersistenceManagerFactory.java
deleted file mode 100644
index f921fde..0000000
--- a/api20/src/java/javax/jdo/PersistenceManagerFactory.java
+++ /dev/null
@@ -1,432 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * PersistenceManagerFactory.java
- *
- */
- 
-package javax.jdo;
-
-import java.util.Properties;
-import java.util.Collection;
-
-import javax.jdo.datastore.DataStoreCache;
-
-import javax.jdo.listener.InstanceLifecycleListener;
-
-/** The <code>PersistenceManagerFactory</code> is the interface to use to obtain
- * <code>PersistenceManager</code> instances.  
- * All <code>PersistenceManager</code> instances obtained from the same 
- * <code>PersistenceManagerFactory</code> will have the same default properties.
- *
- * <P><code>PersistenceManagerFactory</code> instances may be configured and
- * serialized for later use.  They may be stored via JNDI and looked up
- * and used later.  Any properties configured will be saved and restored.
- *
- * <P>Once the first <code>PersistenceManager</code> is obtained from the 
- * <code>PersistenceManagerFactory</code>, the factory can no longer be 
- * configured.
- * <P>If the <code>ConnectionFactory</code> property is set 
- * (non-<code>null</code>) then all other Connection properties including 
- * <code>ConnectionFactoryName</code> are ignored;
- * otherwise, if <code>ConnectionFactoryName</code> is set 
- * (non-<code>null</code>) then all other Connection properties are ignored.
- * Similarly, if the <code>ConnectionFactory2</code> property is set 
- * (non-<code>null</code>) then <code>ConnectionFactory2Name</code> is ignored.
- * <P>Operational state (<code>PersistenceManager</code> pooling, connection 
- * pooling, operational parameters) must not be serialized.
- *
- * @version 2.0
- */
-
-public interface PersistenceManagerFactory extends java.io.Serializable {
-    
-    /** Close this PersistenceManagerFactory. Check for 
-     * JDOPermission("closePersistenceManagerFactory") and if not authorized, 
-     * throw SecurityException. 
-     * <P>If the authorization check succeeds, check to see that all 
-     * PersistenceManager instances obtained from this PersistenceManagerFactory 
-     * have no active transactions. If any PersistenceManager instances have 
-     * an active transaction, throw a JDOUserException, with one nested 
-     * JDOUserException for each PersistenceManager with an active Transaction. 
-     * <P>If there are no active transactions, then close all PersistenceManager 
-     * instances obtained from this PersistenceManagerFactory, mark this 
-     * PersistenceManagerFactory as closed, disallow getPersistenceManager 
-     * methods, and allow all other get methods. If a set method or 
-     * getPersistenceManager method is called after close, then 
-     * JDOUserException is thrown.
-     * @since 1.0.1
-     */
-    void close();
-    
-    /** 
-     * A <code>PersistenceManagerFactory</code> instance can be used 
-     * until it is closed.
-     * @return <code>true</code> if this <code>PersistenceManagerFactory</code>
-     * has been closed.
-     * @see #close()
-     * @since 2.0
-     */
-    boolean isClosed();
-    
-    /** Get an instance of <code>PersistenceManager</code> from this factory.  
-     * The instance has default values for options.
-     *
-     * <P>After the first use of <code>getPersistenceManager</code>, no "set" 
-     * methods will succeed.
-     *
-     * @return a <code>PersistenceManager</code> instance with default options.
-     */
-    PersistenceManager getPersistenceManager();
-
-    /** Get an instance of <code>PersistenceManager</code> from this factory.  
-     * The instance has default values for options.  
-     * The parameters <code>userid</code> and <code>password</code> are used 
-     * when obtaining datastore connections from the connection pool.
-     *
-     * <P>After the first use of <code>getPersistenceManager</code>, no "set" 
-     * methods will succeed.
-     *
-     * @return a <code>PersistenceManager</code> instance with default options.
-     * @param userid the userid for the connection
-     * @param password the password for the connection
-     */
-    PersistenceManager getPersistenceManager(String userid, String password);
-
-    /** Set the user name for the data store connection.
-     * @param userName the user name for the data store connection.
-     */
-    void setConnectionUserName(String userName);
-
-    /** Get the user name for the data store connection.
-     * @return the user name for the data store connection.
-     */
-    String getConnectionUserName ();
-  
-    /** Set the password for the data store connection.
-     * @param password the password for the data store connection.
-     */
-    void setConnectionPassword (String password);
-  
-    /** Set the URL for the data store connection.
-     * @param url the URL for the data store connection.
-     */
-    void setConnectionURL (String url);
-
-    /** Get the URL for the data store connection.
-     * @return the URL for the data store connection.
-     */
-    String getConnectionURL ();
-  
-    /** Set the driver name for the data store connection.
-     * @param driverName the driver name for the data store connection.
-     */
-    void setConnectionDriverName  (String driverName);
-
-    /** Get the driver name for the data store connection.
-     * @return the driver name for the data store connection.
-     */
-    String getConnectionDriverName ();
-    
-    /** Set the name for the data store connection factory.
-     * @param connectionFactoryName the name of the data store connection 
-     * factory.
-     */
-    void setConnectionFactoryName (String connectionFactoryName);
-
-    /** Get the name for the data store connection factory.
-     * @return the name of the data store connection factory.
-     */
-    String getConnectionFactoryName ();
-  
-    /** Set the data store connection factory.  JDO implementations
-     * will support specific connection factories.  The connection
-     * factory interfaces are not part of the JDO specification.
-     * @param connectionFactory the data store connection factory.
-     */
-    void setConnectionFactory (Object connectionFactory);
-  
-    /** Get the data store connection factory.
-     * @return the data store connection factory.
-     */
-    Object getConnectionFactory ();
-  
-    /** Set the name for the second data store connection factory.  This is
-     * needed for managed environments to get nontransactional connections for
-     * optimistic transactions.
-     * @param connectionFactoryName the name of the data store connection 
-     * factory.
-     */
-    void setConnectionFactory2Name (String connectionFactoryName);
-
-    /** Get the name for the second data store connection factory.  This is
-     * needed for managed environments to get nontransactional connections for
-     * optimistic transactions.
-     * @return the name of the data store connection factory.
-     */
-    String getConnectionFactory2Name ();
-  
-    /** Set the second data store connection factory.  This is
-     * needed for managed environments to get nontransactional connections for
-     * optimistic transactions.  JDO implementations
-     * will support specific connection factories.  The connection
-     * factory interfaces are not part of the JDO specification.
-     * @param connectionFactory the data store connection factory.
-     */
-    void setConnectionFactory2 (Object connectionFactory);
-  
-    /** Get the second data store connection factory.  This is
-     * needed for managed environments to get nontransactional connections for
-     * optimistic transactions.
-     * @return the data store connection factory.
-     */
-    Object getConnectionFactory2 ();
-  
-    /** Set the default Multithreaded setting for all 
-     * <code>PersistenceManager</code> instances obtained from this factory.
-     *
-     * @param flag the default Multithreaded setting.
-     */
-    void setMultithreaded (boolean flag);
-  
-    /** Get the default Multithreaded setting for all 
-     * <code>PersistenceManager</code> instances obtained from this factory.  
-     *
-     * @return the default Multithreaded setting.
-     */
-    boolean getMultithreaded();
-    
-    /** Set the Mapping setting for this factory. This is used to find the 
-     * object-datastore mapping file(s).
-     *
-     * @param mapping the Mapping setting.
-     */
-    void setMapping (String mapping);
-  
-    /** Get the Mapping setting for this factory.  This is used to find the 
-     * object-datastore mapping file(s).
-     *
-     * @return the Mapping setting.
-     */
-    String getMapping ();
-    
-    /** Set the default Optimistic setting for all 
-     * <code>PersistenceManager</code> instances obtained from this factory.  
-     *
-     * @param flag the default Optimistic setting.
-     */
-    void setOptimistic (boolean flag);
-  
-    /** Get the default Optimistic setting for all 
-     * <code>PersistenceManager</code> instances obtained from this factory.  
-     *
-     * @return the default Optimistic setting.
-     */
-    boolean getOptimistic();
-    
-    /** Set the default RetainValues setting for all 
-     * <code>PersistenceManager</code> instances obtained from this factory.
-     *
-     * @param flag the default RetainValues setting.
-     */
-    void setRetainValues (boolean flag);
-  
-   /** Get the default RetainValues setting for all 
-    * <code>PersistenceManager</code> instances obtained from this factory.
-     *
-     * @return the default RetainValues setting.
-     */
-    boolean getRetainValues ();
-    
-    /** Set the default value for the RestoreValues property.  
-     * If <code>true</code>, at rollback, fields of newly persistent instances 
-     * are restored to 
-     * their values as of the beginning of the transaction, and the instances
-     * revert to transient.  Additionally, fields of modified
-     * instances of primitive types and immutable reference types
-     * are restored to their values as of the beginning of the 
-     * transaction.
-     * <P>If <code>false</code>, at rollback, the values of fields of 
-     * newly persistent instances are unchanged and the instances revert to
-     * transient.  Additionally, dirty instances transition to hollow.
-     * If an implementation does not support this option, a 
-     * <code>JDOUnsupportedOptionException</code> is thrown.
-     * @param restoreValues the value of the restoreValues property
-     */
-    void setRestoreValues(boolean restoreValues);
-    
-    /** Get the default value for the RestoreValues property.  
-     * @return the value of the restoreValues property
-     */
-    boolean getRestoreValues();
-    
-    /** Set the default NontransactionalRead setting for all 
-     * <code>PersistenceManager</code> instances obtained from this factory.  
-     *
-     * @param flag the default NontransactionalRead setting.
-     */
-    void setNontransactionalRead (boolean flag);
-  
-    /** Get the default NontransactionalRead setting for all 
-     * <code>PersistenceManager</code> instances obtained from this factory.
-     *
-     * @return the default NontransactionalRead setting.
-     */
-    boolean getNontransactionalRead ();
-    
-    /** Set the default NontransactionalWrite setting for all 
-     * <code>PersistenceManager</code> instances obtained from this factory.  
-     *
-     * @param flag the default NontransactionalWrite setting.
-     */
-    void setNontransactionalWrite (boolean flag);
-  
-    /** Get the default NontransactionalWrite setting for all 
-     * <code>PersistenceManager</code> instances obtained from this factory.
-     *
-     * @return the default NontransactionalWrite setting.
-     */
-    boolean getNontransactionalWrite ();
-    
-    /** Set the default IgnoreCache setting for all 
-     * <code>PersistenceManager</code> instances obtained from this factory.
-     *
-     * @param flag the default IgnoreCache setting.
-     */
-    void setIgnoreCache (boolean flag);
-  
-    /** Get the default IgnoreCache setting for all 
-     * <code>PersistenceManager</code> instances obtained from this factory.
-     *
-     * @return the default IngoreCache setting.
-     */
-    boolean getIgnoreCache ();
-  
-    /** Gets the detachAllOnCommit setting.
-     * @see #setDetachAllOnCommit(boolean)
-     * @since 2.0
-     * @return the default detachAllOnCommit setting.
-     */
-    boolean getDetachAllOnCommit();
-    
-    /** Sets the default detachAllOnCommit setting for all
-     * <code>PersistenceManager</code> instances obtained from this
-     * factory.
-     * @see #getDetachAllOnCommit()
-     * @since 2.0
-     */
-    void setDetachAllOnCommit(boolean flag);
-    
-    /** Return non-configurable properties of this 
-     * <code>PersistenceManagerFactory</code>.
-     * Properties with keys <code>VendorName</code> and 
-     * <code>VersionNumber</code> are required.  Other keys are optional.
-     * @return the non-configurable properties of this
-     * <code>PersistenceManagerFactory</code>.
-     */
-    Properties getProperties();
-    
-    /** The application can determine from the results of this
-     * method which optional features, and which query languages 
-     * are supported by the JDO implementation.
-     * <P>Each supported JDO optional feature is represented by a
-     * <code>String</code> with one of the following values:
-     *
-     * <P><code>javax.jdo.option.TransientTransactional
-     * <BR>javax.jdo.option.NontransactionalRead
-     * <BR>javax.jdo.option.NontransactionalWrite
-     * <BR>javax.jdo.option.RetainValues
-     * <BR>javax.jdo.option.Optimistic
-     * <BR>javax.jdo.option.ApplicationIdentity
-     * <BR>javax.jdo.option.DatastoreIdentity
-     * <BR>javax.jdo.option.NonDatastoreIdentity
-     * <BR>javax.jdo.option.ArrayList
-     * <BR>javax.jdo.option.HashMap
-     * <BR>javax.jdo.option.Hashtable
-     * <BR>javax.jdo.option.LinkedList
-     * <BR>javax.jdo.option.TreeMap
-     * <BR>javax.jdo.option.TreeSet
-     * <BR>javax.jdo.option.Vector
-     * <BR>javax.jdo.option.Map
-     * <BR>javax.jdo.option.List
-     * <BR>javax.jdo.option.Array  
-     * <BR>javax.jdo.option.NullCollection
-     * <BR>javax.jdo.option.ChangeApplicationIdentity
-     * <BR>javax.jdo.option.BinaryCompatibility
-     * <BR>javax.jdo.option.GetDataStoreConnection
-     * <BR>javax.jdo.option.UnconstrainedQueryVariables
-     * <BR>javax.jdo.query.SQL
-     * <BR>javax.jdo.query.JDOQL
-     * </code>
-     *
-     *<P>The standard JDO query language is represented by a 
-     * <code>String</code>:
-     *<P><code>javax.jdo.query.JDOQL</code>
-     * @return the <code>Collection</code> of <code>String</code>s representing 
-     * the supported options.
-     */    
-    Collection supportedOptions();
-   
-    /**
-     * Return the {@link DataStoreCache} that this factory uses for
-     * controlling a second-level cache. If this factory does not use
-     * a second-level cache, the returned instance does nothing. This
-     * method never returns <code>null</code>.
-     * @since 2.0
-     */
-    DataStoreCache getDataStoreCache ();
-
-    /**
-     * Add the parameter listener to the list of
-     * instance lifecycle event listeners set as the initial listeners
-     * for each PersistenceManager created by this PersistenceManagerFactory. 
-     * The <code>addInstanceLifecycleListener</code> and 
-     * <code>removeInstanceLifecycleListener</code>
-     * methods are considered to be configuration methods and
-     * can only be called when the PersistenceManagerFactory
-     * is configurable (before the first time {@link #getPersistenceManager}
-     * is called).
-     * <p>The <code>classes</code> parameter identifies all
-     * of the classes of interest. If the <code>classes</code>
-     * parameter is specified as <code>null</code>, events for all
-     * persistent classes and interfaces will be sent to the listener.</p>
-     * <p>The listener will be called for each event for which it
-     * implements the corresponding {@link InstanceLifecycleListener}
-     * interface.</p>
-     * @param listener the lifecycle listener
-     * @param classes the classes of interest to the listener
-     * @since 2.0
-     */
-    void addInstanceLifecycleListener (InstanceLifecycleListener listener,
-        Class[] classes);
-
-    /**
-     * Remove the parameter listener instance from the list of
-     * instance lifecycle event listeners set as the initial listeners
-     * for each PersistenceManager created by this PersistenceManagerFactory. 
-     * The <code>addInstanceLifecycleListener</code> and 
-     * <code>removeInstanceLifecycleListener</code>
-     * methods are considered to be configuration methods and
-     * can only be called when the PersistenceManagerFactory
-     * is configurable (before the first time {@link #getPersistenceManager}
-     * is called).
-     * @param listener the listener instance to be removed
-     * @since 2.0
-     */
-    void removeInstanceLifecycleListener (InstanceLifecycleListener listener);
-
-}
diff --git a/api20/src/java/javax/jdo/Query.java b/api20/src/java/javax/jdo/Query.java
deleted file mode 100644
index e206f3e..0000000
--- a/api20/src/java/javax/jdo/Query.java
+++ /dev/null
@@ -1,586 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * Query.java
- *
- */
-
-package javax.jdo;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Map;
-
-/** The <code>Query</code> interface allows applications to obtain persistent
- * instances, values, and aggregate data
- * from the data store.
- *
- * The {@link PersistenceManager} is the factory for <code>Query</code> 
- * instances.  There may be many <code>Query</code> instances associated with a 
- * <code>PersistenceManager</code>.  Multiple queries might be executed 
- * simultaneously by different threads, but the implementation might choose to 
- * execute them serially.  In either case, the implementation must be thread 
- * safe.
- *
- * <P>There are three required elements in a <code>Query</code>: the class of 
- * the results, the candidate collection of instances, and the filter.
- *
- * <P>There are optional elements: parameter declarations, variable
- * declarations, import statements, ordering and grouping specifications,
- * result and result class, the range of results,
- * and flags indicating whether the query result
- * is unique and whether the query can be modified.
- * <P>The query namespace is modeled after methods in Java:
- * <ul>
- * <li><code>setClass</code> corresponds to the class definition
- * <li><code>declareParameters</code> corresponds to formal parameters of a 
- * method
- * <li><code>declareVariables</code> corresponds to local variables of a method
- * <li><code>setFilter</code> and <code>setOrdering</code> correspond to the 
- * method body
- * </ul>
- * <P>There are two namespaces in queries. Type names have their own
- * namespace that is separate from the namespace for fields, variables
- * and parameters.
- * <P>The method <code>setClass</code> introduces the name of the candidate 
- * class in the type namespace. The method <code>declareImports</code> 
- * introduces the names of the imported class or interface types in the type 
- * namespace. Imported type names must be unique. When used (e.g. in a parameter
- * declaration, cast expression, etc.) a type name must be the name of the 
- * candidate class, the name of a class or interface imported by method
- * <code>declareImports</code>, or denote a class or interface from the same
- * package as the candidate class.
- * <P>The method <code>setClass</code> introduces the names of the candidate 
- * class fields.
- * <P>The method <code>declareParameters</code> introduces the names of the
- * parameters. A name introduced by <code>declareParameters</code> hides the 
- * name of a candidate class field of the same name. Parameter names must be 
- * unique.
- * <P>The method <code>declareVariables</code> introduces the names of the 
- * variables.  A name introduced by <code>declareVariables</code> hides the name
- * of a candidate class field if equal. Variable names must be unique and must 
- * not conflict with parameter names.
- * <P>The result of the query by default is a list of result class instances,
- * but might be specified via <code>setResult</code>. The class of the result
- * by default is the candidate class, but might be specified via 
- * <code>setResultClass</code>.
- * <P>A hidden field may be accessed using the 'this' qualifier:
- * <code>this.fieldName</code>.
- * <P>The <code>Query</code> interface provides methods which execute the query
- * based on the parameters given. They return a single instance or a 
- * <code>List</code> of result class instances which the
- * user can iterate to get results. The signature
- * of the <code>execute</code> methods specifies that they return an 
- * <code>Object</code> which must be cast to the appropriate result by the user.
- * <P>Any parameters passed to the <code>execute</code> methods are used only 
- * for this execution, and are not remembered for future execution.
- * @version 2.0
- */
-
-public interface Query extends Serializable {
-    
-    /**
-     * The string constant used as the first argument to 
-     * {@link PersistenceManager#newQuery(String,Object)} to identify that the 
-     * created query should obey the JDOQL syntax and semantic rules.
-     * <p>This is the default query language used when creating a query with any
-     * of the other {@link PersistenceManager#newQuery} methods, except 
-     * {@link PersistenceManager#newQuery(Object)}, which uses the query 
-     * language of the compiled query template object passed to that method.</p>
-     * @since 2.0
-     */
-    String JDOQL = "javax.jdo.query.JDOQL";
-
-    /**
-     * The string constant used as the first argument to {@link
-     * PersistenceManager#newQuery(String,Object)} to identify that
-     * the created query should use SQL semantics. This is only
-     * meaningful for relational JDO implementations.
-     * <p>If this is used, the <code>Object</code> argument to the
-     * {@link PersistenceManager#newQuery(String,Object)} method
-     * should be a <code>String</code> containing a SQL
-     * <code>SELECT</code> statement.</p>
-     * @since 2.0
-     */
-    String SQL = "javax.jdo.query.SQL";
-
-    /** Set the class of the candidate instances of the query.
-     * <P>The class specifies the class
-     * of the candidates of the query.  Elements of the candidate collection
-     * that are of the specified class are filtered before being
-     * put into the result <code>Collection</code>.
-     *
-     * @param cls the <code>Class</code> of the candidate instances.
-     */
-    void setClass(Class cls);
-    
-    /** Set the candidate <code>Extent</code> to query.
-     * @param pcs the candidate <code>Extent</code>.
-     */
-    void setCandidates(Extent pcs);
-    
-    /** Set the candidate <code>Collection</code> to query.
-     * @param pcs the candidate <code>Collection</code>.
-     */
-    void setCandidates(Collection pcs);
-    
-    /** Set the filter for the query.
-     *
-     * <P>The filter specification is a <code>String</code> containing a Boolean
-     * expression that is to be evaluated for each of the instances
-     * in the candidate collection. If the filter is not specified,
-     * then it defaults to "true", which has the effect of filtering
-     * the input <code>Collection</code> only for class type.
-     * <P>An element of the candidate collection is returned in the result if:
-     * <ul><li>it is assignment compatible to the candidate <code>Class</code> 
-     * of the <code>Query</code>; and
-     * <li>for all variables there exists a value for which the filter
-     * expression evaluates to <code>true</code>.
-     * </ul>
-     * <P>The user may denote uniqueness in the filter expression by
-     * explicitly declaring an expression (for example, <code>e1 != e2</code>).
-     * <P>Rules for constructing valid expressions follow the Java
-     * language, except for these differences:
-     * <ul>
-     * <li>Equality and ordering comparisons between primitives and instances
-     * of wrapper classes are valid.
-     * <li>Equality and ordering comparisons of <code>Date</code> fields and 
-     * <code>Date</code> parameters are valid.
-     * <li>White space (non-printing characters space, tab, carriage
-     * return, and line feed) is a separator and is otherwise ignored.
-     * <li>The assignment operators <code>=</code>, <code>+=</code>, etc. and 
-     * pre- and post-increment and -decrement are not supported. Therefore, 
-     * there are no side effects from evaluation of any expressions.
-     * <li>Methods, including object construction, are not supported, except
-     * for <code>Collection.contains(Object o)</code>, 
-     * <code>Collection.isEmpty()</code>, 
-     * <code>String.startsWith(String s)</code>, and 
-     * <code>String.endsWith(String e)</code>.  Implementations might choose to
-     * support non-mutating method calls as non-standard extensions.
-     * <li>Navigation through a <code>null</code>-valued field, which would 
-     * throw <code>NullPointerException</code>, is treated as if the filter 
-     * expression returned <code>false</code> for the evaluation of the current
-     * set of variable values. Other values for variables might still qualify 
-     * the candidate instance for inclusion in the result set.
-     * <li>Navigation through multi-valued fields (<code>Collection</code> 
-     * types) is specified using a variable declaration and the
-     * <code>Collection.contains(Object o)</code> method.
-     * </ul>
-     * <P>Identifiers in the expression are considered to be in the name
-     * space of the specified class, with the addition of declared imports,
-     * parameters and variables. As in the Java language, <code>this</code> is a 
-     * reserved word which means the element of the collection being evaluated.
-     * <P>Navigation through single-valued fields is specified by the Java
-     * language syntax of <code>field_name.field_name....field_name</code>.
-     * <P>A JDO implementation is allowed to reorder the filter expression
-     * for optimization purposes.
-     * @param filter the query filter.
-     */
-    void setFilter(String filter);
-    
-    /** Set the import statements to be used to identify the fully qualified 
-     * name of variables or parameters.  Parameters and unbound variables might 
-     * come from a different class from the candidate class, and the names 
-     * need to be declared in an import statement to eliminate ambiguity. 
-     * Import statements are specified as a <code>String</code> with 
-     * semicolon-separated statements. 
-     * <P>The <code>String</code> parameter to this method follows the syntax of 
-     * the import statement of the Java language.
-     * @param imports import statements separated by semicolons.
-     */
-    void declareImports(String imports);
-    
-    /** Declare the list of parameters query execution.
-     *
-     * The parameter declaration is a <code>String</code> containing one or more 
-     * query parameter declarations separated with commas. Each parameter named 
-     * in the parameter declaration must be bound to a value when 
-     * the query is executed.
-     * <P>The <code>String</code> parameter to this method follows the syntax 
-     * for formal parameters in the Java language. 
-     * @param parameters the list of parameters separated by commas.
-     */
-    void declareParameters(String parameters);
-    
-    /** Declare the unbound variables to be used in the query. Variables 
-     * might be used in the filter, and these variables must be declared 
-     * with their type. The unbound variable declaration is a 
-     * <code>String</code> containing one or more unbound variable declarations
-     * separated with semicolons. It follows the syntax for local variables in 
-     * the Java language.
-     * @param variables the variables separated by semicolons.
-     */
-    void declareVariables(String variables);
-    
-    /** Set the ordering specification for the result <code>Collection</code>.  
-     * The ordering specification is a <code>String</code> containing one or
-     * more ordering declarations separated by commas.
-     *
-     * <P>Each ordering declaration is the name of the field on which
-     * to order the results followed by one of the following words:
-     * "<code>ascending</code>" or "<code>descending</code>".
-     *
-     *<P>The field must be declared in the candidate class or must be
-     * a navigation expression starting with a field in the candidate class.
-     *
-     *<P>Valid field types are primitive types except <code>boolean</code>; 
-     * wrapper types except <code>Boolean</code>; <code>BigDecimal</code>; 
-     * <code>BigInteger</code>; <code>String</code>; and <code>Date</code>.
-     * @param ordering the ordering specification.
-     */
-    void setOrdering(String ordering);
-    
-    /** Set the ignoreCache option.  The default value for this option was
-     * set by the <code>PersistenceManagerFactory</code> or the
-     * <code>PersistenceManager</code> used to create this <code>Query</code>.
-     *
-     * The ignoreCache option setting specifies whether the query should execute
-     * entirely in the back end, instead of in the cache.  If this flag is set
-     * to <code>true</code>, an implementation might be able to optimize the 
-     * query execution by ignoring changed values in the cache.  For optimistic
-     * transactions, this can dramatically improve query response times.
-     * @param ignoreCache the setting of the ignoreCache option.
-     */
-    void setIgnoreCache(boolean ignoreCache);   
-    
-    /** Get the ignoreCache option setting.
-     * @return the ignoreCache option setting.
-     * @see #setIgnoreCache
-     */
-    boolean getIgnoreCache();
-    
-    /** Verify the elements of the query and provide a hint to the query to
-     * prepare and optimize an execution plan.
-     */
-    void compile();
-    
-    /** Execute the query and return the filtered Collection.
-     * @return the filtered <code>Collection</code>.
-     * @see #executeWithArray(Object[] parameters)
-     */
-    Object execute();
-    
-    /** Execute the query and return the filtered <code>Collection</code>.
-     * @return the filtered <code>Collection</code>.
-     * @see #executeWithArray(Object[] parameters)
-     * @param p1 the value of the first parameter declared.
-     */
-    Object execute(Object p1);
-    
-    /** Execute the query and return the filtered <code>Collection</code>.
-     * @return the filtered <code>Collection</code>.
-     * @see #executeWithArray(Object[] parameters)
-     * @param p1 the value of the first parameter declared.
-     * @param p2 the value of the second parameter declared.
-     */
-    Object execute(Object p1, Object p2);
-    
-    /** Execute the query and return the filtered <code>Collection</code>.
-     * @return the filtered <code>Collection</code>.
-     * @see #executeWithArray(Object[] parameters)
-     * @param p1 the value of the first parameter declared.
-     * @param p2 the value of the second parameter declared.
-     * @param p3 the value of the third parameter declared.
-     */
-    Object execute(Object p1, Object p2, Object p3);
-    
-    /** Execute the query and return the filtered <code>Collection</code>.  The 
-     * query is executed with the parameters set by the <code>Map</code> values.  
-     * Each <code>Map</code> entry consists of a key which is the name of the 
-     * parameter in the <code>declareParameters</code> method, and a value which 
-     * is the value used in the <code>execute</code> method.  The keys in the 
-     * <code>Map</code> and the declared parameters must exactly match or a 
-     * <code>JDOUserException</code> is thrown.
-     * @return the filtered <code>Collection</code>.
-     * @see #executeWithArray(Object[] parameters)
-     * @param parameters the <code>Map</code> containing all of the parameters.
-     */
-    Object executeWithMap (Map parameters);
-    
-    /** Execute the query and return the filtered <code>Collection</code>.
-     *
-     * <P>The execution of the query obtains the values of the parameters and
-     * matches them against the declared parameters in order.  The names
-     * of the declared parameters are ignored.  The type of
-     * the declared parameters must match the type of the passed parameters,
-     * except that the passed parameters might need to be unwrapped to get
-     * their primitive values.
-     *
-     * <P>The filter, import, declared parameters, declared variables, and
-     * ordering statements are verified for consistency.
-     *
-     * <P>Each element in the candidate <code>Collection</code> is examined to 
-     * see that it is assignment compatible to the <code>Class</code> of the 
-     * query.  It is then evaluated by the Boolean expression of the filter.  
-     * The element passes the filter if there exist unique values for all 
-     * variables for which the filter expression evaluates to <code>true</code>.
-     * @return the filtered <code>Collection</code>.
-     * @param parameters the <code>Object</code> array with all of the 
-     * parameters.
-     */
-    Object executeWithArray (Object[] parameters);
-    
-    /** Get the <code>PersistenceManager</code> associated with this 
-     * <code>Query</code>.
-     *
-     * <P>If this <code>Query</code> was restored from a serialized form, it has
-     * no <code>PersistenceManager</code>, and this method returns 
-     * <code>null</code>.
-     * @return the <code>PersistenceManager</code> associated with this 
-     * <code>Query</code>.
-     */
-    PersistenceManager getPersistenceManager();
-  
-    /** Close a query result and release any resources associated with it.  The
-     * parameter is the return from <code>execute(...)</code> and might have 
-     * iterators open on it.  Iterators associated with the query result are 
-     * invalidated: they return <code>false</code>  to <code>hasNext()</code> 
-     * and throw <code>NoSuchElementException</code> to <code>next()</code>.
-     * @param queryResult the result of <code>execute(...)</code> on this 
-     * <code>Query</code> instance.
-     */    
-    void close (Object queryResult);
-    
-    /** Close all query results associated with this <code>Query</code> 
-     * instance, and release all resources associated with them.  The query 
-     * results might have iterators open on them.  Iterators associated with the
-     * query results are invalidated: 
-     * they return <code>false</code> to <code>hasNext()</code> and throw 
-     * <code>NoSuchElementException</code> to <code>next()</code>.
-     */    
-    void closeAll ();
-
-    /**
-     * Set the grouping expressions, optionally including a "having"
-     * clause. When grouping is specified, each result expression
-     * must either be an expression contained in the grouping, or an
-     * aggregate evaluated once per group.
-     * 
-     * @param	group	a comma-delimited list of expressions, optionally
-     * followed by the "having" keyword and a boolean expression
-     * @since	2.0
-     */
-    void setGrouping (String group);
-
-    /**
-     * Specify that only the first result of the query should be
-     * returned, rather than a collection. The execute method will
-     * return null if the query result size is 0.
-     * @since 2.0
-     * @param unique if true, only one element is returned
-     */
-    void setUnique (boolean unique);
-
-    /**
-     * Specifies what type of data this query should return. If this
-     * is unset or set to <code>null</code>, this query returns
-     * instances of the query's candidate class. If set, this query
-     * will return expressions, including field values (projections) and 
-     * aggregate function results.
-     * @param data a comma-delimited list of expressions 
-     * (fields, functions on fields, or aggregate functions) 
-     * to return from this query
-     * @since 2.0
-     */
-    void setResult (String data);
-
-    /**
-     * Specify the type of object in which to return each element of
-     * the result of invoking {@link #execute} or one of its siblings. 
-     * If the result is not set or set to null, the result class defaults
-     * to the candidate class of the query. If the result consists of one
-     * expression, the result class defaults to the type of that expression.
-     * If the result consists of more than one expression, the result class
-     * defaults to Object[].
-     * The result class may be specified to be one of the java.lang classes 
-     * Character, Boolean, Byte, Short, Integer, Long, Float, Double, String, 
-     * or Object[]; or one of the java.math classes BigInteger or BigDecimal; 
-     * or the java.util class Date; or one of the java.sql classes Date, 
-     * Time, or Timestamp; or a user-defined class.
-     * <P>If there are multiple result expressions, the result class 
-     * must be able to hold all elements of the result specification 
-     * or a JDOUserException is thrown. 
-     *<P>If there is only one result expression, the result class must be 
-     * assignable from the type of the result expression or must be able 
-     * to hold all elements of the result specification. A single value 
-     * must be able to be coerced into the specified result class 
-     * (treating wrapper classes as equivalent to their unwrapped 
-     * primitive types) or by matching. If the result class does not satisfy 
-     * these conditions, a JDOUserException is thrown.
-     *<P>A constructor of a result class specified in the setResult method 
-     * will be used if the results specification matches the parameters 
-     * of the constructor by position and type. If more than one constructor 
-     * satisfies the requirements, the JDO implementation chooses one of them. 
-     * If no constructor satisfies the results requirements, or if the result 
-     * class is specified via the setResultClass method, the following 
-     * requirements apply:
-     * <ul>
-     * <li>A user-defined result class must have a no-args constructor and 
-     * one or more public <code>set</code> or <code>put</code> methods or 
-     * fields. 
-     * <li>Each result expression must match one of:
-     * <ul>
-     * <li>a public field that matches the name of the result expression 
-     * and is of the type (treating wrapper types equivalent to primitive 
-     * types) of the result expression; 
-     * <li>or if no public field matches the name and type, a public 
-     * <code>set</code method that returns void and matches the name of the 
-     * result expression and takes a single parameter which is the 
-     * exact type of the result expression;
-     * <li>or if neither of the above applies,a public method must be found 
-     * with the signature <code>void put(Object, Object)</code>.
-     * During processing of the results,  
-     * the first argument is the name of the result expression and 
-     * the second argument is the value from the query result.
-     * </ul>
-     * </ul>
-     * Portable result classes do not invoke any persistence behavior 
-     * during their no-args constructor or <code>set</code methods.
-     * @param cls the result class
-     * @since 2.0
-     */
-    void setResultClass (Class cls);
-
-    /**
-     * Set the range of results to return. The execution of the query is
-     * modified to return only a subset of results. If the filter would
-     * normally return 100 instances, and fromIncl is set to 50, and
-     * toExcl is set to 70, then the first 50 results that would have 
-     * been returned are skipped, the next 20 results are returned and the
-     * remaining 30 results are ignored. An implementation should execute
-     * the query such that the range algorithm is done at the data store.
-     * @param fromIncl 0-based inclusive start index
-     * @param toExcl 0-based exclusive end index, or 
-     *     {@link Long#MAX_VALUE} for no limit.
-     * @since 2.0
-     */
-    void setRange (long fromIncl, long toExcl);
-
-    /**
-     * Set the range of results to return. The parameter is a String
-     * containing a comma-separated fromIncl and toExcl. The fromIncl and
-     * toExcl can be either String representations of long values, or can
-     * be parameters identified with a leading ":". For example, 
-     * <code>setRange("50, 70");</code> or 
-     * <code>setRange(":from, :to");</code> or 
-     * <code>setRange("50, :to");</code>.
-     * The execution of the query is
-     * modified to return only a subset of results. If the filter would
-     * normally return 100 instances, and fromIncl is set to 50, and
-     * toExcl is set to 70, then the first 50 results that would have 
-     * been returned are skipped, the next 20 results are returned and the
-     * remaining 30 results are ignored. An implementation should execute
-     * the query such that the range algorithm is done at the data store.
-     * @param fromInclToExcl comma-separated fromIncl and toExcl values
-     * @see #setRange(long, long)
-     * @since 2.0
-     */
-    void setRange (String fromInclToExcl);
-
-    /**
-     * Add a vendor-specific extension to this query. The key and value
-     * are not standard.
-     * An implementation must ignore keys that are not recognized.
-     * @param key the key of the extension
-     * @param value the value of the extension
-     * @since 2.0
-     */
-    void addExtension (String key, Object value);
-
-    /**
-     * Set multiple extensions, or use null to clear all extensions.
-     * Map keys and values are not standard.
-     * An implementation must ignore entries that are not recognized.
-     * @param extensions the map of extensions
-     * @see #addExtension
-     * @since 2.0
-     */
-    void setExtensions (Map extensions);
-
-    /**
-     * Returns the <code>FetchPlan</code> used by this
-     * <code>Query</code>. Modifications of the returned fetch plan will not
-     * cause this query's owning <code>PersistenceManager</code>'s
-     * <code>FetchPlan</code> to be modified.
-     * @since 2.0
-     * @return the fetch plan used by this query
-     */
-    FetchPlan getFetchPlan ();
-
-    /**
-     * Deletes all the instances of the candidate class that pass the
-     * filter.
-     * @see #deletePersistentAll()
-     * @param parameters for the query
-     * @return the number of instances of the candidate class that were deleted
-     * @since 2.0
-     */
-    long deletePersistentAll (Object[] parameters);
-
-    /**
-     * Deletes all the instances of the candidate class that pass the
-     * filter.
-     * @see #deletePersistentAll()
-     * @param parameters for the query
-     * @return the number of instances of the candidate class that were deleted
-     * @since 2.0
-     */
-    long deletePersistentAll (Map parameters);
-
-    /**
-     * Deletes all the instances of the candidate class that pass the
-     * filter. Returns the number of instances of the candidate
-     * class that were deleted, specifically not including the number
-     * of dependent and embedded instances.
-     * <P>Dirty instances of affected classes in the cache are first
-     * flushed to the datastore. Instances in the cache or brought into
-     * the cache as a result of executing one of the 
-     * <code>deletePersistentAll</code>
-     * methods undergo life cycle changes as if <code>deletePersistent</code>
-     * were called on them.
-     * <P>Specifically, if the class of deleted instances implements the
-     * delete callback interface, the corresponding callback methods
-     * are called on the deleted instances. Similarly, if there are
-     * lifecycle listeners registered for delete events on affected
-     * classes, the listener is called for each appropriate deleted instance.
-     * <P>Before returning control to the application, instances of affected
-     * classes in the cache are refreshed to reflect whether they were
-     * deleted from the datastore.
-     * 
-     * @return the number of instances of the candidate class that were deleted
-     * @since 2.0
-     */
-    long deletePersistentAll ();
-    
-    /**
-     * The unmodifiable flag, when set, disallows further 
-     * modification of the query, except for specifying the range, 
-     * result class, and ignoreCache option.
-     * The unmodifiable flag can also be set in metadata.
-     * @since 2.0
-      */
-    void setUnmodifiable();
-
-    /**
-     * The unmodifiable flag, when set, disallows further 
-     * modification of the query, except for specifying the range, 
-     * result class, and ignoreCache option.
-     * @return the current setting of the flag
-     * @since 2.0
-      */
-    boolean isUnmodifiable();
-
-}
diff --git a/api20/src/java/javax/jdo/Transaction.java b/api20/src/java/javax/jdo/Transaction.java
deleted file mode 100644
index 808a254..0000000
--- a/api20/src/java/javax/jdo/Transaction.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * Transaction.java
- *
- */
- 
-package javax.jdo;
-import javax.transaction.Synchronization;
-
-/** The JDO <code>Transaction</code> interface provides for initiation and 
- * completion of transactions under user control.
- * It is a sub-interface of the {@link PersistenceManager}
- * that deals with options and transaction demarcation. 
- * <P>Transaction options include whether optimistic concurrency
- * control should be used for the current transaction, whether instances
- * may hold values in the cache outside transactions, and whether
- * values should be retained in the cache after transaction completion.  These
- * options are valid for both managed and non-managed transactions.
- *
- * <P>Transaction initiation and completion methods have similar semantics to
- * <code>javax.transaction.UserTransaction</code> when used outside a managed
- * environment. When used in a managed environment, transaction initiation 
- * and completion methods may only be used with bean-managed transaction 
- * semantics.
- * @version 2.0
- */
-
-public interface Transaction
-{
-    /** Begin a transaction.  The type of transaction is determined by the
-     * setting of the Optimistic flag.
-     * @see #setOptimistic
-     * @see #getOptimistic
-     * @throws JDOUserException if transactions are managed by a container
-     * in the managed environment, or if the transaction is already active.
-     */
-    void begin();
-    
-    /** Commit the current transaction.
-     * @throws JDOUserException if transactions are managed by a container
-     * in the managed environment, or if the transaction is not active.
-     */
-    void commit();
-    
-    /** Roll back the current transaction.
-     * @throws JDOUserException if transactions are managed by a container
-     * in the managed environment, or if the transaction is not active.
-     */
-    void rollback();
-
-    /** Returns whether there is a transaction currently active.
-     * @return <code>true</code> if the transaction is active.
-     */
-    boolean isActive();
-    
-    /**
-     * Returns the rollback-only status of the transaction. When
-     * begun, the rollback-only status is false. Either the 
-     * application or the JDO implementation may set this flag
-     * using setRollbackOnly.
-     * @return <code>true</code> if the transaction has been
-     * marked for rollback.
-     * @since 2.0
-     */
-    boolean getRollbackOnly();
-
-    /**
-     * Sets the rollback-only status of the transaction to <code>true</code>.
-     * After this flag is set to <code>true</code>, the transaction 
-     * can no longer be committed, and any attempt to commit the 
-     * transaction will throw <code>JDOUserException<code>.
-     * @since 2.0
-     */
-    void setRollbackOnly();
-
-    /** If <code>true</code>, allow persistent instances to be read without
-     * a transaction active.
-     * If an implementation does not support this option, a 
-     * <code>JDOUnsupportedOptionException</code> is thrown.
-     * @param nontransactionalRead the value of the nontransactionalRead 
-     * property
-     */
-    void setNontransactionalRead (boolean nontransactionalRead);
-    
-    /** If <code>true</code>, allows persistent instances to be read without
-     * a transaction active.
-     * @return the value of the nontransactionalRead property
-     */
-    boolean getNontransactionalRead ();
-    
-    /** If <code>true</code>, allow persistent instances to be written without
-     * a transaction active.
-     * If an implementation does not support this option, a 
-     * <code>JDOUnsupportedOptionException</code> is thrown.
-     * @param nontransactionalWrite the value of the nontransactionalRead 
-     * property
-     */
-    void setNontransactionalWrite (boolean nontransactionalWrite);
-    
-    /** If <code>true</code>, allows persistent instances to be written without
-     * a transaction active.
-     * @return the value of the nontransactionalWrite property
-     */
-    boolean getNontransactionalWrite ();
-    
-    /** If <code>true</code>, at commit instances retain their values and the 
-     * instances transition to persistent-nontransactional.
-     * If an implementation does not support this option, a 
-     * <code>JDOUnsupportedOptionException</code> is thrown.
-     * @param retainValues the value of the retainValues property
-     */
-    void setRetainValues(boolean retainValues);
-    
-    /** If <code>true</code>, at commit time instances retain their field 
-     * values.
-     * @return the value of the retainValues property
-     */
-    boolean getRetainValues();
-    
-    /** If <code>true</code>, at rollback, fields of newly persistent instances 
-     * are restored to 
-     * their values as of the beginning of the transaction, and the instances
-     * revert to transient.  Additionally, fields of modified
-     * instances of primitive types and immutable reference types
-     * are restored to their values as of the beginning of the 
-     * transaction.
-     * <P>If <code>false</code>, at rollback, the values of fields of 
-     * newly persistent instances are unchanged and the instances revert to
-     * transient.  Additionally, dirty instances transition to hollow.
-     * If an implementation does not support this option, a 
-     * <code>JDOUnsupportedOptionException</code> is thrown.
-     * @param restoreValues the value of the restoreValues property
-     */
-    void setRestoreValues(boolean restoreValues);
-    
-    /** Return the current value of the restoreValues property.
-     * @return the value of the restoreValues property
-     */
-    boolean getRestoreValues();
-    
-    /** Optimistic transactions do not hold data store locks until commit time.
-     * If an implementation does not support this option, a 
-     * <code>JDOUnsupportedOptionException</code> is thrown.
-     * @param optimistic the value of the Optimistic flag.
-     */
-    void setOptimistic(boolean optimistic);
-    
-    /** Optimistic transactions do not hold data store locks until commit time.
-     * @return the value of the Optimistic property.
-     */
-    boolean getOptimistic();
-    
-    /** The user can specify a <code>Synchronization</code> instance to be 
-     * notified on transaction completions.  The <code>beforeCompletion</code> 
-     * method is called prior to flushing instances to the data store.
-     *
-     * <P>The <code>afterCompletion</code> method is called after performing 
-     * state transitions of persistent and transactional instances, following 
-     * the data store commit or rollback operation.
-     * <P>Only one <code>Synchronization</code> instance can be registered with 
-     * the  <code>Transaction</code>. If the application requires more than one 
-     * instance to receive synchronization callbacks, then the single 
-     * application instance is responsible for managing them, and forwarding 
-     * callbacks to them.
-     * @param sync the <code>Synchronization</code> instance to be notified; 
-     * <code>null</code> for none
-     */
-    void setSynchronization(Synchronization sync);
-    
-    /** The user-specified <code>Synchronization</code> instance for this 
-     * <code>Transaction</code> instance.    
-     * @return the user-specified <code>Synchronization</code> instance.
-     */
-    Synchronization getSynchronization();
-
-    /** The <code>Transaction</code> instance is always associated with exactly 
-     * one <code>PersistenceManager</code>.
-     *
-     * @return the <code>PersistenceManager</code> for this 
-     * <code>Transaction</code> instance
-     */
-    PersistenceManager getPersistenceManager();
-}
diff --git a/api20/src/java/javax/jdo/datastore/DataStoreCache.java b/api20/src/java/javax/jdo/datastore/DataStoreCache.java
deleted file mode 100644
index 6531b66..0000000
--- a/api20/src/java/javax/jdo/datastore/DataStoreCache.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * DataStoreCache.java
- *
- */
- 
-package javax.jdo.datastore;
-
-import java.util.Collection;
-
-
-/** 
- * Many JDO implementations allow instances to be cached in a
- * second-level cache, and allow direct management of the cache by
- * knowledgeable applications. This interface standardizes this
- * behavior.
- * @since 2.0
- * @version 2.0
- */
-public interface DataStoreCache {
-
-    /** Evict the parameter instance from the second-level cache.
-     * @param oid the object id of the instance to evict.
-     * @since 2.0
-     */
-    void evict (Object oid);
-
-    /** Evict the parameter instances from the second-level cache.
-     * All instances in the PersistenceManager's cache are evicted 
-     * from the second-level cache.
-     * @since 2.0
-     */
-    void evictAll ();
-
-    /** Evict the parameter instances from the second-level cache.
-     * @param oids the object ids of the instance to evict.
-     * @since 2.0
-     */
-    void evictAll (Object[] oids);
-
-    /** Evict the parameter instances from the second-level cache.
-     * @param oids the object ids of the instance to evict.
-     * @since 2.0
-     */
-    void evictAll (Collection oids);
-
-    /** Evict the parameter instances from the second-level cache.
-     * @param pcClass the class of instances to evict
-     * @param subclasses if true, evict instances of subclasses also
-     * @since 2.0
-     */
-    void evictAll (Class pcClass, boolean subclasses);
-
-    /** Pin the parameter instance in the second-level cache.
-     * @param oid the object id of the instance to pin.
-     * @since 2.0
-     */
-    void pin (Object oid);
-
-    /** Pin the parameter instances in the second-level cache.
-     * @param oids the object ids of the instances to pin.
-     * @since 2.0
-     */
-    void pinAll (Collection oids);
-
-    /** Pin the parameter instances in the second-level cache.
-     * @param oids the object ids of the instances to pin.
-     * @since 2.0
-     */
-    void pinAll (Object[] oids);
-
-    /** Pin instances in the second-level cache.
-     * @param pcClass the class of instances to pin
-     * @param subclasses if true, pin instances of subclasses also
-     * @since 2.0
-     */
-    void pinAll (Class pcClass, boolean subclasses);
-
-    /** Unpin the parameter instance from the second-level cache.
-     * @param oid the object id of the instance to unpin.
-     * @since 2.0
-     */
-    void unpin(Object oid);
-
-    /** Unpin the parameter instances from the second-level cache.
-     * @param oids the object ids of the instance to evict.
-     * @since 2.0
-     */
-    void unpinAll(Collection oids);
-
-    /** Unpin the parameter instance from the second-level cache.
-     * @param oids the object id of the instance to evict.
-     * @since 2.0
-     */
-    void unpinAll(Object[] oids);
-
-    /** Unpin instances from the second-level cache.
-     * @param pcClass the class of instances to unpin
-     * @param subclasses if true, unpin instances of subclasses also
-     * @since 2.0
-     */
-    void unpinAll(Class pcClass, boolean subclasses);
-    
-    /** 
-     * This class is an empty implementation of the DataStoreCache 
-     * interface. It can be used by an implementation that does not
-     * support a second-level cache.
-     * @since 2.0
-     */
-    public class EmptyDataStoreCache implements DataStoreCache {
-        
-        public EmptyDataStoreCache() {
-        }
-        
-        public void evict(Object oid) {
-        }
-
-        public void evictAll() {
-        }
-
-        public void evictAll(Object[] oids) {
-        }
-
-        public void evictAll(Collection oids) {
-        }
-
-        public void evictAll(Class pcClass, boolean subclasses) {
-        }
-
-        public void pin(Object oid) {
-        }
-
-        public void pinAll(Object[] oids) {
-        }
-
-        public void pinAll(Collection oids) {
-        }
-
-        public void pinAll(Class pcClass, boolean subclasses) {
-        }
-
-        public void unpin(Object oid) {
-        }
-
-        public void unpinAll(Object[] oids) {
-        }
-
-        public void unpinAll(Collection oids) {
-        }
-
-        public void unpinAll(Class pcClass, boolean subclasses) {
-        }
-    }
-}
diff --git a/api20/src/java/javax/jdo/datastore/JDOConnection.java b/api20/src/java/javax/jdo/datastore/JDOConnection.java
deleted file mode 100644
index fa0d09b..0000000
--- a/api20/src/java/javax/jdo/datastore/JDOConnection.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOConnection.java
- *
- */
- 
-package javax.jdo.datastore;
-
-/**
- * The underlying connection that is being used by a 
- * {@link javax.jdo.PersistenceManager}. 
- * @version 2.0
- * @since 2.0
- */
-public interface JDOConnection {
-
-    /**
-     * Returns the native, datastore-specific connection that this
-     * connection wraps. In general, it is not recommended that this
-     * native connection be used directly, since the JDO
-     * implementation has no way to intercept calls to it, so it is
-     * quite possible to put the <code>PersistenceManager</code>'s
-     * connection into an invalid state.
-     * @return the native connection
-     * @since 2.0
-     */
-    Object getNativeConnection ();
-    
-    /**
-     * Returns this connection to the JDO implementation.
-     * The object must be returned to the JDO implementation prior to
-     * calling any JDO method or performing any action on any persistent
-     * instance that might require the JDO implementation to use a
-     * connection. If the object has not been returned and the JDO
-     * implementation needs a connection, a <code>JDOUserException</code>
-     * is thrown.
-     * @since 2.0
-     */
-    void close();
-}
diff --git a/api20/src/java/javax/jdo/datastore/Sequence.java b/api20/src/java/javax/jdo/datastore/Sequence.java
deleted file mode 100644
index 3c03d5b..0000000
--- a/api20/src/java/javax/jdo/datastore/Sequence.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * Sequence.java
- *
- */
- 
-package javax.jdo.datastore;
-
-
-/**
- *	Implementations of this interface can be used to obtain
- *	sequences. The behavior with regard to the transaction and
- *	rollover behavior are defined in the metadata.
- *
- *	@version 2.0
- *	@since 2.0
- */
-public interface Sequence {
-
-    /**
-     * Returns the fully qualified name of the <code>Sequence</code>.
-     * @return the name of the sequence
-     */
-    String getName ();
-
-    /**
-     * Returns the next sequence value as an Object. If the next
-     * sequence value is not available, throw JDODataStoreException.
-     * @return the next value
-     */
-    Object next ();
-
-    /**
-     * Provides a hint to the implementation that the application
-     * will need <code>additional</code> sequence value objects in
-     * short order. There is no externally visible behavior of this
-     * method. It is used to potentially improve the efficiency of
-     * the algorithm of obtaining additional sequence value objects.
-     * @param additional the number of additional values to allocate
-     */
-    void allocate (int additional);
-
-    /**
-     * Returns the current sequence value object if it is
-     * available. It is intended to return a sequence value object
-     * previously used. If the current sequence value is not available,
-     * throw JDODataStoreException.
-     * @return the current value
-     */
-    Object current ();
-    
-    /** 
-     * Returns the next sequence value as a long. If the next
-     * sequence value is not available or is not numeric, throw
-     * JDODataStoreException.
-     * @return the next value
-     */
-    long nextValue();
-    
-    /** 
-     * Returns the current sequence value as a long. If the current
-     * sequence value is not available or is not numeric, throw
-     * JDODataStoreException.
-     * @return the current value
-     */
-    long currentValue();
-}
diff --git a/api20/src/java/javax/jdo/datastore/package.html b/api20/src/java/javax/jdo/datastore/package.html
deleted file mode 100644
index 97453e2..0000000
--- a/api20/src/java/javax/jdo/datastore/package.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!--
- Copyright 2005 The Apache Software Foundation.
- 
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- 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.
--->
-
-<html>
-<head>
-<title>Datastore package</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</head>
-
-<body bgcolor="#FFFFFF">
-This package contains the JDO specification datastore interfaces.
-</body>
-</html>
diff --git a/api20/src/java/javax/jdo/identity/ByteIdentity.java b/api20/src/java/javax/jdo/identity/ByteIdentity.java
deleted file mode 100644
index da47cdf..0000000
--- a/api20/src/java/javax/jdo/identity/ByteIdentity.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * ByteIdentity.java
- *
- */
- 
-package javax.jdo.identity;
-
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-
-/** This class is for identity with a single byte field.
- * @version 2.0
- */
-public class ByteIdentity extends SingleFieldIdentity {
-    
-    /** The key.
-     */
-    private byte key;
-    
-    /** Construct this instance with the key value.
-     */
-    private void construct(byte key) {
-        this.key = key;
-        hashCode = super.hashClassName() ^ key;
-    }
-    
-    /** Constructor with class and key.
-     * @param pcClass the target class
-     * @param key the key
-     */
-    public ByteIdentity(Class pcClass, byte key) {
-        super(pcClass);
-        construct(key);
-    }
-    
-    /** Constructor with class and key.
-     * @param pcClass the target class
-     * @param key the key
-     */
-    public ByteIdentity(Class pcClass, Byte key) {
-        super(pcClass);
-        setKeyAsObject(key);
-        construct(key.byteValue());
-    }
-
-    /** Constructor with class and key.
-     * @param pcClass the target class
-     * @param str the key
-     */
-    public ByteIdentity(Class pcClass, String str) {
-        super(pcClass);
-        assertKeyNotNull(str);
-        construct(Byte.parseByte(str));
-    }
-
-    /** Constructor only for Externalizable.
-     */
-    public ByteIdentity() {
-    }
-
-    /** Return the key.
-     * @return the key
-     */
-    public byte getKey() {
-        return key;
-    }
-
-    /** Return the String version of the key.
-     * @return the key.
-     */
-    public String toString() {
-        return Byte.toString(key);
-    }
-
-    /** Determine if the other object represents the same object id.
-     * @param obj the other object
-     * @return true if both objects represent the same object id
-     */
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        } else if (!super.equals (obj)) {
-            return false;
-        } else {
-            ByteIdentity other = (ByteIdentity)obj;
-            return key == other.key;
-        }
-    }
-
-    /** Create the key as an Object.
-     * @return the key as an Object
-     * @since 2.0
-     */
-    protected Object createKeyAsObject() {
-        return new Byte(key);
-    }
-
-    /** Write this object. Write the superclass first.
-     * @param out the output
-     */
-    public void writeExternal(ObjectOutput out) throws IOException {
-        super.writeExternal (out);
-        out.writeByte (key);
-    }
-
-    /** Read this object. Read the superclass first.
-     * @param in the input
-     */
-    public void readExternal(ObjectInput in)
-		throws IOException, ClassNotFoundException {
-        super.readExternal (in);
-        key = in.readByte ();
-    }
-}
diff --git a/api20/src/java/javax/jdo/identity/CharIdentity.java b/api20/src/java/javax/jdo/identity/CharIdentity.java
deleted file mode 100644
index de5755f..0000000
--- a/api20/src/java/javax/jdo/identity/CharIdentity.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * CharIdentity.java
- *
- */
-
-package javax.jdo.identity;
-
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-
-import javax.jdo.spi.I18NHelper;
-
-/** This class is for identity with a single character field.
- * @version 2.0
- */
-public class CharIdentity extends SingleFieldIdentity {
-
-    /** The Internationalization message helper.
-     */
-    private static I18NHelper msg = I18NHelper.getInstance ("javax.jdo.Bundle"); //NOI18N
-
-    /** The key.
-     */
-    private char key;
-
-    private void construct(char key) {
-        this.key = key;
-        hashCode = hashClassName() ^ key;
-    }
-
-    /** Constructor with class and key.
-     * @param pcClass the target class
-     * @param key the key
-     */
-    public CharIdentity (Class pcClass, char key) {
-        super (pcClass);
-        construct(key);
-    }
-
-    /** Constructor with class and key.
-     * @param pcClass the target class
-     * @param key the key
-     */
-    public CharIdentity (Class pcClass, Character key) {
-        super (pcClass);
-        setKeyAsObject(key);
-        construct(key.charValue());
-    }
-
-    /** Constructor with class and key. The String must have exactly one
-     * character.
-     * @param pcClass the target class
-     * @param str the key
-     */
-    public CharIdentity (Class pcClass, String str) {
-        super(pcClass);
-        assertKeyNotNull(str);
-        if (str.length() != 1) 
-            throw new IllegalArgumentException(
-                msg.msg("EXC_StringWrongLength")); //NOI18N
-        construct(str.charAt(0));
-    }
-
-    /** Constructor only for Externalizable.
-     */
-    public CharIdentity () {
-    }
-
-    /** Return the key.
-     * @return the key
-     */
-    public char getKey () {
-        return key;
-    }
-
-    /** Return the String form of the key.
-     * @return the String form of the key
-     */
-    public String toString () {
-        return String.valueOf(key);
-    }
-
-    /** Determine if the other object represents the same object id.
-     * @param obj the other object
-     * @return true if both objects represent the same object id
-     */
-    public boolean equals (Object obj) {
-        if (this == obj) {
-            return true;
-        } else if (!super.equals (obj)) {
-            return false;
-        } else {
-            CharIdentity other = (CharIdentity) obj;
-            return key == other.key;
-        }
-    }
-
-    /** Create the key as an Object.
-     * @return the key as an Object
-     * @since 2.0
-     */
-    protected Object createKeyAsObject() {
-        return new Character(key);
-    }
-
-    /** Write this object. Write the superclass first.
-     * @param out the output
-     */
-    public void writeExternal(ObjectOutput out) throws IOException {
-        super.writeExternal (out);
-        out.writeChar(key);
-    }
-
-    /** Read this object. Read the superclass first.
-     * @param in the input
-     */
-    public void readExternal(ObjectInput in)
-		throws IOException, ClassNotFoundException {
-        super.readExternal (in);
-        key = in.readChar();
-    }
-    
-    private void computeHashCode() {
-        hashCode = hashClassName() ^ key;
-    }
-}
diff --git a/api20/src/java/javax/jdo/identity/IntIdentity.java b/api20/src/java/javax/jdo/identity/IntIdentity.java
deleted file mode 100644
index 7246279..0000000
--- a/api20/src/java/javax/jdo/identity/IntIdentity.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * IntIdentity.java
- *
- */
- 
-package javax.jdo.identity;
-
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-
-/** This class is for identity with a single int field.
- * @version 2.0
- */
-public class IntIdentity extends SingleFieldIdentity {
-
-    private int key;
-
-    private void construct(int key) {
-        this.key = key;
-        hashCode = hashClassName() ^ key;
-    }
-
-    /** Constructor with class and key.
-     * @param pcClass the class
-     * @param key the key
-     */
-    public IntIdentity (Class pcClass, int key) {
-        super(pcClass);
-        construct(key);
-	}
-
-    /** Constructor with class and key.
-     * @param pcClass the class
-     * @param key the key
-     */
-    public IntIdentity (Class pcClass, Integer key) {
-        super(pcClass);
-        setKeyAsObject(key);
-        construct(key.intValue ());
-    }
-
-
-    /** Constructor with class and key.
-     * @param pcClass the class
-     * @param str the key
-     */
-    public IntIdentity (Class pcClass, String str) {
-        super(pcClass);
-        assertKeyNotNull(str);
-        construct(Integer.parseInt(str));
-    }
-
-    /** Constructor only for Externalizable.
-     */
-    public IntIdentity () {
-    }
-
-    /** Return the key.
-     * @return the key
-     */
-    public int getKey () {
-        return key;
-    }
-
-    /** Return the String form of the key.
-     * @return the String form of the key
-     */
-    public String toString () {
-        return Integer.toString(key);
-    }
-
-    /** Determine if the other object represents the same object id.
-     * @param obj the other object
-     * @return true if both objects represent the same object id
-     */
-    public boolean equals (Object obj) {
-        if (this == obj) {
-            return true;
-        } else if (!super.equals (obj)) {
-            return false;
-        } else {
-            IntIdentity other = (IntIdentity) obj;
-            return key == other.key;
-        }
-    }
-
-    /** Create the key as an Object.
-     * @return the key as an Object
-     * @since 2.0
-     */
-    protected Object createKeyAsObject() {
-        return new Integer(key);
-    }
-
-    /** Write this object. Write the superclass first.
-     * @param out the output
-     */
-    public void writeExternal(ObjectOutput out) throws IOException {
-        super.writeExternal (out);
-        out.writeInt(key);
-    }
-
-    /** Read this object. Read the superclass first.
-     * @param in the input
-     */
-    public void readExternal(ObjectInput in)
-		throws IOException, ClassNotFoundException {
-        super.readExternal (in);
-        key = in.readInt();
-    }
-}
diff --git a/api20/src/java/javax/jdo/identity/LongIdentity.java b/api20/src/java/javax/jdo/identity/LongIdentity.java
deleted file mode 100644
index 2bc44d4..0000000
--- a/api20/src/java/javax/jdo/identity/LongIdentity.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * LongIdentity.java
- *
- */
- 
-package javax.jdo.identity;
-
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-
-/** This class is for identity with a single long field.
- * @version 2.0
- */
-public class LongIdentity extends SingleFieldIdentity {
-	
-    /** The key.
-     */
-    private long key;
-
-    private void construct(long key) {
-        this.key = key;
-        hashCode = hashClassName() ^ (int)key;
-    }
-
-    /** Constructor with class and key.
-     * @param pcClass the class
-     * @param key the key
-     */
-    public LongIdentity (Class pcClass, long key) {
-        super (pcClass);
-        construct(key);
-    }
-
-    /** Constructor with class and key.
-     * @param pcClass the class
-     * @param key the key
-     */
-    public LongIdentity (Class pcClass, Long key) {
-        super(pcClass);
-        setKeyAsObject(key);
-        construct(key.longValue());
-    }
-
-    /** Constructor with class and key.
-     * @param pcClass the class
-     * @param str the key
-     */
-    public LongIdentity (Class pcClass, String str) {
-        super(pcClass);
-        assertKeyNotNull(str);
-        construct(Long.parseLong(str));
-    }
-
-    /** Constructor only for Externalizable.
-     */
-    public LongIdentity () {
-    }
-
-    /** Return the key.
-     * @return the key
-     */
-    public long getKey () {
-        return key;
-    }
-
-    /** Return the String form of the key.
-     * @return the String form of the key
-     */
-    public String toString () {
-        return Long.toString(key);
-    }
-
-    /** Determine if the other object represents the same object id.
-     * @param obj the other object
-     * @return true if both objects represent the same object id
-     */
-    public boolean equals (Object obj) {
-        if (this == obj) {
-            return true;
-        } else if (!super.equals (obj)) {
-            return false;
-        } else {
-            LongIdentity other = (LongIdentity) obj;
-            return key == other.key;
-        }
-    }
-
-    /** Create the key as an Object.
-     * @return the key as an Object
-     * @since 2.0
-     */
-    protected Object createKeyAsObject() {
-        return new Long(key);
-    }
-
-    /** Write this object. Write the superclass first.
-     * @param out the output
-     */
-    public void writeExternal(ObjectOutput out) throws IOException {
-        super.writeExternal (out);
-        out.writeLong(key);
-    }
-
-    /** Read this object. Read the superclass first.
-     * @param in the input
-     */
-    public void readExternal(ObjectInput in)
-		throws IOException, ClassNotFoundException {
-        super.readExternal (in);
-        key = in.readLong();
-    }
-
-}
diff --git a/api20/src/java/javax/jdo/identity/ObjectIdentity.java b/api20/src/java/javax/jdo/identity/ObjectIdentity.java
deleted file mode 100644
index 9a132be..0000000
--- a/api20/src/java/javax/jdo/identity/ObjectIdentity.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * ObjectIdentity.java
- *
- */
- 
-package javax.jdo.identity;
-
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-
-import javax.jdo.JDOUserException;
-
-import javax.jdo.spi.JDOImplHelper;
-
-/** This class is for identity with a single Object type field.
- * @version 2.0
- */
-public class ObjectIdentity extends SingleFieldIdentity {
-    
-    /** The key is stored in the superclass field keyAsObject.
-     */
-    
-    /** The JDOImplHelper instance used for parsing the String to an Object.
-     */
-    private static JDOImplHelper helper = (JDOImplHelper)
-        AccessController.doPrivileged(
-            new PrivilegedAction () {
-                public Object run () {
-                    return JDOImplHelper.getInstance();
-                }
-            }
-        );
-    
-    /** The delimiter for String constructor.
-     */
-    private static final String STRING_DELIMITER = ":"; //NOI18N
-    
-    /** Constructor with class and key.
-     * @param pcClass the class
-     * @param param the key
-     */
-    public ObjectIdentity (Class pcClass, Object param) {
-        super (pcClass);
-        assertKeyNotNull(param);
-        String paramString = null;
-        String keyString = null;
-        String className = null;
-        if (param instanceof String) {
-            /* The paramString is of the form "<className>:<keyString>" */
-            paramString = (String)param;
-            if (paramString.length() < 3) {
-                throw new JDOUserException(
-                    msg.msg("EXC_ObjectIdentityStringConstructionTooShort") + //NOI18N
-                    msg.msg("EXC_ObjectIdentityStringConstructionUsage", //NOI18N
-                        paramString));
-            }
-            int indexOfDelimiter = paramString.indexOf(STRING_DELIMITER);
-            if (indexOfDelimiter < 0) {
-                throw new JDOUserException(
-                    msg.msg("EXC_ObjectIdentityStringConstructionNoDelimiter") + //NOI18N
-                    msg.msg("EXC_ObjectIdentityStringConstructionUsage", //NOI18N
-                        paramString));
-            }
-            keyString = paramString.substring(indexOfDelimiter+1);
-            className = paramString.substring(0, indexOfDelimiter);
-            keyAsObject = helper.construct(className, keyString);
-        } else {
-            keyAsObject = param;
-        }
-        hashCode = hashClassName() ^ keyAsObject.hashCode();
-    }
-
-    /** Constructor only for Externalizable.
-     */
-    public ObjectIdentity () {
-    }
-
-    /** Return the key.
-     * @return the key
-     */
-    public Object getKey () {
-        return keyAsObject;
-    }
-
-    /** Return the String form of the object id. The class of the
-     * object id is written as the first part of the result so that
-     * the class can be reconstructed later. Then the toString
-     * of the key instance is appended. During construction, 
-     * this process is reversed. The class is extracted from 
-     * the first part of the String, and the String constructor
-     * of the key is used to construct the key itself.
-     * @return the String form of the key
-     */
-    public String toString () {
-        return keyAsObject.getClass().getName()
-                + STRING_DELIMITER
-                + keyAsObject.toString();
-    }
-
-    /** Determine if the other object represents the same object id.
-     * @param obj the other object
-     * @return true if both objects represent the same object id
-     */
-    public boolean equals (Object obj) {
-        if (this == obj) {
-            return true;
-        } else if (!super.equals (obj)) {
-            return false;
-        } else {
-            ObjectIdentity other = (ObjectIdentity) obj;
-            return keyAsObject.equals(other.keyAsObject);
-        }
-    }
-
-    /** Write this object. Write the superclass first.
-     * @param out the output
-     */
-    public void writeExternal(ObjectOutput out) throws IOException {
-        super.writeExternal (out);
-        out.writeObject(keyAsObject);
-    }
-
-    /** Read this object. Read the superclass first.
-     * @param in the input
-     */
-    public void readExternal(ObjectInput in)
-		throws IOException, ClassNotFoundException {
-        super.readExternal (in);
-        keyAsObject = in.readObject();
-    }
-    
-}
diff --git a/api20/src/java/javax/jdo/identity/ShortIdentity.java b/api20/src/java/javax/jdo/identity/ShortIdentity.java
deleted file mode 100644
index 69a3cc0..0000000
--- a/api20/src/java/javax/jdo/identity/ShortIdentity.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * ShortIdentity.java
- *
- */
- 
-package javax.jdo.identity;
-
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-
-/** This class is for identity with a single short field.
- * @version 2.0
- */
-public class ShortIdentity
-	extends SingleFieldIdentity
-{
-	private short key;
-
-    private void construct(short key) {
-        this.key = key;
-        hashCode = hashClassName() ^ key;
-    }
-
-    /** Constructor with class and key.
-     * @param pcClass the class
-     * @param key the key
-     */
-    public ShortIdentity (Class pcClass, short key) {
-        super(pcClass);
-        construct(key);
-    }
-
-    /** Constructor with class and key.
-     * @param pcClass the class
-     * @param key the key
-     */
-    public ShortIdentity (Class pcClass, Short key) {
-        super(pcClass);
-        setKeyAsObject(key);
-        construct(key.shortValue());
-    }
-
-    /** Constructor with class and key.
-     * @param pcClass the class
-     * @param str the key
-     */
-    public ShortIdentity (Class pcClass, String str) {
-        super(pcClass);
-        assertKeyNotNull(str);
-        construct(Short.parseShort (str));
-    }
-
-    /** Constructor only for Externalizable.
-     */
-    public ShortIdentity () {
-    }
-
-    /** Return the key.
-     * @return the key
-     */
-    public short getKey () {
-        return key;
-    }
-
-    /** Return the String form of the key.
-     * @return the String form of the key
-     */
-    public String toString () {
-        return Short.toString(key);
-    }
-
-    /** Determine if the other object represents the same object id.
-     * @param obj the other object
-     * @return true if both objects represent the same object id
-     */
-    public boolean equals (Object obj) {
-        if (this == obj) {
-            return true;
-        } else if (!super.equals (obj)) {
-            return false;
-        } else {
-            ShortIdentity other = (ShortIdentity) obj;
-            return key == other.key;
-        }
-    }
-
-    /** Create the key as an Object.
-     * @return the key as an Object
-     * @since 2.0
-     */
-    protected Object createKeyAsObject() {
-        return new Short(key);
-    }
-
-    /** Write this object. Write the superclass first.
-     * @param out the output
-     */
-    public void writeExternal(ObjectOutput out) throws IOException {
-        super.writeExternal (out);
-        out.writeShort(key);
-    }
-
-    /** Read this object. Read the superclass first.
-     * @param in the input
-     */
-    public void readExternal(ObjectInput in)
-		throws IOException, ClassNotFoundException {
-        super.readExternal (in);
-        key = in.readShort();
-    }
-}
diff --git a/api20/src/java/javax/jdo/identity/SingleFieldIdentity.java b/api20/src/java/javax/jdo/identity/SingleFieldIdentity.java
deleted file mode 100644
index 77056a2..0000000
--- a/api20/src/java/javax/jdo/identity/SingleFieldIdentity.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * SingleFieldIdentity.java
- *
- */
- 
-package javax.jdo.identity;
-
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-
-import javax.jdo.JDOFatalInternalException;
-import javax.jdo.JDONullIdentityException;
-
-import javax.jdo.spi.I18NHelper;
-
-/** This class is the abstract base class for all single field identity
- * classes. A common case of application identity uses exactly one 
- * persistent field in the class to represent identity. In this case, 
- * the application can use a standard JDO class instead of creating 
- * a new user-defined class for the purpose.
- * @version 2.0
- */
-public abstract class SingleFieldIdentity
-    implements Externalizable {
-    
-    /** The Internationalization message helper.
-     */
-    protected static I18NHelper msg = I18NHelper.getInstance ("javax.jdo.Bundle"); //NOI18N
-
-    /** The class of the target object.
-     */
-    transient private Class targetClass;
-    
-    /** The name of the class of the target object.
-     */
-    private String targetClassName;
-
-    /** The hashCode.
-     */
-    protected int hashCode;
-    
-    /** The key as an Object.
-     */
-    protected Object keyAsObject;
-
-    /** Constructor with target class.
-     * @param pcClass the class of the target
-     * @since 2.0
-     */
-    protected SingleFieldIdentity(Class pcClass) {
-        if (pcClass == null)
-            throw new NullPointerException();
-        targetClass = pcClass;
-        targetClassName = pcClass.getName();
-    }
-
-    /** Constructor only for Externalizable.
-     * @since 2.0
-     */
-    public SingleFieldIdentity () {
-    }
-
-    /** Set the given key as the key for this instance. 
-     * Compute the hash code for the instance.
-     * @since 2.0
-     */
-    protected void setKeyAsObject(Object key) {
-        assertKeyNotNull(key);
-        keyAsObject = key;
-    }
-
-    /** Assert that the key is not null. Throw a JDONullIdentityException
-     * if the given key is null.
-     * @since 2.0
-     */ 
-    protected void assertKeyNotNull(Object key) {
-        if (key == null) {
-            throw new JDONullIdentityException(
-                msg.msg("EXC_SingleFieldIdentityNullParameter")); //NOI18N
-        }
-    }
-    
-    /** Return the target class.
-     * @return the target class.
-     * @since 2.0
-     */
-    public Class getTargetClass() {
-        return targetClass;
-    }
-
-    /** Return the target class name.
-     * @return the target class name.
-     * @since 2.0
-     */
-    public String getTargetClassName() {
-        return targetClassName;
-    }
-
-    /** Return the key as an Object. The method is synchronized to avoid
-     * race conditions in multi-threaded environments.
-     * @return the key as an Object.
-     * @since 2.0
-     */
-    public synchronized Object getKeyAsObject() {
-        if (keyAsObject == null) {
-            keyAsObject = createKeyAsObject();
-        }
-        return keyAsObject;
-    }
-    
-    /** Create the key as an Object.
-     * @return the key as an Object;
-     * @since 2.0
-     */
-    protected Object createKeyAsObject() {
-        throw new JDOFatalInternalException
-                (msg.msg("EXC_CreateKeyAsObjectMustNotBeCalled"));
-    }
-    
-    /** Check the class and class name and object type. If restored
-     * from serialization, class will be null so compare class name.
-     * @param obj the other object
-     * @return true if the class or class name is the same
-     */
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        } else if (obj == null || this.getClass() != obj.getClass()) {
-            return false;
-        } else {
-            SingleFieldIdentity other = (SingleFieldIdentity) obj;
-            if (targetClass != null && targetClass == other.targetClass)
-                return true;
-            return targetClassName.equals (other.targetClassName);
-        }
-    }
-
-    /** Return the hash code of the class name.
-     * @return the hash code of the class name
-     * @since 2.0
-     */
-    protected int hashClassName() {
-        return targetClassName.hashCode();
-    }
-    
-    /** Return the cached hash code.
-     * @return the cached hash code.
-     */
-    public int hashCode() {
-        return hashCode;
-    }
-    
-    /** Write to the output stream.
-     * @param out the stream
-     */
-    public void writeExternal(ObjectOutput out) throws IOException {
-        out.writeObject(targetClassName);
-        out.writeInt(hashCode);
-    }
-
-    /** Read from the input stream.
-     * Creates a new instance with the target class name set
-     */
-    public void readExternal(ObjectInput in)
-            throws IOException, ClassNotFoundException {
-        targetClass = null;
-        targetClassName = (String)in.readObject();
-        hashCode = in.readInt();
-    }
-}
diff --git a/api20/src/java/javax/jdo/identity/StringIdentity.java b/api20/src/java/javax/jdo/identity/StringIdentity.java
deleted file mode 100644
index 87e6c52..0000000
--- a/api20/src/java/javax/jdo/identity/StringIdentity.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * StringIdentity.java
- *
- */
- 
-package javax.jdo.identity;
-
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-
-/** This class is for identity with a single String field.
- * @version 2.0
- */
-public class StringIdentity extends SingleFieldIdentity {
-    
-    /** The key is stored in the superclass field keyAsObject.
-     */
-    
-    /** Constructor with class and key.
-     * @param pcClass the class
-     * @param key the key
-     */
-    public StringIdentity (Class pcClass, String key) {
-        super (pcClass);
-        setKeyAsObject(key);
-        hashCode = hashClassName() ^ key.hashCode();
-    }
-
-    /** Constructor only for Externalizable.
-     */
-    public StringIdentity () {
-    }
-
-    /** Return the key.
-     * @return the key
-     */
-    public String getKey () {
-        return (String)keyAsObject;
-    }
-
-    /** Return the String form of the key.
-     * @return the String form of the key
-     */
-    public String toString () {
-        return (String)keyAsObject;
-    }
-
-    /** Determine if the other object represents the same object id.
-     * @param obj the other object
-     * @return true if both objects represent the same object id
-     */
-    public boolean equals (Object obj) {
-        if (this == obj) {
-            return true;
-        } else if (!super.equals (obj)) {
-            return false;
-        } else {
-            StringIdentity other = (StringIdentity) obj;
-            return keyAsObject.equals(other.keyAsObject);
-        }
-    }
-
-    /** Write this object. Write the superclass first.
-     * @param out the output
-     */
-    public void writeExternal(ObjectOutput out) throws IOException {
-        super.writeExternal (out);
-        out.writeObject(keyAsObject);
-    }
-
-    /** Read this object. Read the superclass first.
-     * @param in the input
-     */
-    public void readExternal(ObjectInput in)
-		throws IOException, ClassNotFoundException {
-        super.readExternal (in);
-        keyAsObject = (String)in.readObject();
-    }
-}
diff --git a/api20/src/java/javax/jdo/identity/package.html b/api20/src/java/javax/jdo/identity/package.html
deleted file mode 100644
index fd59884..0000000
--- a/api20/src/java/javax/jdo/identity/package.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!--
- Copyright 2005 The Apache Software Foundation.
- 
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- 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.
--->
-
-<html>
-<head>
-<title>Identity package</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</head>
-
-<body bgcolor="#FFFFFF">
-This package contains the JDO specification identity interfaces and classes.
-</body>
-</html>
diff --git a/api20/src/java/javax/jdo/listener/AttachCallback.java b/api20/src/java/javax/jdo/listener/AttachCallback.java
deleted file mode 100644
index 01eb168..0000000
--- a/api20/src/java/javax/jdo/listener/AttachCallback.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * AttachCallback.java
- *
- */
- 
-package javax.jdo.listener;
-
-/**
- * This interface is used to notify instances of attach events.
- * @version 2.0
- * @since 2.0
- */
-public interface AttachCallback {
-    
-    /**
-     * This method is called during the execution of
-     * {@link javax.jdo.PersistenceManager#makePersistent} on the detached 
-     * instance before the copy is made.
-     * @since 2.0
-     */
-    public void jdoPreAttach();
-
-    /**
-     * This method is called during the execution of
-     * {@link javax.jdo.PersistenceManager#makePersistent} on the persistent
-     * instance after the copy is made.
-     * @param attached	The corresponding (non-attached) instance that was
-     * attached in the call to 
-     * {@link javax.jdo.PersistenceManager#makePersistent}.
-     * @since 2.0
-     */
-    public void jdoPostAttach(Object attached);
-}
diff --git a/api20/src/java/javax/jdo/listener/AttachLifecycleListener.java b/api20/src/java/javax/jdo/listener/AttachLifecycleListener.java
deleted file mode 100644
index 2ea59dc..0000000
--- a/api20/src/java/javax/jdo/listener/AttachLifecycleListener.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * AttachLifecycleListener.java
- *
- */
- 
-package javax.jdo.listener;
-
-/**
- * This interface is implemented by listeners to be notified of
- * attach events.
- * @version 2.0
- * @since 2.0
- */
-public interface AttachLifecycleListener
-    extends InstanceLifecycleListener {
-    
-    /**
-     * This method is called before a detached instance is attached, via the
-     * {@link javax.jdo.PersistenceManager#makePersistent} method. The source 
-     * instance is the detached instance. This method is called before the
-     * corresponding {@link AttachCallback#jdoPreAttach} on the detached
-     * instance.
-     * @param event the attach event.
-     * @since 2.0
-     */
-    void preAttach (InstanceLifecycleEvent event);
-    
-    /**
-     * This method is called after a detached instance is attached, via the
-     * {@link javax.jdo.PersistenceManager#makePersistent} method. The source
-     * instance is the corresponding persistent instance in the cache; the
-     * target instance is the detached instance. This method is called after
-     * the corresponding {@link AttachCallback#jdoPostAttach} on the
-     * persistent instance.
-     * @param event the attach event.
-     * @since 2.0
-     */
-    void postAttach (InstanceLifecycleEvent event);
-}
diff --git a/api20/src/java/javax/jdo/listener/ClearCallback.java b/api20/src/java/javax/jdo/listener/ClearCallback.java
deleted file mode 100644
index 78e20b8..0000000
--- a/api20/src/java/javax/jdo/listener/ClearCallback.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * ClearCallback.java
- *
- */
- 
-package javax.jdo.listener;
-
-
-/**
- * This interface is used to notify instances of clear events.
- * @version 2.0
- * @since 2.0
- */
-public interface ClearCallback {
-    
-    /**
-     * Called before the values in the instance are cleared.
-     *
-     * <P>Transient fields should be cleared in this method.  
-     * Associations between this
-     * instance and others in the runtime environment should be cleared.
-     *
-     * <P>This method is not modified by the enhancer.
-     */
-    void jdoPreClear();
-}
diff --git a/api20/src/java/javax/jdo/listener/ClearLifecycleListener.java b/api20/src/java/javax/jdo/listener/ClearLifecycleListener.java
deleted file mode 100644
index 3a43dcc..0000000
--- a/api20/src/java/javax/jdo/listener/ClearLifecycleListener.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * ClearLifecycleListener.java
- *
- */
-
-package javax.jdo.listener;
-
-/**
- * This interface is implemented by listeners to be notified of
- * clear events.
- * @version 2.0
- * @since 2.0
- */
-public interface ClearLifecycleListener
-    extends InstanceLifecycleListener {
-
-    /**
-     * This method is called before the implementation calls the instance
-     *  method {@link ClearCallback#jdoPreClear} and before it clears the values 
-     *  in the instance to their Java default values. This happens during 
-     *  an application call to evict, and in afterCompletion for commit 
-     *  with RetainValues false and rollback with RestoreValues false. 
-     *  <P>The method is called during any state transition to hollow.
-     *  Non-persistent, non-transactional fields should be cleared 
-     *  in this method. Associations between this instance and others 
-     *  in the runtime environment should be cleared. 
-     *  <P>This method is not modified by the enhancer, so access to fields 
-     *  is not mediated.
-     * @param event the clear event.
-     * @since 2.0
-     */
-    void preClear (InstanceLifecycleEvent event);
-    
-    /**
-     * This method is called after the {@link ClearCallback#jdoPreClear} 
-     * method is invoked on the instance and the fields have been cleared 
-     * by the JDO implementation.
-     * @param event the clear event.
-     * @since 2.0
-     */
-    void postClear (InstanceLifecycleEvent event);
-}
diff --git a/api20/src/java/javax/jdo/listener/CreateLifecycleListener.java b/api20/src/java/javax/jdo/listener/CreateLifecycleListener.java
deleted file mode 100644
index c2535b0..0000000
--- a/api20/src/java/javax/jdo/listener/CreateLifecycleListener.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * CreateLifecycleListener.java
- *
- */
-
-package javax.jdo.listener;
-
-/**
- * This interface is implemented by listeners to be notified of
- * create events.
- * @version 2.0
- * @since 2.0
- */
-public interface CreateLifecycleListener
-    extends InstanceLifecycleListener {
-
-    /**
-     * Invoked whenever an instance is made persistent via a
-     * call to {@link javax.jdo.PersistenceManager#makePersistent} or during
-     * persistence by reachability.
-     * @param event the create event.
-     * @since 2.0
-     */
-    void postCreate (InstanceLifecycleEvent event);
-}
diff --git a/api20/src/java/javax/jdo/listener/DeleteCallback.java b/api20/src/java/javax/jdo/listener/DeleteCallback.java
deleted file mode 100644
index 179017a..0000000
--- a/api20/src/java/javax/jdo/listener/DeleteCallback.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * DeleteCallback.java
- *
- */
- 
-package javax.jdo.listener;
-
-
-/** 
- * This interface is used to notify instances of delete events.
- * @version 2.0
- * @since 2.0
- */
-public interface DeleteCallback
-{
-    /**
-     * Called before the instance is deleted.
-     * This method is called before the state transition to persistent-deleted 
-     * or persistent-new-deleted. Access to field values within this call 
-     * are valid. Access to field values after this call are disallowed. 
-     * <P>This method is modified by the enhancer so that fields referenced 
-     * can be used in the business logic of the method.
-     */
-    void jdoPreDelete();
-}
diff --git a/api20/src/java/javax/jdo/listener/DeleteLifecycleListener.java b/api20/src/java/javax/jdo/listener/DeleteLifecycleListener.java
deleted file mode 100644
index fc931eb..0000000
--- a/api20/src/java/javax/jdo/listener/DeleteLifecycleListener.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * DeleteLifecycleListener.java
- *
- */
-
-package javax.jdo.listener;
-
-/**
- * This interface is implemented by listeners to be notified of
- * delete events.
- * @version 2.0
- * @since 2.0
- */
-public interface DeleteLifecycleListener
-    extends InstanceLifecycleListener {
-
-    /**
-     * Invoked whenever a persistent instance is deleted, for example
-     * during {@link javax.jdo.PersistenceManager#deletePersistent}. 
-     * Access to field values within this call are permitted.  
-     * <P>This method is called before the instance callback
-     * {@link DeleteCallback#jdoPreDelete}.
-     * @param event the delete event.
-     * @since 2.0
-     */
-    void preDelete (InstanceLifecycleEvent event);
-
-    /**
-     * Invoked whenever a persistent instance is deleted, for example
-     * during {@link javax.jdo.PersistenceManager#deletePersistent}.
-     * <P>This method is called after the instance transitions
-     * to persistent-deleted. Access to field values is not permitted.
-     * @param event the delete event.
-     * @since 2.0
-     */
-    void postDelete (InstanceLifecycleEvent event);
-}
diff --git a/api20/src/java/javax/jdo/listener/DetachCallback.java b/api20/src/java/javax/jdo/listener/DetachCallback.java
deleted file mode 100644
index b984a4d..0000000
--- a/api20/src/java/javax/jdo/listener/DetachCallback.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * DetachCallback.java
- *
- */
- 
-package javax.jdo.listener;
-
-/**
- * This interface is used to notify instances of detach events.
- * @version 2.0
- * @since 2.0
- */
-public interface DetachCallback {
-    
-    /**
-     * This method is called during the execution of
-     * {@link javax.jdo.PersistenceManager#detachCopy} on the
-     * persistent instance before the copy is made.
-     * @since 2.0
-     */
-    public void jdoPreDetach();
-
-    /**
-     * This method is called during the execution of
-     * {@link javax.jdo.PersistenceManager#detachCopy} on the
-     * detached instance after the copy is made.
-     * @param detached The corresponding (attached) persistent instance.
-     * @since 2.0
-     */
-    public void jdoPostDetach(Object detached);
-}
diff --git a/api20/src/java/javax/jdo/listener/DetachLifecycleListener.java b/api20/src/java/javax/jdo/listener/DetachLifecycleListener.java
deleted file mode 100644
index 09131bf..0000000
--- a/api20/src/java/javax/jdo/listener/DetachLifecycleListener.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * DetachLifecycleListener.java
- *
- */
- 
-package javax.jdo.listener;
-
-/**
- * This interface is implemented by listeners to be notified of
- * detach events.
- * @version 2.0
- * @since 2.0
- */
-public interface DetachLifecycleListener
-    extends InstanceLifecycleListener {
-    
-    /** 
-     * This method is called during the execution of 
-     * {@link javax.jdo.PersistenceManager#detachCopy} before the 
-     * detached copy is made. It is called before the method
-     * {@link DetachCallback#jdoPreDetach} is called on the
-     * instance to be detached.
-     * @param event the detach event.
-     * @since 2.0
-     */
-    void preDetach (InstanceLifecycleEvent event);
-    
-    /**
-     * This method is called during the execution of
-     * {@link javax.jdo.PersistenceManager#detachCopy} after the 
-     * detached copy is made. It is called after the method
-     * {@link DetachCallback#jdoPreDetach} is called on
-     * the detached instance.
-     * @param event the detach event.
-     * @since 2.0
-     */
-    void postDetach (InstanceLifecycleEvent event); 
-}
diff --git a/api20/src/java/javax/jdo/listener/DirtyLifecycleListener.java b/api20/src/java/javax/jdo/listener/DirtyLifecycleListener.java
deleted file mode 100644
index 2a450cf..0000000
--- a/api20/src/java/javax/jdo/listener/DirtyLifecycleListener.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * DirtyLifecycleListener.java
- *
- */
-
-package javax.jdo.listener;
-
-/**
- * This interface is implemented by listeners to be notified of
- * dirty events.
- * @version 2.0
- * @since 2.0
- */
-public interface DirtyLifecycleListener
-    extends InstanceLifecycleListener {
-
-    /**
-     *	Invoked whenever a persistent instance is first made dirty,
-     *	during an operation that modifies the value of a persistent or
-     *	transactional field. Called before the value is changed.
-     * @since 2.0
-     */
-    void preDirty (InstanceLifecycleEvent event);
-
-    /**
-     *	Invoked whenever a persistent instance is first made dirty,
-     *	during an operation that modifies the value of a persistent or
-     *	transactional field. Called after the value is changed.
-     * @since 2.0
-     */
-    void postDirty (InstanceLifecycleEvent event);
-}
diff --git a/api20/src/java/javax/jdo/listener/InstanceLifecycleEvent.java b/api20/src/java/javax/jdo/listener/InstanceLifecycleEvent.java
deleted file mode 100644
index b625c23..0000000
--- a/api20/src/java/javax/jdo/listener/InstanceLifecycleEvent.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * InstanceLifecycleEvent.java
- *
- */
-
-package javax.jdo.listener;
-
-import javax.jdo.spi.I18NHelper;
-
-/**
- * This is the event class used in life cycle event notifications.
- * <P>Note that although InstanceLifecycleEvent inherits Serializable interface 
- * from EventObject, it is not intended to be Serializable. Appropriate 
- * serialization methods are implemented to throw NotSerializableException.
- * @version 2.0
- * @since 2.0
- */
-public class InstanceLifecycleEvent
-    extends java.util.EventObject {
-
-    private static final int FIRST_EVENT_TYPE = 0;
-    public static final int CREATE = 0;
-    public static final int LOAD = 1;
-    public static final int STORE = 2;
-    public static final int CLEAR = 3;
-    public static final int DELETE = 4;
-    public static final int DIRTY = 5;
-    public static final int DETACH = 6;
-    public static final int ATTACH = 7;
-    private static final int LAST_EVENT_TYPE = 7;
-
-    /** The Internationalization message helper.
-     */
-    private final static I18NHelper msg = I18NHelper.getInstance ("javax.jdo.Bundle"); //NOI18N
-
-    /**
-     * The event type that triggered the construction of this event object.
-     */
-    private final int eventType;
-    
-    /** 
-     * The "other" object associated with the event.
-     */
-    private final Object target;
-
-    /**
-     *	Creates a new event object with the specified
-     *	<code>source</code> and <code>type</code>.
-     * @param source the instance that triggered the event
-     * @param type the event type
-     * @since 2.0
-     */
-    public InstanceLifecycleEvent (Object source, int type) {
-        this(source, type, null);
-    }
-
-    /**
-     *	Creates a new event object with the specified
-     *	<code>source</code>, <code>type</code>, and <code>target</code>.
-     * @param source the instance that triggered the event
-     * @param type the event type
-     * @param target the "other" instance
-     * @since 2.0
-     */
-    public InstanceLifecycleEvent (Object source, int type, Object target) {
-        super (source);
-        if (type < FIRST_EVENT_TYPE || type > LAST_EVENT_TYPE) {
-            throw new IllegalArgumentException(msg.msg("EXC_IllegalEventType"));
-        }
-        eventType = type;
-        this.target = target;
-    }
-
-    /**
-     *	Returns the event type that triggered this event.
-     * @return the event type
-     * @since 2.0
-     */
-    public int getEventType () {
-        return eventType;
-    }
-
-    /**
-     * The source object of the Event.  Although not deprecated,
-     * it is recommended that the the methods
-     * <code>getPersistentInstance()</code> and
-     * <code>getDetachedInstance()</code> be used instead.
-     *
-     * @return   The persistent instance on any pre- callback except preAttach,
-     * or the detached instance for a postDetach or preAttach callback.
-     *
-     * @see #getPersistentInstance()
-     * @see #getDetachedInstance()
-     * @see "Section 12.15, Java Data Objects 2.0 Specification"
-     */
-    public Object getSource() {
-        return super.getSource();
-    }
-
-    /**
-     * The target object of the Event.  Although not deprecated,
-     * it is recommended that the the methods
-     * <code>getPersistentInstance()</code> and
-     * <code>getDetachedInstance()</code> be used instead.
-     *
-     * @return The detached instance for preDetach and postAttach, 
-     * the persistent instance otherwise.
-     *
-     * @since 2.0
-     * @see #getPersistentInstance()
-     * @see #getDetachedInstance()
-     * @see "Section 12.15, Java Data Objects 2.0 Specification"
-     */
-    public Object getTarget () {
-        return target;
-    }
-
-    /**
-     * Returns the persistent instance involved in the event.
-     *
-     * @return The persistent instance involved in the event, or null if there 
-     * was none.
-     *
-     * @see "Section 12.15, Java Data Objects 2.0 Specification"
-     */
-    public Object getPersistentInstance() {
-        switch (getEventType()) {
-            case DETACH:
-                return target == null
-                        ? getSource()   // preDetach:  source is persistent instance
-                        : getTarget();  // postDetach:  target is persistent instance
-            case ATTACH:
-                return target == null
-                        ? null          // preAttach:  no persistent instance yet
-                        : getSource();  // postAttach:  source is persistent instance
-        }
-
-        // for all other events, source is persistent instance
-        return getSource();
-    }
-
-    /**
-     * Returns the detached instance involved in the event.
-     *
-     * @return The detached instance involved in the event, or null if there was none.
-     *
-     * @see "Section 12.15, Java Data Objects 2.0 Specification"
-     */
-    public Object getDetachedInstance() {
-        switch (getEventType()) {
-            case DETACH:
-                return target == null
-                        ? null          // preDetach:  no detached instance yet
-                        : getSource();  // postDetach:  source is detached instance
-            case ATTACH:
-                return target == null
-                        ? getSource()   // preAttach:  source is detached instance
-                        : getTarget();  // postAttach:  target is detached instance
-        }
-
-        // for all other events, there is no detached instance
-        return null;
-    }
-
-    /**
-     * Serialization is not supported for InstanceLifecycleEvents.
-     * param out the output stream
-     * @since 2.0
-     */
-    private void writeObject(java.io.ObjectOutputStream out) 
-        throws java.io.IOException {
-        throw new java.io.NotSerializableException();
-    }
-}
diff --git a/api20/src/java/javax/jdo/listener/InstanceLifecycleListener.java b/api20/src/java/javax/jdo/listener/InstanceLifecycleListener.java
deleted file mode 100644
index 4067e86..0000000
--- a/api20/src/java/javax/jdo/listener/InstanceLifecycleListener.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * InstanceLifecycleListener.java
- *
- */
-
-package javax.jdo.listener;
-
-/**
- * All lifecycle listeners extend from this base interface.
- * In order to minimize the impact on domain classes, instance callbacks 
- * can be defined to use a life-cycle listener pattern instead of 
- * having the domain class implement the callback interface(s).
- *
- * @version 2.0
- * @since 2.0
- */
-public interface InstanceLifecycleListener {
-}
diff --git a/api20/src/java/javax/jdo/listener/LoadCallback.java b/api20/src/java/javax/jdo/listener/LoadCallback.java
deleted file mode 100644
index d76dfa1..0000000
--- a/api20/src/java/javax/jdo/listener/LoadCallback.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * LoadCallback.java
- *
- */
- 
-package javax.jdo.listener;
-
-/**
- * This interface is used to notify instances of load events.
- * @version 2.0
- * @since 2.0
- */
-public interface LoadCallback {
-    
-    /**
-     * Called after the values are loaded from the data store into
-     * this instance.
-     *
-     * <P>This method is not modified by the enhancer.
-     * <P>Derived fields should be initialized in this method.
-     * The context in which this call is made does not allow access to 
-     * other persistent JDO instances.
-     */
-    void jdoPostLoad();
-}
diff --git a/api20/src/java/javax/jdo/listener/LoadLifecycleListener.java b/api20/src/java/javax/jdo/listener/LoadLifecycleListener.java
deleted file mode 100644
index 2e6b87c..0000000
--- a/api20/src/java/javax/jdo/listener/LoadLifecycleListener.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * LoadLifecycleListener.java
- *
- */
-
-package javax.jdo.listener;
-
-/**
- * This interface is implemented by listeners to be notified of
- * load events.
- * @version 2.0
- * @since 2.0
- */
-public interface LoadLifecycleListener
-    extends InstanceLifecycleListener {
-
-    /**
-     * Invoked whenever a persistent instance is loaded from the data
-     * store. It is called after the method {@link LoadCallback#jdoPostLoad}
-     * is invoked on the persistent instance.
-     * @param event the load event.
-     * @since 2.0
-     */
-    void postLoad (InstanceLifecycleEvent event);
-}
diff --git a/api20/src/java/javax/jdo/listener/StoreCallback.java b/api20/src/java/javax/jdo/listener/StoreCallback.java
deleted file mode 100644
index efdeda1..0000000
--- a/api20/src/java/javax/jdo/listener/StoreCallback.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * StoreCallback.java
- *
- */
- 
-package javax.jdo.listener;
-
-/**
- * This interface is used to notify instances of store events.
- * @version 2.0
- * @since 2.0
- */
-public interface StoreCallback {
-    
-    /**
-     * Called before the values are stored from this instance to the
-     * data store.
-     *
-     * <P>Data store fields that might have been affected by modified
-     * non-persistent fields should be updated in this method.
-     *
-     * <P>This method is modified by the enhancer so that changes to 
-     * persistent fields will be reflected in the data store. 
-     * The context in which this call is made allows access to the 
-     * <code>PersistenceManager</code> and other persistent JDO instances.
-     */
-    void jdoPreStore();
-}
diff --git a/api20/src/java/javax/jdo/listener/StoreLifecycleListener.java b/api20/src/java/javax/jdo/listener/StoreLifecycleListener.java
deleted file mode 100644
index 4e88065..0000000
--- a/api20/src/java/javax/jdo/listener/StoreLifecycleListener.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * StoreLifecycleListener.java
- *
- */
-
-package javax.jdo.listener;
-
-/**
- * This interface is implemented by listeners to be notified of
- * store events.
- * @version 2.0
- * @since 2.0
- */
-public interface StoreLifecycleListener
-	extends InstanceLifecycleListener {
-
-    /**
-     * Invoked whenever a persistent instance is stored, for example during 
-     * {@link javax.jdo.PersistenceManager#flush} or 
-     * {@link javax.jdo.Transaction#commit}. It is called before the
-     * method {@link StoreCallback#jdoPreStore} is invoked.
-     * @param event the store event.
-     * @since 2.0
-     */
-    void preStore (InstanceLifecycleEvent event);
-    
-    /**
-     * Invoked whenever a persistent instance is stored, for example during 
-     * {@link javax.jdo.PersistenceManager#flush} or 
-     * {@link javax.jdo.Transaction#commit}. It is called after the
-     * field values have been stored.
-     * @param event the store event.
-     * @since 2.0
-     */
-    void postStore (InstanceLifecycleEvent event);
-}
diff --git a/api20/src/java/javax/jdo/listener/package.html b/api20/src/java/javax/jdo/listener/package.html
deleted file mode 100644
index c325c2c..0000000
--- a/api20/src/java/javax/jdo/listener/package.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!--
- Copyright 2005 The Apache Software Foundation.
- 
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- 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.
--->
-
-<html>
-<head>
-<title>Listener package</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</head>
-
-<body bgcolor="#FFFFFF">
-This package contains the JDO specification listener interfaces and classes.
-<P>There are two kinds of interfaces defined to allow an application to 
-manage life cycle changes to persistent objects. 
-<P>The first kind is defined
-on the persistent domain class itself. This allows methods in the domain class
-to be called during life cycle events. The domain class implements one or more
-of the interfaces 
-{@link javax.jdo.listener.AttachCallback}, 
-{@link javax.jdo.listener.ClearCallback}, 
-{@link javax.jdo.listener.DeleteCallback}, 
-{@link javax.jdo.listener.DetachCallback},
-{@link javax.jdo.listener.LoadCallback}, or 
-{@link javax.jdo.listener.StoreCallback}. 
-The methods in the interfaces
-are called during life cycle events.
-<P>The second kind is defined on an external class using the listener pattern.
-Instances of classes that implement one or more of the listener interfaces 
-{@link javax.jdo.listener.AttachLifecycleListener}, 
-{@link javax.jdo.listener.ClearLifecycleListener}, 
-{@link javax.jdo.listener.CreateLifecycleListener}, 
-{@link javax.jdo.listener.DeleteLifecycleListener}, 
-{@link javax.jdo.listener.DetachLifecycleListener}, 
-{@link javax.jdo.listener.DirtyLifecycleListener}, 
-{@link javax.jdo.listener.LoadLifecycleListener}, or 
-{@link javax.jdo.listener.StoreLifecycleListener}
-are registered
-with the PersistenceManager or PersistenceManagerFactory
-and receive callbacks during life cycle events
-of the persistent instances of interest.
-</body>
-</html>
diff --git a/api20/src/java/javax/jdo/package.html b/api20/src/java/javax/jdo/package.html
deleted file mode 100644
index 3cc37f0..0000000
--- a/api20/src/java/javax/jdo/package.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!--
- Copyright 2005 The Apache Software Foundation.
- 
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- 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.
--->
-
-<html>
-<head>
-<title>JDO package</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</head>
-
-<body bgcolor="#FFFFFF">
-This package contains the JDO specification interfaces and classes. 
-<P>There are two major objectives of the JDO architecture: 
-first, to provide application programmers a transparent,
-Java-centric view of persistent information, including enterprise data 
-and locally stored data; and second, to enable pluggable implementations 
-of data stores into 
-application servers.  Data stored in data stores is presented as
-instances of persistence-capable classes.
-<P>JDO defines interfaces and classes to be used by application programmers 
-when using classes whose instances are to be stored in persistent storage 
-(persistence-capable classes), and specifies the contracts between 
-suppliers of persistence-capable classes and the 
-runtime environment (which is part of the JDO implementation).
-<P>The JDO architecture defines a standard set of contracts between an 
-application programmer and an JDO vendor. These contracts focus on the 
-view of the Java instances of persistence capable classes.
-<P>The JDO PersistenceManagerFactory is the boostrap class for a JDO
-application.  The application gets an instance of the
-PersistenceManagerFactory by construction or via JDNI lookup.
-<P>The application acquires an instance of the JDO PersistenceManager by
-calling the getPersistenceManager method on an instance of JDO
-PersistenceManagerFactory.  
-<P>The JDO PersistenceManager is the primary interface for JDO-aware 
-application components: 
-<ul>
-<li>it gives access to the current Transaction interface;
-<li>it is the factory for the Query interface;
-<li>it contains methods for managing the life cycle of persistent instances.
-</ul>
-<P>A JDO PersistenceManager instance supports any number of JDO instances 
-at a time. It is responsible for managing the identity of its 
-associated JDO instances. A JDO instance is associated with either 
-zero or one JDO PersistenceManager. It will be zero if and only if the 
-JDO instance is transient nontransactional. As soon as the instance is made persistent 
-or transactional, it will be associated with exactly one JDO PersistenceManager.
-<P>A JDO PersistenceManager instance supports one transaction at a time, 
-and uses one connection to the underlying data source at a time. The JDO 
-PersistenceManager instance might use multiple transactions serially, 
-and might use multiple connections serially.
-<P>Normally, cache management is automatic and transparent. When instances 
-are queried, navigated to, or modified, instantiation of instances and 
-their fields and garbage collection of unreferenced instances occurs 
-without any explicit control. When the transaction in which persistent 
-instances are created, deleted, or modified commits, eviction is 
-automatically done by the transaction completion mechanisms. 
-<P>Operations on persistent JDO instances at the user's choice might be 
-performed in the context of a transaction. That is, the view of data 
-in the data store is transactionally consistent, according to the 
-standard definition of ACID transactions.
-<P>The Transaction interface is used to mark the beginning and end of a 
-application-defined unit of work.  The PersistenceManager allows the 
-application to get the instance that manages these transactional
-boundaries via the currentTransaction method.
-<P>The persistent manager instance is a factory for query instances, 
-and queries are executed in the context of the persistent manager instance. 
-The actual query execution might be performed by the JDO PersistenceManager 
-or might be delegated by the JDO PersistenceManager to its data store. 
-The actual query executed thus might be implemented in a very different 
-language from Java, and might be optimized to take advantage of particular 
-query language implementations.
-<P>Extents are collections of data store objects managed by the data store, 
-not by explicit user operations on collections. Extent capability is a 
-boolean property of classes that are persistence capable. If an instance 
-of a class that has a managed extent is made persistent via reachability, 
-the instance is put into the extent implicitly.
-</body>
-</html>
diff --git a/api20/src/java/javax/jdo/spi/Detachable.java b/api20/src/java/javax/jdo/spi/Detachable.java
deleted file mode 100644
index 9428ff3..0000000
--- a/api20/src/java/javax/jdo/spi/Detachable.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package javax.jdo.spi;
-
-/**
- * This interface is implemented by classes that can be detached from the
- * persistence context and later attached. The interface includes the 
- * contract by which the StateManager can set the object id, version,
- * BitSet of loaded fields, and BitSet of modified fields 
- * so they are preserved while outside the persistence environment.
- * <P>The detached state is stored as a field in each instance of Detachable. 
- * The field is serialized so as to maintain the state of the instance 
- * while detached. While detached, only the BitSet of modified fields 
- * will be modified. The structure of the Object[] jdoDetachedState
- * is as follows:
- *  <ul><li>jdoDetachedState[0]: the Object Id of the instance
- * </li><li>jdoDetachedState[1]: the Version of the instance
- * </li><li>jdoDetachedState[2]: a BitSet of loaded fields
- * </li><li>jdoDetachedState[3]: a BitSet of modified fields
- * </li></ul>
- * @version 2.0
- */
-
-public interface Detachable {
-
-    /** This method calls the StateManager with the current detached 
-     * state instance as a parameter and replaces the current detached 
-     * state instance with the value provided by the StateManager.  
-     * @since 2.0
-     */    
-    public void jdoReplaceDetachedState();
-}
diff --git a/api20/src/java/javax/jdo/spi/I18NHelper.java b/api20/src/java/javax/jdo/spi/I18NHelper.java
deleted file mode 100644
index 4fc1128..0000000
--- a/api20/src/java/javax/jdo/spi/I18NHelper.java
+++ /dev/null
@@ -1,403 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package javax.jdo.spi;
-
-import java.util.*;
-import java.text.MessageFormat;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-
-import javax.jdo.JDOFatalInternalException;
-
-/** Helper class for constructing messages from bundles.  The intended usage
- * of this class is to construct a new instance bound to a bundle, as in
- * <P>
- * <code>I18NHelper msg = I18NHelper.getInstance("javax.jdo.Bundle");</code>
- * <P>
- * This call uses the class loader that loaded the I18NHelper class to find
- * the specified Bundle. The class provides two overloaded getInstance
- * methods allowing to specify a different class loader: 
- * {@link #getInstance(Class cls)} looks for a bundle
- * called "Bundle.properties" located in the package of the specified class 
- * object and {@link #getInstance(String bundleName,ClassLoader loader)} 
- * uses the specified class loader to find the bundle.
- * <P>
- * Subsequently, instance methods can be used to format message strings 
- * using the text from the bundle, as in 
- * <P>
- * <code>throw new JDOFatalInternalException (msg.msg("ERR_NoMetadata", 
- * cls.getName()));</code>
- * @since 1.0.1
- * @version 1.1
- */        
-public class I18NHelper {
-
-    /** Bundles that have already been loaded 
-     */
-    private static Hashtable    bundles = new Hashtable();
-    
-    /** Helper instances that have already been created 
-     */
-    private static Hashtable    helpers = new Hashtable();
-    
-    /** The default locale for this VM.
-     */
-    private static Locale       locale = Locale.getDefault();
-
-    /** The name of the bundle used by this instance of the helper.
-     */
-    private final String        bundleName;
-
-    /** The bundle used by this instance of the helper.
-     */
-    private ResourceBundle      bundle = null;
-
-    /** Throwable if ResourceBundle couldn't be loaded
-     */
-    private Throwable           failure = null;
-
-    /** The unqualified standard name of a bundle. */
-    private static final String bundleSuffix = ".Bundle";    // NOI18N
-
-    /** Constructor */
-    private I18NHelper() {
-        this.bundleName = null;
-    }
-
-    /** Constructor for an instance bound to a bundle.
-     * @param bundleName the name of the resource bundle
-     * @param loader the class loader from which to load the resource
-     * bundle
-     */
-    private I18NHelper (String bundleName, ClassLoader loader) {
-        this.bundleName = bundleName;
-        try {
-            bundle = loadBundle (bundleName, loader);
-        }
-        catch (Throwable e) {
-            failure = e;
-        }
-    }
-    
-    /** An instance bound to a bundle. This method uses the current class 
-     * loader to find the bundle.
-     * @param bundleName the name of the bundle
-     * @return the helper instance bound to the bundle
-     */
-    public static I18NHelper getInstance (String bundleName) {
-        return getInstance (bundleName, I18NHelper.class.getClassLoader());
-    }
-
-    /** An instance bound to a bundle. This method figures out the bundle name
-     * for the class object's package and uses the class' class loader to
-     * find the bundle. Note, the specified class object must not be
-     * <code>null</code>.
-     * @param cls the class object from which to load the resource bundle
-     * @return the helper instance bound to the bundle
-     */
-    public static I18NHelper getInstance (final Class cls) {
-        ClassLoader classLoader = (ClassLoader) AccessController.doPrivileged (
-            new PrivilegedAction () {
-                public Object run () {
-                    return cls.getClassLoader();
-                }
-            }
-            );
-        String bundle = getPackageName (cls.getName()) + bundleSuffix;
-        return getInstance (bundle, classLoader);
-    }
-
-    /** An instance bound to a bundle. This method uses the specified class
-     * loader to find the bundle. Note, the specified class loader must not
-     * be <code>null</code>.
-     * @param bundleName the name of the bundle
-     * @param loader the class loader from which to load the resource
-     * bundle
-     * @return the helper instance bound to the bundle
-     */
-    public static I18NHelper getInstance (String bundleName, 
-                                          ClassLoader loader) {
-        I18NHelper helper = (I18NHelper) helpers.get (bundleName);
-        if (helper != null) {
-            return helper;
-        }
-        helper = new I18NHelper(bundleName, loader);
-        helpers.put (bundleName, helper);
-        // if two threads simultaneously create the same helper, return the first
-        // one to be put into the Hashtable.  The other will be garbage collected.
-        return (I18NHelper) helpers.get (bundleName);
-    }
-
-    /** Message formatter
-     * @param messageKey the message key
-     * @return the resolved message text
-     */
-    public String msg (String messageKey) {
-        assertBundle (messageKey);
-        return getMessage (bundle, messageKey);
-    }
-
-    /** Message formatter
-     * @param messageKey the message key
-     * @param arg1 the first argument
-     * @return the resolved message text
-     */
-    public String msg (String messageKey, Object arg1) {
-        assertBundle (messageKey);
-        return getMessage (bundle, messageKey, arg1);
-    }
-
-    /** Message formatter
-     * @param messageKey the message key
-     * @param arg1 the first argument
-     * @param arg2 the second argument
-     * @return the resolved message text
-     */
-    public String msg (String messageKey, Object arg1, Object arg2) {
-        assertBundle (messageKey);
-        return getMessage (bundle, messageKey, arg1, arg2);
-    }
-
-    /** Message formatter
-     * @param messageKey the message key
-     * @param arg1 the first argument
-     * @param arg2 the second argument
-     * @param arg3 the third argument
-     * @return the resolved message text
-     */
-    public String msg (String messageKey, Object arg1, Object arg2, Object arg3) {
-        assertBundle (messageKey);
-        return getMessage (bundle, messageKey, arg1, arg2, arg3);
-    }
-
-    /** Message formatter
-     * @param messageKey the message key
-     * @param args the array of arguments
-     * @return the resolved message text
-     */
-    public String msg (String messageKey, Object[] args) {
-        assertBundle (messageKey);
-        return getMessage (bundle, messageKey, args);
-    }
-
-    /** Message formatter
-     * @param messageKey the message key
-     * @param arg the argument
-     * @return the resolved message text
-     */
-    public String msg (String messageKey, int arg) {
-        assertBundle (messageKey);
-        return getMessage(bundle, messageKey, arg);
-    }
-    
-    /** Message formatter
-     * @param messageKey the message key
-     * @param arg the argument
-     * @return the resolved message text
-     */
-    public String msg (String messageKey, boolean arg) {
-        assertBundle (messageKey);
-        return getMessage(bundle, messageKey, arg);
-    }
-    
-    /** Returns the resource bundle used by this I18NHelper.
-     * @return the associated resource bundle
-     * @since 1.1
-     */
-    public ResourceBundle getResourceBundle () {
-        assertBundle ();
-        return bundle;
-    }
-    
-    //========= Internal helper methods ==========
-
-    /**
-     * Load ResourceBundle by bundle name
-     * @param bundleName the name of the bundle
-     * @param loader the class loader from which to load the resource bundle
-     * @return  the ResourceBundle
-     */
-    final private static ResourceBundle loadBundle(
-        String bundleName, ClassLoader loader) {
-        ResourceBundle messages = (ResourceBundle)bundles.get(bundleName);
-
-        if (messages == null) //not found as loaded - add
-        {
-            if (loader != null) {
-                messages = ResourceBundle.getBundle(bundleName, locale, loader);
-            } else {
-                // the JDO library is loaded by the boostrap class loader
-                messages = ResourceBundle.getBundle(bundleName, locale,
-                        getSystemClassLoaderPrivileged());
-            }
-            bundles.put(bundleName, messages);
-        }
-        return messages;
-    }
-
-    /** Assert resources available
-     * @since 1.1
-     * @throws JDOFatalInternalException if the resource bundle could not
-     * be loaded during construction.
-     */
-    private void assertBundle () {
-        if (failure != null)
-            throw new JDOFatalInternalException (
-                "No resources could be found for bundle:\"" + 
-                bundle + "\" ", failure);
-    }
-    
-    /** Assert resources available
-     * @param key the message key 
-     * @since 1.0.2
-     * @throws JDOFatalInternalException if the resource bundle could not
-     * be loaded during construction.
-     */
-    private void assertBundle (String key) {
-        if (failure != null)
-            throw new JDOFatalInternalException (
-                "No resources could be found to annotate error message key:\"" + 
-                key + "\"", failure);
-    }
-
-    /**
-     * Returns message as <code>String</code>
-     * @param messages the resource bundle
-     * @param messageKey the message key
-     * @return the resolved message text
-     */
-    final private static String getMessage(ResourceBundle messages, String messageKey) 
-    {
-        return messages.getString(messageKey);
-    }
-
-    /**
-     * Formats message by adding array of arguments
-     * @param messages the resource bundle
-     * @param messageKey the message key
-     * @param msgArgs an array of arguments to substitute into the message
-     * @return the resolved message text
-     */
-    final private static String getMessage(ResourceBundle messages, 
-            String messageKey, Object[] msgArgs) 
-    {
-        for (int i=0; i<msgArgs.length; i++) {
-            if (msgArgs[i] == null) msgArgs[i] = ""; // NOI18N
-        }
-        MessageFormat formatter = new MessageFormat(messages.getString(messageKey));
-        return formatter.format(msgArgs);
-    }
-    
-    /**
-     * Formats message by adding an <code>Object</code> argument.
-     * @param messages the resource bundle
-     * @param messageKey the message key
-     * @param arg the argument
-     * @return the resolved message text
-     */
-    final private static String getMessage(ResourceBundle messages, 
-            String messageKey, Object arg) 
-    {
-        Object []args = {arg};
-        return getMessage(messages, messageKey, args);
-    }
-    
-    /**
-     * Formats message by adding two <code>Object</code> arguments.
-     * @param messages the resource bundle
-     * @param messageKey the message key
-     * @param arg1 the first argument
-     * @param arg2 the second argument
-     * @return the resolved message text
-     */
-    final private static String getMessage(ResourceBundle messages, 
-            String messageKey, Object arg1, Object arg2) 
-    {
-        Object []args = {arg1, arg2};
-        return getMessage(messages, messageKey, args);
-    }
-    
-    /**
-     * Formats message by adding three <code>Object</code> arguments.
-     * @param messages the resource bundle
-     * @param messageKey the message key
-     * @param arg1 the first argument
-     * @param arg2 the second argument
-     * @param arg3 the third argument
-     * @return the resolved message text
-     */
-    final private static String getMessage(ResourceBundle messages, 
-            String messageKey, Object arg1, Object arg2, Object arg3) 
-    {
-        Object []args = {arg1, arg2, arg3};
-        return getMessage(messages, messageKey, args);
-    }
-
-    /**
-     * Formats message by adding an <code>int</code> as an argument.
-     * @param messages the resource bundle
-     * @param messageKey the message key
-     * @param arg the argument
-     * @return the resolved message text
-     */
-    final private static String getMessage(ResourceBundle messages, 
-            String messageKey, int arg) 
-    {
-        Object []args = {new Integer(arg)};
-        return getMessage(messages, messageKey, args);
-    }
-    
-    /**
-     * Formats message by adding a <code>boolean</code> as an argument.
-     * @param messages the resource bundle
-     * @param messageKey the message key
-     * @param arg the argument
-     * @return the resolved message text
-     */
-    final private static String getMessage(ResourceBundle messages, 
-            String messageKey, boolean arg) 
-    {
-        Object []args = {String.valueOf(arg)};
-        return getMessage(messages, messageKey, args);
-    }
-
-    /**  
-     * Returns the package portion of the specified class.
-     * @param className the name of the class from which to extract the 
-     * package 
-     * @return package portion of the specified class
-     */   
-    final private static String getPackageName(final String className)
-    { 
-        final int index = className.lastIndexOf('.');
-        return ((index != -1) ? className.substring(0, index) : ""); // NOI18N
-    }
-
-    /**
-     * Get the system class loader. This must be done in a doPrivileged 
-     * block because of security.
-     */
-    private static ClassLoader getSystemClassLoaderPrivileged() {
-        return (ClassLoader) AccessController.doPrivileged (
-            new PrivilegedAction () {
-                public Object run () {
-                    return ClassLoader.getSystemClassLoader();
-                }
-            }
-        );
-    }
-}
diff --git a/api20/src/java/javax/jdo/spi/JDOImplHelper.java b/api20/src/java/javax/jdo/spi/JDOImplHelper.java
deleted file mode 100644
index a5ec65b..0000000
--- a/api20/src/java/javax/jdo/spi/JDOImplHelper.java
+++ /dev/null
@@ -1,935 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOImplHelper.java
- *
- */
-
-package javax.jdo.spi;
-
-import java.lang.reflect.Constructor;
-
-import java.text.DateFormat;
-import java.text.ParsePosition;
-import java.text.SimpleDateFormat;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Currency;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.WeakHashMap;
-
-import javax.jdo.JDOException;
-import javax.jdo.JDOFatalInternalException;
-import javax.jdo.JDOFatalUserException;
-import javax.jdo.JDOUserException;
-
-/** This class is a helper class for JDO implementations.  It contains methods
- * to register metadata for persistence-capable classes and to perform common
- * operations needed by implementations, not by end users.
- * <P><code>JDOImplHelper</code> allows construction of instances of 
- * persistence-capable classes without using reflection.
- * <P>Persistence-capable classes register themselves via a static method 
- * at class load time.
- * There is no security restriction on this access.  JDO implementations
- * get access to the functions provided by this class only if they are
- * authorized by the security manager.  To avoid having every call go through
- * the security manager, only the call to get an instance is checked.  Once an 
- * implementation
- * has an instance, any of the methods can be invoked without security checks.
- * @version 1.0.2
- *
- */
-public class JDOImplHelper extends java.lang.Object {
-    
-    /** This synchronized <code>HashMap</code> contains a static mapping of
-     * <code>PersistenceCapable</code> class to
-     * metadata for the class used for constructing new instances.  New entries
-     * are added by the static method in each <code>PersistenceCapable</code> 
-     * class.  Entries are never removed.
-     */    
-    private static Map registeredClasses = 
-            Collections.synchronizedMap(new HashMap ());
-    
-    /** This Set contains all classes that have registered for setStateManager
-     * permissions via authorizeStateManagerClass.
-     */
-    private static Map authorizedStateManagerClasses = new WeakHashMap();
-
-    /** This list contains the registered listeners for 
-     * <code>RegisterClassEvent</code>s.
-     */
-    private static List listeners = new ArrayList();
-    
-    /** The list of registered StateInterrogation instances
-     */
-    private static List stateInterrogations = new ArrayList();
-
-    /** The singleton <code>JDOImplHelper</code> instance.
-     */    
-    private static JDOImplHelper jdoImplHelper = new JDOImplHelper();
-    
-    /** The Internationalization message helper.
-     */
-    private final static I18NHelper msg = 
-            I18NHelper.getInstance ("javax.jdo.Bundle"); //NOI18N
-    
-    /** The DateFormat pattern.
-     */
-    private static String dateFormatPattern;
-
-    /** The default DateFormat instance.
-     */
-    private static DateFormat dateFormat;
-
-    /** Register the default DateFormat instance.
-     */
-    static {
-        jdoImplHelper.registerDateFormat(DateFormat.getDateTimeInstance());
-    }
-    
-    /** Creates new JDOImplHelper */
-    private JDOImplHelper() {
-    }
-    
-    /** Get an instance of <code>JDOImplHelper</code>.  This method
-     * checks that the caller is authorized for 
-     * <code>JDOPermission("getMetadata")</code>, and if not, throws 
-     * <code>SecurityException</code>.
-     * @return an instance of <code>JDOImplHelper</code>.
-     * @throws SecurityException if the caller is not authorized for 
-     * JDOPermission("getMetadata").
-     */    
-    public static JDOImplHelper getInstance() 
-        throws SecurityException {        
-        SecurityManager sec = System.getSecurityManager();
-        if (sec != null) { 
-            // throws exception if caller is not authorized
-            sec.checkPermission (JDOPermission.GET_METADATA);
-        }
-        return jdoImplHelper;
-    }
-    
-    /** Get the field names for a <code>PersistenceCapable</code> class.  The 
-     * order of fields is the natural ordering of the <code>String</code> class
-     * (without considering localization).
-     * @param pcClass the <code>PersistenceCapable</code> class.
-     * @return the field names for the class.
-     */    
-    public String[] getFieldNames (Class pcClass) {
-        Meta meta = getMeta (pcClass);
-        return meta.getFieldNames();
-    }
-
-    /** Get the field types for a <code>PersistenceCapable</code> class.  The 
-     * order of fields is the same as for field names.
-     * @param pcClass the <code>PersistenceCapable</code> class.
-     * @return the field types for the class.
-     */    
-    public Class[] getFieldTypes (Class pcClass) {
-        Meta meta = getMeta (pcClass);
-        return meta.getFieldTypes();
-    }
-            
-    /** Get the field flags for a <code>PersistenceCapable</code> class.  The 
-     * order of fields is the same as for field names.
-     * @param pcClass the <code>PersistenceCapable</code> class.
-     * @return the field types for the class.
-     */    
-    public byte[] getFieldFlags (Class pcClass) {
-        Meta meta = getMeta (pcClass);
-        return meta.getFieldFlags();
-    }
-            
-    /** Get the persistence-capable superclass for a 
-     * <code>PersistenceCapable</code> class.
-     * @param pcClass the <code>PersistenceCapable</code> class.
-     * @return The <code>PersistenceCapable</code> superclass for this class,
-     * or <code>null</code> if there isn't one.
-     */    
-    public Class getPersistenceCapableSuperclass (Class pcClass) {
-        Meta meta = getMeta (pcClass);
-        return meta.getPersistenceCapableSuperclass();
-    }
-            
-    
-    /** Create a new instance of the class and assign its 
-     * <code>jdoStateManager</code>.  The new instance has its 
-     * <code>jdoFlags</code> set to <code>LOAD_REQUIRED</code>.
-     * @see PersistenceCapable#jdoNewInstance(StateManager sm)
-     * @param pcClass the <code>PersistenceCapable</code> class.
-     * @param sm the <code>StateManager</code> which will own the new instance.
-     * @return the new instance, or <code>null</code> if the class is not 
-     * registered.
-     */    
-    public PersistenceCapable newInstance (Class pcClass, StateManager sm) {
-        Meta meta = getMeta (pcClass);
-        PersistenceCapable pcInstance = meta.getPC();
-        return pcInstance == null?null:pcInstance.jdoNewInstance(sm);
-    }
-    
-    /** Create a new instance of the class and assign its 
-     * <code>jdoStateManager</code> and key values from the ObjectId.  If the 
-     * oid parameter is <code>null</code>, no key values are copied.
-     * The new instance has its <code>jdoFlags</code> set to 
-     * <code>LOAD_REQUIRED</code>.
-     * @see PersistenceCapable#jdoNewInstance(StateManager sm, Object oid)
-     * @param pcClass the <code>PersistenceCapable</code> class.
-     * @param sm the <code>StateManager</code> which will own the new instance.
-     * @return the new instance, or <code>null</code> if the class is not 
-     * registered.
-     * @param oid the ObjectId instance from which to copy key field values.
- */    
-    public PersistenceCapable newInstance 
-            (Class pcClass, StateManager sm, Object oid) {
-        Meta meta = getMeta (pcClass);
-        PersistenceCapable pcInstance = meta.getPC();
-        return pcInstance == null?null:pcInstance.jdoNewInstance(sm, oid);
-    }
-    
-    /** Create a new instance of the ObjectId class of this
-     * <code>PersistenceCapable</code> class.
-     * It is intended only for application identity. This method should
-     * not be called for classes that use single field identity;
-     * newObjectIdInstance(Class, Object) should be used instead. 
-     * If the class has been 
-     * enhanced for datastore identity, or if the class is abstract, 
-     * null is returned.
-     * @param pcClass the <code>PersistenceCapable</code> class.
-     * @return the new ObjectId instance, or <code>null</code> if the class 
-     * is not registered.
-     */    
-    public Object newObjectIdInstance (Class pcClass) {
-        Meta meta = getMeta (pcClass);
-        PersistenceCapable pcInstance = meta.getPC();
-        return pcInstance == null?null:pcInstance.jdoNewObjectIdInstance();
-    }
-    
-    /** Create a new instance of the class used by the parameter Class
-     * for JDO identity, using the
-     * key constructor of the object id class. It is intended for single
-     * field identity. The identity
-     * instance returned has no relationship with the values of the primary key
-     * fields of the persistence-capable instance on which the method is called.
-     * If the key is the wrong class for the object id class, null is returned.
-     * <P>For classes that use single field identity, if the parameter is 
-     * of one of the following types, the behavior must be as specified:
-     * <ul><li><code>Number</code> or <code>Character</code>: the 
-     * parameter must be the single field
-     * type or the wrapper class of the primitive field type; the parameter
-     * is passed to the single field identity constructor
-     * </li><li><code>ObjectIdFieldSupplier</code>: the field value
-     * is fetched from the <code>ObjectIdFieldSupplier</code> and passed to the 
-     * single field identity constructor
-     * </li><li><code>String</code>: the String is passed to the 
-     * single field identity constructor
-     * </li></ul>
-     * @return the new ObjectId instance, or <code>null</code> 
-     * if the class is not registered.
-     * @param obj the <code>Object</code> form of the object id
-     * @param pcClass the <code>PersistenceCapable</code> class.
-     * @since 2.0
-     */
-    public Object newObjectIdInstance (Class pcClass, Object obj) {
-        Meta meta = getMeta (pcClass);
-        PersistenceCapable pcInstance = meta.getPC();
-        return (pcInstance == null)?null:pcInstance.jdoNewObjectIdInstance(obj);
-    }
-    
-    /** Copy fields from an outside source to the key fields in the ObjectId.
-     * This method is generated in the <code>PersistenceCapable</code> class to
-     * generate a call to the field manager for each key field in the ObjectId.  
-     * <P>For example, an ObjectId class that has three key fields 
-     * (<code>int id</code>, <code>String name</code>, and 
-     * <code>Float salary</code>) would have the method generated:
-     * <P><code>
-     * void jdoCopyKeyFieldsToObjectId (Object oid, ObjectIdFieldSupplier fm) {
-     * <BR>    oid.id = fm.fetchIntField (0);
-     * <BR>    oid.name = fm.fetchStringField (1);
-     * <BR>    oid.salary = fm.fetchObjectField (2);
-     * <BR>}</code>
-     * <P>The implementation is responsible for implementing the 
-     * <code>ObjectIdFieldSupplier</code> to provide the values for the key 
-     * fields.
-     * @param pcClass the <code>PersistenceCapable Class</code>.
-     * @param oid the ObjectId target of the copy.
-     * @param fm the field manager that supplies the field values.
- */    
-    public void copyKeyFieldsToObjectId 
-    (Class pcClass, PersistenceCapable.ObjectIdFieldSupplier fm, Object oid) {
-        Meta meta = getMeta (pcClass);
-        PersistenceCapable pcInstance = meta.getPC();
-        if (pcInstance == null) {
-            throw new JDOFatalInternalException (msg.msg(
-                    "ERR_AbstractClassNoIdentity", pcClass.getName())); //NOI18N
-        }
-        pcInstance.jdoCopyKeyFieldsToObjectId(fm, oid);
-    }
-
-    /** Copy fields to an outside source from the key fields in the ObjectId.
-     * This method is generated in the <code>PersistenceCapable</code> class to 
-     * generate a call to the field manager for each key field in the ObjectId.  
-     * For example, an ObjectId class that has three key fields 
-     * (<code>int id</code>, <code>String name</code>, and 
-     * <code>Float salary</code>) would have the method generated:
-     * <P><code>void jdoCopyKeyFieldsFromObjectId
-     * <BR>        (PersistenceCapable oid, ObjectIdFieldConsumer fm) {
-     * <BR>     fm.storeIntField (0, oid.id);
-     * <BR>     fm.storeStringField (1, oid.name);
-     * <BR>     fm.storeObjectField (2, oid.salary);
-     * <BR>}</code>
-     * <P>The implementation is responsible for implementing the
-     * <code>ObjectIdFieldConsumer</code> to store the values for the key 
-     * fields.
-     * @param pcClass the <code>PersistenceCapable</code> class
-     * @param oid the ObjectId source of the copy.
-     * @param fm the field manager that receives the field values.
-     */    
-    public void copyKeyFieldsFromObjectId
-    (Class pcClass, PersistenceCapable.ObjectIdFieldConsumer fm, Object oid) {
-        Meta meta = getMeta (pcClass);
-        PersistenceCapable pcInstance = meta.getPC();
-        if (pcInstance == null) {
-            throw new JDOFatalInternalException (msg.msg(
-                    "ERR_AbstractClassNoIdentity", pcClass.getName())); //NOI18N
-        }
-        pcInstance.jdoCopyKeyFieldsFromObjectId(fm, oid);
-    }
-    
-    /** Register metadata by class.  The registration will be done in the
-     * class named <code>JDOImplHelper</code> loaded by the same or an
-     * ancestor class loader as the <code>PersistenceCapable</code> class
-     * performing the registration. 
-     *
-     * @param pcClass the <code>PersistenceCapable</code> class
-     * used as the key for lookup.
-     * @param fieldNames an array of <code>String</code> field names for 
-     * persistent and transactional fields
-     * @param fieldTypes an array of <code>Class</code> field types
-     * @param fieldFlags the Field Flags for persistent and transactional fields
-     * @param pc an instance of the <code>PersistenceCapable</code> class
-     * @param persistenceCapableSuperclass the most immediate superclass that is
-     * <code>PersistenceCapable</code>
-     */    
-    public static void registerClass (Class pcClass, 
-            String[] fieldNames, Class[] fieldTypes, 
-            byte[] fieldFlags, Class persistenceCapableSuperclass,
-            PersistenceCapable pc) {
-        if (pcClass == null) 
-            throw new NullPointerException(msg.msg("ERR_NullClass")); //NOI18N
-        Meta meta = new Meta (fieldNames, fieldTypes, 
-            fieldFlags, persistenceCapableSuperclass, pc);
-        registeredClasses.put (pcClass, meta);
-
-        // handle class registration listeners
-        synchronized (listeners) {
-            if (!listeners.isEmpty()) {
-                RegisterClassEvent event = new RegisterClassEvent(
-                    jdoImplHelper, pcClass, fieldNames, fieldTypes, 
-                    fieldFlags, persistenceCapableSuperclass);
-                for (Iterator i = listeners.iterator(); i.hasNext();) {
-                    RegisterClassListener crl = 
-                        (RegisterClassListener)i.next();
-                    if (crl != null) {
-                        crl.registerClass(event);
-                    }
-                }
-            }
-        }
-    }
-        
-    /**
-     * Unregister metadata by class loader. This method unregisters all
-     * registered <code>PersistenceCapable</code> classes loaded by the
-     * specified class loader. Any attempt to get metadata for unregistered
-     * classes will result in a <code>JDOFatalUserException</code>. 
-     * @param cl the class loader.
-     * @since 1.0.2
-     */
-    public void unregisterClasses (ClassLoader cl)
-    {
-        SecurityManager sec = System.getSecurityManager();
-        if (sec != null) { 
-            // throws exception if caller is not authorized
-            sec.checkPermission (JDOPermission.MANAGE_METADATA);
-        }
-        synchronized(registeredClasses) {
-            for (Iterator i = registeredClasses.keySet().iterator(); 
-                 i.hasNext();) {
-                Class pcClass = (Class)i.next();
-                // Note, the pc class was registered by calling the static
-                // method JDOImplHelper.registerClass. This means the
-                // JDOImplHelper class loader is the same as or an ancestor
-                // of the class loader of the pc class. In this case method
-                // getClassLoader does not perform a security check for
-                // RuntimePermission("getClassLoader") and thus we do not 
-                // need a privileged block for the getClassLoader call.
-                if ((pcClass != null) && (pcClass.getClassLoader() == cl)) {
-                    // unregister pc class, if its class loader is the
-                    // specified one.
-                    i.remove();
-                }
-            }
-        }
-    }
-
-    /**
-     * Unregister metadata by class. This method unregisters the specified
-     * class. Any further attempt to get metadata for the specified class will
-     * result in a <code>JDOFatalUserException</code>. 
-     * @param pcClass the <code>PersistenceCapable</code> class to be 
-     * unregistered.
-     * @since 1.0.2
-     */
-    public void unregisterClass (Class pcClass)
-    {
-        if (pcClass == null) 
-            throw new NullPointerException(msg.msg("ERR_NullClass")); //NOI18N
-        SecurityManager sec = System.getSecurityManager();
-        if (sec != null) { 
-            // throws exception if caller is not authorized
-            sec.checkPermission (JDOPermission.MANAGE_METADATA);
-        }
-        registeredClasses.remove(pcClass);
-    }
-
-    /** 
-     * Add the specified <code>RegisterClassListener</code> to the listener 
-     * list.
-     * @param crl the listener to be added
-     */
-    public void addRegisterClassListener (RegisterClassListener crl) {
-        HashSet alreadyRegisteredClasses = null;
-        synchronized (listeners) {
-            listeners.add(crl);
-            // Make a copy of the existing set of registered classes.
-            // Between these two lines of code, any number of new class 
-            // registrations might occur, and will then all wait until this 
-            // synchronized block completes. Some of the class registrations 
-            // might be delivered twice to the newly registered listener.
-            alreadyRegisteredClasses = new HashSet (registeredClasses.keySet());
-        }
-        // new registrations will call the new listener while the following 
-        // occurs notify the new listener about already-registered classes
-        for (Iterator it = alreadyRegisteredClasses.iterator(); it.hasNext();) {
-            Class pcClass = (Class)it.next();
-            Meta meta = getMeta (pcClass);
-            RegisterClassEvent event = new RegisterClassEvent(
-                this, pcClass, meta.getFieldNames(), meta.getFieldTypes(), 
-                meta.getFieldFlags(), meta.getPersistenceCapableSuperclass());
-            crl.registerClass (event);
-        }
-    }
-
-    /** 
-     * Remove the specified <code>RegisterClassListener</code> from the listener
-     * list.
-     * @param crl the listener to be removed
-     */
-    public void removeRegisterClassListener (RegisterClassListener crl) {
-        synchronized (listeners) {
-            listeners.remove(crl);
-        }
-    }
-
-    /**
-     * Returns a collection of class objects of the registered 
-     * persistence-capable classes.
-     * @return registered persistence-capable classes
-     */
-    public Collection getRegisteredClasses() {
-        return Collections.unmodifiableCollection(registeredClasses.keySet());
-    }
-
-    /** Look up the metadata for a <code>PersistenceCapable</code> class.
-     * @param pcClass the <code>Class</code>.
-     * @return the <code>Meta</code> for the <code>Class</code>.
-     */    
-    private static Meta getMeta (Class pcClass) {
-        Meta ret = (Meta) registeredClasses.get (pcClass);
-        if (ret == null) {
-            throw new JDOFatalUserException(
-                msg.msg ("ERR_NoMetadata", pcClass.getName())); //NOI18N
-        }
-        return ret;
-    }
-    
-    /** Register a class authorized to replaceStateManager.  The caller of
-     * this method must be authorized for JDOPermission("setStateManager").
-     * During replaceStateManager, a persistence-capable class will call
-     * the corresponding checkAuthorizedStateManager and the class of the
-     * instance of the parameter must have been registered.
-     * @param smClass a Class that is authorized for 
-     * JDOPermission("setStateManager").
-     * @throws SecurityException if the caller is not authorized for 
-     * JDOPermission("setStateManager").
-     * @since 1.0.1
-     */
-    public static void registerAuthorizedStateManagerClass (Class smClass) 
-        throws SecurityException {
-        if (smClass == null) 
-            throw new NullPointerException(msg.msg("ERR_NullClass")); //NOI18N
-        SecurityManager sm = System.getSecurityManager();
-        if (sm != null) {
-            sm.checkPermission(JDOPermission.SET_STATE_MANAGER);
-        }
-        synchronized (authorizedStateManagerClasses) {
-            authorizedStateManagerClasses.put(smClass, null);
-        }
-    }
-    
-    /** Register classes authorized to replaceStateManager.  The caller of
-     * this method must be authorized for JDOPermission("setStateManager").
-     * During replaceStateManager, a persistence-capable class will call
-     * the corresponding checkAuthorizedStateManager and the class of the
-     * instance of the parameter must have been registered.
-     * @param smClasses a Collection of Classes that are authorized for 
-     * JDOPermission("setStateManager").
-     * @throws SecurityException if the caller is not authorized for 
-     * JDOPermission("setStateManager").
-     * @since 1.0.1
-     */
-    public static void registerAuthorizedStateManagerClasses (
-            Collection smClasses) throws SecurityException {
-        SecurityManager sm = System.getSecurityManager();
-        if (sm != null) {
-            sm.checkPermission(JDOPermission.SET_STATE_MANAGER);
-            synchronized (authorizedStateManagerClasses) {
-                for (Iterator it = smClasses.iterator(); it.hasNext();) {
-                    Object smClass = it.next();
-                    if (!(smClass instanceof Class)) {
-                        throw new ClassCastException(
-                            msg.msg("ERR_StateManagerClassCast", //NOI18N
-                                smClass.getClass().getName()));
-                    }
-                    registerAuthorizedStateManagerClass((Class)it.next());
-                }
-            }
-        }
-    }
-    
-    /** Check that the parameter instance is of a class that is authorized for
-     * JDOPermission("setStateManager").  This method is called by the
-     * replaceStateManager method in persistence-capable classes.
-     * A class that is passed as the parameter to replaceStateManager must be
-     * authorized for JDOPermission("setStateManager").  To improve performance,
-     * first the set of authorized classes is checked, and if not present, a
-     * regular permission check is made.  The regular permission check requires
-     * that all callers on the stack, including the persistence-capable class
-     * itself, must be authorized for JDOPermission("setStateManager").
-     * @param sm an instance of StateManager whose class is to be checked.
-     * @since 1.0.1
-     */
-    public static void checkAuthorizedStateManager (StateManager sm) {
-        checkAuthorizedStateManagerClass(sm.getClass());
-    }
-
-    /** Check that the parameter instance is a class that is authorized for
-     * JDOPermission("setStateManager").  This method is called by the
-     * constructors of JDO Reference Implementation classes.
-     * @param smClass a Class to be checked for JDOPermission("setStateManager")
-     * @since 1.0.1
-     */
-    public static void checkAuthorizedStateManagerClass (Class smClass) {
-        final SecurityManager scm = System.getSecurityManager();
-        if (scm == null) {
-            // if no security manager, no checking.
-            return;
-        }
-        synchronized(authorizedStateManagerClasses) {
-            if (authorizedStateManagerClasses.containsKey(smClass)) {
-                return;
-            }
-        }
-        // if not already authorized, perform "long" security checking.
-        scm.checkPermission(JDOPermission.SET_STATE_MANAGER);
-    }
-
-    /** 
-     * Construct an instance of a key class using a String as input.
-     * This is a helper interface for use with ObjectIdentity.
-     * Classes without a String constructor (such as those in java.lang
-     * and java.util) will use this interface for constructing new instances.
-     * The result might be a singleton or use some other strategy.
-     */
-    public interface StringConstructor {
-        /**
-         * Construct an instance of the class for which this instance
-         * is registered.
-         * @param s the parameter for construction
-         * @return the constructed object
-         */
-        public Object construct(String s);
-    }
-    
-    /** 
-     * Special StringConstructor instances for use with specific
-     * classes that have no public String constructor. The Map is
-     * keyed on class instance and the value is an instance of 
-     * StringConstructor.
-     */
-    static Map stringConstructorMap = new HashMap();
-
-    /**
-     * 
-     * Register special StringConstructor instances. These instances
-     * are for constructing instances from String parameters where there
-     * is no String constructor for them.
-     * @param cls the class to register a StringConstructor for
-     * @param sc the StringConstructor instance
-     * @return the previous StringConstructor registered for this class
-     */
-    public Object registerStringConstructor(Class cls, StringConstructor sc) {
-        synchronized(stringConstructorMap) {
-            return stringConstructorMap.put(cls, sc);
-        }
-    }
-
-    /** Register the default special StringConstructor instances.
-     */
-    static {
-        JDOImplHelper helper = getInstance();
-        if (isClassLoadable("java.util.Currency")) {
-            helper.registerStringConstructor(
-                    Currency.class, new StringConstructor() {
-                public Object construct(String s) {
-                    try {
-                        return Currency.getInstance(s);
-                    } catch (IllegalArgumentException ex) {
-                        throw new javax.jdo.JDOUserException(msg.msg(
-                            "EXC_CurrencyStringConstructorIllegalArgument", //NOI18N
-                            s), ex); 
-                    } catch (Exception ex) {
-                        throw new JDOUserException(msg.msg(
-                            "EXC_CurrencyStringConstructorException"), //NOI18N
-                            ex); 
-                    }
-                }
-            });
-        }
-        helper.registerStringConstructor(Locale.class, new StringConstructor() {
-            public Object construct(String s) {
-                try {
-                    return getLocale(s);
-                } catch (Exception ex) {
-                    throw new JDOUserException(msg.msg(
-                        "EXC_LocaleStringConstructorException"), ex); //NOI18N
-                }
-            }
-        });
-        helper.registerStringConstructor(Date.class, new StringConstructor() {
-            public synchronized Object construct(String s) {
-                try {
-                    // first, try the String as a Long
-                    return new Date(Long.parseLong(s));
-                } catch (NumberFormatException ex) {
-                    // not a Long; try the formatted date
-                    ParsePosition pp = new ParsePosition(0);
-                    Date result = dateFormat.parse(s, pp);
-                    if (result == null) {
-                        throw new JDOUserException (msg.msg(
-                            "EXC_DateStringConstructor", new Object[] //NOI18N
-                            {s, new Integer(pp.getErrorIndex()), 
-                             dateFormatPattern}));
-                    }
-                    return result;
-                }
-            }
-        });
-    }
-    
-    /**
-     * Parse the String to a Locale.
-     */
-    private static Locale getLocale(String s) {
-        String lang = s;
-        int firstUnderbar = s.indexOf('_');
-        if (firstUnderbar == -1) {
-            // nothing but language
-            return new Locale(lang);
-        }
-        lang = s.substring(0, firstUnderbar);
-        String country;
-        int secondUnderbar = s.indexOf('_', firstUnderbar + 1);
-        if (secondUnderbar == -1) {
-            // nothing but language, country
-            country = s.substring(firstUnderbar + 1);
-            return new Locale(lang, country);
-        }
-        country = s.substring(firstUnderbar + 1, secondUnderbar);
-        String variant = s.substring(secondUnderbar + 1);
-        return new Locale(lang, country, variant);
-    }
-    /**
-     * Determine if a class is loadable in the current environment.
-     */
-    private static boolean isClassLoadable(String className) {
-        try {
-            Class.forName(className);
-            return true;
-        } catch (ClassNotFoundException ex) {
-            return false;
-        }
-    }
-    
-    /**
-     * Construct an instance of the parameter class, using the keyString
-     * as an argument to the constructor. If the class has a StringConstructor
-     * instance registered, use it. If not, try to find a constructor for
-     * the class with a single String argument. Otherwise, throw a
-     * JDOUserException.
-     * @param className the name of the class
-     * @param keyString the String parameter for the constructor
-     * @return the result of construction
-     */
-    public static Object construct(String className, String keyString) {
-        StringConstructor stringConstructor;
-        try {
-            Class keyClass = Class.forName(className);
-            synchronized(stringConstructorMap) {
-                stringConstructor = 
-                        (StringConstructor) stringConstructorMap.get(keyClass);
-            }
-            if (stringConstructor != null) {
-                return stringConstructor.construct(keyString);
-            } else {
-                Constructor keyConstructor = 
-                    keyClass.getConstructor(new Class[]{String.class});
-                return keyConstructor.newInstance(new Object[]{keyString});
-            }
-        } catch (JDOException ex) {
-            throw ex;
-        } catch (Exception ex) {
-             /* ClassNotFoundException,
-                NoSuchMethodException,
-                InstantiationException,
-                IllegalAccessException,
-                InvocationTargetException */
-            throw new JDOUserException(
-                msg.msg("EXC_ObjectIdentityStringConstruction",  //NOI18N
-                new Object[] {ex.toString(), className, keyString}), ex);
-        }
-    }
-
-    /**
-     * Register a DateFormat instance for use with constructing Date 
-     * instances. The default is the default DateFormat instance.
-     * If the new instance implements SimpleDateFormat, get its pattern
-     * for error messages.
-     * @param df the DateFormat instance to use
-     */
-    public synchronized void registerDateFormat(DateFormat df) {
-        dateFormat = df;
-        if (df instanceof SimpleDateFormat) {
-            dateFormatPattern = ((SimpleDateFormat)df).toPattern();
-        } else {
-            dateFormatPattern = msg.msg("MSG_unknown"); //NOI18N
-        }
-    }
-
-    /** This is a helper class to manage metadata per persistence-capable
-     * class.  The information is used at runtime to provide field names and
-     * field types to the JDO Model.
-     *
-     * This is the value of the <code>HashMap</code> which
-     * relates the <code>PersistenceCapable Class</code>
-     * as a key to the metadata.
-     */    
-    static class Meta {
-        
-        /** Construct an instance of <code>Meta</code>.
-         * @param fieldNames An array of <code>String</code>
-         * @param fieldTypes An array of <code>Class</code>
-         * @param fieldFlags an array of <code>int</code>
-         * @param persistenceCapableSuperclass the most immediate 
-         * <code>PersistenceCapable</code> superclass
-         * @param pc An instance of the <code>PersistenceCapable</code> class
-         */        
-        Meta (String[] fieldNames, Class[] fieldTypes, byte[] fieldFlags,
-              Class persistenceCapableSuperclass, PersistenceCapable pc) {
-            this.fieldNames = fieldNames;
-            this.fieldTypes = fieldTypes;
-            this.fieldFlags = fieldFlags;
-            this.persistenceCapableSuperclass = persistenceCapableSuperclass;
-            this.pc = pc;
-        }
-    
-        /** This is an array of field names used
-         * for the Model at runtime.  The field
-         * is passed by the static class initialization.
-         */
-        String[] fieldNames;
-    
-        /** Get the field names from the metadata.
-         * @return the array of field names.
-         */
-        String[] getFieldNames() {
-            return fieldNames;
-        }
-    
-        /** This is an array of field types used
-         * for the Model at runtime.  The field
-         * is passed by the static class initialization.
-         */
-        Class[] fieldTypes;
-    
-        /** Get the field types from the metadata.
-         * @return the array of field types.
-         */
-        Class[] getFieldTypes() {
-            return fieldTypes;
-        }
-    
-        /** This is an array of field flags used
-         * for the Model at runtime.  The field
-         * is passed by the static class initialization.
-         */
-        byte[] fieldFlags;
-    
-        /** Get the field types from the metadata.
-         * @return the array of field types.
-         */
-        byte[] getFieldFlags() {
-            return fieldFlags;
-        }
-
-        /** This is the <code>Class</code> instance of the 
-         * <code>PersistenceCapable</code> superclass.
-         */
-        Class persistenceCapableSuperclass;
-    
-        /** Return the <code>PersistenceCapable</code> superclass.
-         * @return the <code>PersistenceCapable</code> superclass
-         */
-        Class getPersistenceCapableSuperclass() {
-            return persistenceCapableSuperclass;
-        }
-        /** This is an instance of <code>PersistenceCapable</code>,
-         * used at runtime to create new instances.
-         */
-        PersistenceCapable pc;
-    
-        /** Get an instance of the <code>PersistenceCapable</code> class.
-         * @return an instance of the <code>PersistenceCapable Class</code>.
-         */
-        PersistenceCapable getPC() {
-            return pc;
-        }
-    
-        /** Return the string form of the metadata.
-         * @return the string form
-         */
-        public String toString() {
-            return "Meta-" + pc.getClass().getName(); //NOI18N
-        }
-    }
-    
-    /** Add a StateInterrogation to the list. Create a new list
-     * in case there is an iterator open on the original list.
-     */
-    public synchronized void addStateInterrogation(StateInterrogation si) {
-        List newList = new ArrayList(stateInterrogations);
-        newList.add(si);
-        stateInterrogations = newList;
-    }
-    
-    /** Remove a StateInterrogation from the list. Create a new list
-     * in case there is an iterator open on the original list.
-     */
-    public synchronized void removeStateInterrogation(StateInterrogation si) {
-        List newList = new ArrayList(stateInterrogations);
-        newList.remove(si);
-        stateInterrogations = newList;
-    }
-    
-    /** Return an Iterator over all StateInterrogation instances.
-     * Synchronize to avoid add/remove/iterate conflicts.
-     */
-    private synchronized Iterator getStateInterrogationIterator() {
-        return stateInterrogations.iterator();
-    }
-    
-    /** Mark a non-binary-compatible instance dirty. Delegate to all
-     * registered StateInterrogation instances until one of them
-     * handles the call.
-     */
-    public void nonBinaryCompatibleMakeDirty(Object pc, String fieldName) {
-        Iterator sit = getStateInterrogationIterator();
-        while (sit.hasNext()) {
-            StateInterrogation si = (StateInterrogation)sit.next();
-            if (si.makeDirty(pc, fieldName)) return;
-        }
-    }
-    
-    /** Determine the state of a non-binary-compatible instance.
-     * Delegate to all registered StateInterrogation instances until
-     * one of them handles the call (returns a non-null Boolean 
-     * with the answer).
-     * The caller provides the stateless "method object" that does 
-     * the actual call to the StateInterrogation instance.
-     */
-    public boolean nonBinaryCompatibleIs(Object pc, 
-            StateInterrogationBooleanReturn sibr) {
-        Iterator sit = getStateInterrogationIterator();
-        while (sit.hasNext()) {
-            StateInterrogation si = (StateInterrogation)sit.next();
-            Boolean result = sibr.is(pc, si);
-            if (result != null) return result.booleanValue();
-        }
-        return false;
-    }
-    
-    /** Return an object associated with a non-binary-compatible instance.
-     * Delegate to all registered StateInterrogation instances until
-     * one of them handles the call (returns a non-null answer).
-     * The caller provides the stateless "method object" that does 
-     * the actual call to the StateInterrogation instance.
-     */
-    public Object nonBinaryCompatibleGet(Object pc, 
-            StateInterrogationObjectReturn sibr) {
-        Iterator sit = getStateInterrogationIterator();
-        while (sit.hasNext()) {
-            StateInterrogation si = (StateInterrogation)sit.next();
-            Object result = sibr.get(pc, si);
-            if (result != null) return result;
-        }
-        return null;
-    }
-    
-    /** This is an interface used to interrogate the state of an instance
-     * that does not implement PersistenceCapable. It is used for the
-     * methods that return a boolean value.
-     */
-    public static interface StateInterrogationBooleanReturn {
-        public Boolean is(Object pc, StateInterrogation si);
-    }
-    
-    /** This is an interface used to interrogate the state of an instance
-     * that does not implement PersistenceCapable. It is used for the
-     * methods that return an Object value.
-     */
-    public static interface StateInterrogationObjectReturn {
-        public Object get(Object pc, StateInterrogation si);
-    }
-}
diff --git a/api20/src/java/javax/jdo/spi/JDOPermission.java b/api20/src/java/javax/jdo/spi/JDOPermission.java
deleted file mode 100644
index 745edf5..0000000
--- a/api20/src/java/javax/jdo/spi/JDOPermission.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package javax.jdo.spi;
-
-/**
- * The <code>JDOPermission</code> class is for operations that are reserved for 
- * JDO implementations and should not be called by other code.  A
- * <code>JDOPermission</code> is a <em>named permission</em> and has no
- * actions.  There are two names currently defined.  Each named permission
- * has a corresponding public static final field which contains an instance
- * of the named permission.
- * <P>
- * The following table
- * provides a summary description of what each named permission allows,
- * and discusses the risks of granting code the permission.
- * <P>
- *
- * <table border=1 cellpadding=5>
- * <tr>
- * <th>Permission Target Name</th>
- * <th>What the Permission Allows</th>
- * <th>Risks of Allowing this Permission</th>
- * </tr>
- *
- * <tr>
- *   <td><code>setStateManager</code></td>
- *   <td>This allows setting the <code>StateManager</code> for an instance of 
- *   <code>PersistenceCapable</code>. The <code>StateManager</code>
- *   has unlimited access to get and set persistent and transactional fields of
- *   the <code>PersistenceCapable</code> instance.</td>
- *   <td>This is dangerous in that information (possibly confidential) 
- *   normally unavailable would be accessible to malicious code.</td>
- * </tr>
- *
- * <tr>
- *   <td><code>getMetadata</code></td>
- *   <td>This allows getting metadata for any <code>PersistenceCapable</code> 
- *   class that has registered with <code>JDOImplHelper</code>.</td>
- *   <td>This is dangerous in that metadata information (possibly confidential) 
- *   normally unavailable would be accessible to malicious code.</td>
- * </tr>
- *
- * <tr>
- *   <td><code>manageMetadata</code></td>
- *   <td>This allows managing metadata for any <code>PersistenceCapable</code> 
- *   class that has registered with <code>JDOImplHelper</code>.</td>
- *   <td>This is dangerous in that metadata information (possibly confidential) 
- *   normally unavailable would be manageable (modifiable) by malicious code.
- *   </td>
- * </tr>
- *
- * <tr>
- *   <td><code>closePersistenceManagerFactory</code></td>
- *   <td>This allows closing a <code>PersistenceManagerFactory</code>,
- *       thereby releasing resources.</td> 
- *   <td>This is dangerous in that resources bound to the
- *       <code>PersistenceManagerFactory</code> would be releaseable by
- *       malicious code.</td>  
- * </tr>
- *
- * </table>
- *
- * @see java.security.Permission
- * @see java.security.BasicPermission
- * @see javax.jdo.spi.JDOImplHelper
- * @see javax.jdo.spi.PersistenceCapable
- * @version 1.0.2
- */
-public final
-class JDOPermission extends java.security.BasicPermission {
-    
-    /**
-     * Constructs a <code>JDOPermission</code> with the specified name.
-     *
-     * @param name the name of the <code>JDOPermission</code>
-     */
-    public JDOPermission(String name) {
-        super(name);
-    }
-
-    /**
-     * Constructs a <code>JDOPermission</code> with the specified name and 
-     * actions.  The actions should be <code>null</code>; they are ignored. 
-     * This constructor exists for use by the <code>Policy</code> object
-     * to instantiate new <code>Permission</code> objects.
-     *
-     * @param name the name of the <code>JDOPermission</code>
-     * @param actions should be <code>null</code>.
-     */
-    public JDOPermission(String name, String actions) {
-        super(name, actions);
-    }
-
-    /** An instance of <code>JDOPermission</code> to be used for
-     * <code>getMetadata</code> permission checking.
-     */
-    public final static JDOPermission GET_METADATA = 
-        new JDOPermission("getMetadata"); // NOI18N
-    
-    /** An instance of <code>JDOPermission</code> to be used for
-     * <code>manageMetadata</code> permission checking.
-     * @since 1.0.2
-     */
-    public final static JDOPermission MANAGE_METADATA = 
-        new JDOPermission("manageMetadata"); // NOI18N
-    
-    /** An instance of <code>JDOPermission</code> to be used for
-     * <code>setStateManager</code> permission checking.
-     */
-    public final static JDOPermission SET_STATE_MANAGER = 
-        new JDOPermission("setStateManager"); // NOI18N
-    
-    /** An instance of <code>JDOPermission</code> to be used for
-     * <code>closePersistenceManagerFactory</code> permission checking.
-     * @since 1.0.1
-     */
-    public final static JDOPermission CLOSE_PERSISTENCE_MANAGER_FACTORY = 
-        new JDOPermission("closePersistenceManagerFactory"); // NOI18N
-    
-}
diff --git a/api20/src/java/javax/jdo/spi/PersistenceCapable.java b/api20/src/java/javax/jdo/spi/PersistenceCapable.java
deleted file mode 100644
index 46ad460..0000000
--- a/api20/src/java/javax/jdo/spi/PersistenceCapable.java
+++ /dev/null
@@ -1,593 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package javax.jdo.spi;
-
-import javax.jdo.PersistenceManager;
-
-/**
- * A class that can be managed by a binary-compatible JDO implementation 
- * must implement this interface.
- *
- * <P>This interface defines methods that allow the implementation to manage
- * the instances.  It also defines methods that allow a JDO aware
- * application to examine the runtime state of instances.  For example,
- * an application can discover whether the instance is persistent, transactional,
- * dirty, new, deleted, or detached; and to get its associated
- * PersistenceManager, object identity, and version if it has one.
- *
- * <P>In the Reference Implementation, the JDO Enhancer modifies the class
- * to implement PersistenceCapable prior to loading the class into the runtime
- * environment.  The Reference Enhancer also adds code to implement the
- * methods defined by PersistenceCapable.
- *
- *<P>The extra methods in the PersistenceCapable interface might be generated
- * by pre-processing a .java file, or might be generated from a tool directly.
- * The exact technique for generating the extra methods is not specified by
- * JDO.
- *
- * <P>The PersistenceCapable interface is designed to avoid name conflicts
- * in the scope of user-defined classes.  All of its declared method
- * names are prefixed with 'jdo'.
- * @version 2.0
- */
-public interface PersistenceCapable {
-    /** If jdoFlags is set to READ_WRITE_OK, then the fields in the default fetch group
-     * can be accessed for read or write without notifying the StateManager.
-     */
-    static final byte READ_WRITE_OK = 0;
-    
-    /** If jdoFlags is set to LOAD_REQUIRED, then the fields in the default fetch group
-     * cannot be accessed for read or write without notifying the StateManager.
-     */
-    static final byte LOAD_REQUIRED = 1;
-    
-    /** If jdoFlags is set to READ_OK, then the fields in the default fetch group
-     * can be accessed for read without notifying the StateManager.
-     */
-    static final byte READ_OK = -1;
-    
-    /** If jdoFieldFlags for a field includes CHECK_READ, then
-     * the field has been enhanced to call the jdoStateManager on read
-     * if the jdoFlags setting is not READ_OK or READ_WRITE_OK.
-     */
-    static final byte CHECK_READ = 1;
-    
-    /** If jdoFieldFlags for a field includes MEDIATE_READ, then
-     * the field has been enhanced to always call the jdoStateManager
-     * on all reads.
-     */
-    static final byte MEDIATE_READ = 2;
-    
-    /** If jdoFieldFlags for a field includes CHECK_WRITE,
-     * then the field has been enhanced to call the
-     * jdoStateManager on write if the jdoFlags setting is not
-     * READ_WRITE_OK;.
-     */
-    static final byte CHECK_WRITE = 4;
-    
-    /** If jdoFieldFlags for a field includes MEDIATE_WRITE, then
-     * the field has been enhanced to always call the jdoStateManager
-     * on all writes.
-     */
-    static final byte MEDIATE_WRITE = 8;
-    
-    /** If jdoFieldFlags for a field includes SERIALIZABLE,
-     * then the field is not declared as TRANSIENT.
-     */
-    static final byte SERIALIZABLE = 16;
-    
-    /** Return the associated PersistenceManager if there is one.
-     * Transactional and persistent instances return the associated
-     * PersistenceManager.
-     *
-     * <P>Transient non-transactional instances return null.
-     * <P>This method always delegates to the StateManager if it is non-null.
-     * @return the PersistenceManager associated with this instance.
-     */
-    PersistenceManager jdoGetPersistenceManager();
-    
-    /** This method sets the StateManager instance that manages the state
-     * of this instance. This method is normally used by the StateManager
-     * during the process of making an instance persistent, transient,
-     * or transactional.
-     *
-     * The caller of this method must have JDOPermission for the instance,
-     * if the instance is not already owned by a StateManager.
-     * If the parameter is null, and the StateManager approves the change,
-     * then the jdoFlags field will be reset to READ_WRITE_OK.
-     * If the parameter is not null, and the security manager approves
-     * the change, then the jdoFlags field will be reset to LOAD_REQUIRED.
-     * @param sm The StateManager which will own this instance, or null
-     * to reset the instance to transient state
-     * @throws SecurityException if the caller does not have JDOPermission
-     * @see JDOPermission
-     */
-    void jdoReplaceStateManager(StateManager sm)
-    throws SecurityException;
-    
-    /** The owning StateManager uses this method to ask the instance to
-     * provide the value of the single field identified by fieldNumber.
-     * @param fieldNumber the field whose value is to be provided by
-     * a callback to the StateManager's
-     * providedXXXField method
-     */
-    void jdoProvideField(int fieldNumber);
-    
... 11686 lines suppressed ...

[db-jdo] 35/43: JDO-345: test class MethodsAndObjectConstructionNotSupported now checks for mutating Collection methods being called

Posted by cl...@apache.org.
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 4db841cf7d1766aa7cfaec1eb9e7d13a7b1e2575
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Thu Oct 5 15:10:03 2006 +0000

    JDO-345: test class MethodsAndObjectConstructionNotSupported now checks for mutating Collection methods being called
---
 .../methods/MethodsAndObjectConstructionNotSupported.java  | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/tck20/src/java/org/apache/jdo/tck/query/jdoql/methods/MethodsAndObjectConstructionNotSupported.java b/tck20/src/java/org/apache/jdo/tck/query/jdoql/methods/MethodsAndObjectConstructionNotSupported.java
index 6908e0d..6274c16 100644
--- a/tck20/src/java/org/apache/jdo/tck/query/jdoql/methods/MethodsAndObjectConstructionNotSupported.java
+++ b/tck20/src/java/org/apache/jdo/tck/query/jdoql/methods/MethodsAndObjectConstructionNotSupported.java
@@ -21,7 +21,7 @@ import javax.jdo.JDOUserException;
 import javax.jdo.PersistenceManager;
 import javax.jdo.Query;
 
-import org.apache.jdo.tck.JDO_Test;
+import org.apache.jdo.tck.pc.company.Employee;
 import org.apache.jdo.tck.pc.mylib.PCPoint;
 import org.apache.jdo.tck.query.QueryTest;
 import org.apache.jdo.tck.util.BatchTestRunner;
@@ -56,17 +56,17 @@ public class MethodsAndObjectConstructionNotSupported extends QueryTest {
     public void testNegative() {
         PersistenceManager pm = getPM();
 
-        runTestUnsupportedOperators01(pm, "this.getX() == 1");
-        runTestUnsupportedOperators01(pm, "y.intValue() == 1");
-        runTestUnsupportedOperators01(pm, "y == new Integer(1)");
+        runTestUnsupportedOperators01(pm, Employee.class, "this.team.add(this)");
+        runTestUnsupportedOperators01(pm, Employee.class, "this.team.remove(this)");
+        runTestUnsupportedOperators01(pm, PCPoint.class, "y == new Integer(1)");
     }
 
     /** */
-    void runTestUnsupportedOperators01(PersistenceManager pm, String filter) {
+    void runTestUnsupportedOperators01(PersistenceManager pm, 
+                                       Class candidateClass, String filter) {
         String expectedMsg = "setFilter: Invalid method call ....";
         Query query = pm.newQuery();
-        query.setClass(PCPoint.class);
-        query.setCandidates(pm.getExtent(PCPoint.class, false));
+        query.setClass(candidateClass);
         
         try {
             query.setFilter(filter);                

[db-jdo] 17/43: JDO-371: fix error message in CloseOfExtentIteratorIsIteratorSpecific

Posted by cl...@apache.org.
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 063749229ffc3e2e62da0ed52ba03d0fb17c7e39
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Fri Apr 21 16:49:45 2006 +0000

    JDO-371: fix error message in CloseOfExtentIteratorIsIteratorSpecific
---
 .../apache/jdo/tck/extents/CloseOfExtentIteratorIsIteratorSpecific.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tck20/src/java/org/apache/jdo/tck/extents/CloseOfExtentIteratorIsIteratorSpecific.java b/tck20/src/java/org/apache/jdo/tck/extents/CloseOfExtentIteratorIsIteratorSpecific.java
index 13e1778..33fece1 100644
--- a/tck20/src/java/org/apache/jdo/tck/extents/CloseOfExtentIteratorIsIteratorSpecific.java
+++ b/tck20/src/java/org/apache/jdo/tck/extents/CloseOfExtentIteratorIsIteratorSpecific.java
@@ -72,7 +72,7 @@ public class CloseOfExtentIteratorIsIteratorSpecific extends ExtentTest {
         commitTransaction();
         if (count2 != 2) {
             fail(ASSERTION_FAILED,
-                 "in query after closing iterator; counted " + count + " instances; should be 2");
+                 "in query after closing iterator; counted " + count2 + " instances; should be 2");
         }
         if (debug) logger.debug("Assertion A15.3-11 passed");
     }

[db-jdo] 05/43: JDO-356 Update RunRules.html

Posted by cl...@apache.org.
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 4bb752f53b0240efa41073153de5b88b6282d6a2
Author: Craig L Russell <cl...@apache.org>
AuthorDate: Fri Mar 31 23:31:11 2006 +0000

    JDO-356 Update RunRules.html
---
 tck20/RunRules.html | 21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/tck20/RunRules.html b/tck20/RunRules.html
index 1b86043..97a3865 100644
--- a/tck20/RunRules.html
+++ b/tck20/RunRules.html
@@ -5,7 +5,7 @@
 	<TITLE></TITLE>
 	<META NAME="GENERATOR" CONTENT="NeoOffice/J 1.1  (Unix)">
 	<META NAME="CREATED" CONTENT="20051228;16322200">
-	<META NAME="CHANGED" CONTENT="20060225;7555700">
+	<META NAME="CHANGED" CONTENT="20060331;15262300">
 	<STYLE>
 	<!--
 		@page { size: 8.5in 11in }
@@ -16,7 +16,7 @@
 <H1 ALIGN=CENTER>Running the JDO 2.0 Technology Compatibility Kit</H1>
 <P ALIGN=CENTER><BR><BR>
 </P>
-<P ALIGN=CENTER>25-Feb-2006</P>
+<P ALIGN=CENTER>30-Mar-2006</P>
 <P STYLE="margin-top: 0.17in; page-break-after: avoid"><FONT FACE="Albany, sans-serif"><FONT SIZE=4>Overview</FONT></FONT></P>
 <P>In order to demonstrate compliance with the Java Data Objects
 specification, an implementation must successfully run all of the TCK
@@ -105,9 +105,10 @@ find:
 				<LI><P>conf – this directory contains the configuration
 				information for the test runs. The file iut-pmf.properties in
 				this directory must be changed to provide properties for the IUT
-				persistence manager factory. Other files must not be modified,
-				except to put a successfully challenged test case into the
-				trunk/tck20/test/conf/exclude.list. Please see below.</P>
+				persistence manager factory. The file jndi.properties may be
+				changed to use a different jndi provider. Other files must not be
+				modified, except to put a successfully challenged test case into
+				the trunk/tck20/test/conf/exclude.list. Please see below.</P>
 			</UL>
 		</UL>
 	</UL>
@@ -143,6 +144,9 @@ Implementation Under Test. This will produce console output plus a
 directory in the TCK/target/logs directory whose name contains the
 date/time the tests were started. This directory contains the output
 of the tests. This is the directory to be published.</P>
+<P>Some of the TCK tests require the implementation to support up to
+20 instances of PersistenceManager with open transactions
+simultaneously.</P>
 <P STYLE="margin-top: 0.17in; page-break-after: avoid"><FONT FACE="Albany, sans-serif"><FONT SIZE=4>Debugging
 the IUT while running TCK tests</FONT></FONT></P>
 <P>Execute “maven help” in the TCK directory in order to get
@@ -173,8 +177,11 @@ body of the email containing the details of the challenge.</P>
 <P>The Maintenance Lead will respond within 15 working days with a
 decision on whether there is an error in the test case. If the issue
 is found by the Maintenance Lead to be due to an error in the test
-case, then the test may be put into the TCK directory
-src/conf/exclude.list and it will not be run as part of the TCK.</P>
+case, the Maintenance Lead might provide a patch that will be
+included in the next maintenance revision. If the patch is not
+provided within 15 working days of the receipt of the challenge, then
+the test may be put into the TCK directory src/conf/exclude.list and
+it will not be run as part of the TCK.</P>
 <P>Decisions of the Maintenance Lead may be appealed to the full
 expert group. A vote of the full expert group will be conducted by
 the Maintenance Lead, and a majority of votes cast will decide the

[db-jdo] 12/43: JDO-362 Fixed omitted makePersistent call in NontransactionalWrite

Posted by cl...@apache.org.
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 84ee1f6e2c6c8dc746e9c146502bb686639f0b75
Author: Craig L Russell <cl...@apache.org>
AuthorDate: Wed Apr 5 15:16:18 2006 +0000

    JDO-362 Fixed omitted makePersistent call in NontransactionalWrite
---
 ...transactionalWriteOptimisticCommitConflict.java |  7 ++--
 .../tck/lifecycle/NontransactionalWriteTest.java   | 47 ++++------------------
 2 files changed, 12 insertions(+), 42 deletions(-)

diff --git a/tck20/src/java/org/apache/jdo/tck/lifecycle/NontransactionalWriteOptimisticCommitConflict.java b/tck20/src/java/org/apache/jdo/tck/lifecycle/NontransactionalWriteOptimisticCommitConflict.java
index 8d45372..f13ca05 100644
--- a/tck20/src/java/org/apache/jdo/tck/lifecycle/NontransactionalWriteOptimisticCommitConflict.java
+++ b/tck20/src/java/org/apache/jdo/tck/lifecycle/NontransactionalWriteOptimisticCommitConflict.java
@@ -82,11 +82,12 @@ public class NontransactionalWriteOptimisticCommitConflict
     public void testOptimisticCommitConflict() {
         if (!checkNontransactionalFeaturesSupported(true)) 
             return;
+        String location = 
+                ASSERTION_FAILED + "after optimistic commit with conflict";
         createAndModifyVersionedPCPoint();
         conflictingUpdate();
-        beginAndCommitTransactionFails(true);
-        checkXValue(ASSERTION_FAILED + "after optimistic commit with conflict",
-                conflictXValue);
+        beginAndCommitTransactionFails(location, true);
+        checkXValue(location, conflictXValue);
         failOnError();
     }
 
diff --git a/tck20/src/java/org/apache/jdo/tck/lifecycle/NontransactionalWriteTest.java b/tck20/src/java/org/apache/jdo/tck/lifecycle/NontransactionalWriteTest.java
index a925dda..9a19be5 100644
--- a/tck20/src/java/org/apache/jdo/tck/lifecycle/NontransactionalWriteTest.java
+++ b/tck20/src/java/org/apache/jdo/tck/lifecycle/NontransactionalWriteTest.java
@@ -28,49 +28,16 @@ import org.apache.jdo.tck.pc.mylib.VersionedPCPoint;
 import org.apache.jdo.tck.util.BatchTestRunner;
 
 /**
- *<B>Title:</B> Test NontransactionalWrite
+ *<B>Title:</B> Test NontransactionalWrite abstract base class
  *<BR>
  *<B>Keywords:</B> NontransactionalWrite
  *<BR>
- *<B>Assertion ID:</B> A5.6.2-4, A5.6.2-6, A5.6.2-8, A5.6.2-10.
+ *<B>Assertion ID:</B>
  *<BR>
  *<B>Assertion Description: </B>
-A5.6.2-4 [If a datastore transaction is begun, commit will write 
-the changes to the datastore with no checking as to 
-the current state of the instances in the datastore. 
-That is, the changes made outside the transaction 
-together with any changes made inside the transaction 
-will overwrite the current state of the datastore.] 
-
-A5.6.2-6 [If a datastore transaction is begun, rollback will not write 
-any changes to the datastore.] 
-
-A5.6.2-8 [If an optimistic transaction is begun, commit will write 
-the changes to the datastore after checking as to the current state 
-of the instances in the datastore. The changes made outside 
-the transaction together with any changes made inside the transaction 
-will update the current state of the datastore if the version 
-checking is successful.] 
-
-A5.6.2-10 [If an optimistic transaction is begun, rollback will not write 
-any changes to the datastore. The persistent-nontransactional-dirty 
-instances will transition according to the RestoreValues flag. ] 
  */
 
-public class NontransactionalWriteTest extends JDO_Test {
-
-    /** */
-    protected static final String ASSERTION_FAILED = 
-        "Assertion A5.6.2-4 (NontransactionalWriteTest) failed: ";
-    
-    /**
-     * The <code>main</code> is called when the class
-     * is directly executed from the command line.
-     * @param args The arguments passed to the program.
-     */
-    public static void main(String[] args) {
-        BatchTestRunner.run(NontransactionalWriteTest.class);
-    }
+abstract public class NontransactionalWriteTest extends JDO_Test {
 
     /** 
      * The ObjectId of the pc instance, set by method
@@ -102,6 +69,7 @@ public class NontransactionalWriteTest extends JDO_Test {
         pm.currentTransaction().setNontransactionalRead(true);
         pm.currentTransaction().setRetainValues(true);
         VersionedPCPoint instance =  new VersionedPCPoint(originalXValue, 200);
+        pm.makePersistent(instance);
         oid = pm.getObjectId(instance);
         pm.currentTransaction().commit();
         instance.setX(newXValue);
@@ -136,7 +104,8 @@ public class NontransactionalWriteTest extends JDO_Test {
      * transaction must fail due to a conflicting update.
      * @param optimistic use optimistic transaction
      */
-    protected void beginAndCommitTransactionFails(boolean optimistic) {
+    protected void beginAndCommitTransactionFails(String location, 
+            boolean optimistic) {
         getPM().currentTransaction().setOptimistic(optimistic);
         pm.currentTransaction().begin();
         try {
@@ -145,7 +114,7 @@ public class NontransactionalWriteTest extends JDO_Test {
             // good catch; return
             return;
         }
-        appendMessage(ASSERTION_FAILED + "transaction succeeded but" +
+        appendMessage(location + "transaction succeeded but" +
                 " should not succeed.");
     }
 
@@ -261,4 +230,4 @@ public class NontransactionalWriteTest extends JDO_Test {
         return true;
     }
 
-}
\ No newline at end of file
+}

[db-jdo] 29/43: JDO-413 updated test to allow either exception or not for field access after preDelete

Posted by cl...@apache.org.
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 037fe6f5ff0ca7ff2e63e2b60bb0093a7605d178
Author: Craig L Russell <cl...@apache.org>
AuthorDate: Tue Oct 3 21:51:23 2006 +0000

    JDO-413 updated test to allow either exception or not for field access after preDelete
---
 .../NoAccessToFieldsAfterPredelete.java             | 21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/tck20/src/java/org/apache/jdo/tck/api/instancecallbacks/NoAccessToFieldsAfterPredelete.java b/tck20/src/java/org/apache/jdo/tck/api/instancecallbacks/NoAccessToFieldsAfterPredelete.java
index 78b429a..c21774d 100644
--- a/tck20/src/java/org/apache/jdo/tck/api/instancecallbacks/NoAccessToFieldsAfterPredelete.java
+++ b/tck20/src/java/org/apache/jdo/tck/api/instancecallbacks/NoAccessToFieldsAfterPredelete.java
@@ -113,49 +113,56 @@ public class NoAccessToFieldsAfterPredelete extends JDO_Test {
     void performAccessFieldTests(String title, InstanceCallbackClass o) {
         try {
             short x1 = o.childToDelete;
-            fail(ASSERTION_FAILED, title + "Accessed persistent short field childToDelete--should have gotten JDOUserException");
+            // http://issues.apache.org/jira/browse/JDO-413
+            // fail(ASSERTION_FAILED, title + "Accessed persistent short field childToDelete--should have gotten JDOUserException");
         } catch (JDOUserException e) {
             // expected
         }
         
         try {
             double x2 = o.doubleValue;
-            fail(ASSERTION_FAILED, title + "Accessed persistent double field doubleValue--should have gotten JDOUserException");
+            // http://issues.apache.org/jira/browse/JDO-413
+            // fail(ASSERTION_FAILED, title + "Accessed persistent double field doubleValue--should have gotten JDOUserException");
         } catch (JDOUserException e) {
             // expected
         }
         
         try {
             char x3 = o.charValue;
-            fail(ASSERTION_FAILED, title + "Accessed persistent char field charValue--should have gotten JDOUserException");
+            // http://issues.apache.org/jira/browse/JDO-413
+            // fail(ASSERTION_FAILED, title + "Accessed persistent char field charValue--should have gotten JDOUserException");
         } catch (JDOUserException e) {
             // expected
         }
         
         try {
             String x4 = o.name;
-            fail(ASSERTION_FAILED,title + "Accessed persistent String field name--should have gotten JDOUserException");
+            // http://issues.apache.org/jira/browse/JDO-413
+            // fail(ASSERTION_FAILED,title + "Accessed persistent String field name--should have gotten JDOUserException");
         } catch (JDOUserException e) {
             // expected
         }
         
         try {
             Date x5 = o.timeStamp;
-            fail(ASSERTION_FAILED, title + "Accessed persistent Date field timeStamp--should have gotten JDOUserException");
+            // http://issues.apache.org/jira/browse/JDO-413
+            // fail(ASSERTION_FAILED, title + "Accessed persistent Date field timeStamp--should have gotten JDOUserException");
         } catch (JDOUserException e) {
             // expected
         }
         
         try {
             HashSet x6 = o.children;
-            fail(ASSERTION_FAILED, title + "Accessed persistent HashSet field Children--should have gotten JDOUserException");
+            // http://issues.apache.org/jira/browse/JDO-413
+            // fail(ASSERTION_FAILED, title + "Accessed persistent HashSet field Children--should have gotten JDOUserException");
         } catch (JDOUserException e) {
             // expected
         }
         
         try {
             InstanceCallbackClass x7 = o.nextObj;
-            fail(ASSERTION_FAILED, title + "Accessed persistent InstanceCallbackClass reference field nextObj--should have gotten JDOUserException");
+            // http://issues.apache.org/jira/browse/JDO-413
+            // fail(ASSERTION_FAILED, title + "Accessed persistent InstanceCallbackClass reference field nextObj--should have gotten JDOUserException");
         } catch (JDOUserException e) {
             // expected
         }

[db-jdo] 40/43: JDO-513, JDO-514, and other test challenges

Posted by cl...@apache.org.
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 7fb72348825bf1c5c49714bcf493c321982678c5
Author: Michelle Caisse <mc...@apache.org>
AuthorDate: Fri Oct 5 18:59:15 2007 +0000

    JDO-513, JDO-514, and other test challenges
---
 .../fetchplan/FetchPlanInterface.java              | 753 ++++++++--------
 .../lifecycle/StateTransitionsReturnedObjects.java |   4 +-
 .../org/apache/jdo/tck/query/api/ChangeQuery.java  | 210 ++---
 .../query/jdoql/parameters/ImplicitParameters.java | 371 ++++----
 .../tck/query/result/ResultClassRequirements.java  | 955 +++++++++++----------
 5 files changed, 1149 insertions(+), 1144 deletions(-)

diff --git a/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanInterface.java b/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanInterface.java
index df90465..39db057 100644
--- a/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanInterface.java
+++ b/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanInterface.java
@@ -1,376 +1,377 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
- 
-package org.apache.jdo.tck.api.persistencemanager.fetchplan;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.jdo.FetchPlan;
-
-import org.apache.jdo.tck.JDO_Test;
-
-import org.apache.jdo.tck.pc.mylib.PCPoint;
-import org.apache.jdo.tck.pc.mylib.PCRect;
-
-import org.apache.jdo.tck.util.BatchTestRunner;
-
-/**
- *<B>Title:</B> Test TITLE
- *<BR>
- *<B>Keywords:</B> fetch plan
- *<BR>
- *<B>Assertion IDs:</B> 12.7.1-1
- *<BR>
- *<B>Assertion Description: </B>
-public interface FetchPlan {
-String DEFAULT = "default";
-String ALL = "all";
-int FETCH_SIZE_GREEDY = -1;
-int FETCH_SIZE_OPTIMAL = 0;
-int DETACH_LOAD_FIELDS = 1;
-int DETACH_UNLOAD_FIELDS = 2;
-A12.7.1-1 [/** Add the fetchgroup to the set of active fetch groups. Duplicate names will be removed.
-FetchPlan addGroup(String fetchGroupName);
-/** Remove the fetch group from the set active fetch groups. 
-FetchPlan removeGroup(String fetchGroupName);
-/** Remove all active groups, including the default fetch group. 
-FetchPlan clearGroups();
-/** Return an immutable Set of the names of all active fetch groups. 
-Set getGroups();
-/** Set a Collection of group names to replace the current groups. Duplicate names will be removed.
-FetchPlan setGroups(Collection fetchGroupNames);
-/** Set an array of group names to replace the current groups. Duplicate names will be removed.
-FetchPlan setGroups(String[] fetchGroupNames);
-/** Set a single group to replace the current groups. 
-FetchPlan setGroup(String fetchGroupName);] 
-/** Set the roots for DetachAllOnCommit 
-FetchPlan setDetachmentRoots(Collection roots);
-/** Get the roots for DetachAllOnCommit 
-Collection getDetachmentRoots();
-/** Set the roots for DetachAllOnCommit 
-FetchPlan setDetachmentRootClasses(Class[] rootClasses);
-/** Get the roots for DetachAllOnCommit 
-Class[] getDetachmentRootClasses();
-/** Set the maximum fetch depth. 
-FetchPlan setMaxFetchDepth(int fetchDepth);
-/** Get the maximum fetch depth. 
-int getMaxFetchDepth();
-A12.7.1-2 [/** Set the fetch size for large result set support. 
-FetchPlan setFetchSize(int fetchSize);
-/** Return the fetch size; 0 if not set; -1 for greedy fetching. 
-int getFetchSize();]
-A12.7.1-3 [/** Set detachment options 
-FetchPlan setDetachmentOptions(int options);
-/** Return the detachment options 
-int getDetachmentOptions();]
- */
-
-public class FetchPlanInterface extends JDO_Test {
-
-    /** */
-    private static final String ASSERTION_FAILED = 
-        "Assertion 12.7.1-1 (FetchPlanTest) failed: ";
-    
-    /**
-     * The <code>main</code> is called when the class
-     * is directly executed from the command line.
-     * @param args The arguments passed to the program.
-     */
-    public static void main(String[] args) {
-        BatchTestRunner.run(FetchPlanInterface.class);
-    }
-
-    /**
-     * @see JDO_Test#localSetUp()
-     */
-    protected void localSetUp() {
-        addTearDownClass(PCRect.class);
-        addTearDownClass(PCPoint.class);
-    }
-
-    /** */
-    protected boolean setEquals
-            (Collection expected, Collection actual) {
-        if (expected == actual) 
-            return true;
-        if (expected == null || actual == null) 
-            return false;
-        Set expectedSet = new HashSet(expected);
-        Set actualSet = new HashSet(actual);
-        return expectedSet.equals(actualSet);
-    }
-
-    /** */
-    protected void failCompare(String message, 
-            Object expected, Object actual) {
-        appendMessage(ASSERTION_FAILED + message);
-        appendMessage("expected: " + expected);
-        appendMessage("actual: " + actual);
-    }
-
-    /** */
-    protected void failCompare(String message, 
-            int expected, int actual) {
-        appendMessage(ASSERTION_FAILED + message);
-        appendMessage("expected: " + expected);
-        appendMessage("actual: " + actual);
-    }
-
-    /** */
-    public void testGroups() {
-        checkDefaultGroups();
-        checkClearGroups();
-        checkSetGroup();
-        checkAddGroup();
-        checkRemoveGroup();
-        checkClearGroups();
-        checkSetGroupsCollection();
-        checkSetGroupsArray();
-        failOnError();
-    }
-
-    /** */
-    public void testDetachmentRoots() {
-        checkGetDetachmentRoots();
-        checkSetDetachmentRoots();
-        checkSetDetachmentRootClasses();
-        failOnError();
-    }
-
-    /** */
-    public void testDetachmentOptions() {
-        int expectedOptions = 
-                FetchPlan.DETACH_LOAD_FIELDS + 
-                FetchPlan.DETACH_UNLOAD_FIELDS;
-        FetchPlan fp = getPM().getFetchPlan();
-        int initialOptions = fp.getDetachmentOptions();
-        if (FetchPlan.DETACH_LOAD_FIELDS != initialOptions) {
-            failCompare(
-                "testDetachmentOptions(): wrong getDetachmentOptions() " + 
-                    "after getPersistenceManager().",
-                    FetchPlan.DETACH_LOAD_FIELDS, initialOptions);
-        }
-        fp.setDetachmentOptions(expectedOptions);
-        int actualOptions = fp.getDetachmentOptions();
-        if (expectedOptions != actualOptions) {
-            failCompare(
-                "testDetachmentOptions(): wrong getDetachmentOptions() " + 
-                    "after setDetachmentOptions().",
-                    expectedOptions, actualOptions);
-        }
-        cleanupPM();
-        failOnError();
-    }
-
-    /** */
-    public void testMaxFetchDepth() {
-        int expectedMaxFetchDepth = 12;
-        FetchPlan fp = getPM().getFetchPlan();
-        fp.setMaxFetchDepth(expectedMaxFetchDepth);
-        int actualMaxFetchDepth = fp.getMaxFetchDepth();
-        if (expectedMaxFetchDepth != actualMaxFetchDepth) {
-            failCompare(
-                "testMaxFetchDepth(): wrong getMaxFetchDepth() " + 
-                    "after setMaxFetchDepth().",
-                    expectedMaxFetchDepth, actualMaxFetchDepth);
-        }
-        cleanupPM();
-        failOnError();
-    }
-
-    /** */
-    public void testFetchSize() {
-        int expectedFetchSize = 12;
-        FetchPlan fp = getPM().getFetchPlan();
-        fp.setFetchSize(expectedFetchSize);
-        int actualFetchSize = fp.getFetchSize();
-        if (expectedFetchSize != actualFetchSize) {
-            failCompare(
-                "testFetchSize(): wrong getFetchSize() " + 
-                    "after setFetchSize().",
-                    expectedFetchSize, actualFetchSize);
-        }
-        cleanupPM();
-        failOnError();
-    }
-
-    /** */
-    public void checkDefaultGroups() {
-        Set expectedGroups = new HashSet();
-        expectedGroups.add("default");
-        FetchPlan fp = getPM().getFetchPlan();
-        Collection groups = fp.getGroups();
-        if (!setEquals(expectedGroups, groups)) {
-            failCompare(
-                "checkDefaultGroups(): wrong getGroups() " + 
-                    "after getPersistenceManager().",
-                    expectedGroups, groups);
-        }
-        cleanupPM();
-    }
-
-    /** */
-    public void checkClearGroups() {
-        Set expectedGroups = new HashSet();
-        FetchPlan fp = getPM().getFetchPlan();
-        fp.clearGroups();
-        Collection groups = fp.getGroups();
-        if (!setEquals(expectedGroups, groups)) {
-            failCompare(
-                "checkClearGroups(): wrong getGroups() " + 
-                    "after clearGroups.",
-                    expectedGroups, groups);
-        }
-        cleanupPM();
-    }
-
-    /** */
-    public void checkSetGroup() {
-        Set expectedGroups = new HashSet();
-        expectedGroups.add("group1");
-        FetchPlan fp = getPM().getFetchPlan();
-        fp.setGroup("group1");
-        Collection groups = fp.getGroups();
-        if (!setEquals(expectedGroups, groups)) {
-            failCompare(
-                "checkSetGroup(): wrong getGroups() " + 
-                    "after setGroup.",
-                    expectedGroups, groups);
-        }
-        cleanupPM();
-    }
-
-    /** */
-    public void checkAddGroup() {
-        Set expectedGroups = new HashSet();
-        expectedGroups.add("default");
-        expectedGroups.add("group1");
-        FetchPlan fp = getPM().getFetchPlan();
-        fp.addGroup("group1");
-        Collection groups = fp.getGroups();
-        if (!setEquals(expectedGroups, groups)) {
-            failCompare(
-                "checkAddGroup(): wrong getGroups() " + 
-                    "after addGroup.",
-                    expectedGroups, groups);
-        }
-        cleanupPM();
-    }
-
-    /** */
-    public void checkRemoveGroup() {
-        Set expectedGroups = new HashSet();
-        FetchPlan fp = getPM().getFetchPlan();
-        Collection groups = fp.getGroups();
-        fp.removeGroup("default");
-        if (!setEquals(expectedGroups, groups)) {
-            failCompare(
-                "checkRemoveGroup(): wrong getGroups() " + 
-                    "after removeGroup.",
-                    expectedGroups, groups);
-        }
-        cleanupPM();
-    }
-
-    /** */
-    public void checkSetGroupsCollection() {
-        Set expectedGroups = new HashSet();
-        expectedGroups.add("default");
-        expectedGroups.add("group1");
-        expectedGroups.add("group2");
-        FetchPlan fp = getPM().getFetchPlan();
-        fp.setGroups(expectedGroups);
-        Collection groups = fp.getGroups();
-        if (!setEquals(expectedGroups, groups)) {
-            failCompare(
-                "checkSetGroupsCollection(): wrong getGroups() " + 
-                    "after SetGroups(Collection).",
-                    expectedGroups, groups);
-        }
-        cleanupPM();
-    }
-
-    /** */
-    public void checkSetGroupsArray() {
-        Set expectedGroups = new HashSet();
-        expectedGroups.add("default");
-        expectedGroups.add("group1");
-        expectedGroups.add("group2");
-        FetchPlan fp = getPM().getFetchPlan();
-        fp.setGroups(new String[] {"default", "group1", "group2"});
-        Collection groups = fp.getGroups();
-        if (!setEquals(expectedGroups, groups)) {
-            failCompare(
-                "checkSetGroupsArray(): wrong getGroups() " + 
-                    "after setGroups(String[]).",
-                    expectedGroups, groups);
-        }
-         cleanupPM();
-    }
-
-    /** */
-    protected void checkGetDetachmentRoots() {
-        Set expectedRoots = new HashSet();
-        FetchPlan fp = getPM().getFetchPlan();
-        Collection roots = fp.getDetachmentRoots();
-        if (!setEquals(expectedRoots, roots)) {
-            failCompare(
-                "checkGetDetachmentRoots(): wrong getDetachmentRoots() " + 
-                    "after getPersistenceManager().",
-                    expectedRoots, roots);
-        }
-         cleanupPM();
-    }
-
-    /** */
-    protected void checkSetDetachmentRoots() {
-        PCPoint p = new PCPoint(10, 20);
-        Set expectedRoots = new HashSet();
-        expectedRoots.add(p);
-        FetchPlan fp = getPM().getFetchPlan();
-        fp.setDetachmentRoots(expectedRoots);
-        Collection roots = fp.getDetachmentRoots();
-        if (!setEquals(expectedRoots, roots)) {
-            failCompare(
-                "checkGetDetachmentRoots(): wrong getDetachmentRoots() " + 
-                    "after setDetachmentRoots().",
-                    expectedRoots, roots);
-        }
-         cleanupPM();
-    }
-
-    /** */
-    private void checkSetDetachmentRootClasses() {
-        Class[] expectedRootClasses = new Class[] {PCPoint.class};
-        FetchPlan fp = getPM().getFetchPlan();
-        fp.setDetachmentRootClasses(
-                expectedRootClasses);
-        Class[] rootClasses = fp.getDetachmentRootClasses();
-        if (!Arrays.equals(expectedRootClasses, rootClasses)) {
-            failCompare(
-                "checkGetDetachmentRootClasses(): " + 
-                    "wrong getDetachmentRootClasses() " + 
-                    "after setDetachmentRootClasses().",
-                    expectedRootClasses, rootClasses);
-        }
-         cleanupPM();
-    }
-
-}
\ No newline at end of file
+/*
+ * 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.
+ */
+ 
+package org.apache.jdo.tck.api.persistencemanager.fetchplan;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.jdo.FetchPlan;
+
+import org.apache.jdo.tck.JDO_Test;
+
+import org.apache.jdo.tck.pc.mylib.PCPoint;
+import org.apache.jdo.tck.pc.mylib.PCRect;
+
+import org.apache.jdo.tck.util.BatchTestRunner;
+
+/**
+ *<B>Title:</B> Test TITLE
+ *<BR>
+ *<B>Keywords:</B> fetch plan
+ *<BR>
+ *<B>Assertion IDs:</B> 12.7.1-1
+ *<BR>
+ *<B>Assertion Description: </B>
+public interface FetchPlan {
+String DEFAULT = "default";
+String ALL = "all";
+int FETCH_SIZE_GREEDY = -1;
+int FETCH_SIZE_OPTIMAL = 0;
+int DETACH_LOAD_FIELDS = 1;
+int DETACH_UNLOAD_FIELDS = 2;
+A12.7.1-1 [/** Add the fetchgroup to the set of active fetch groups. Duplicate names will be removed.
+FetchPlan addGroup(String fetchGroupName);
+/** Remove the fetch group from the set active fetch groups. 
+FetchPlan removeGroup(String fetchGroupName);
+/** Remove all active groups, including the default fetch group. 
+FetchPlan clearGroups();
+/** Return an immutable Set of the names of all active fetch groups. 
+Set getGroups();
+/** Set a Collection of group names to replace the current groups. Duplicate names will be removed.
+FetchPlan setGroups(Collection fetchGroupNames);
+/** Set an array of group names to replace the current groups. Duplicate names will be removed.
+FetchPlan setGroups(String[] fetchGroupNames);
+/** Set a single group to replace the current groups. 
+FetchPlan setGroup(String fetchGroupName);] 
+/** Set the roots for DetachAllOnCommit 
+FetchPlan setDetachmentRoots(Collection roots);
+/** Get the roots for DetachAllOnCommit 
+Collection getDetachmentRoots();
+/** Set the roots for DetachAllOnCommit 
+FetchPlan setDetachmentRootClasses(Class[] rootClasses);
+/** Get the roots for DetachAllOnCommit 
+Class[] getDetachmentRootClasses();
+/** Set the maximum fetch depth. 
+FetchPlan setMaxFetchDepth(int fetchDepth);
+/** Get the maximum fetch depth. 
+int getMaxFetchDepth();
+A12.7.1-2 [/** Set the fetch size for large result set support. 
+FetchPlan setFetchSize(int fetchSize);
+/** Return the fetch size; 0 if not set; -1 for greedy fetching. 
+int getFetchSize();]
+A12.7.1-3 [/** Set detachment options 
+FetchPlan setDetachmentOptions(int options);
+/** Return the detachment options 
+int getDetachmentOptions();]
+ */
+
+public class FetchPlanInterface extends JDO_Test {
+
+    /** */
+    private static final String ASSERTION_FAILED = 
+        "Assertion 12.7.1-1 (FetchPlanTest) failed: ";
+    
+    /**
+     * The <code>main</code> is called when the class
+     * is directly executed from the command line.
+     * @param args The arguments passed to the program.
+     */
+    public static void main(String[] args) {
+        BatchTestRunner.run(FetchPlanInterface.class);
+    }
+
+    /**
+     * @see JDO_Test#localSetUp()
+     */
+    protected void localSetUp() {
+        addTearDownClass(PCRect.class);
+        addTearDownClass(PCPoint.class);
+    }
+
+    /** */
+    protected boolean setEquals
+            (Collection expected, Collection actual) {
+        if (expected == actual) 
+            return true;
+        if (expected == null || actual == null) 
+            return false;
+        Set expectedSet = new HashSet(expected);
+        Set actualSet = new HashSet(actual);
+        return expectedSet.equals(actualSet);
+    }
+
+    /** */
+    protected void failCompare(String message, 
+            Object expected, Object actual) {
+        appendMessage(ASSERTION_FAILED + message);
+        appendMessage("expected: " + expected);
+        appendMessage("actual: " + actual);
+    }
+
+    /** */
+    protected void failCompare(String message, 
+            int expected, int actual) {
+        appendMessage(ASSERTION_FAILED + message);
+        appendMessage("expected: " + expected);
+        appendMessage("actual: " + actual);
+    }
+
+    /** */
+    public void testGroups() {
+        checkDefaultGroups();
+        checkClearGroups();
+        checkSetGroup();
+        checkAddGroup();
+        checkRemoveGroup();
+        checkClearGroups();
+        checkSetGroupsCollection();
+        checkSetGroupsArray();
+        failOnError();
+    }
+
+    /** */
+    public void testDetachmentRoots() {
+        checkGetDetachmentRoots();
+        checkSetDetachmentRoots();
+        checkSetDetachmentRootClasses();
+        failOnError();
+    }
+
+    /** */
+    public void testDetachmentOptions() {
+        int expectedOptions = 
+                FetchPlan.DETACH_LOAD_FIELDS + 
+                FetchPlan.DETACH_UNLOAD_FIELDS;
+        FetchPlan fp = getPM().getFetchPlan();
+        int initialOptions = fp.getDetachmentOptions();
+        if (FetchPlan.DETACH_LOAD_FIELDS != initialOptions) {
+            failCompare(
+                "testDetachmentOptions(): wrong getDetachmentOptions() " + 
+                    "after getPersistenceManager().",
+                    FetchPlan.DETACH_LOAD_FIELDS, initialOptions);
+        }
+        fp.setDetachmentOptions(expectedOptions);
+        int actualOptions = fp.getDetachmentOptions();
+        if (expectedOptions != actualOptions) {
+            failCompare(
+                "testDetachmentOptions(): wrong getDetachmentOptions() " + 
+                    "after setDetachmentOptions().",
+                    expectedOptions, actualOptions);
+        }
+        cleanupPM();
+        failOnError();
+    }
+
+    /** */
+    public void testMaxFetchDepth() {
+        int expectedMaxFetchDepth = 12;
+        FetchPlan fp = getPM().getFetchPlan();
+        fp.setMaxFetchDepth(expectedMaxFetchDepth);
+        int actualMaxFetchDepth = fp.getMaxFetchDepth();
+        if (expectedMaxFetchDepth != actualMaxFetchDepth) {
+            failCompare(
+                "testMaxFetchDepth(): wrong getMaxFetchDepth() " + 
+                    "after setMaxFetchDepth().",
+                    expectedMaxFetchDepth, actualMaxFetchDepth);
+        }
+        cleanupPM();
+        failOnError();
+    }
+
+    /** */
+    public void testFetchSize() {
+        int expectedFetchSize = 12;
+        FetchPlan fp = getPM().getFetchPlan();
+        fp.setFetchSize(expectedFetchSize);
+        int actualFetchSize = fp.getFetchSize();
+        if (expectedFetchSize != actualFetchSize) {
+            failCompare(
+                "testFetchSize(): wrong getFetchSize() " + 
+                    "after setFetchSize().",
+                    expectedFetchSize, actualFetchSize);
+        }
+        cleanupPM();
+        failOnError();
+    }
+
+    /** */
+    public void checkDefaultGroups() {
+        Set expectedGroups = new HashSet();
+        expectedGroups.add("default");
+        FetchPlan fp = getPM().getFetchPlan();
+        Collection groups = fp.getGroups();
+        if (!setEquals(expectedGroups, groups)) {
+            failCompare(
+                "checkDefaultGroups(): wrong getGroups() " + 
+                    "after getPersistenceManager().",
+                    expectedGroups, groups);
+        }
+        cleanupPM();
+    }
+
+    /** */
+    public void checkClearGroups() {
+        Set expectedGroups = new HashSet();
+        FetchPlan fp = getPM().getFetchPlan();
+        fp.clearGroups();
+        Collection groups = fp.getGroups();
+        if (!setEquals(expectedGroups, groups)) {
+            failCompare(
+                "checkClearGroups(): wrong getGroups() " + 
+                    "after clearGroups.",
+                    expectedGroups, groups);
+        }
+        cleanupPM();
+    }
+
+    /** */
+    public void checkSetGroup() {
+        Set expectedGroups = new HashSet();
+        expectedGroups.add("group1");
+        FetchPlan fp = getPM().getFetchPlan();
+        fp.setGroup("group1");
+        Collection groups = fp.getGroups();
+        if (!setEquals(expectedGroups, groups)) {
+            failCompare(
+                "checkSetGroup(): wrong getGroups() " + 
+                    "after setGroup.",
+                    expectedGroups, groups);
+        }
+        cleanupPM();
+    }
+
+    /** */
+    public void checkAddGroup() {
+        Set expectedGroups = new HashSet();
+        expectedGroups.add("default");
+        expectedGroups.add("group1");
+        FetchPlan fp = getPM().getFetchPlan();
+        fp.addGroup("group1");
+        Collection groups = fp.getGroups();
+        if (!setEquals(expectedGroups, groups)) {
+            failCompare(
+                "checkAddGroup(): wrong getGroups() " + 
+                    "after addGroup.",
+                    expectedGroups, groups);
+        }
+        cleanupPM();
+    }
+
+    /** */
+    public void checkRemoveGroup() {
+        Set expectedGroups = new HashSet();
+        FetchPlan fp = getPM().getFetchPlan();
+        fp.removeGroup("default");
+        Collection groups = fp.getGroups();
+        if (!setEquals(expectedGroups, groups)) {
+            failCompare(
+                "checkRemoveGroup(): wrong getGroups() " + 
+                    "after removeGroup.",
+                    expectedGroups, groups);
+        }
+        cleanupPM();
+    }
+
+    /** */
+    public void checkSetGroupsCollection() {
+        Set expectedGroups = new HashSet();
+        expectedGroups.add("default");
+        expectedGroups.add("group1");
+        expectedGroups.add("group2");
+        FetchPlan fp = getPM().getFetchPlan();
+        fp.setGroups(expectedGroups);
+        Collection groups = fp.getGroups();
+        if (!setEquals(expectedGroups, groups)) {
+            failCompare(
+                "checkSetGroupsCollection(): wrong getGroups() " + 
+                    "after SetGroups(Collection).",
+                    expectedGroups, groups);
+        }
+        cleanupPM();
+    }
+
+    /** */
+    public void checkSetGroupsArray() {
+        Set expectedGroups = new HashSet();
+        expectedGroups.add("default");
+        expectedGroups.add("group1");
+        expectedGroups.add("group2");
+        FetchPlan fp = getPM().getFetchPlan();
+        fp.setGroups(new String[] {"default", "group1", "group2"});
+        Collection groups = fp.getGroups();
+        if (!setEquals(expectedGroups, groups)) {
+            failCompare(
+                "checkSetGroupsArray(): wrong getGroups() " + 
+                    "after setGroups(String[]).",
+                    expectedGroups, groups);
+        }
+         cleanupPM();
+    }
+
+    /** */
+    protected void checkGetDetachmentRoots() {
+        Set expectedRoots = new HashSet();
+        FetchPlan fp = getPM().getFetchPlan();
+        Collection roots = fp.getDetachmentRoots();
+        if (!setEquals(expectedRoots, roots)) {
+            failCompare(
+                "checkGetDetachmentRoots(): wrong getDetachmentRoots() " + 
+                    "after getPersistenceManager().",
+                    expectedRoots, roots);
+        }
+         cleanupPM();
+    }
+
+    /** */
+    protected void checkSetDetachmentRoots() {
+        PCPoint p = new PCPoint(10, 20);
+        Set expectedRoots = new HashSet();
+        expectedRoots.add(p);
+        FetchPlan fp = getPM().getFetchPlan();
+        fp.setDetachmentRoots(expectedRoots);
+        Collection roots = fp.getDetachmentRoots();
+        if (!setEquals(expectedRoots, roots)) {
+            failCompare(
+                "checkGetDetachmentRoots(): wrong getDetachmentRoots() " + 
+                    "after setDetachmentRoots().",
+                    expectedRoots, roots);
+        }
+         cleanupPM();
+    }
+
+    /** */
+    private void checkSetDetachmentRootClasses() {
+        Class[] expectedRootClasses = new Class[] {PCPoint.class};
+        FetchPlan fp = getPM().getFetchPlan();
+        fp.setDetachmentRootClasses(
+                expectedRootClasses);
+        Class[] rootClasses = fp.getDetachmentRootClasses();
+        if (!Arrays.equals(expectedRootClasses, rootClasses)) {
+            failCompare(
+                "checkGetDetachmentRootClasses(): " + 
+                    "wrong getDetachmentRootClasses() " + 
+                    "after setDetachmentRootClasses().",
+                    expectedRootClasses, rootClasses);
+        }
+         cleanupPM();
+    }
+
+}
diff --git a/tck20/src/java/org/apache/jdo/tck/lifecycle/StateTransitionsReturnedObjects.java b/tck20/src/java/org/apache/jdo/tck/lifecycle/StateTransitionsReturnedObjects.java
index 68ccd77..015565c 100644
--- a/tck20/src/java/org/apache/jdo/tck/lifecycle/StateTransitionsReturnedObjects.java
+++ b/tck20/src/java/org/apache/jdo/tck/lifecycle/StateTransitionsReturnedObjects.java
@@ -105,7 +105,7 @@ public class StateTransitionsReturnedObjects extends JDO_Test {
         {   PERSISTENT_NEW,                 UNCHANGED,                          UNCHANGED,
             UNCHANGED,                      UNCHANGED,                          PERSISTENT_NEW,
             PERSISTENT_NEW,                 UNCHANGED,                          UNCHANGED, 
-            UNCHANGED,                      UNCHANGED,                          PERSISTENT_CLEAN,     
+            UNCHANGED,                      UNCHANGED,                          UNSPECIFIED,     
             PERSISTENT_DIRTY},
 
         // detachCopy outside tx
@@ -226,7 +226,7 @@ public class StateTransitionsReturnedObjects extends JDO_Test {
                 transaction.setNontransactionalRead(true);
             }
             if( current_state == PERSISTENT_NONTRANSACTIONAL_DIRTY) {
-                transaction.setNontransactionalRead(true);
+                transaction.setNontransactionalWrite(true);
             }
         }
     }
diff --git a/tck20/src/java/org/apache/jdo/tck/query/api/ChangeQuery.java b/tck20/src/java/org/apache/jdo/tck/query/api/ChangeQuery.java
index 0aae29c..3fac19d 100644
--- a/tck20/src/java/org/apache/jdo/tck/query/api/ChangeQuery.java
+++ b/tck20/src/java/org/apache/jdo/tck/query/api/ChangeQuery.java
@@ -1,104 +1,106 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package org.apache.jdo.tck.query.api;
-
-import java.math.BigDecimal;
-import java.util.Arrays;
-import java.util.List;
-
-import javax.jdo.Query;
-
-import org.apache.jdo.tck.JDO_Test;
-import org.apache.jdo.tck.pc.company.CompanyModelReader;
-import org.apache.jdo.tck.pc.company.FullTimeEmployee;
-import org.apache.jdo.tck.pc.company.Person;
-import org.apache.jdo.tck.query.QueryTest;
-import org.apache.jdo.tck.query.result.classes.FullName;
-import org.apache.jdo.tck.util.BatchTestRunner;
-
-/**
- *<B>Title:</B> Change Query.
- *<BR>
- *<B>Keywords:</B> query
- *<BR>
- *<B>Assertion ID:</B> A14.5-15.
- *<BR>
- *<B>Assertion Description: </B>
- * The Query instance returned from this method can be modified 
- * by the application, just like any other Query instance.
- */
-public class ChangeQuery extends QueryTest {
-
-    /** */
-    private static final String ASSERTION_FAILED = 
-        "Assertion A14.5-15 (ChangeQuery) failed: ";
-    
-    /**
-     * The <code>main</code> is called when the class
-     * is directly executed from the command line.
-     * @param args The arguments passed to the program.
-     */
-    public static void main(String[] args) {
-        BatchTestRunner.run(ChangeQuery.class);
-    }
-    
-    /** */
-    public void testPositive() {
-        Query query = getPM().newNamedQuery(Person.class, "changeQuery");
-        
-        // change query
-        query.setResult("firstname, lastname");
-        query.setResultClass(FullName.class);
-        query.setClass(FullTimeEmployee.class);
-        String filter = "salary > 1000 & projects.contains(p) & " +
-                        "p.budget > limit";
-        query.setFilter(filter);
-        String imports = "import org.apache.jdo.tck.pc.company.Project; " +
-                         "import java.math.BigDecimal;";
-        query.declareImports(imports);
-        query.declareVariables("Project p");
-        query.declareParameters("BigDecimal limit");
-        query.setOrdering("personid ASCENDING");
-        query.setRange(0, 5);
-        String singleStringQuery = 
-            "SELECT firstname, lastname INTO FullName FROM FullTimeEmployee " +
-            "WHERE salary > 1000 & projects.contains(p) & " +
-            "p.budget > limit " +
-            "VARIABLES Project p PARAMETERS BigDecimal limit " +
-            "ORDER BY personid ASCENDING RANGE 0, 5";
-
-        // query parameters
-        Object[] parameters = {new BigDecimal("2000")};        
-        // expected result
-        List expectedResult = Arrays.asList(new Object[] {
-            new FullName("emp1First", "emp1Last"), 
-            new FullName("emp2First", "emp2Last"),
-            new FullName("emp5First", "emp5Last")});
-
-        // execute query
-        executeJDOQuery(ASSERTION_FAILED, query, singleStringQuery, true, 
-                parameters, expectedResult, true);
-    }
-
-    /**
-     * @see JDO_Test#localSetUp()
-     */
-    protected void localSetUp() {
-        addTearDownClass(CompanyModelReader.getTearDownClasses());
-        loadAndPersistCompanyModel(getPM());
-    }
-}
+/*
+ * 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.
+ */
+
+package org.apache.jdo.tck.query.api;
+
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.jdo.Query;
+
+import org.apache.jdo.tck.JDO_Test;
+import org.apache.jdo.tck.pc.company.CompanyModelReader;
+import org.apache.jdo.tck.pc.company.FullTimeEmployee;
+import org.apache.jdo.tck.pc.company.Person;
+import org.apache.jdo.tck.query.QueryTest;
+import org.apache.jdo.tck.query.result.classes.FullName;
+import org.apache.jdo.tck.util.BatchTestRunner;
+
+/**
+ *<B>Title:</B> Change Query.
+ *<BR>
+ *<B>Keywords:</B> query
+ *<BR>
+ *<B>Assertion ID:</B> A14.5-15.
+ *<BR>
+ *<B>Assertion Description: </B>
+ * The Query instance returned from this method can be modified 
+ * by the application, just like any other Query instance.
+ */
+public class ChangeQuery extends QueryTest {
+
+    /** */
+    private static final String ASSERTION_FAILED = 
+        "Assertion A14.5-15 (ChangeQuery) failed: ";
+    
+    /**
+     * The <code>main</code> is called when the class
+     * is directly executed from the command line.
+     * @param args The arguments passed to the program.
+     */
+    public static void main(String[] args) {
+        BatchTestRunner.run(ChangeQuery.class);
+    }
+    
+    /** */
+    public void testPositive() {
+        Query query = getPM().newNamedQuery(Person.class, "changeQuery");
+        
+        // change query
+        query.setResult("DISTINCT firstname, lastname");
+        query.setResultClass(FullName.class);
+        query.setClass(FullTimeEmployee.class);
+        String filter = "salary > 1000 & projects.contains(p) & " +
+                        "p.budget > limit";
+        query.setFilter(filter);
+        String imports = "import org.apache.jdo.tck.pc.company.Project; " +
+                         "import java.math.BigDecimal;";
+        query.declareImports(imports);
+        query.declareVariables("Project p");
+        query.declareParameters("BigDecimal limit");
+        query.setOrdering("firstname ASCENDING, lastname ASCENDING");
+        query.setRange(0, 5);
+        String singleStringQuery = 
+            "SELECT DISTINCT firstname, lastname " +
+            "INTO FullName FROM FullTimeEmployee " +
+            "WHERE salary > 1000 & projects.contains(p) & " +
+            "p.budget > limit " +
+            "VARIABLES Project p PARAMETERS BigDecimal limit " +
+            "ORDER BY firstname ASCENDING, lastname ASCENDING RANGE 0, 5";
+
+        // query parameters
+        Object[] parameters = {new BigDecimal("2000")};        
+        // expected result
+        List expectedResult = Arrays.asList(new Object[] {
+            new FullName("emp1First", "emp1Last"), 
+            new FullName("emp2First", "emp2Last"),
+            new FullName("emp5First", "emp5Last")});
+
+        // execute query
+        executeJDOQuery(ASSERTION_FAILED, query, singleStringQuery, true, 
+                parameters, expectedResult, true);
+    }
+
+    /**
+     * @see JDO_Test#localSetUp()
+     */
+    protected void localSetUp() {
+        addTearDownClass(CompanyModelReader.getTearDownClasses());
+        loadAndPersistCompanyModel(getPM());
+    }
+}
diff --git a/tck20/src/java/org/apache/jdo/tck/query/jdoql/parameters/ImplicitParameters.java b/tck20/src/java/org/apache/jdo/tck/query/jdoql/parameters/ImplicitParameters.java
index ab10934..7f0b620 100644
--- a/tck20/src/java/org/apache/jdo/tck/query/jdoql/parameters/ImplicitParameters.java
+++ b/tck20/src/java/org/apache/jdo/tck/query/jdoql/parameters/ImplicitParameters.java
@@ -1,185 +1,186 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package org.apache.jdo.tck.query.jdoql.parameters;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.jdo.tck.JDO_Test;
-import org.apache.jdo.tck.pc.company.CompanyModelReader;
-import org.apache.jdo.tck.pc.company.Employee;
-import org.apache.jdo.tck.pc.company.Person;
-import org.apache.jdo.tck.query.QueryElementHolder;
-import org.apache.jdo.tck.query.QueryTest;
-import org.apache.jdo.tck.util.BatchTestRunner;
-
-/**
- *<B>Title:</B> Implicit parameters.
- *<BR>
- *<B>Keywords:</B> query
- *<BR>
- *<B>Assertion ID:</B> A14.6.3-3.
- *<BR>
- *<B>Assertion Description: </B>
- * Parameters implicitly declared (in the result, filter, grouping, ordering, 
- * or range) are identified by prepending a ":" to the parameter 
- * everywhere it appears. All parameter types can be determined 
- * by one of the following techniques:
- */
-public class ImplicitParameters extends QueryTest {
-
-    /** */
-    private static final String ASSERTION_FAILED = 
-        "Assertion A14.6.3-3 (ImplicitParameters) failed: ";
-    
-    /** 
-     * The array of valid queries which may be executed as 
-     * single string queries and as API queries.
-     */
-    private static final QueryElementHolder[] VALID_QUERIES = {
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      "this, :param", 
-        /*INTO*/        null, 
-        /*FROM*/        Person.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       null,
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null),
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      null, 
-        /*INTO*/        null, 
-        /*FROM*/        Person.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       "firstname == :param",
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null),
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      "department.name", 
-        /*INTO*/        null, 
-        /*FROM*/        Employee.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       null,
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    "department.name HAVING COUNT(this) >= :min",
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null),
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      null, 
-        /*INTO*/        null, 
-        /*FROM*/        Person.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       null,
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        ":zero",
-        /*TO*/          ":five")
-    };
-    
-    private static String parameter = "parameterInResult";
-    
-    /** 
-     * The expected results of valid queries.
-     */
-    private Object[] expectedResult = {
-        getExpectedResultOfFirstQuery(
-                getTransientCompanyModelInstancesAsList(new String[] {
-                "emp1", "emp2", "emp3", "emp4", "emp5"})),
-        getTransientCompanyModelInstancesAsList(new String[]{"emp1"}),
-        /* Note: "Development" is not a bean name! */
-        Arrays.asList(new Object[]{"Development"}),
-        getTransientCompanyModelInstancesAsList(new String[] {
-                "emp1", "emp2", "emp3", "emp4", "emp5"})
-    };
-            
-    /**
-     * The <code>main</code> is called when the class
-     * is directly executed from the command line.
-     * @param args The arguments passed to the program.
-     */
-    public static void main(String[] args) {
-        BatchTestRunner.run(ImplicitParameters.class);
-    }
-    
-    /** */
-    public void testResult() {
-        int index = 0;
-        executeQuery(index, new Object[] {parameter});
-    }
-    
-    /** */
-    public void testFilter() {
-        int index = 1;
-        executeQuery(index, new Object[] {"emp1First"});
-    }
-    
-    /** */
-    public void testGrouping() {
-        int index = 2;
-        executeQuery(index, new Object[] {new Long(3)});
-    }
-    
-    /** */
-    public void testRange() {
-        int index = 3;
-        executeSingleStringQuery(ASSERTION_FAILED, VALID_QUERIES[index], 
-                new Object[] {new Long(0), new Long(5)}, expectedResult[index]);
-    }
-    
-    /**
-     * @see JDO_Test#localSetUp()
-     */
-    protected void localSetUp() {
-        addTearDownClass(CompanyModelReader.getTearDownClasses());
-        loadAndPersistCompanyModel(getPM());
-    }
-
-    /** */
-    private void executeQuery(int index, Object[] parameters) {
-        executeAPIQuery(ASSERTION_FAILED, VALID_QUERIES[index], 
-                parameters, expectedResult[index]);
-        executeSingleStringQuery(ASSERTION_FAILED, VALID_QUERIES[index], 
-                parameters, expectedResult[index]);
-    }
-    
-    private List getExpectedResultOfFirstQuery(List instances) {
-        Object[] expectedResult = new Object[instances.size()];
-        for (int i = 0; i < expectedResult.length; i++) {
-            expectedResult[i] = new Object[] {instances.get(i), parameter};
-        }
-        return Arrays.asList(expectedResult);
-    }
-}
+/*
+ * 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.
+ */
+
+package org.apache.jdo.tck.query.jdoql.parameters;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.jdo.tck.JDO_Test;
+import org.apache.jdo.tck.pc.company.CompanyModelReader;
+import org.apache.jdo.tck.pc.company.Employee;
+import org.apache.jdo.tck.pc.company.Person;
+import org.apache.jdo.tck.query.QueryElementHolder;
+import org.apache.jdo.tck.query.QueryTest;
+import org.apache.jdo.tck.util.BatchTestRunner;
+
+/**
+ *<B>Title:</B> Implicit parameters.
+ *<BR>
+ *<B>Keywords:</B> query
+ *<BR>
+ *<B>Assertion ID:</B> A14.6.3-3.
+ *<BR>
+ *<B>Assertion Description: </B>
+ * Parameters implicitly declared (in the result, filter, grouping, ordering, 
+ * or range) are identified by prepending a ":" to the parameter 
+ * everywhere it appears. All parameter types can be determined 
+ * by one of the following techniques:
+ */
+public class ImplicitParameters extends QueryTest {
+
+    /** */
+    private static final String ASSERTION_FAILED = 
+        "Assertion A14.6.3-3 (ImplicitParameters) failed: ";
+    
+    /** 
+     * The array of valid queries which may be executed as 
+     * single string queries and as API queries.
+     */
+    private static final QueryElementHolder[] VALID_QUERIES = {
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      "this, :param", 
+        /*INTO*/        null, 
+        /*FROM*/        Person.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       null,
+        /*VARIABLES*/   null,
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     null,
+        /*GROUP BY*/    null,
+        /*ORDER BY*/    null,
+        /*FROM*/        null,
+        /*TO*/          null),
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      null, 
+        /*INTO*/        null, 
+        /*FROM*/        Person.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       "firstname == :param",
+        /*VARIABLES*/   null,
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     null,
+        /*GROUP BY*/    null,
+        /*ORDER BY*/    null,
+        /*FROM*/        null,
+        /*TO*/          null),
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      "department.name", 
+        /*INTO*/        null, 
+        /*FROM*/        Employee.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       null,
+        /*VARIABLES*/   null,
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     null,
+        /*GROUP BY*/    "department.name HAVING COUNT(this) >= :minValue",
+        /*ORDER BY*/    null,
+        /*FROM*/        null,
+        /*TO*/          null),
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      null, 
+        /*INTO*/        null, 
+        /*FROM*/        Person.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       null,
+        /*VARIABLES*/   null,
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     null,
+        /*GROUP BY*/    null,
+        /*ORDER BY*/    null,
+        /*FROM*/        ":zero",
+        /*TO*/          ":five")
+    };
+    
+    private static String parameter = "parameterInResult";
+    
+    /** 
+     * The expected results of valid queries.
+     */
+    private Object[] expectedResult = {
+        getExpectedResultOfFirstQuery(
+                getTransientCompanyModelInstancesAsList(new String[] {
+                "emp1", "emp2", "emp3", "emp4", "emp5"})),
+        getTransientCompanyModelInstancesAsList(new String[]{"emp1"}),
+        /* Note: "Development" is not a bean name! */
+        Arrays.asList(new Object[]{"Development"}),
+        getTransientCompanyModelInstancesAsList(new String[] {
+                "emp1", "emp2", "emp3", "emp4", "emp5"})
+    };
+            
+    /**
+     * The <code>main</code> is called when the class
+     * is directly executed from the command line.
+     * @param args The arguments passed to the program.
+     */
+    public static void main(String[] args) {
+        BatchTestRunner.run(ImplicitParameters.class);
+    }
+    
+    /** */
+    public void testResult() {
+        int index = 0;
+        executeQuery(index, new Object[] {parameter});
+    }
+    
+    /** */
+    public void testFilter() {
+        int index = 1;
+        executeQuery(index, new Object[] {"emp1First"});
+    }
+    
+    /** */
+    public void testGrouping() {
+        int index = 2;
+        executeQuery(index, new Object[] {new Long(3)});
+    }
+    
+    /** */
+    public void testRange() {
+        int index = 3;
+        executeSingleStringQuery(ASSERTION_FAILED, VALID_QUERIES[index], 
+                new Object[] {new Long(0), new Long(5)}, expectedResult[index]);
+    }
+    
+    /**
+     * @see JDO_Test#localSetUp()
+     */
+    protected void localSetUp() {
+        addTearDownClass(CompanyModelReader.getTearDownClasses());
+        loadAndPersistCompanyModel(getPM());
+    }
+
+    /** */
+    private void executeQuery(int index, Object[] parameters) {
+        executeAPIQuery(ASSERTION_FAILED, VALID_QUERIES[index], 
+                parameters, expectedResult[index]);
+        executeSingleStringQuery(ASSERTION_FAILED, VALID_QUERIES[index], 
+                parameters, expectedResult[index]);
+    }
+    
+    private List getExpectedResultOfFirstQuery(List instances) {
+        Object[] expectedResult = new Object[instances.size()];
+        for (int i = 0; i < expectedResult.length; i++) {
+            expectedResult[i] = new Object[] {instances.get(i), parameter};
+        }
+        return Arrays.asList(expectedResult);
+    }
+}
diff --git a/tck20/src/java/org/apache/jdo/tck/query/result/ResultClassRequirements.java b/tck20/src/java/org/apache/jdo/tck/query/result/ResultClassRequirements.java
index 6c1ff78..1792980 100644
--- a/tck20/src/java/org/apache/jdo/tck/query/result/ResultClassRequirements.java
+++ b/tck20/src/java/org/apache/jdo/tck/query/result/ResultClassRequirements.java
@@ -1,477 +1,478 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package org.apache.jdo.tck.query.result;
-
-import java.math.BigDecimal;
-import java.util.Arrays;
-import java.util.Map;
-
-import org.apache.jdo.tck.JDO_Test;
-import org.apache.jdo.tck.pc.company.CompanyModelReader;
-import org.apache.jdo.tck.pc.company.FullTimeEmployee;
-import org.apache.jdo.tck.pc.company.Project;
-import org.apache.jdo.tck.query.QueryElementHolder;
-import org.apache.jdo.tck.query.QueryTest;
-import org.apache.jdo.tck.query.result.classes.LongString;
-import org.apache.jdo.tck.query.result.classes.MissingNoArgsConstructor;
-import org.apache.jdo.tck.query.result.classes.NoFieldsNoMethods;
-import org.apache.jdo.tck.query.result.classes.PublicLongField;
-import org.apache.jdo.tck.query.result.classes.PublicPutMethod;
-import org.apache.jdo.tck.util.BatchTestRunner;
-import org.apache.jdo.tck.util.ConversionHelper;
-
-/**
- *<B>Title:</B> Result Class Requirements.
- *<BR>
- *<B>Keywords:</B> query
- *<BR>
- *<B>Assertion ID:</B> A14.6.12-1.
- *<BR>
- *<B>Assertion Description: </B>
- * The result class may be one of the java.lang classes ...
- */
-public class ResultClassRequirements extends QueryTest {
-
-    /** */
-    private static final String ASSERTION_FAILED = 
-        "Assertion A14.6.12-1 (ResultClassRequirements) failed: ";
-    
-    /** 
-     * The array of valid queries which may be executed as 
-     * single string queries and as API queries.
-     */
-    private static final QueryElementHolder[] VALID_QUERIES = {
-        // Long
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      "personid",
-        /*INTO*/        Long.class, 
-        /*FROM*/        FullTimeEmployee.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       null,
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null),
-        
-        // Double
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      "salary",
-        /*INTO*/        Double.class, 
-        /*FROM*/        FullTimeEmployee.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       null,
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null),
-        
-        // BigDecimal
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      "budget",
-        /*INTO*/        BigDecimal.class, 
-        /*FROM*/        Project.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       null,
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null),
-        
-        // java.util.Date
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      "hiredate",
-        /*INTO*/        java.util.Date.class, 
-        /*FROM*/        FullTimeEmployee.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       null,
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null),
-        
-        // Map
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      "personid AS id, lastname AS name",
-        /*INTO*/        Map.class, 
-        /*FROM*/        FullTimeEmployee.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       null,
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null),
-        
-        // user defined result class
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      "personid AS l, lastname AS s",
-        /*INTO*/        LongString.class, 
-        /*FROM*/        FullTimeEmployee.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       null,
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null),
-        
-        // constructor
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      "new LongString(personid, lastname)",
-        /*INTO*/        null, 
-        /*FROM*/        FullTimeEmployee.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       null,
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     "import org.apache.jdo.tck.query.result.classes.LongString;",
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null),
-        
-        // constructor without constructor call
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      "personid, lastname",
-        /*INTO*/        LongString.class, 
-        /*FROM*/        FullTimeEmployee.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       null,
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null),
-        
-        // public fields
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      "personid AS l",
-        /*INTO*/        PublicLongField.class, 
-        /*FROM*/        FullTimeEmployee.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       null,
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null),
-        
-        // public put method
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      "personid, lastname",
-        /*INTO*/        PublicPutMethod.class, 
-        /*FROM*/        FullTimeEmployee.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       null,
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null)
-    };
-    
-    /** 
-     * The array of invalid queries which may be executed as 
-     * single string queries and as API queries.
-     */
-    private static final QueryElementHolder[] INVALID_QUERIES = {
-        // JDK class
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      "personid, lastname",
-        /*INTO*/        Long.class, 
-        /*FROM*/        FullTimeEmployee.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       null,
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null),
-        
-        // JDK class, non assignment compatible
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      "lastname",
-        /*INTO*/        Long.class, 
-        /*FROM*/        FullTimeEmployee.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       null,
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null),
-        
-        // TCK class, salary field is not assignment compatible
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      "personid AS l, salary AS s",
-        /*INTO*/        LongString.class, 
-        /*FROM*/        FullTimeEmployee.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       null,
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null),
-        
-        // TCK class, non existing constructor
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      "new LongString(personid)",
-        /*INTO*/        null, 
-        /*FROM*/        FullTimeEmployee.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       null,
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     "import org.apache.jdo.tck.query.result.classes.LongString;",
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null),
-        
-        // TCK class, no no-args constructor
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      "personid",
-        /*INTO*/        MissingNoArgsConstructor.class, 
-        /*FROM*/        FullTimeEmployee.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       null,
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null),
-        
-        // TCK class, no no-args constructor
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      "personid",
-        /*INTO*/        NoFieldsNoMethods.class, 
-        /*FROM*/        FullTimeEmployee.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       null,
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null),
-    };
-        
-    // Two dimensional arrays to be converted to maps 
-    // in the expected result.
-    private static Object[][] emp1Map = 
-        {{"id", new Long(1)}, 
-         {"name", "emp1Last"}};
-    private static Object[][] emp2Map = 
-        {{"id", new Long(2)}, 
-         {"name", "emp2Last"}};
-    private static Object[][] emp5Map = 
-        {{"id", new Long(5)}, 
-         {"name", "emp5Last"}};
-    private static Object[][] publicPutMethod1 =
-        {{"personid", new Long(1)}, {"lastname", "emp1Last"}};
-    private static Object[][] publicPutMethod2 =
-        {{"personid", new Long(2)}, {"lastname", "emp2Last"}};
-    private static Object[][] publicPutMethod5 =
-        {{"personid", new Long(5)}, {"lastname", "emp5Last"}};
-    
-    /** 
-     * The expected results of valid queries.
-     */
-    private Object[] expectedResult = {
-        // Long
-        Arrays.asList(new Object[]{new Long(1), new Long(2), new Long(5)}),
-        // Double
-        Arrays.asList(new Object[]{
-                new Double(20000.0), new Double(10000.0), new Double(45000.0)}),
-        // BigDecimal
-        Arrays.asList(new Object[]{new BigDecimal("2500000.99"), 
-                new BigDecimal("50000.00"), new BigDecimal("2000.99")}),
-        // java.util.Date
-        Arrays.asList(new Object[]{
-                CompanyModelReader.stringToUtilDate("1/Jan/1999"), 
-                CompanyModelReader.stringToUtilDate("1/Jul/2003"), 
-                CompanyModelReader.stringToUtilDate("15/Aug/1998")}),
-        // Map
-        Arrays.asList(new Object[]{
-                ConversionHelper.arrayToMap(emp1Map),
-                ConversionHelper.arrayToMap(emp2Map),
-                ConversionHelper.arrayToMap(emp5Map)}),
-        // user defined result class
-        Arrays.asList(new Object[]{
-                new LongString(1, "emp1Last"), 
-                new LongString(2, "emp2Last"), 
-                new LongString(5, "emp5Last")}),
-        // constructor
-        Arrays.asList(new Object[]{
-                new LongString(1, "emp1Last"), 
-                new LongString(2, "emp2Last"), 
-                new LongString(5, "emp5Last")}),
-        // constructor without constructor call
-        Arrays.asList(new Object[]{
-                new LongString(1, "emp1Last"), 
-                new LongString(2, "emp2Last"), 
-                new LongString(5, "emp5Last")}),
-        // public fields
-        Arrays.asList(new Object[]{
-                new PublicLongField(1), 
-                new PublicLongField(2), 
-                new PublicLongField(5)}),
-        // public put method
-        Arrays.asList(new Object[]{
-                new PublicPutMethod(ConversionHelper.arrayToMap(publicPutMethod1)),
-                new PublicPutMethod(ConversionHelper.arrayToMap(publicPutMethod2)),
-                new PublicPutMethod(ConversionHelper.arrayToMap(publicPutMethod5))})
-    };
-            
-    /**
-     * The <code>main</code> is called when the class
-     * is directly executed from the command line.
-     * @param args The arguments passed to the program.
-     */
-    public static void main(String[] args) {
-        BatchTestRunner.run(ResultClassRequirements.class);
-    }
-    
-    /** */
-    public void testLong() {
-        int index = 0;
-        executeQuery(index);
-    }
-
-    /** */
-    public void testDouble() {
-        int index = 1;
-        executeQuery(index);
-    }
-
-    /** */
-    public void testBigDecimal() {
-        int index = 2;
-        executeQuery(index);
-    }
-
-    /** */
-    public void testDate() {
-        int index = 3;
-        executeQuery(index);
-    }
-
-    /** */
-    public void testMap() {
-        int index = 4;
-        executeQuery(index);
-    }
-
-    /** */
-    public void testUserDefinedResultClass() {
-        int index = 5;
-        executeQuery(index);
-    }
-
-    /** */
-    public void testConstructor() {
-        int index = 6;
-        executeQuery(index);
-        index++;
-        executeQuery(index);
-    }
-
-    /** */
-    public void testFields() {
-        int index = 8;
-        executeQuery(index);
-    }
-
-    /** */
-    public void testPut() {
-        int index = 9;
-        executeQuery(index);
-    }
-
-    /** */
-    public void testNegative() {
-        for (int i = 0; i < INVALID_QUERIES.length; i++) {
-            compileAPIQuery(ASSERTION_FAILED, INVALID_QUERIES[i], false);
-            compileSingleStringQuery(ASSERTION_FAILED, INVALID_QUERIES[i], 
-                    false);
-        }
-    }
-
-    /** */
-    private void executeQuery(int index) {
-        executeAPIQuery(ASSERTION_FAILED, VALID_QUERIES[index], 
-                expectedResult[index]);
-        executeSingleStringQuery(ASSERTION_FAILED, VALID_QUERIES[index], 
-                expectedResult[index]);
-    }
-
-    /**
-     * @see JDO_Test#localSetUp()
-     */
-    protected void localSetUp() {
-        addTearDownClass(CompanyModelReader.getTearDownClasses());
-        loadAndPersistCompanyModel(getPM());
-    }
-}
+/*
+ * 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.
+ */
+
+package org.apache.jdo.tck.query.result;
+
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.Map;
+
+import org.apache.jdo.tck.JDO_Test;
+import org.apache.jdo.tck.pc.company.CompanyModelReader;
+import org.apache.jdo.tck.pc.company.FullTimeEmployee;
+import org.apache.jdo.tck.pc.company.Project;
+import org.apache.jdo.tck.query.QueryElementHolder;
+import org.apache.jdo.tck.query.QueryTest;
+import org.apache.jdo.tck.query.result.classes.LongString;
+import org.apache.jdo.tck.query.result.classes.MissingNoArgsConstructor;
+import org.apache.jdo.tck.query.result.classes.NoFieldsNoMethods;
+import org.apache.jdo.tck.query.result.classes.PublicLongField;
+import org.apache.jdo.tck.query.result.classes.PublicPutMethod;
+import org.apache.jdo.tck.util.BatchTestRunner;
+import org.apache.jdo.tck.util.ConversionHelper;
+
+/**
+ *<B>Title:</B> Result Class Requirements.
+ *<BR>
+ *<B>Keywords:</B> query
+ *<BR>
+ *<B>Assertion ID:</B> A14.6.12-1.
+ *<BR>
+ *<B>Assertion Description: </B>
+ * The result class may be one of the java.lang classes ...
+ */
+public class ResultClassRequirements extends QueryTest {
+
+    /** */
+    private static final String ASSERTION_FAILED = 
+        "Assertion A14.6.12-1 (ResultClassRequirements) failed: ";
+    
+    /** 
+     * The array of valid queries which may be executed as 
+     * single string queries and as API queries.
+     */
+    private static final QueryElementHolder[] VALID_QUERIES = {
+        // Long
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      "personid",
+        /*INTO*/        Long.class, 
+        /*FROM*/        FullTimeEmployee.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       null,
+        /*VARIABLES*/   null,
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     null,
+        /*GROUP BY*/    null,
+        /*ORDER BY*/    null,
+        /*FROM*/        null,
+        /*TO*/          null),
+        
+        // Double
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      "salary",
+        /*INTO*/        Double.class, 
+        /*FROM*/        FullTimeEmployee.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       null,
+        /*VARIABLES*/   null,
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     null,
+        /*GROUP BY*/    null,
+        /*ORDER BY*/    null,
+        /*FROM*/        null,
+        /*TO*/          null),
+        
+        // BigDecimal
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      "budget",
+        /*INTO*/        BigDecimal.class, 
+        /*FROM*/        Project.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       null,
+        /*VARIABLES*/   null,
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     null,
+        /*GROUP BY*/    null,
+        /*ORDER BY*/    null,
+        /*FROM*/        null,
+        /*TO*/          null),
+        
+        // java.util.Date
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      "hiredate",
+        /*INTO*/        java.util.Date.class, 
+        /*FROM*/        FullTimeEmployee.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       null,
+        /*VARIABLES*/   null,
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     null,
+        /*GROUP BY*/    null,
+        /*ORDER BY*/    null,
+        /*FROM*/        null,
+        /*TO*/          null),
+        
+        // Map
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      "personid AS id, lastname AS name",
+        /*INTO*/        Map.class, 
+        /*FROM*/        FullTimeEmployee.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       null,
+        /*VARIABLES*/   null,
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     null,
+        /*GROUP BY*/    null,
+        /*ORDER BY*/    null,
+        /*FROM*/        null,
+        /*TO*/          null),
+        
+        // user defined result class
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      "personid AS l, lastname AS s",
+        /*INTO*/        LongString.class, 
+        /*FROM*/        FullTimeEmployee.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       null,
+        /*VARIABLES*/   null,
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     null,
+        /*GROUP BY*/    null,
+        /*ORDER BY*/    null,
+        /*FROM*/        null,
+        /*TO*/          null),
+        
+        // constructor
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      "new LongString(personid, lastname)",
+        /*INTO*/        null, 
+        /*FROM*/        FullTimeEmployee.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       null,
+        /*VARIABLES*/   null,
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     "import org.apache.jdo.tck.query.result.classes.LongString;",
+        /*GROUP BY*/    null,
+        /*ORDER BY*/    null,
+        /*FROM*/        null,
+        /*TO*/          null),
+        
+        // constructor without constructor call
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      "personid, lastname",
+        /*INTO*/        LongString.class, 
+        /*FROM*/        FullTimeEmployee.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       null,
+        /*VARIABLES*/   null,
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     null,
+        /*GROUP BY*/    null,
+        /*ORDER BY*/    null,
+        /*FROM*/        null,
+        /*TO*/          null),
+        
+        // public fields
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      "personid AS l",
+        /*INTO*/        PublicLongField.class, 
+        /*FROM*/        FullTimeEmployee.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       null,
+        /*VARIABLES*/   null,
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     null,
+        /*GROUP BY*/    null,
+        /*ORDER BY*/    null,
+        /*FROM*/        null,
+        /*TO*/          null),
+        
+        // public put method
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      "personid, lastname",
+        /*INTO*/        PublicPutMethod.class, 
+        /*FROM*/        FullTimeEmployee.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       null,
+        /*VARIABLES*/   null,
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     null,
+        /*GROUP BY*/    null,
+        /*ORDER BY*/    null,
+        /*FROM*/        null,
+        /*TO*/          null)
+    };
+    
+    /** 
+     * The array of invalid queries which may be executed as 
+     * single string queries and as API queries.
+     */
+    private static final QueryElementHolder[] INVALID_QUERIES = {
+        // JDK class
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      "personid, lastname",
+        /*INTO*/        Long.class, 
+        /*FROM*/        FullTimeEmployee.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       null,
+        /*VARIABLES*/   null,
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     null,
+        /*GROUP BY*/    null,
+        /*ORDER BY*/    null,
+        /*FROM*/        null,
+        /*TO*/          null),
+        
+        // JDK class, non assignment compatible
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      "this",
+        /*INTO*/        Long.class, 
+        /*FROM*/        FullTimeEmployee.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       null,
+        /*VARIABLES*/   null,
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     null,
+        /*GROUP BY*/    null,
+        /*ORDER BY*/    null,
+        /*FROM*/        null,
+        /*TO*/          null),
+        
+        // TCK class, salary field is not assignment compatible
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      "personid AS l, salary AS s",
+        /*INTO*/        LongString.class, 
+        /*FROM*/        FullTimeEmployee.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       null,
+        /*VARIABLES*/   null,
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     null,
+        /*GROUP BY*/    null,
+        /*ORDER BY*/    null,
+        /*FROM*/        null,
+        /*TO*/          null),
+        
+        // TCK class, non existing constructor
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      "new LongString(personid)",
+        /*INTO*/        null, 
+        /*FROM*/        FullTimeEmployee.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       null,
+        /*VARIABLES*/   null,
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     "import org.apache.jdo.tck.query.result.classes.LongString;",
+        /*GROUP BY*/    null,
+        /*ORDER BY*/    null,
+        /*FROM*/        null,
+        /*TO*/          null),
+        
+        // TCK class, no no-args constructor
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      "personid",
+        /*INTO*/        MissingNoArgsConstructor.class, 
+        /*FROM*/        FullTimeEmployee.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       null,
+        /*VARIABLES*/   null,
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     null,
+        /*GROUP BY*/    null,
+        /*ORDER BY*/    null,
+        /*FROM*/        null,
+        /*TO*/          null),
+        
+        // TCK class, no no-args constructor
+        new QueryElementHolder(
+        /*UNIQUE*/      null,
+        /*RESULT*/      "personid",
+        /*INTO*/        NoFieldsNoMethods.class, 
+        /*FROM*/        FullTimeEmployee.class,
+        /*EXCLUDE*/     null,
+        /*WHERE*/       null,
+        /*VARIABLES*/   null,
+        /*PARAMETERS*/  null,
+        /*IMPORTS*/     null,
+        /*GROUP BY*/    null,
+        /*ORDER BY*/    null,
+        /*FROM*/        null,
+        /*TO*/          null),
+    };
+        
+    // Two dimensional arrays to be converted to maps 
+    // in the expected result.
+    private static Object[][] emp1Map = 
+        {{"id", new Long(1)}, 
+         {"name", "emp1Last"}};
+    private static Object[][] emp2Map = 
+        {{"id", new Long(2)}, 
+         {"name", "emp2Last"}};
+    private static Object[][] emp5Map = 
+        {{"id", new Long(5)}, 
+         {"name", "emp5Last"}};
+    private static Object[][] publicPutMethod1 =
+        {{"personid", new Long(1)}, {"lastname", "emp1Last"}};
+    private static Object[][] publicPutMethod2 =
+        {{"personid", new Long(2)}, {"lastname", "emp2Last"}};
+    private static Object[][] publicPutMethod5 =
+        {{"personid", new Long(5)}, {"lastname", "emp5Last"}};
+    
+    /** 
+     * The expected results of valid queries.
+     */
+    private Object[] expectedResult = {
+        // Long
+        Arrays.asList(new Object[]{new Long(1), new Long(2), new Long(5)}),
+        // Double
+        Arrays.asList(new Object[]{
+                new Double(20000.0), new Double(10000.0), new Double(45000.0)}),
+        // BigDecimal
+        Arrays.asList(new Object[]{new BigDecimal("2500000.99"), 
+                new BigDecimal("50000.00"), new BigDecimal("2000.99")}),
+        // java.util.Date
+        Arrays.asList(new Object[]{
+                CompanyModelReader.stringToUtilDate("1/Jan/1999"), 
+                CompanyModelReader.stringToUtilDate("1/Jul/2003"), 
+                CompanyModelReader.stringToUtilDate("15/Aug/1998")}),
+        // Map
+        Arrays.asList(new Object[]{
+                ConversionHelper.arrayToMap(emp1Map),
+                ConversionHelper.arrayToMap(emp2Map),
+                ConversionHelper.arrayToMap(emp5Map)}),
+        // user defined result class
+        Arrays.asList(new Object[]{
+                new LongString(1, "emp1Last"), 
+                new LongString(2, "emp2Last"), 
+                new LongString(5, "emp5Last")}),
+        // constructor
+        Arrays.asList(new Object[]{
+                new LongString(1, "emp1Last"), 
+                new LongString(2, "emp2Last"), 
+                new LongString(5, "emp5Last")}),
+        // constructor without constructor call
+        Arrays.asList(new Object[]{
+                new LongString(1, "emp1Last"), 
+                new LongString(2, "emp2Last"), 
+                new LongString(5, "emp5Last")}),
+        // public fields
+        Arrays.asList(new Object[]{
+                new PublicLongField(1), 
+                new PublicLongField(2), 
+                new PublicLongField(5)}),
+        // public put method
+        Arrays.asList(new Object[]{
+                new PublicPutMethod(ConversionHelper.arrayToMap(publicPutMethod1)),
+                new PublicPutMethod(ConversionHelper.arrayToMap(publicPutMethod2)),
+                new PublicPutMethod(ConversionHelper.arrayToMap(publicPutMethod5))})
+    };
+            
+    /**
+     * The <code>main</code> is called when the class
+     * is directly executed from the command line.
+     * @param args The arguments passed to the program.
+     */
+    public static void main(String[] args) {
+        BatchTestRunner.run(ResultClassRequirements.class);
+    }
+    
+    /** */
+    public void testLong() {
+        int index = 0;
+        executeQuery(index);
+    }
+
+    /** */
+    public void testDouble() {
+        int index = 1;
+        executeQuery(index);
+    }
+
+    /** */
+    public void testBigDecimal() {
+        int index = 2;
+        executeQuery(index);
+    }
+
+    /** */
+    public void testDate() {
+        int index = 3;
+        executeQuery(index);
+    }
+
+    /** */
+    public void testMap() {
+        int index = 4;
+        executeQuery(index);
+    }
+
+    /** */
+    public void testUserDefinedResultClass() {
+        int index = 5;
+        executeQuery(index);
+    }
+
+    /** */
+    public void testConstructor() {
+        int index = 6;
+        executeQuery(index);
+        index++;
+        executeQuery(index);
+    }
+
+    /** */
+    public void testFields() {
+        int index = 8;
+        executeQuery(index);
+    }
+
+    /** */
+    public void testPut() {
+        int index = 9;
+        executeQuery(index);
+    }
+
+    /** */
+    public void testNegative() {
+        for (int i = 0; i < INVALID_QUERIES.length; i++) {
+            compileAPIQuery(ASSERTION_FAILED, INVALID_QUERIES[i], false);
+            compileSingleStringQuery(ASSERTION_FAILED, INVALID_QUERIES[i], 
+                    false);
+        }
+    }
+
+    /** */
+    private void executeQuery(int index) {
+        executeAPIQuery(ASSERTION_FAILED, VALID_QUERIES[index], 
+                expectedResult[index]);
+        executeSingleStringQuery(ASSERTION_FAILED, VALID_QUERIES[index], 
+                expectedResult[index]);
+    }
+
+    /**
+     * @see JDO_Test#localSetUp()
+     */
+    protected void localSetUp() {
+        addTearDownClass(CompanyModelReader.getTearDownClasses());
+        loadAndPersistCompanyModel(getPM());
+    }
+}

[db-jdo] 02/43: Remove projects and files that are not being released

Posted by cl...@apache.org.
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 5683d9dd637eda9e84b9f82773e507ad31538807
Author: Craig L Russell <cl...@apache.org>
AuthorDate: Wed Mar 29 22:46:05 2006 +0000

    Remove projects and files that are not being released
---
 JDO11.MF                                           |    1 -
 api11/LICENSE.txt                                  |  202 -
 api11/maven.xml                                    |   50 -
 api11/project.properties                           |   22 -
 api11/project.xml                                  |   78 -
 api11/src/dtd/javax/jdo/jdo.dtd                    |   95 -
 api11/src/java/javax/jdo/Bundle.properties         |   34 -
 api11/src/java/javax/jdo/Extent.java               |   85 -
 api11/src/java/javax/jdo/InstanceCallbacks.java    |  107 -
 api11/src/java/javax/jdo/JDOCanRetryException.java |   96 -
 .../src/java/javax/jdo/JDODataStoreException.java  |   97 -
 api11/src/java/javax/jdo/JDOException.java         |  296 --
 .../java/javax/jdo/JDOFatalDataStoreException.java |   76 -
 api11/src/java/javax/jdo/JDOFatalException.java    |   97 -
 .../java/javax/jdo/JDOFatalInternalException.java  |   69 -
 .../src/java/javax/jdo/JDOFatalUserException.java  |   96 -
 api11/src/java/javax/jdo/JDOHelper.java            |  288 --
 .../java/javax/jdo/JDOObjectNotFoundException.java |   71 -
 .../jdo/JDOOptimisticVerificationException.java    |   70 -
 .../javax/jdo/JDOUnsupportedOptionException.java   |   68 -
 api11/src/java/javax/jdo/JDOUserException.java     |   96 -
 api11/src/java/javax/jdo/PersistenceManager.java   |  596 ---
 .../java/javax/jdo/PersistenceManagerFactory.java  |  328 --
 api11/src/java/javax/jdo/Query.java                |  313 --
 api11/src/java/javax/jdo/Transaction.java          |  175 -
 api11/src/java/javax/jdo/package.html              |   90 -
 api11/src/java/javax/jdo/spi/I18NHelper.java       |  398 --
 api11/src/java/javax/jdo/spi/JDOImplHelper.java    |  589 ---
 api11/src/java/javax/jdo/spi/JDOPermission.java    |  133 -
 .../src/java/javax/jdo/spi/PersistenceCapable.java |  543 ---
 .../src/java/javax/jdo/spi/RegisterClassEvent.java |  124 -
 .../java/javax/jdo/spi/RegisterClassListener.java  |   45 -
 api11/src/java/javax/jdo/spi/StateManager.java     |  462 --
 api11/src/java/javax/jdo/spi/package.html          |   47 -
 api11/test/java/javax/jdo/JDOHelperTest.java       |  142 -
 api11/test/java/javax/jdo/pc/PCPoint.java          |  448 --
 .../test/java/javax/jdo/spi/JDOImplHelperTest.java |  202 -
 api11/test/java/javax/jdo/util/AbstractTest.java   |   47 -
 .../java/javax/jdo/util/BatchResultPrinter.java    |  103 -
 .../test/java/javax/jdo/util/BatchTestRunner.java  |  163 -
 api11/xdocs/index.xml                              |   37 -
 api11/xdocs/navigation.xml                         |   37 -
 btree/maven.xml                                    |   70 -
 btree/project.properties                           |   29 -
 btree/project.xml                                  |   43 -
 btree/src/java/org/netbeans/mdr/util/Logger.java   |   90 -
 fostore20/LICENSE.txt                              |  202 -
 fostore20/maven.xml                                |  332 --
 fostore20/project.properties                       |  205 -
 fostore20/project.xml                              |  137 -
 fostore20/src/conf/commons-logging.properties      |   45 -
 fostore20/src/conf/logging.properties              |   68 -
 fostore20/src/conf/simplelog.properties            |   58 -
 .../src/java/org/apache/jdo/impl/fostore/AID.java  |  449 --
 .../apache/jdo/impl/fostore/AIDTranscriber.java    |  219 -
 .../jdo/impl/fostore/AbstractFieldManager.java     |  216 -
 .../jdo/impl/fostore/AbstractFieldRequest.java     |  207 -
 .../apache/jdo/impl/fostore/AbstractRequest.java   |  230 -
 .../jdo/impl/fostore/ActivateClassHandler.java     |  189 -
 .../jdo/impl/fostore/ActivateClassRequest.java     |  203 -
 .../apache/jdo/impl/fostore/BeginTxHandler.java    |   62 -
 .../apache/jdo/impl/fostore/BeginTxRequest.java    |   68 -
 .../java/org/apache/jdo/impl/fostore/Block.java    |  103 -
 .../jdo/impl/fostore/BooleanTranscriber.java       |   52 -
 .../jdo/impl/fostore/BufferedRequestFactory.java   |  175 -
 .../org/apache/jdo/impl/fostore/Bundle.properties  |  405 --
 .../apache/jdo/impl/fostore/ByteTranscriber.java   |   48 -
 .../src/java/org/apache/jdo/impl/fostore/CLID.java |  525 ---
 .../apache/jdo/impl/fostore/CharTranscriber.java   |   48 -
 .../org/apache/jdo/impl/fostore/CommitHandler.java |  106 -
 .../org/apache/jdo/impl/fostore/CommitRequest.java |   82 -
 .../apache/jdo/impl/fostore/CreateOIDHandler.java  |   80 -
 .../apache/jdo/impl/fostore/CreateOIDRequest.java  |   74 -
 .../java/org/apache/jdo/impl/fostore/DBClass.java  |  380 --
 .../java/org/apache/jdo/impl/fostore/DBExtent.java |  230 -
 .../java/org/apache/jdo/impl/fostore/DBInfo.java   |  430 --
 .../org/apache/jdo/impl/fostore/DeleteHandler.java |  103 -
 .../org/apache/jdo/impl/fostore/DeleteRequest.java |   87 -
 .../apache/jdo/impl/fostore/DoubleTranscriber.java |   48 -
 .../apache/jdo/impl/fostore/DummyTranscriber.java  |   42 -
 .../org/apache/jdo/impl/fostore/DumpHandler.java   |  261 --
 .../org/apache/jdo/impl/fostore/DumpOption.java    |  134 -
 .../org/apache/jdo/impl/fostore/DumpRequest.java   |  109 -
 .../java/org/apache/jdo/impl/fostore/Dumper.java   |  280 --
 .../fostore/FOStoreAbstractMethodException.java    |   31 -
 .../jdo/impl/fostore/FOStoreBtreeStorage.java      |  142 -
 .../jdo/impl/fostore/FOStoreClientConnection.java  |   82 -
 .../impl/fostore/FOStoreClientConnectionImpl.java  |  152 -
 .../apache/jdo/impl/fostore/FOStoreConnection.java |   25 -
 .../jdo/impl/fostore/FOStoreConnectionFactory.java |  715 ---
 .../jdo/impl/fostore/FOStoreConnectionId.java      |  180 -
 .../apache/jdo/impl/fostore/FOStoreConnector.java  |  277 --
 .../apache/jdo/impl/fostore/FOStoreDatabase.java   |  574 ---
 .../jdo/impl/fostore/FOStoreDatabaseException.java |   56 -
 .../org/apache/jdo/impl/fostore/FOStoreExtent.java |  314 --
 .../jdo/impl/fostore/FOStoreFatalIOException.java  |   35 -
 .../fostore/FOStoreFatalInternalException.java     |   61 -
 .../org/apache/jdo/impl/fostore/FOStoreInput.java  |  135 -
 .../jdo/impl/fostore/FOStoreLocalConnection.java   |   90 -
 .../jdo/impl/fostore/FOStoreLoginException.java    |   42 -
 .../org/apache/jdo/impl/fostore/FOStoreModel.java  |  271 --
 .../org/apache/jdo/impl/fostore/FOStoreOutput.java |  244 -
 .../org/apache/jdo/impl/fostore/FOStorePM.java     |  183 -
 .../org/apache/jdo/impl/fostore/FOStorePMF.java    |  847 ----
 .../apache/jdo/impl/fostore/FOStorePMFFactory.java |   65 -
 .../jdo/impl/fostore/FOStoreRemoteConnection.java  |  136 -
 .../apache/jdo/impl/fostore/FOStoreSchemaUID.java  |  238 -
 .../jdo/impl/fostore/FOStoreServerConnection.java  |  115 -
 .../impl/fostore/FOStoreServerConnectionImpl.java  |  355 --
 .../jdo/impl/fostore/FOStoreStoreManager.java      |  727 ---
 .../jdo/impl/fostore/FOStoreTranscriber.java       |  193 -
 .../impl/fostore/FOStoreTranscriberFactory.java    |   90 -
 .../jdo/impl/fostore/FOStoreURLStreamHandler.java  |   57 -
 .../impl/fostore/FOStoreUnsupportedException.java  |   34 -
 .../org/apache/jdo/impl/fostore/FetchHandler.java  |  143 -
 .../org/apache/jdo/impl/fostore/FetchRequest.java  |  137 -
 .../org/apache/jdo/impl/fostore/FieldFetcher.java  |  474 --
 .../org/apache/jdo/impl/fostore/FieldRequest.java  |   38 -
 .../apache/jdo/impl/fostore/FloatTranscriber.java  |   48 -
 .../apache/jdo/impl/fostore/GetClassHandler.java   |   95 -
 .../apache/jdo/impl/fostore/GetClassRequest.java   |   93 -
 .../apache/jdo/impl/fostore/GetExtentHandler.java  |  254 --
 .../apache/jdo/impl/fostore/GetExtentRequest.java  |  263 --
 .../jdo/impl/fostore/GetInstancesHandler.java      |  101 -
 .../jdo/impl/fostore/GetInstancesRequest.java      |  128 -
 .../src/java/org/apache/jdo/impl/fostore/I18N.java |   27 -
 .../org/apache/jdo/impl/fostore/InsertHandler.java |  324 --
 .../org/apache/jdo/impl/fostore/InsertRequest.java |  537 ---
 .../apache/jdo/impl/fostore/IntTranscriber.java    |   48 -
 .../org/apache/jdo/impl/fostore/LoginHandler.java  |  109 -
 .../org/apache/jdo/impl/fostore/LoginRequest.java  |  151 -
 .../apache/jdo/impl/fostore/LongTranscriber.java   |   48 -
 .../src/java/org/apache/jdo/impl/fostore/Main.java |  472 --
 .../java/org/apache/jdo/impl/fostore/Message.java  |  321 --
 .../src/java/org/apache/jdo/impl/fostore/OID.java  |  462 --
 .../apache/jdo/impl/fostore/ObjectTranscriber.java | 1858 --------
 .../java/org/apache/jdo/impl/fostore/Reply.java    |  388 --
 .../org/apache/jdo/impl/fostore/ReplyHandler.java  |  249 --
 .../java/org/apache/jdo/impl/fostore/Request.java  |   54 -
 .../apache/jdo/impl/fostore/RequestFactory.java    |  195 -
 .../apache/jdo/impl/fostore/RequestFinisher.java   |   31 -
 .../apache/jdo/impl/fostore/RequestHandler.java    |  391 --
 .../org/apache/jdo/impl/fostore/RequestId.java     |  120 -
 .../org/apache/jdo/impl/fostore/RequestType.java   |  146 -
 .../apache/jdo/impl/fostore/RollbackHandler.java   |   76 -
 .../apache/jdo/impl/fostore/RollbackRequest.java   |   71 -
 .../apache/jdo/impl/fostore/ShortTranscriber.java  |   48 -
 .../java/org/apache/jdo/impl/fostore/Status.java   |  134 -
 .../org/apache/jdo/impl/fostore/SubclassSet.java   |  115 -
 .../java/org/apache/jdo/impl/fostore/Tester.java   |  132 -
 .../org/apache/jdo/impl/fostore/UpdateHandler.java |  211 -
 .../org/apache/jdo/impl/fostore/UpdateRequest.java |  144 -
 .../org/apache/jdo/impl/fostore/VerifyHandler.java |   97 -
 .../org/apache/jdo/impl/fostore/VerifyRequest.java |  132 -
 .../java/org/apache/jdo/impl/fostore/package.html  |   84 -
 fostore20/test/conf/CF.properties.sav              |   16 -
 fostore20/test/conf/JDO20Policy                    |  176 -
 fostore20/test/conf/PMF.properties                 |   18 -
 fostore20/test/conf/commons-logging.properties     |   47 -
 fostore20/test/conf/jndi.properties                |   16 -
 fostore20/test/conf/logging.properties             |   74 -
 fostore20/test/conf/simplelog.properties           |   64 -
 fostore20/test/conf/tests.list                     |   97 -
 fostore20/test/fsuid2/build.xml                    |   85 -
 fostore20/test/fsuid2/dist.xml                     |   66 -
 .../test/fsuid2/org/apache/jdo/pc/PCPoint.java     |   97 -
 .../test/fsuid2/org/apache/jdo/pc/PCPoint.jdo      |   18 -
 .../fsuid2/org/apache/jdo/pc/fsuid2.jdoproperties  |   15 -
 .../org/apache/jdo/impl/fostore/Test_FSUID.java    |  103 -
 .../apache/jdo/impl/fostore/Test_Transcriber.java  |  279 --
 .../java/org/apache/jdo/pc/DepartmentFactory.java  |   46 -
 .../java/org/apache/jdo/pc/EmployeeFactory.java    |   46 -
 .../java/org/apache/jdo/pc/InsuranceFactory.java   |   46 -
 .../java/org/apache/jdo/pc/InterfacesFactory.java  |   50 -
 .../java/org/apache/jdo/pc/LargeObjFactory.java    |   59 -
 .../test/java/org/apache/jdo/pc/PCArrays.java      |  642 ---
 fostore20/test/java/org/apache/jdo/pc/PCBase.java  |   23 -
 .../test/java/org/apache/jdo/pc/PCCollection.java  |   69 -
 .../test/java/org/apache/jdo/pc/PCCollections.java |  593 ---
 fostore20/test/java/org/apache/jdo/pc/PCCycle.java |   69 -
 .../test/java/org/apache/jdo/pc/PCCycle2.java      |   60 -
 .../test/java/org/apache/jdo/pc/PCDepartment.java  |   89 -
 .../test/java/org/apache/jdo/pc/PCDepartment1.java |   92 -
 .../test/java/org/apache/jdo/pc/PCDerived.java     |   21 -
 .../test/java/org/apache/jdo/pc/PCEmployee.java    |  219 -
 .../test/java/org/apache/jdo/pc/PCEmployee1.java   |  227 -
 .../org/apache/jdo/pc/PCFullTimeEmployee1.java     |   65 -
 fostore20/test/java/org/apache/jdo/pc/PCId.java    |   58 -
 .../test/java/org/apache/jdo/pc/PCInsurance.java   |   92 -
 .../test/java/org/apache/jdo/pc/PCInsurance1.java  |  101 -
 .../test/java/org/apache/jdo/pc/PCInterfaces.java  |   66 -
 .../test/java/org/apache/jdo/pc/PCLargeObj.java    |   70 -
 fostore20/test/java/org/apache/jdo/pc/PCPoint.java |  108 -
 .../test/java/org/apache/jdo/pc/PCPoint1.java      |   74 -
 .../test/java/org/apache/jdo/pc/PCPoint1Key.java   |   46 -
 .../test/java/org/apache/jdo/pc/PCPrimitive.java   |  174 -
 .../test/java/org/apache/jdo/pc/PCProject.java     |   91 -
 .../test/java/org/apache/jdo/pc/PCProject1.java    |   93 -
 fostore20/test/java/org/apache/jdo/pc/PCRect.java  |   64 -
 .../test/java/org/apache/jdo/pc/PCRefArrays.java   |   71 -
 fostore20/test/java/org/apache/jdo/pc/PCSCO.java   |  154 -
 .../test/java/org/apache/jdo/pc/PCStroke.java      |   52 -
 .../test/java/org/apache/jdo/pc/PointFactory.java  |   48 -
 .../java/org/apache/jdo/pc/ProjectFactory.java     |   45 -
 .../test/java/org/apache/jdo/pc/RectFactory.java   |   52 -
 .../java/org/apache/jdo/pc/appid/PCDepartment.java |   89 -
 .../java/org/apache/jdo/pc/appid/PCEmployee.java   |  224 -
 .../apache/jdo/pc/appid/PCFullTimeEmployee.java    |   81 -
 .../java/org/apache/jdo/pc/appid/PCInsurance.java  |   92 -
 .../java/org/apache/jdo/pc/appid/PCObjectKey.java  |   93 -
 .../apache/jdo/pc/appid/PCPartTimeEmployee.java    |   80 -
 .../java/org/apache/jdo/pc/appid/PCPerson.java     |  107 -
 .../test/java/org/apache/jdo/pc/appid/PCPoint.java |   91 -
 .../java/org/apache/jdo/pc/appid/PCProject.java    |   91 -
 .../test/java/org/apache/jdo/pc/appid/PCRect.java  |   91 -
 .../org/apache/jdo/pc/empdept/PCDepartment.java    |   89 -
 .../java/org/apache/jdo/pc/empdept/PCEmployee.java |  217 -
 .../apache/jdo/pc/empdept/PCFullTimeEmployee.java  |   81 -
 .../org/apache/jdo/pc/empdept/PCInsurance.java     |   92 -
 .../apache/jdo/pc/empdept/PCPartTimeEmployee.java  |   80 -
 .../java/org/apache/jdo/pc/empdept/PCPerson.java   |  107 -
 .../java/org/apache/jdo/pc/empdept/PCProject.java  |   91 -
 .../org/apache/jdo/pc/serializable/PCClass1.java   |   83 -
 .../org/apache/jdo/pc/serializable/PCClass2A.java  |   89 -
 .../org/apache/jdo/pc/serializable/PCClass2B.java  |   87 -
 .../org/apache/jdo/pc/serializable/PCSub3.java     |   87 -
 .../org/apache/jdo/pc/serializable/PCSub4A.java    |   92 -
 .../org/apache/jdo/pc/serializable/PCSub4B.java    |   91 -
 .../org/apache/jdo/pc/serializable/PCSuper.java    |   66 -
 .../java/org/apache/jdo/pc/serializable/Readme.txt |   57 -
 .../org/apache/jdo/pc/serializable/Transient.java  |   33 -
 .../java/org/apache/jdo/pc/xempdept/Company.java   |  139 -
 .../org/apache/jdo/pc/xempdept/Department.java     |  125 -
 .../java/org/apache/jdo/pc/xempdept/Employee.java  |  259 --
 .../apache/jdo/pc/xempdept/FullTimeEmployee.java   |   77 -
 .../org/apache/jdo/pc/xempdept/Identifiable.java   |   22 -
 .../java/org/apache/jdo/pc/xempdept/Insurance.java |  112 -
 .../apache/jdo/pc/xempdept/PartTimeEmployee.java   |   77 -
 .../java/org/apache/jdo/pc/xempdept/Person.java    |   71 -
 .../org/apache/jdo/pc/xempdept/PrimitiveTypes.java |  321 --
 .../java/org/apache/jdo/pc/xempdept/Project.java   |  138 -
 .../java/org/apache/jdo/pc/xempdept/xempdept.jpg   |  Bin 92051 -> 0 bytes
 .../java/org/apache/jdo/test/EmpDeptSupport.java   |  177 -
 fostore20/test/java/org/apache/jdo/test/Point.java |   71 -
 .../java/org/apache/jdo/test/Test_4510817.java     |   57 -
 .../java/org/apache/jdo/test/Test_4515265.java     |   96 -
 .../java/org/apache/jdo/test/Test_6214617.java     |   56 -
 .../org/apache/jdo/test/Test_ActivateClass.java    |   55 -
 .../test/java/org/apache/jdo/test/Test_AppId.java  |  177 -
 .../test/java/org/apache/jdo/test/Test_Arrays.java |   80 -
 .../apache/jdo/test/Test_ClassRegistration.java    |  241 -
 .../java/org/apache/jdo/test/Test_ClosePMF.java    |  159 -
 .../java/org/apache/jdo/test/Test_Collections.java |   66 -
 .../java/org/apache/jdo/test/Test_Container.java   |  358 --
 .../test/java/org/apache/jdo/test/Test_Cycle.java  |  130 -
 .../test/java/org/apache/jdo/test/Test_Delete.java |  155 -
 .../java/org/apache/jdo/test/Test_DupAppId.java    |  103 -
 .../java/org/apache/jdo/test/Test_EmpDept.java     |  300 --
 .../org/apache/jdo/test/Test_EmpDeptAppId.java     |  357 --
 .../apache/jdo/test/Test_EmpDeptAppIdDelete.java   |   39 -
 .../apache/jdo/test/Test_EmpDeptAppIdInsert.java   |   39 -
 .../apache/jdo/test/Test_EmpDeptAppIdUpdate.java   |   40 -
 .../apache/jdo/test/Test_EmpDeptSerialization.java |  257 --
 .../test/java/org/apache/jdo/test/Test_Extent.java |  224 -
 .../test/java/org/apache/jdo/test/Test_FSUID2.java |  335 --
 .../test/java/org/apache/jdo/test/Test_Fetch.java  |   56 -
 .../test/java/org/apache/jdo/test/Test_Fetch2.java |   44 -
 .../org/apache/jdo/test/Test_FetchInserted.java    |  113 -
 .../java/org/apache/jdo/test/Test_Freezer.java     |  221 -
 .../org/apache/jdo/test/Test_GetObjectById.java    |   88 -
 .../org/apache/jdo/test/Test_GetObjectById2.java   |   88 -
 .../org/apache/jdo/test/Test_HollowUpdate.java     |  151 -
 .../java/org/apache/jdo/test/Test_Inheritance.java |  166 -
 .../test/java/org/apache/jdo/test/Test_Insert.java |   85 -
 .../java/org/apache/jdo/test/Test_Insert2.java     |  102 -
 .../java/org/apache/jdo/test/Test_Interfaces.java  |   80 -
 .../java/org/apache/jdo/test/Test_JDOModel.java    |  460 --
 .../org/apache/jdo/test/Test_KeyFieldNull.java     |  109 -
 .../java/org/apache/jdo/test/Test_LargeObj.java    |   54 -
 .../java/org/apache/jdo/test/Test_LifeCycle.java   |  854 ----
 .../org/apache/jdo/test/Test_LifeCycle_Opt.java    |  347 --
 .../org/apache/jdo/test/Test_LifeCycle_RetF.java   |  239 -
 .../apache/jdo/test/Test_LifeCycle_RetFOpt.java    |  274 --
 .../test/java/org/apache/jdo/test/Test_Many.java   |   46 -
 .../java/org/apache/jdo/test/Test_Navigate.java    |  116 -
 .../test/java/org/apache/jdo/test/Test_NegAll.java |  212 -
 .../java/org/apache/jdo/test/Test_NonTxAccess.java |  170 -
 .../java/org/apache/jdo/test/Test_ObjectId.java    |  131 -
 .../java/org/apache/jdo/test/Test_Optimistic.java  |  220 -
 .../jdo/test/Test_OptimisticNullNotNull.java       |   90 -
 .../java/org/apache/jdo/test/Test_PCDerived.java   |   42 -
 .../org/apache/jdo/test/Test_PMFProperties.java    |  170 -
 .../java/org/apache/jdo/test/Test_ParallelPMs.java |  276 --
 .../java/org/apache/jdo/test/Test_Primitives.java  |   84 -
 .../test/java/org/apache/jdo/test/Test_Query.java  |  948 ----
 .../org/apache/jdo/test/Test_Reachability.java     |  304 --
 .../test/java/org/apache/jdo/test/Test_Rect.java   |  116 -
 .../java/org/apache/jdo/test/Test_RectAppId.java   |  137 -
 .../java/org/apache/jdo/test/Test_RefArrays.java   |  122 -
 .../java/org/apache/jdo/test/Test_Rollback.java    |  196 -
 .../apache/jdo/test/Test_RollbackFlushedNew.java   |   82 -
 .../test/java/org/apache/jdo/test/Test_SCO.java    |   57 -
 .../org/apache/jdo/test/Test_SCOArrayList.java     |  181 -
 .../jdo/test/Test_SCOArrayListOptimistic.java      |  215 -
 .../java/org/apache/jdo/test/Test_SCODate.java     |  200 -
 .../java/org/apache/jdo/test/Test_SCOHashMap.java  |  153 -
 .../java/org/apache/jdo/test/Test_SCOHashSet.java  |  170 -
 .../org/apache/jdo/test/Test_SCOHashtable.java     |  171 -
 .../org/apache/jdo/test/Test_SCOLinkedList.java    |  221 -
 .../java/org/apache/jdo/test/Test_SCORollback.java |  225 -
 .../java/org/apache/jdo/test/Test_SCOSqlDate.java  |  169 -
 .../java/org/apache/jdo/test/Test_SCOTreeMap.java  |  182 -
 .../java/org/apache/jdo/test/Test_SCOTreeSet.java  |  194 -
 .../java/org/apache/jdo/test/Test_SCOVector.java   |  233 -
 .../java/org/apache/jdo/test/Test_SCO_Base.java    |  419 --
 .../java/org/apache/jdo/test/Test_SerialPMs.java   |   96 -
 .../java/org/apache/jdo/test/Test_Serialize.java   |   93 -
 .../org/apache/jdo/test/Test_SerializeComplex.java |  225 -
 .../org/apache/jdo/test/Test_SerializeInher.java   |  109 -
 .../java/org/apache/jdo/test/Test_StringOID.java   |   74 -
 .../test/java/org/apache/jdo/test/Test_Stroke.java |  127 -
 .../test/java/org/apache/jdo/test/Test_Update.java |  168 -
 .../org/apache/jdo/test/Test_UserHashCode.java     |  184 -
 .../java/org/apache/jdo/test/Test_WeakHashSet.java |  326 --
 .../org/apache/jdo/test/Test_WeakValueHashMap.java |  572 ---
 .../org/apache/jdo/test/query/AdvancedTest.java    | 1856 --------
 .../org/apache/jdo/test/query/ArithmeticTest.java  |  324 --
 .../java/org/apache/jdo/test/query/BasicTest.java  | 1473 ------
 .../org/apache/jdo/test/query/CollectionTest.java  | 1902 --------
 .../org/apache/jdo/test/query/InheritanceTest.java |  352 --
 .../org/apache/jdo/test/query/NavigationTest.java  | 1173 -----
 .../org/apache/jdo/test/query/NegativeTest.java    |  226 -
 .../org/apache/jdo/test/query/OrderingTest.java    |  949 ----
 .../org/apache/jdo/test/query/ParameterTest.java   | 1059 -----
 .../org/apache/jdo/test/query/PositiveTest.java    |  485 --
 .../org/apache/jdo/test/query/QueryApiTest.java    |  531 ---
 .../org/apache/jdo/test/query/QueryErrorTest.java  |  204 -
 .../java/org/apache/jdo/test/query/QueryTest.java  |   43 -
 .../org/apache/jdo/test/query/ScopingTest.java     |  564 ---
 .../apache/jdo/test/query/SemanticErrorTest.java   | 1363 ------
 .../org/apache/jdo/test/query/SyntaxErrorTest.java | 1336 ------
 .../java/org/apache/jdo/test/query/TreeTest.java   |  613 ---
 .../org/apache/jdo/test/query/UnsupportedTest.java |  220 -
 .../org/apache/jdo/test/util/AbstractTest.java     |  778 ----
 .../apache/jdo/test/util/BatchResultPrinter.java   |  103 -
 .../java/org/apache/jdo/test/util/Container.java   |  285 --
 .../java/org/apache/jdo/test/util/DumpExtent.java  |  109 -
 .../java/org/apache/jdo/test/util/Factory.java     |   45 -
 .../org/apache/jdo/test/util/JDORITestRunner.java  |  175 -
 .../org/apache/jdo/test/util/OIDComparator.java    |   39 -
 .../org/apache/jdo/test/util/SwingTestRunner.java  |  132 -
 .../org/apache/jdo/test/util/TestListSuite.java    |  165 -
 .../org/apache/jdo/test/util/TestSelector.java     |  284 --
 .../test/java/org/apache/jdo/test/util/Util.java   |  256 --
 .../org/apache/jdo/pc/appid/appid.jdoproperties    |   58 -
 .../test/jdo/org/apache/jdo/pc/appid/package.jdo   |   95 -
 .../apache/jdo/pc/empdept/empdept.jdoproperties    |   45 -
 .../test/jdo/org/apache/jdo/pc/empdept/package.jdo |   68 -
 fostore20/test/jdo/org/apache/jdo/pc/package.jdo   |  441 --
 .../test/jdo/org/apache/jdo/pc/pc.jdoproperties    |  401 --
 .../jdo/org/apache/jdo/pc/serializable/package.jdo |   60 -
 .../jdo/pc/serializable/serializable.jdoproperties |   40 -
 .../jdo/org/apache/jdo/pc/xempdept/Company.jdo     |   15 -
 .../jdo/org/apache/jdo/pc/xempdept/Department.jdo  |   15 -
 .../jdo/org/apache/jdo/pc/xempdept/Employee.jdo    |   30 -
 .../apache/jdo/pc/xempdept/FullTimeEmployee.jdo    |   11 -
 .../jdo/org/apache/jdo/pc/xempdept/Insurance.jdo   |   12 -
 .../apache/jdo/pc/xempdept/PartTimeEmployee.jdo    |   11 -
 .../test/jdo/org/apache/jdo/pc/xempdept/Person.jdo |   12 -
 .../org/apache/jdo/pc/xempdept/PrimitiveTypes.jdo  |   31 -
 .../jdo/org/apache/jdo/pc/xempdept/Project.jdo     |   18 -
 .../apache/jdo/pc/xempdept/xempdept.jdoproperties  |   99 -
 fostore20/test/runtest.xml                         | 1749 --------
 query20/LICENSE.txt                                |  202 -
 query20/maven.xml                                  |   99 -
 query20/project.properties                         |   28 -
 query20/project.xml                                |   82 -
 query20/src/conf/commons-logging.properties        |   44 -
 query20/src/conf/logging.properties                |   66 -
 query20/src/conf/simplelog.properties              |   56 -
 .../org/apache/jdo/impl/jdoql/Bundle.properties    |  225 -
 .../jdo/impl/jdoql/JDOQLQueryFactoryImpl.java      |  116 -
 .../org/apache/jdo/impl/jdoql/MemoryQuery.java     | 1484 ------
 .../apache/jdo/impl/jdoql/OrderingComparator.java  |  125 -
 .../java/org/apache/jdo/impl/jdoql/QueryImpl.java  |  994 -----
 .../jdo/impl/jdoql/QueryResultHelperImpl.java      |  226 -
 .../org/apache/jdo/impl/jdoql/jdoqlc/ErrorMsg.java |  143 -
 .../java/org/apache/jdo/impl/jdoql/jdoqlc/JDOQL.g  |  843 ----
 .../org/apache/jdo/impl/jdoql/jdoqlc/JDOQLAST.java |  220 -
 .../jdo/impl/jdoql/jdoqlc/JDOQLASTFactory.java     |   95 -
 .../org/apache/jdo/impl/jdoql/jdoqlc/JDOQLC.java   |  326 --
 .../org/apache/jdo/impl/jdoql/jdoqlc/Optimizer.g   | 1313 ------
 .../org/apache/jdo/impl/jdoql/jdoqlc/Semantic.g    | 1727 -------
 .../jdo/impl/jdoql/jdoqlc/SimpleFieldManager.java  |  189 -
 .../apache/jdo/impl/jdoql/jdoqlc/TypeSupport.java  |  440 --
 .../jdo/impl/jdoql/jdoqlc/VariableChecker.java     |  290 --
 .../jdo/impl/jdoql/scope/AbstractValueTable.java   |  175 -
 .../jdo/impl/jdoql/scope/ParameterTable.java       |  173 -
 .../apache/jdo/impl/jdoql/scope/SymbolTable.java   |   87 -
 .../org/apache/jdo/impl/jdoql/scope/TypeNames.java |  156 -
 .../org/apache/jdo/impl/jdoql/scope/UNDEFINED.java |   62 -
 .../apache/jdo/impl/jdoql/scope/VariableTable.java |   66 -
 .../org/apache/jdo/impl/jdoql/tree/AndExpr.java    |   94 -
 .../jdo/impl/jdoql/tree/AscendingOrderingExpr.java |   79 -
 .../org/apache/jdo/impl/jdoql/tree/BinaryExpr.java |  166 -
 .../jdo/impl/jdoql/tree/BooleanLiteralExpr.java    |   93 -
 .../jdo/impl/jdoql/tree/ByteLiteralExpr.java       |   92 -
 .../jdo/impl/jdoql/tree/CandidateClassImpl.java    |   94 -
 .../org/apache/jdo/impl/jdoql/tree/CastExpr.java   |  116 -
 .../jdo/impl/jdoql/tree/CharLiteralExpr.java       |   92 -
 .../apache/jdo/impl/jdoql/tree/ComplementExpr.java |   78 -
 .../jdo/impl/jdoql/tree/ConditionalAndExpr.java    |   96 -
 .../jdo/impl/jdoql/tree/ConditionalOrExpr.java     |   96 -
 .../apache/jdo/impl/jdoql/tree/ConstantExpr.java   |  127 -
 .../jdo/impl/jdoql/tree/ContainsCallExpr.java      |  121 -
 .../java/org/apache/jdo/impl/jdoql/tree/Decl.java  |   87 -
 .../impl/jdoql/tree/DescendingOrderingExpr.java    |   79 -
 .../org/apache/jdo/impl/jdoql/tree/DivideExpr.java |   95 -
 .../jdo/impl/jdoql/tree/DoubleLiteralExpr.java     |   92 -
 .../jdo/impl/jdoql/tree/EndsWithCallExpr.java      |  119 -
 .../org/apache/jdo/impl/jdoql/tree/EqualsExpr.java |   94 -
 .../java/org/apache/jdo/impl/jdoql/tree/Expr.java  |   50 -
 .../jdo/impl/jdoql/tree/FieldAccessExpr.java       |  204 -
 .../impl/jdoql/tree/FilterExpressionDumper.java    |  497 ---
 .../jdo/impl/jdoql/tree/FloatLiteralExpr.java      |   92 -
 .../jdo/impl/jdoql/tree/GreaterThanEqualsExpr.java |   96 -
 .../jdo/impl/jdoql/tree/GreaterThanExpr.java       |   95 -
 .../apache/jdo/impl/jdoql/tree/IdentifierExpr.java |  100 -
 .../apache/jdo/impl/jdoql/tree/IntLiteralExpr.java |   92 -
 .../jdo/impl/jdoql/tree/IsEmptyCallExpr.java       |   89 -
 .../jdo/impl/jdoql/tree/LessThanEqualsExpr.java    |   96 -
 .../apache/jdo/impl/jdoql/tree/LessThanExpr.java   |   94 -
 .../jdo/impl/jdoql/tree/LongLiteralExpr.java       |   92 -
 .../apache/jdo/impl/jdoql/tree/MethodCallExpr.java |  114 -
 .../org/apache/jdo/impl/jdoql/tree/MinusExpr.java  |   94 -
 .../org/apache/jdo/impl/jdoql/tree/NodeImpl.java   |  259 --
 .../apache/jdo/impl/jdoql/tree/NotEqualsExpr.java  |   96 -
 .../org/apache/jdo/impl/jdoql/tree/NotExpr.java    |   77 -
 .../org/apache/jdo/impl/jdoql/tree/OrExpr.java     |   94 -
 .../apache/jdo/impl/jdoql/tree/OrderingExpr.java   |   64 -
 .../jdo/impl/jdoql/tree/ParameterAccessExpr.java   |   81 -
 .../apache/jdo/impl/jdoql/tree/ParameterDecl.java  |   77 -
 .../org/apache/jdo/impl/jdoql/tree/PlusExpr.java   |   94 -
 .../jdo/impl/jdoql/tree/ShortLiteralExpr.java      |   92 -
 .../jdo/impl/jdoql/tree/StartsWithCallExpr.java    |  119 -
 .../jdo/impl/jdoql/tree/StaticFieldAccessExpr.java |  166 -
 .../org/apache/jdo/impl/jdoql/tree/ThisExpr.java   |   76 -
 .../org/apache/jdo/impl/jdoql/tree/TimesExpr.java  |   95 -
 .../java/org/apache/jdo/impl/jdoql/tree/Tree.java  | 1021 -----
 .../org/apache/jdo/impl/jdoql/tree/TypeImpl.java   |   93 -
 .../org/apache/jdo/impl/jdoql/tree/UnaryExpr.java  |   64 -
 .../apache/jdo/impl/jdoql/tree/UnaryMinusExpr.java |   77 -
 .../apache/jdo/impl/jdoql/tree/UnaryPlusExpr.java  |   76 -
 .../jdo/impl/jdoql/tree/VariableAccessExpr.java    |   81 -
 .../apache/jdo/impl/jdoql/tree/VariableDecl.java   |   77 -
 .../org/apache/jdo/jdoql/JDOQLQueryFactory.java    |  151 -
 .../org/apache/jdo/jdoql/JDOQueryException.java    |   61 -
 query20/src/java/org/apache/jdo/jdoql/package.html |   27 -
 .../apache/jdo/jdoql/tree/AbstractNodeVisitor.java | 1586 -------
 .../org/apache/jdo/jdoql/tree/AndExpression.java   |   29 -
 .../jdoql/tree/AscendingOrderingExpression.java    |   29 -
 .../apache/jdo/jdoql/tree/BinaryExpression.java    |   52 -
 .../jdo/jdoql/tree/BooleanLiteralExpression.java   |   32 -
 .../jdo/jdoql/tree/ByteLiteralExpression.java      |   31 -
 .../org/apache/jdo/jdoql/tree/CandidateClass.java  |   29 -
 .../org/apache/jdo/jdoql/tree/CastExpression.java  |   39 -
 .../jdo/jdoql/tree/CharLiteralExpression.java      |   31 -
 .../jdo/jdoql/tree/ComplementExpression.java       |   28 -
 .../jdo/jdoql/tree/ConditionalAndExpression.java   |   28 -
 .../jdo/jdoql/tree/ConditionalOrExpression.java    |   28 -
 .../apache/jdo/jdoql/tree/ConstantExpression.java  |   33 -
 .../jdo/jdoql/tree/ContainsCallExpression.java     |   29 -
 .../org/apache/jdo/jdoql/tree/Declaration.java     |   41 -
 .../jdoql/tree/DescendingOrderingExpression.java   |   29 -
 .../apache/jdo/jdoql/tree/DivideExpression.java    |   28 -
 .../jdo/jdoql/tree/DoubleLiteralExpression.java    |   31 -
 .../jdo/jdoql/tree/EndsWithCallExpression.java     |   29 -
 .../apache/jdo/jdoql/tree/EqualsExpression.java    |   28 -
 .../java/org/apache/jdo/jdoql/tree/Expression.java |   29 -
 .../apache/jdo/jdoql/tree/ExpressionFactory.java   |  330 --
 .../jdo/jdoql/tree/FieldAccessExpression.java      |   52 -
 .../jdo/jdoql/tree/FloatLiteralExpression.java     |   31 -
 .../jdoql/tree/GreaterThanEqualsExpression.java    |   28 -
 .../jdo/jdoql/tree/GreaterThanExpression.java      |   28 -
 .../jdo/jdoql/tree/IdentifierExpression.java       |   40 -
 .../jdo/jdoql/tree/IntLiteralExpression.java       |   31 -
 .../jdo/jdoql/tree/IsEmptyCallExpression.java      |   28 -
 .../jdo/jdoql/tree/LessThanEqualsExpression.java   |   28 -
 .../apache/jdo/jdoql/tree/LessThanExpression.java  |   28 -
 .../jdo/jdoql/tree/LongLiteralExpression.java      |   31 -
 .../jdo/jdoql/tree/MethodCallExpression.java       |   50 -
 .../org/apache/jdo/jdoql/tree/MinusExpression.java |   27 -
 .../src/java/org/apache/jdo/jdoql/tree/Node.java   |  119 -
 .../org/apache/jdo/jdoql/tree/NodeVisitor.java     | 1676 -------
 .../apache/jdo/jdoql/tree/NotEqualsExpression.java |   28 -
 .../org/apache/jdo/jdoql/tree/NotExpression.java   |   28 -
 .../org/apache/jdo/jdoql/tree/OrExpression.java    |   29 -
 .../apache/jdo/jdoql/tree/OrderingExpression.java  |   33 -
 .../jdo/jdoql/tree/ParameterAccessExpression.java  |   27 -
 .../jdo/jdoql/tree/ParameterDeclaration.java       |   27 -
 .../org/apache/jdo/jdoql/tree/PlusExpression.java  |   27 -
 .../java/org/apache/jdo/jdoql/tree/QueryTree.java  |  127 -
 .../jdo/jdoql/tree/ShortLiteralExpression.java     |   31 -
 .../jdo/jdoql/tree/StartsWithCallExpression.java   |   29 -
 .../jdoql/tree/StaticFieldAccessExpression.java    |   43 -
 .../org/apache/jdo/jdoql/tree/ThisExpression.java  |   27 -
 .../org/apache/jdo/jdoql/tree/TimesExpression.java |   28 -
 .../java/org/apache/jdo/jdoql/tree/TreeWalker.java |   69 -
 .../src/java/org/apache/jdo/jdoql/tree/Type.java   |   41 -
 .../org/apache/jdo/jdoql/tree/UnaryExpression.java |   33 -
 .../jdo/jdoql/tree/UnaryMinusExpression.java       |   28 -
 .../apache/jdo/jdoql/tree/UnaryPlusExpression.java |   28 -
 .../java/org/apache/jdo/jdoql/tree/ValueTable.java |   63 -
 .../jdo/jdoql/tree/VariableAccessExpression.java   |   27 -
 .../apache/jdo/jdoql/tree/VariableDeclaration.java |   27 -
 .../java/org/apache/jdo/jdoql/tree/package.html    |   26 -
 ri11/LICENSE.txt                                   |  202 -
 ri11/maven.xml                                     |  371 --
 ri11/project.properties                            |  208 -
 ri11/project.xml                                   |  117 -
 ri11/src/conf/commons-logging.properties           |   44 -
 ri11/src/conf/logging.properties                   |   62 -
 ri11/src/conf/simplelog.properties                 |   52 -
 ri11/src/java/org/apache/jdo/ejb/EJBHelper.java    |  130 -
 .../src/java/org/apache/jdo/ejb/EJBImplHelper.java |  138 -
 ri11/src/java/org/apache/jdo/ejb/package.html      |   26 -
 .../java/org/apache/jdo/enhancer/EnhancerMain.java |  387 --
 ri11/src/java/org/apache/jdo/enhancer/Main.java    |  957 ----
 ri11/src/java/org/apache/jdo/enhancer/package.html |   26 -
 .../org/apache/jdo/impl/enhancer/Bundle.properties |  220 -
 .../org/apache/jdo/impl/enhancer/ClassArgMain.java |  180 -
 .../apache/jdo/impl/enhancer/ClassArgOptions.java  |  220 -
 .../jdo/impl/enhancer/ClassFileEnhancer.java       |   65 -
 .../jdo/impl/enhancer/ClassFileEnhancerHelper.java |  204 -
 .../jdo/impl/enhancer/ClassFileEnhancerTimer.java  |   70 -
 .../jdo/impl/enhancer/EnhancerClassLoader.java     |  584 ---
 .../jdo/impl/enhancer/EnhancerFatalError.java      |   70 -
 .../apache/jdo/impl/enhancer/EnhancerOptions.java  |  149 -
 .../jdo/impl/enhancer/EnhancerUserException.java   |  173 -
 .../org/apache/jdo/impl/enhancer/GenericMain.java  |  115 -
 .../apache/jdo/impl/enhancer/GenericOptions.java   |   79 -
 .../org/apache/jdo/impl/enhancer/JdoMetaMain.java  |  161 -
 .../apache/jdo/impl/enhancer/JdoMetaOptions.java   |  112 -
 .../org/apache/jdo/impl/enhancer/LogSupport.java   |  166 -
 .../org/apache/jdo/impl/enhancer/OptionSet.java    |  715 ---
 .../jdo/impl/enhancer/OutputStreamWrapper.java     |   85 -
 .../jdo/impl/enhancer/PersistenceLauncher.java     |  284 --
 .../classfile/AnnotatedClassAttribute.java         |  132 -
 .../classfile/AnnotatedMethodAttribute.java        |  140 -
 .../impl/enhancer/classfile/AttributeVector.java   |  213 -
 .../impl/enhancer/classfile/ClassAttribute.java    |  177 -
 .../jdo/impl/enhancer/classfile/ClassField.java    |  150 -
 .../jdo/impl/enhancer/classfile/ClassFile.java     |  681 ---
 .../jdo/impl/enhancer/classfile/ClassMember.java   |  116 -
 .../jdo/impl/enhancer/classfile/ClassMethod.java   |  255 --
 .../jdo/impl/enhancer/classfile/ClassPrint.java    |   34 -
 .../jdo/impl/enhancer/classfile/CodeAttribute.java |  440 --
 .../jdo/impl/enhancer/classfile/CodeEnv.java       |   54 -
 .../jdo/impl/enhancer/classfile/ConstBasic.java    |   86 -
 .../enhancer/classfile/ConstBasicMemberRef.java    |  124 -
 .../jdo/impl/enhancer/classfile/ConstClass.java    |  136 -
 .../jdo/impl/enhancer/classfile/ConstDouble.java   |  110 -
 .../jdo/impl/enhancer/classfile/ConstFieldRef.java |   53 -
 .../jdo/impl/enhancer/classfile/ConstFloat.java    |  105 -
 .../jdo/impl/enhancer/classfile/ConstInteger.java  |  105 -
 .../classfile/ConstInterfaceMethodRef.java         |   61 -
 .../jdo/impl/enhancer/classfile/ConstLong.java     |  105 -
 .../impl/enhancer/classfile/ConstMethodRef.java    |   60 -
 .../impl/enhancer/classfile/ConstNameAndType.java  |  143 -
 .../jdo/impl/enhancer/classfile/ConstString.java   |  119 -
 .../jdo/impl/enhancer/classfile/ConstUnicode.java  |  106 -
 .../jdo/impl/enhancer/classfile/ConstUtf8.java     |  100 -
 .../jdo/impl/enhancer/classfile/ConstValue.java    |   37 -
 .../jdo/impl/enhancer/classfile/ConstantPool.java  |  447 --
 .../enhancer/classfile/ConstantValueAttribute.java |  100 -
 .../jdo/impl/enhancer/classfile/Descriptor.java    |  556 ---
 .../impl/enhancer/classfile/ExceptionRange.java    |  157 -
 .../impl/enhancer/classfile/ExceptionTable.java    |  113 -
 .../enhancer/classfile/ExceptionsAttribute.java    |  160 -
 .../impl/enhancer/classfile/GenericAttribute.java  |  106 -
 .../apache/jdo/impl/enhancer/classfile/Insn.java   |  661 ---
 .../jdo/impl/enhancer/classfile/InsnConstOp.java   |  328 --
 .../jdo/impl/enhancer/classfile/InsnError.java     |   28 -
 .../jdo/impl/enhancer/classfile/InsnIInc.java      |  156 -
 .../jdo/impl/enhancer/classfile/InsnIntOp.java     |  209 -
 .../enhancer/classfile/InsnInterfaceInvoke.java    |  146 -
 .../impl/enhancer/classfile/InsnLookupSwitch.java  |  227 -
 .../enhancer/classfile/InsnMultiDimArrayNew.java   |  170 -
 .../jdo/impl/enhancer/classfile/InsnReadEnv.java   |  116 -
 .../jdo/impl/enhancer/classfile/InsnSingle.java    |  268 --
 .../impl/enhancer/classfile/InsnTableSwitch.java   |  213 -
 .../jdo/impl/enhancer/classfile/InsnTarget.java    |  113 -
 .../jdo/impl/enhancer/classfile/InsnTargetOp.java  |  162 -
 .../jdo/impl/enhancer/classfile/InsnUtils.java     |  351 --
 .../classfile/LineNumberTableAttribute.java        |  107 -
 .../jdo/impl/enhancer/classfile/LocalVariable.java |   89 -
 .../classfile/LocalVariableTableAttribute.java     |   90 -
 .../enhancer/classfile/SignatureAttribute.java     |   98 -
 .../enhancer/classfile/SourceFileAttribute.java    |   78 -
 .../enhancer/classfile/SyntheticAttribute.java     |   69 -
 .../jdo/impl/enhancer/classfile/VMConstants.java   |  288 --
 .../apache/jdo/impl/enhancer/classfile/VMOp.java   |  547 ---
 .../apache/jdo/impl/enhancer/core/Analyzer.java    | 1586 -------
 .../apache/jdo/impl/enhancer/core/Annotater.java   |  354 --
 .../apache/jdo/impl/enhancer/core/Augmenter.java   |  612 ---
 .../org/apache/jdo/impl/enhancer/core/Builder.java | 4716 --------------------
 .../apache/jdo/impl/enhancer/core/Controller.java  |  271 --
 .../jdo/impl/enhancer/core/EnhancerConstants.java  | 1494 -------
 .../jdo/impl/enhancer/core/EnhancerFilter.java     |  275 --
 .../apache/jdo/impl/enhancer/core/Environment.java |  245 -
 .../jdo/impl/enhancer/generator/CodeWriter.java    |  319 --
 .../jdo/impl/enhancer/generator/ImplHelper.java    |  950 ----
 .../apache/jdo/impl/enhancer/generator/Main.java   | 1138 -----
 .../jdo/impl/enhancer/generator/NameHelper.java    |   72 -
 .../jdo/impl/enhancer/meta/EnhancerMetaData.java   |  434 --
 .../enhancer/meta/EnhancerMetaDataFatalError.java  |   72 -
 .../meta/EnhancerMetaDataUserException.java        |   72 -
 .../jdo/impl/enhancer/meta/ExtendedMetaData.java   |  111 -
 .../enhancer/meta/model/EnhancerJavaModel.java     |  158 -
 .../impl/enhancer/meta/model/EnhancerJavaType.java |   64 -
 .../meta/model/EnhancerMetaDataJDOModelImpl.java   |  551 ---
 .../meta/prop/EnhancerMetaDataPropertyImpl.java    |  482 --
 .../jdo/impl/enhancer/meta/prop/JDOClass.java      |  349 --
 .../jdo/impl/enhancer/meta/prop/JDOField.java      |  231 -
 .../enhancer/meta/prop/MetaDataProperties.java     |  859 ----
 .../jdo/impl/enhancer/meta/prop/NameHelper.java    |   50 -
 .../meta/util/EnhancerMetaDataBaseModel.java       |  262 --
 .../enhancer/meta/util/EnhancerMetaDataTimer.java  |  325 --
 .../jdo/impl/enhancer/util/AnnotationTest.java     |  418 --
 .../apache/jdo/impl/enhancer/util/Assertion.java   |   45 -
 .../impl/enhancer/util/AugmentationDiffTest.java   |  428 --
 .../jdo/impl/enhancer/util/AugmentationTest.java   | 1380 ------
 .../enhancer/util/CombinedResourceLocator.java     |   69 -
 .../jdo/impl/enhancer/util/Disassembler.java       |  196 -
 .../jdo/impl/enhancer/util/InternalError.java      |   31 -
 .../impl/enhancer/util/ListResourceLocator.java    |  119 -
 .../impl/enhancer/util/PathResourceLocator.java    |  137 -
 .../jdo/impl/enhancer/util/ResourceLocator.java    |   36 -
 .../impl/enhancer/util/ResourceLocatorBase.java    |   56 -
 .../impl/enhancer/util/ResourceLocatorTimer.java   |   50 -
 .../org/apache/jdo/impl/enhancer/util/Support.java |  214 -
 .../org/apache/jdo/impl/enhancer/util/Timer.java   |  187 -
 ri11/src/java/org/apache/jdo/impl/fostore/AID.java |  449 --
 .../apache/jdo/impl/fostore/AIDTranscriber.java    |  219 -
 .../jdo/impl/fostore/AbstractFieldManager.java     |  216 -
 .../jdo/impl/fostore/AbstractFieldRequest.java     |  207 -
 .../apache/jdo/impl/fostore/AbstractRequest.java   |  230 -
 .../jdo/impl/fostore/ActivateClassHandler.java     |  189 -
 .../jdo/impl/fostore/ActivateClassRequest.java     |  203 -
 .../apache/jdo/impl/fostore/BeginTxHandler.java    |   62 -
 .../apache/jdo/impl/fostore/BeginTxRequest.java    |   68 -
 .../java/org/apache/jdo/impl/fostore/Block.java    |  103 -
 .../jdo/impl/fostore/BooleanTranscriber.java       |   52 -
 .../jdo/impl/fostore/BufferedRequestFactory.java   |  175 -
 .../org/apache/jdo/impl/fostore/Bundle.properties  |  407 --
 .../apache/jdo/impl/fostore/ByteTranscriber.java   |   48 -
 .../src/java/org/apache/jdo/impl/fostore/CLID.java |  525 ---
 .../apache/jdo/impl/fostore/CharTranscriber.java   |   48 -
 .../org/apache/jdo/impl/fostore/CommitHandler.java |  106 -
 .../org/apache/jdo/impl/fostore/CommitRequest.java |   82 -
 .../apache/jdo/impl/fostore/CreateOIDHandler.java  |   80 -
 .../apache/jdo/impl/fostore/CreateOIDRequest.java  |   74 -
 .../java/org/apache/jdo/impl/fostore/DBClass.java  |  380 --
 .../java/org/apache/jdo/impl/fostore/DBExtent.java |  230 -
 .../java/org/apache/jdo/impl/fostore/DBInfo.java   |  430 --
 .../org/apache/jdo/impl/fostore/DeleteHandler.java |  103 -
 .../org/apache/jdo/impl/fostore/DeleteRequest.java |   87 -
 .../apache/jdo/impl/fostore/DoubleTranscriber.java |   48 -
 .../apache/jdo/impl/fostore/DummyTranscriber.java  |   42 -
 .../org/apache/jdo/impl/fostore/DumpHandler.java   |  261 --
 .../org/apache/jdo/impl/fostore/DumpOption.java    |  134 -
 .../org/apache/jdo/impl/fostore/DumpRequest.java   |  109 -
 .../java/org/apache/jdo/impl/fostore/Dumper.java   |  280 --
 .../fostore/FOStoreAbstractMethodException.java    |   31 -
 .../jdo/impl/fostore/FOStoreBtreeStorage.java      |  142 -
 .../jdo/impl/fostore/FOStoreClientConnection.java  |   82 -
 .../impl/fostore/FOStoreClientConnectionImpl.java  |  152 -
 .../apache/jdo/impl/fostore/FOStoreConnection.java |   25 -
 .../jdo/impl/fostore/FOStoreConnectionFactory.java |  715 ---
 .../jdo/impl/fostore/FOStoreConnectionId.java      |  180 -
 .../apache/jdo/impl/fostore/FOStoreConnector.java  |  277 --
 .../apache/jdo/impl/fostore/FOStoreDatabase.java   |  574 ---
 .../jdo/impl/fostore/FOStoreDatabaseException.java |   56 -
 .../org/apache/jdo/impl/fostore/FOStoreExtent.java |  304 --
 .../jdo/impl/fostore/FOStoreFatalIOException.java  |   35 -
 .../fostore/FOStoreFatalInternalException.java     |   61 -
 .../org/apache/jdo/impl/fostore/FOStoreInput.java  |  135 -
 .../jdo/impl/fostore/FOStoreLocalConnection.java   |   90 -
 .../jdo/impl/fostore/FOStoreLoginException.java    |   42 -
 .../org/apache/jdo/impl/fostore/FOStoreModel.java  |  271 --
 .../org/apache/jdo/impl/fostore/FOStoreOutput.java |  244 -
 .../org/apache/jdo/impl/fostore/FOStorePM.java     |  160 -
 .../org/apache/jdo/impl/fostore/FOStorePMF.java    |  836 ----
 .../apache/jdo/impl/fostore/FOStorePMFFactory.java |   65 -
 .../jdo/impl/fostore/FOStoreRemoteConnection.java  |  136 -
 .../apache/jdo/impl/fostore/FOStoreSchemaUID.java  |  238 -
 .../jdo/impl/fostore/FOStoreServerConnection.java  |  115 -
 .../impl/fostore/FOStoreServerConnectionImpl.java  |  355 --
 .../jdo/impl/fostore/FOStoreStoreManager.java      |  720 ---
 .../jdo/impl/fostore/FOStoreTranscriber.java       |  193 -
 .../impl/fostore/FOStoreTranscriberFactory.java    |   90 -
 .../jdo/impl/fostore/FOStoreURLStreamHandler.java  |   57 -
 .../impl/fostore/FOStoreUnsupportedException.java  |   34 -
 .../org/apache/jdo/impl/fostore/FetchHandler.java  |  143 -
 .../org/apache/jdo/impl/fostore/FetchRequest.java  |  137 -
 .../org/apache/jdo/impl/fostore/FieldFetcher.java  |  474 --
 .../org/apache/jdo/impl/fostore/FieldRequest.java  |   38 -
 .../apache/jdo/impl/fostore/FloatTranscriber.java  |   48 -
 .../apache/jdo/impl/fostore/GetClassHandler.java   |   95 -
 .../apache/jdo/impl/fostore/GetClassRequest.java   |   93 -
 .../apache/jdo/impl/fostore/GetExtentHandler.java  |  254 --
 .../apache/jdo/impl/fostore/GetExtentRequest.java  |  263 --
 .../jdo/impl/fostore/GetInstancesHandler.java      |  101 -
 .../jdo/impl/fostore/GetInstancesRequest.java      |  128 -
 .../src/java/org/apache/jdo/impl/fostore/I18N.java |   27 -
 .../org/apache/jdo/impl/fostore/InsertHandler.java |  324 --
 .../org/apache/jdo/impl/fostore/InsertRequest.java |  537 ---
 .../apache/jdo/impl/fostore/IntTranscriber.java    |   48 -
 .../org/apache/jdo/impl/fostore/LoginHandler.java  |  109 -
 .../org/apache/jdo/impl/fostore/LoginRequest.java  |  151 -
 .../apache/jdo/impl/fostore/LongTranscriber.java   |   48 -
 .../src/java/org/apache/jdo/impl/fostore/Main.java |  472 --
 .../java/org/apache/jdo/impl/fostore/Message.java  |  321 --
 ri11/src/java/org/apache/jdo/impl/fostore/OID.java |  462 --
 .../apache/jdo/impl/fostore/ObjectTranscriber.java | 1858 --------
 .../java/org/apache/jdo/impl/fostore/Reply.java    |  388 --
 .../org/apache/jdo/impl/fostore/ReplyHandler.java  |  249 --
 .../java/org/apache/jdo/impl/fostore/Request.java  |   54 -
 .../apache/jdo/impl/fostore/RequestFactory.java    |  195 -
 .../apache/jdo/impl/fostore/RequestFinisher.java   |   31 -
 .../apache/jdo/impl/fostore/RequestHandler.java    |  391 --
 .../org/apache/jdo/impl/fostore/RequestId.java     |  120 -
 .../org/apache/jdo/impl/fostore/RequestType.java   |  146 -
 .../apache/jdo/impl/fostore/RollbackHandler.java   |   76 -
 .../apache/jdo/impl/fostore/RollbackRequest.java   |   71 -
 .../apache/jdo/impl/fostore/ShortTranscriber.java  |   48 -
 .../java/org/apache/jdo/impl/fostore/Status.java   |  134 -
 .../org/apache/jdo/impl/fostore/SubclassSet.java   |  115 -
 .../java/org/apache/jdo/impl/fostore/Tester.java   |  132 -
 .../org/apache/jdo/impl/fostore/UpdateHandler.java |  211 -
 .../org/apache/jdo/impl/fostore/UpdateRequest.java |  144 -
 .../org/apache/jdo/impl/fostore/VerifyHandler.java |   97 -
 .../org/apache/jdo/impl/fostore/VerifyRequest.java |  132 -
 .../java/org/apache/jdo/impl/fostore/package.html  |   84 -
 .../org/apache/jdo/impl/jdoql/Bundle.properties    |  225 -
 .../jdo/impl/jdoql/JDOQLQueryFactoryImpl.java      |  116 -
 .../org/apache/jdo/impl/jdoql/MemoryQuery.java     | 1484 ------
 .../apache/jdo/impl/jdoql/OrderingComparator.java  |  125 -
 .../java/org/apache/jdo/impl/jdoql/QueryImpl.java  |  732 ---
 .../jdo/impl/jdoql/QueryResultHelperImpl.java      |  226 -
 .../org/apache/jdo/impl/jdoql/jdoqlc/.cvsignore    |   10 -
 .../org/apache/jdo/impl/jdoql/jdoqlc/ErrorMsg.java |  143 -
 .../java/org/apache/jdo/impl/jdoql/jdoqlc/JDOQL.g  |  843 ----
 .../org/apache/jdo/impl/jdoql/jdoqlc/JDOQLAST.java |  220 -
 .../jdo/impl/jdoql/jdoqlc/JDOQLASTFactory.java     |   95 -
 .../org/apache/jdo/impl/jdoql/jdoqlc/JDOQLC.java   |  326 --
 .../org/apache/jdo/impl/jdoql/jdoqlc/Optimizer.g   | 1313 ------
 .../org/apache/jdo/impl/jdoql/jdoqlc/Semantic.g    | 1727 -------
 .../jdo/impl/jdoql/jdoqlc/SimpleFieldManager.java  |  189 -
 .../apache/jdo/impl/jdoql/jdoqlc/TypeSupport.java  |  428 --
 .../jdo/impl/jdoql/jdoqlc/VariableChecker.java     |  290 --
 .../jdo/impl/jdoql/scope/AbstractValueTable.java   |  175 -
 .../jdo/impl/jdoql/scope/ParameterTable.java       |  173 -
 .../apache/jdo/impl/jdoql/scope/SymbolTable.java   |   87 -
 .../org/apache/jdo/impl/jdoql/scope/TypeNames.java |  156 -
 .../org/apache/jdo/impl/jdoql/scope/UNDEFINED.java |   62 -
 .../apache/jdo/impl/jdoql/scope/VariableTable.java |   66 -
 .../org/apache/jdo/impl/jdoql/tree/AndExpr.java    |   94 -
 .../jdo/impl/jdoql/tree/AscendingOrderingExpr.java |   79 -
 .../org/apache/jdo/impl/jdoql/tree/BinaryExpr.java |  166 -
 .../jdo/impl/jdoql/tree/BooleanLiteralExpr.java    |   93 -
 .../jdo/impl/jdoql/tree/ByteLiteralExpr.java       |   92 -
 .../jdo/impl/jdoql/tree/CandidateClassImpl.java    |   94 -
 .../org/apache/jdo/impl/jdoql/tree/CastExpr.java   |  116 -
 .../jdo/impl/jdoql/tree/CharLiteralExpr.java       |   92 -
 .../apache/jdo/impl/jdoql/tree/ComplementExpr.java |   78 -
 .../jdo/impl/jdoql/tree/ConditionalAndExpr.java    |   96 -
 .../jdo/impl/jdoql/tree/ConditionalOrExpr.java     |   96 -
 .../apache/jdo/impl/jdoql/tree/ConstantExpr.java   |  127 -
 .../jdo/impl/jdoql/tree/ContainsCallExpr.java      |  121 -
 .../java/org/apache/jdo/impl/jdoql/tree/Decl.java  |   87 -
 .../impl/jdoql/tree/DescendingOrderingExpr.java    |   79 -
 .../org/apache/jdo/impl/jdoql/tree/DivideExpr.java |   95 -
 .../jdo/impl/jdoql/tree/DoubleLiteralExpr.java     |   92 -
 .../jdo/impl/jdoql/tree/EndsWithCallExpr.java      |  119 -
 .../org/apache/jdo/impl/jdoql/tree/EqualsExpr.java |   94 -
 .../java/org/apache/jdo/impl/jdoql/tree/Expr.java  |   50 -
 .../jdo/impl/jdoql/tree/FieldAccessExpr.java       |  204 -
 .../impl/jdoql/tree/FilterExpressionDumper.java    |  497 ---
 .../jdo/impl/jdoql/tree/FloatLiteralExpr.java      |   92 -
 .../jdo/impl/jdoql/tree/GreaterThanEqualsExpr.java |   96 -
 .../jdo/impl/jdoql/tree/GreaterThanExpr.java       |   95 -
 .../apache/jdo/impl/jdoql/tree/IdentifierExpr.java |  100 -
 .../apache/jdo/impl/jdoql/tree/IntLiteralExpr.java |   92 -
 .../jdo/impl/jdoql/tree/IsEmptyCallExpr.java       |   89 -
 .../jdo/impl/jdoql/tree/LessThanEqualsExpr.java    |   96 -
 .../apache/jdo/impl/jdoql/tree/LessThanExpr.java   |   94 -
 .../jdo/impl/jdoql/tree/LongLiteralExpr.java       |   92 -
 .../apache/jdo/impl/jdoql/tree/MethodCallExpr.java |  114 -
 .../org/apache/jdo/impl/jdoql/tree/MinusExpr.java  |   94 -
 .../org/apache/jdo/impl/jdoql/tree/NodeImpl.java   |  259 --
 .../apache/jdo/impl/jdoql/tree/NotEqualsExpr.java  |   96 -
 .../org/apache/jdo/impl/jdoql/tree/NotExpr.java    |   77 -
 .../org/apache/jdo/impl/jdoql/tree/OrExpr.java     |   94 -
 .../apache/jdo/impl/jdoql/tree/OrderingExpr.java   |   64 -
 .../jdo/impl/jdoql/tree/ParameterAccessExpr.java   |   81 -
 .../apache/jdo/impl/jdoql/tree/ParameterDecl.java  |   77 -
 .../org/apache/jdo/impl/jdoql/tree/PlusExpr.java   |   94 -
 .../jdo/impl/jdoql/tree/ShortLiteralExpr.java      |   92 -
 .../jdo/impl/jdoql/tree/StartsWithCallExpr.java    |  119 -
 .../jdo/impl/jdoql/tree/StaticFieldAccessExpr.java |  166 -
 .../org/apache/jdo/impl/jdoql/tree/ThisExpr.java   |   76 -
 .../org/apache/jdo/impl/jdoql/tree/TimesExpr.java  |   95 -
 .../java/org/apache/jdo/impl/jdoql/tree/Tree.java  | 1021 -----
 .../org/apache/jdo/impl/jdoql/tree/TypeImpl.java   |   93 -
 .../org/apache/jdo/impl/jdoql/tree/UnaryExpr.java  |   64 -
 .../apache/jdo/impl/jdoql/tree/UnaryMinusExpr.java |   77 -
 .../apache/jdo/impl/jdoql/tree/UnaryPlusExpr.java  |   76 -
 .../jdo/impl/jdoql/tree/VariableAccessExpr.java    |   81 -
 .../apache/jdo/impl/jdoql/tree/VariableDecl.java   |   77 -
 .../jdo/impl/model/java/AbstractJavaField.java     |  154 -
 .../jdo/impl/model/java/AbstractJavaModel.java     |  175 -
 .../impl/model/java/AbstractJavaModelFactory.java  |  144 -
 .../jdo/impl/model/java/AbstractJavaType.java      |  110 -
 .../impl/model/java/BaseReflectionJavaField.java   |  172 -
 .../impl/model/java/BaseReflectionJavaType.java    |  170 -
 .../apache/jdo/impl/model/java/Bundle.properties   |   82 -
 .../org/apache/jdo/impl/model/java/ErrorType.java  |   64 -
 .../jdo/impl/model/java/FloatingPointType.java     |   63 -
 .../apache/jdo/impl/model/java/IntegralType.java   |   67 -
 .../model/java/JDOSupportedCollectionType.java     |   94 -
 .../jdo/impl/model/java/JDOSupportedMapType.java   |   87 -
 .../apache/jdo/impl/model/java/JavaModel-Impl.jpg  |  Bin 89929 -> 0 bytes
 .../jdo/impl/model/java/MutableValueClassType.java |   67 -
 .../org/apache/jdo/impl/model/java/NullType.java   |   64 -
 .../apache/jdo/impl/model/java/PredefinedType.java |  249 --
 .../apache/jdo/impl/model/java/PrimitiveType.java  |  103 -
 .../apache/jdo/impl/model/java/ValueClassType.java |   78 -
 .../jdo/impl/model/java/WrapperClassType.java      |   77 -
 .../org/apache/jdo/impl/model/java/package.html    |   46 -
 .../model/java/reflection/ReflectionJavaField.java |  130 -
 .../model/java/reflection/ReflectionJavaModel.java |  187 -
 .../reflection/ReflectionJavaModelFactory.java     |  106 -
 .../model/java/reflection/ReflectionJavaType.java  |  259 --
 .../jdo/impl/model/java/runtime/Bundle.properties  |   60 -
 .../model/java/runtime/RegisterClassListener.java  |  178 -
 .../impl/model/java/runtime/RuntimeJavaModel.java  |  176 -
 .../java/runtime/RuntimeJavaModelFactory.java      |  242 -
 .../impl/model/java/runtime/RuntimeJavaType.java   |   78 -
 .../jdo/impl/model/java/runtime/package.html       |   27 -
 .../apache/jdo/impl/model/jdo/Bundle.properties    |   84 -
 .../jdo/impl/model/jdo/JDOArrayImplDynamic.java    |   80 -
 .../jdo/impl/model/jdo/JDOClassImplDynamic.java    | 1043 -----
 .../impl/model/jdo/JDOCollectionImplDynamic.java   |  138 -
 .../apache/jdo/impl/model/jdo/JDOElementImpl.java  |  152 -
 .../jdo/impl/model/jdo/JDOExtensionImpl.java       |   86 -
 .../jdo/impl/model/jdo/JDOFieldImplDynamic.java    |  566 ---
 .../jdo/impl/model/jdo/JDOMapImplDynamic.java      |  228 -
 .../apache/jdo/impl/model/jdo/JDOMemberImpl.java   |  165 -
 .../impl/model/jdo/JDOModelFactoryImplDynamic.java |  115 -
 .../jdo/impl/model/jdo/JDOModelImplDynamic.java    |  717 ---
 .../apache/jdo/impl/model/jdo/JDOPackageImpl.java  |   74 -
 .../jdo/impl/model/jdo/JDOReferenceImpl.java       |   31 -
 .../jdo/impl/model/jdo/JDORelationshipImpl.java    |  109 -
 .../model/jdo/caching/JDOArrayImplCaching.java     |   64 -
 .../model/jdo/caching/JDOClassImplCaching.java     |  443 --
 .../jdo/caching/JDOCollectionImplCaching.java      |   62 -
 .../model/jdo/caching/JDOFieldImplCaching.java     |  243 -
 .../impl/model/jdo/caching/JDOMapImplCaching.java  |   84 -
 .../jdo/caching/JDOModelFactoryImplCaching.java    |   69 -
 .../model/jdo/caching/JDOModelImplCaching.java     |  126 -
 .../org/apache/jdo/impl/model/jdo/package.html     |   27 -
 .../jdo/impl/model/jdo/util/PrintSupport.java      |  294 --
 .../jdo/impl/model/jdo/util/TypeSupport.java       |  170 -
 .../apache/jdo/impl/model/jdo/xml/JDOHandler.java  |  140 -
 .../jdo/impl/model/jdo/xml/JDOHandlerImpl.java     |  616 ---
 .../apache/jdo/impl/model/jdo/xml/JDOParser.java   |  312 --
 .../apache/jdo/impl/model/jdo/xml/XMLExists.java   |  307 --
 .../java/org/apache/jdo/impl/pm/Bundle.properties  |  102 -
 .../org/apache/jdo/impl/pm/CacheManagerImpl.java   |  630 ---
 .../jdo/impl/pm/PersistenceManagerFactoryImpl.java | 1677 -------
 .../apache/jdo/impl/pm/PersistenceManagerImpl.java | 2147 ---------
 .../jdo/impl/pm/PersistenceManagerWrapper.java     |  764 ----
 .../org/apache/jdo/impl/pm/TransactionImpl.java    | 1160 -----
 .../jdo/impl/pm/TransactionSynchronization.java    |   60 -
 ri11/src/java/org/apache/jdo/impl/pm/package.html  |   28 -
 .../java/org/apache/jdo/impl/sco/ArrayList.java    |  605 ---
 .../java/org/apache/jdo/impl/sco/Bundle.properties |   34 -
 ri11/src/java/org/apache/jdo/impl/sco/Date.java    |  247 -
 ri11/src/java/org/apache/jdo/impl/sco/Freezer.java |  403 --
 ri11/src/java/org/apache/jdo/impl/sco/HashMap.java |  607 ---
 ri11/src/java/org/apache/jdo/impl/sco/HashSet.java |  589 ---
 .../java/org/apache/jdo/impl/sco/Hashtable.java    |  614 ---
 .../java/org/apache/jdo/impl/sco/LinkedList.java   |  669 ---
 .../java/org/apache/jdo/impl/sco/SCOHelper.java    |  206 -
 ri11/src/java/org/apache/jdo/impl/sco/SqlDate.java |  203 -
 ri11/src/java/org/apache/jdo/impl/sco/SqlTime.java |  204 -
 .../java/org/apache/jdo/impl/sco/SqlTimestamp.java |  288 --
 ri11/src/java/org/apache/jdo/impl/sco/TreeMap.java |  603 ---
 ri11/src/java/org/apache/jdo/impl/sco/TreeSet.java |  596 ---
 ri11/src/java/org/apache/jdo/impl/sco/Vector.java  |  737 ---
 ri11/src/java/org/apache/jdo/impl/sco/package.html |   27 -
 .../apache/jdo/impl/state/AutoPersistentNew.java   |  118 -
 .../jdo/impl/state/AutoPersistentNewFlushed.java   |  118 -
 .../impl/state/AutoPersistentNewFlushedDirty.java  |  101 -
 .../jdo/impl/state/AutoPersistentPending.java      |   88 -
 .../org/apache/jdo/impl/state/Bundle.properties    |   68 -
 .../src/java/org/apache/jdo/impl/state/Hollow.java |  219 -
 .../org/apache/jdo/impl/state/LifeCycleState.java  |  573 ---
 .../org/apache/jdo/impl/state/PersistentClean.java |  148 -
 .../impl/state/PersistentCleanTransactional.java   |   70 -
 .../apache/jdo/impl/state/PersistentDeleted.java   |  110 -
 .../jdo/impl/state/PersistentDeletedFlushed.java   |   58 -
 .../org/apache/jdo/impl/state/PersistentDirty.java |  110 -
 .../jdo/impl/state/PersistentDirtyFlushed.java     |   92 -
 .../org/apache/jdo/impl/state/PersistentNew.java   |  108 -
 .../jdo/impl/state/PersistentNewDeleted.java       |  105 -
 .../jdo/impl/state/PersistentNewFlushed.java       |   92 -
 .../impl/state/PersistentNewFlushedDeleted.java    |   68 -
 .../jdo/impl/state/PersistentNewFlushedDirty.java  |   70 -
 .../jdo/impl/state/PersistentNonTransactional.java |  282 --
 .../apache/jdo/impl/state/ReachabilityHandler.java |  255 --
 .../org/apache/jdo/impl/state/SCOProcessor.java    |  437 --
 .../apache/jdo/impl/state/SimpleFieldManager.java  |  212 -
 .../apache/jdo/impl/state/StateFieldManager.java   |  207 -
 .../apache/jdo/impl/state/StateManagerFactory.java |   66 -
 .../apache/jdo/impl/state/StateManagerImpl.java    | 2471 ----------
 .../org/apache/jdo/impl/state/TransientClean.java  |  127 -
 .../org/apache/jdo/impl/state/TransientDirty.java  |   96 -
 .../org/apache/jdo/jdoql/JDOQLQueryFactory.java    |  151 -
 .../org/apache/jdo/jdoql/JDOQueryException.java    |   61 -
 ri11/src/java/org/apache/jdo/jdoql/package.html    |   27 -
 .../apache/jdo/jdoql/tree/AbstractNodeVisitor.java | 1586 -------
 .../org/apache/jdo/jdoql/tree/AndExpression.java   |   29 -
 .../jdoql/tree/AscendingOrderingExpression.java    |   29 -
 .../apache/jdo/jdoql/tree/BinaryExpression.java    |   52 -
 .../jdo/jdoql/tree/BooleanLiteralExpression.java   |   32 -
 .../jdo/jdoql/tree/ByteLiteralExpression.java      |   31 -
 .../org/apache/jdo/jdoql/tree/CandidateClass.java  |   29 -
 .../org/apache/jdo/jdoql/tree/CastExpression.java  |   39 -
 .../jdo/jdoql/tree/CharLiteralExpression.java      |   31 -
 .../jdo/jdoql/tree/ComplementExpression.java       |   28 -
 .../jdo/jdoql/tree/ConditionalAndExpression.java   |   28 -
 .../jdo/jdoql/tree/ConditionalOrExpression.java    |   28 -
 .../apache/jdo/jdoql/tree/ConstantExpression.java  |   33 -
 .../jdo/jdoql/tree/ContainsCallExpression.java     |   29 -
 .../org/apache/jdo/jdoql/tree/Declaration.java     |   41 -
 .../jdoql/tree/DescendingOrderingExpression.java   |   29 -
 .../apache/jdo/jdoql/tree/DivideExpression.java    |   28 -
 .../jdo/jdoql/tree/DoubleLiteralExpression.java    |   31 -
 .../jdo/jdoql/tree/EndsWithCallExpression.java     |   29 -
 .../apache/jdo/jdoql/tree/EqualsExpression.java    |   28 -
 .../java/org/apache/jdo/jdoql/tree/Expression.java |   29 -
 .../apache/jdo/jdoql/tree/ExpressionFactory.java   |  330 --
 .../jdo/jdoql/tree/FieldAccessExpression.java      |   52 -
 .../jdo/jdoql/tree/FloatLiteralExpression.java     |   31 -
 .../jdoql/tree/GreaterThanEqualsExpression.java    |   28 -
 .../jdo/jdoql/tree/GreaterThanExpression.java      |   28 -
 .../jdo/jdoql/tree/IdentifierExpression.java       |   40 -
 .../jdo/jdoql/tree/IntLiteralExpression.java       |   31 -
 .../jdo/jdoql/tree/IsEmptyCallExpression.java      |   28 -
 .../jdo/jdoql/tree/LessThanEqualsExpression.java   |   28 -
 .../apache/jdo/jdoql/tree/LessThanExpression.java  |   28 -
 .../jdo/jdoql/tree/LongLiteralExpression.java      |   31 -
 .../jdo/jdoql/tree/MethodCallExpression.java       |   50 -
 .../org/apache/jdo/jdoql/tree/MinusExpression.java |   27 -
 ri11/src/java/org/apache/jdo/jdoql/tree/Node.java  |  119 -
 .../org/apache/jdo/jdoql/tree/NodeVisitor.java     | 1676 -------
 .../apache/jdo/jdoql/tree/NotEqualsExpression.java |   28 -
 .../org/apache/jdo/jdoql/tree/NotExpression.java   |   28 -
 .../org/apache/jdo/jdoql/tree/OrExpression.java    |   29 -
 .../apache/jdo/jdoql/tree/OrderingExpression.java  |   33 -
 .../jdo/jdoql/tree/ParameterAccessExpression.java  |   27 -
 .../jdo/jdoql/tree/ParameterDeclaration.java       |   27 -
 .../org/apache/jdo/jdoql/tree/PlusExpression.java  |   27 -
 .../java/org/apache/jdo/jdoql/tree/QueryTree.java  |  127 -
 .../jdo/jdoql/tree/ShortLiteralExpression.java     |   31 -
 .../jdo/jdoql/tree/StartsWithCallExpression.java   |   29 -
 .../jdoql/tree/StaticFieldAccessExpression.java    |   43 -
 .../org/apache/jdo/jdoql/tree/ThisExpression.java  |   27 -
 .../org/apache/jdo/jdoql/tree/TimesExpression.java |   28 -
 .../java/org/apache/jdo/jdoql/tree/TreeWalker.java |   69 -
 ri11/src/java/org/apache/jdo/jdoql/tree/Type.java  |   41 -
 .../org/apache/jdo/jdoql/tree/UnaryExpression.java |   33 -
 .../jdo/jdoql/tree/UnaryMinusExpression.java       |   28 -
 .../apache/jdo/jdoql/tree/UnaryPlusExpression.java |   28 -
 .../java/org/apache/jdo/jdoql/tree/ValueTable.java |   63 -
 .../jdo/jdoql/tree/VariableAccessExpression.java   |   27 -
 .../apache/jdo/jdoql/tree/VariableDeclaration.java |   27 -
 .../java/org/apache/jdo/jdoql/tree/package.html    |   26 -
 .../java/org/apache/jdo/model/Bundle.properties    |   33 -
 .../java/org/apache/jdo/model/ModelException.java  |  190 -
 .../org/apache/jdo/model/ModelFatalException.java  |  191 -
 .../apache/jdo/model/ModelValidationException.java |  163 -
 .../org/apache/jdo/model/ModelVetoException.java   |   66 -
 .../java/org/apache/jdo/model/java/JavaField.java  |   85 -
 .../org/apache/jdo/model/java/JavaModel-API.jpg    |  Bin 83136 -> 0 bytes
 .../java/org/apache/jdo/model/java/JavaModel.java  |  115 -
 .../java/org/apache/jdo/model/java/JavaModel.mdl   | 2929 ------------
 .../apache/jdo/model/java/JavaModelFactory.java    |   91 -
 .../java/org/apache/jdo/model/java/JavaType.java   |  286 --
 .../java/org/apache/jdo/model/java/package.html    |   28 -
 .../java/org/apache/jdo/model/jdo/JDOArray.java    |   58 -
 .../java/org/apache/jdo/model/jdo/JDOClass.java    |  511 ---
 .../org/apache/jdo/model/jdo/JDOCollection.java    |   80 -
 .../java/org/apache/jdo/model/jdo/JDOElement.java  |   87 -
 .../org/apache/jdo/model/jdo/JDOExtension.java     |   63 -
 .../java/org/apache/jdo/model/jdo/JDOField.java    |  285 --
 .../org/apache/jdo/model/jdo/JDOIdentityType.java  |   79 -
 ri11/src/java/org/apache/jdo/model/jdo/JDOMap.java |  124 -
 .../java/org/apache/jdo/model/jdo/JDOMember.java   |   59 -
 .../java/org/apache/jdo/model/jdo/JDOModel.java    |  168 -
 .../src/java/org/apache/jdo/model/jdo/JDOModel.jpg |  Bin 180667 -> 0 bytes
 .../src/java/org/apache/jdo/model/jdo/JDOModel.mdl | 3271 --------------
 .../org/apache/jdo/model/jdo/JDOModelFactory.java  |   68 -
 .../org/apache/jdo/model/jdo/JDOModelHelper.jpg    |  Bin 29718 -> 0 bytes
 .../java/org/apache/jdo/model/jdo/JDOPackage.java  |   54 -
 .../org/apache/jdo/model/jdo/JDOReference.java     |   28 -
 .../org/apache/jdo/model/jdo/JDORelationship.java  |  103 -
 .../apache/jdo/model/jdo/NullValueTreatment.java   |   88 -
 .../apache/jdo/model/jdo/PersistenceModifier.java  |   88 -
 .../src/java/org/apache/jdo/model/jdo/package.html |   27 -
 ri11/src/java/org/apache/jdo/model/package.html    |   26 -
 ri11/src/java/org/apache/jdo/pm/Accessor.java      |   37 -
 .../jdo/pm/PersistenceManagerFactoryInternal.java  |   78 -
 .../apache/jdo/pm/PersistenceManagerInternal.java  |  257 --
 ri11/src/java/org/apache/jdo/pm/package.html       |   27 -
 .../org/apache/jdo/query/BasicQueryResult.java     |  310 --
 .../java/org/apache/jdo/query/Bundle.properties    |   28 -
 .../src/java/org/apache/jdo/query/QueryResult.java |   42 -
 .../org/apache/jdo/query/QueryResultHelper.java    |   83 -
 .../org/apache/jdo/query/QueryResultIterator.java  |   40 -
 ri11/src/java/org/apache/jdo/sco/SCO.java          |   64 -
 .../src/java/org/apache/jdo/sco/SCOCollection.java |  116 -
 ri11/src/java/org/apache/jdo/sco/SCODate.java      |   36 -
 ri11/src/java/org/apache/jdo/sco/SCOMap.java       |  142 -
 ri11/src/java/org/apache/jdo/sco/package.html      |   26 -
 .../java/org/apache/jdo/state/FieldManager.java    |  137 -
 .../org/apache/jdo/state/StateManagerInternal.java |  275 --
 ri11/src/java/org/apache/jdo/state/package.html    |   26 -
 .../java/org/apache/jdo/store/Bundle.properties    |   30 -
 ri11/src/java/org/apache/jdo/store/Connector.java  |   85 -
 .../java/org/apache/jdo/store/StoreManager.java    |  263 --
 .../org/apache/jdo/store/StoreManagerImpl.java     |  124 -
 .../src/java/org/apache/jdo/store/Transcriber.java |   26 -
 .../org/apache/jdo/store/TranscriberFactory.java   |   26 -
 ri11/src/java/org/apache/jdo/store/package.html    |   26 -
 .../src/java/org/apache/jdo/util/Bundle.properties |   51 -
 ri11/src/java/org/apache/jdo/util/I18NHelper.java  |  376 --
 .../java/org/apache/jdo/util/JDOJdk14Logger.java   |   91 -
 .../src/java/org/apache/jdo/util/JDORIVersion.java |  124 -
 ri11/src/java/org/apache/jdo/util/Pool.java        |  155 -
 ri11/src/java/org/apache/jdo/util/WeakHashSet.java |  173 -
 .../java/org/apache/jdo/util/WeakValueHashMap.java |  440 --
 ri11/src/java/org/apache/jdo/util/package.html     |   26 -
 ri11/test/conf/CF.properties.sav                   |   16 -
 ri11/test/conf/JDO101Policy                        |   81 -
 ri11/test/conf/JDO102Policy                        |   94 -
 ri11/test/conf/JDO10Policy                         |   79 -
 ri11/test/conf/JDO11Policy                         |  132 -
 ri11/test/conf/JDO20Policy                         |  125 -
 ri11/test/conf/PMF.properties                      |   18 -
 ri11/test/conf/commons-logging.properties          |   46 -
 ri11/test/conf/jndi.properties                     |   16 -
 ri11/test/conf/logging.properties                  |   68 -
 ri11/test/conf/simplelog.properties                |   59 -
 ri11/test/conf/tests.list                          |   97 -
 ri11/test/enhancer/common.xml                      |  255 --
 ri11/test/enhancer/sempdept/build.xml              |   70 -
 .../enhancer/sempdept/src/empdept.jdoproperties    |   35 -
 .../enhancer/sempdept/src/empdept/Department.java  |   99 -
 .../enhancer/sempdept/src/empdept/Employee.java    |  110 -
 .../sempdept/src/empdept/FullTimeEmployee.java     |   47 -
 .../sempdept/src/empdept/PartTimeEmployee.java     |   90 -
 .../test/enhancer/sempdept/src/empdept/package.jdo |   61 -
 ri11/test/fsuid2/build.xml                         |   84 -
 ri11/test/fsuid2/dist.xml                          |   64 -
 ri11/test/fsuid2/org/apache/jdo/pc/PCPoint.java    |   97 -
 ri11/test/fsuid2/org/apache/jdo/pc/PCPoint.jdo     |   18 -
 .../fsuid2/org/apache/jdo/pc/fsuid2.jdoproperties  |   15 -
 .../org/apache/jdo/impl/fostore/Test_FSUID.java    |  103 -
 .../apache/jdo/impl/fostore/Test_Transcriber.java  |  279 --
 .../java/org/apache/jdo/pc/DepartmentFactory.java  |   46 -
 .../java/org/apache/jdo/pc/EmployeeFactory.java    |   46 -
 .../java/org/apache/jdo/pc/InsuranceFactory.java   |   46 -
 .../java/org/apache/jdo/pc/InterfacesFactory.java  |   50 -
 .../java/org/apache/jdo/pc/LargeObjFactory.java    |   59 -
 ri11/test/java/org/apache/jdo/pc/PCArrays.java     |  642 ---
 ri11/test/java/org/apache/jdo/pc/PCBase.java       |   23 -
 ri11/test/java/org/apache/jdo/pc/PCCollection.java |   69 -
 .../test/java/org/apache/jdo/pc/PCCollections.java |  593 ---
 ri11/test/java/org/apache/jdo/pc/PCCycle.java      |   69 -
 ri11/test/java/org/apache/jdo/pc/PCCycle2.java     |   60 -
 ri11/test/java/org/apache/jdo/pc/PCDepartment.java |   89 -
 .../test/java/org/apache/jdo/pc/PCDepartment1.java |   92 -
 ri11/test/java/org/apache/jdo/pc/PCDerived.java    |   21 -
 ri11/test/java/org/apache/jdo/pc/PCEmployee.java   |  219 -
 ri11/test/java/org/apache/jdo/pc/PCEmployee1.java  |  227 -
 .../org/apache/jdo/pc/PCFullTimeEmployee1.java     |   65 -
 ri11/test/java/org/apache/jdo/pc/PCId.java         |   58 -
 ri11/test/java/org/apache/jdo/pc/PCInsurance.java  |   92 -
 ri11/test/java/org/apache/jdo/pc/PCInsurance1.java |  101 -
 ri11/test/java/org/apache/jdo/pc/PCInterfaces.java |   66 -
 ri11/test/java/org/apache/jdo/pc/PCLargeObj.java   |   70 -
 ri11/test/java/org/apache/jdo/pc/PCPoint.java      |  108 -
 ri11/test/java/org/apache/jdo/pc/PCPoint1.java     |   74 -
 ri11/test/java/org/apache/jdo/pc/PCPoint1Key.java  |   46 -
 ri11/test/java/org/apache/jdo/pc/PCPrimitive.java  |  174 -
 ri11/test/java/org/apache/jdo/pc/PCProject.java    |   91 -
 ri11/test/java/org/apache/jdo/pc/PCProject1.java   |   93 -
 ri11/test/java/org/apache/jdo/pc/PCRect.java       |   64 -
 ri11/test/java/org/apache/jdo/pc/PCRefArrays.java  |   71 -
 ri11/test/java/org/apache/jdo/pc/PCSCO.java        |  154 -
 ri11/test/java/org/apache/jdo/pc/PCStroke.java     |   52 -
 ri11/test/java/org/apache/jdo/pc/PointFactory.java |   48 -
 .../java/org/apache/jdo/pc/ProjectFactory.java     |   45 -
 ri11/test/java/org/apache/jdo/pc/RectFactory.java  |   52 -
 .../java/org/apache/jdo/pc/appid/PCDepartment.java |   89 -
 .../java/org/apache/jdo/pc/appid/PCEmployee.java   |  224 -
 .../apache/jdo/pc/appid/PCFullTimeEmployee.java    |   81 -
 .../java/org/apache/jdo/pc/appid/PCInsurance.java  |   92 -
 .../java/org/apache/jdo/pc/appid/PCObjectKey.java  |   93 -
 .../apache/jdo/pc/appid/PCPartTimeEmployee.java    |   80 -
 .../java/org/apache/jdo/pc/appid/PCPerson.java     |  107 -
 .../test/java/org/apache/jdo/pc/appid/PCPoint.java |   91 -
 .../java/org/apache/jdo/pc/appid/PCProject.java    |   91 -
 ri11/test/java/org/apache/jdo/pc/appid/PCRect.java |   91 -
 .../org/apache/jdo/pc/appid/appid.jdoproperties    |   58 -
 ri11/test/java/org/apache/jdo/pc/appid/package.jdo |   95 -
 .../org/apache/jdo/pc/empdept/PCDepartment.java    |   89 -
 .../java/org/apache/jdo/pc/empdept/PCEmployee.java |  217 -
 .../apache/jdo/pc/empdept/PCFullTimeEmployee.java  |   81 -
 .../org/apache/jdo/pc/empdept/PCInsurance.java     |   92 -
 .../apache/jdo/pc/empdept/PCPartTimeEmployee.java  |   80 -
 .../java/org/apache/jdo/pc/empdept/PCPerson.java   |  107 -
 .../java/org/apache/jdo/pc/empdept/PCProject.java  |   91 -
 .../apache/jdo/pc/empdept/empdept.jdoproperties    |   45 -
 .../java/org/apache/jdo/pc/empdept/package.jdo     |   68 -
 ri11/test/java/org/apache/jdo/pc/package.jdo       |  441 --
 ri11/test/java/org/apache/jdo/pc/pc.jdoproperties  |  401 --
 .../org/apache/jdo/pc/serializable/PCClass1.java   |   83 -
 .../org/apache/jdo/pc/serializable/PCClass2A.java  |   89 -
 .../org/apache/jdo/pc/serializable/PCClass2B.java  |   87 -
 .../org/apache/jdo/pc/serializable/PCSub3.java     |   87 -
 .../org/apache/jdo/pc/serializable/PCSub4A.java    |   92 -
 .../org/apache/jdo/pc/serializable/PCSub4B.java    |   91 -
 .../org/apache/jdo/pc/serializable/PCSuper.java    |   66 -
 .../java/org/apache/jdo/pc/serializable/Readme.txt |   57 -
 .../org/apache/jdo/pc/serializable/Transient.java  |   33 -
 .../java/org/apache/jdo/pc/serializable/build.xml  |  128 -
 .../org/apache/jdo/pc/serializable/package.jdo     |   60 -
 .../jdo/pc/serializable/serializable.jdoproperties |   40 -
 .../java/org/apache/jdo/pc/xempdept/Company.java   |  139 -
 .../java/org/apache/jdo/pc/xempdept/Company.jdo    |   15 -
 .../org/apache/jdo/pc/xempdept/Department.java     |  125 -
 .../java/org/apache/jdo/pc/xempdept/Department.jdo |   15 -
 .../java/org/apache/jdo/pc/xempdept/Employee.java  |  259 --
 .../java/org/apache/jdo/pc/xempdept/Employee.jdo   |   30 -
 .../apache/jdo/pc/xempdept/FullTimeEmployee.java   |   77 -
 .../apache/jdo/pc/xempdept/FullTimeEmployee.jdo    |   11 -
 .../org/apache/jdo/pc/xempdept/Identifiable.java   |   22 -
 .../java/org/apache/jdo/pc/xempdept/Insurance.java |  112 -
 .../java/org/apache/jdo/pc/xempdept/Insurance.jdo  |   12 -
 .../apache/jdo/pc/xempdept/PartTimeEmployee.java   |   77 -
 .../apache/jdo/pc/xempdept/PartTimeEmployee.jdo    |   11 -
 .../java/org/apache/jdo/pc/xempdept/Person.java    |   71 -
 .../java/org/apache/jdo/pc/xempdept/Person.jdo     |   12 -
 .../org/apache/jdo/pc/xempdept/PrimitiveTypes.java |  321 --
 .../org/apache/jdo/pc/xempdept/PrimitiveTypes.jdo  |   31 -
 .../java/org/apache/jdo/pc/xempdept/Project.java   |  138 -
 .../java/org/apache/jdo/pc/xempdept/Project.jdo    |   18 -
 .../apache/jdo/pc/xempdept/xempdept.jdoproperties  |   99 -
 .../java/org/apache/jdo/pc/xempdept/xempdept.jpg   |  Bin 92051 -> 0 bytes
 .../java/org/apache/jdo/test/EmpDeptSupport.java   |  177 -
 ri11/test/java/org/apache/jdo/test/Point.java      |   71 -
 .../java/org/apache/jdo/test/Test_4510817.java     |   57 -
 .../java/org/apache/jdo/test/Test_4515265.java     |   96 -
 .../java/org/apache/jdo/test/Test_6214617.java     |   56 -
 .../org/apache/jdo/test/Test_ActivateClass.java    |   55 -
 ri11/test/java/org/apache/jdo/test/Test_AppId.java |  177 -
 .../test/java/org/apache/jdo/test/Test_Arrays.java |   80 -
 .../apache/jdo/test/Test_ClassRegistration.java    |  229 -
 .../java/org/apache/jdo/test/Test_ClosePMF.java    |  159 -
 .../java/org/apache/jdo/test/Test_Collections.java |   66 -
 .../java/org/apache/jdo/test/Test_Container.java   |  358 --
 ri11/test/java/org/apache/jdo/test/Test_Cycle.java |  130 -
 .../test/java/org/apache/jdo/test/Test_Delete.java |  155 -
 .../java/org/apache/jdo/test/Test_DupAppId.java    |  103 -
 .../java/org/apache/jdo/test/Test_EmpDept.java     |  300 --
 .../org/apache/jdo/test/Test_EmpDeptAppId.java     |  357 --
 .../apache/jdo/test/Test_EmpDeptAppIdDelete.java   |   39 -
 .../apache/jdo/test/Test_EmpDeptAppIdInsert.java   |   39 -
 .../apache/jdo/test/Test_EmpDeptAppIdUpdate.java   |   40 -
 .../apache/jdo/test/Test_EmpDeptSerialization.java |  257 --
 .../test/java/org/apache/jdo/test/Test_Extent.java |  224 -
 .../test/java/org/apache/jdo/test/Test_FSUID2.java |  335 --
 ri11/test/java/org/apache/jdo/test/Test_Fetch.java |   56 -
 .../test/java/org/apache/jdo/test/Test_Fetch2.java |   44 -
 .../org/apache/jdo/test/Test_FetchInserted.java    |  113 -
 .../java/org/apache/jdo/test/Test_Freezer.java     |  221 -
 .../org/apache/jdo/test/Test_GetObjectById.java    |   88 -
 .../org/apache/jdo/test/Test_GetObjectById2.java   |   88 -
 .../org/apache/jdo/test/Test_HollowUpdate.java     |  151 -
 .../java/org/apache/jdo/test/Test_Inheritance.java |  166 -
 .../test/java/org/apache/jdo/test/Test_Insert.java |   85 -
 .../java/org/apache/jdo/test/Test_Insert2.java     |  102 -
 .../java/org/apache/jdo/test/Test_Interfaces.java  |   80 -
 .../java/org/apache/jdo/test/Test_JDOModel.java    |  460 --
 .../org/apache/jdo/test/Test_KeyFieldNull.java     |  109 -
 .../java/org/apache/jdo/test/Test_LargeObj.java    |   54 -
 .../java/org/apache/jdo/test/Test_LifeCycle.java   |  854 ----
 .../org/apache/jdo/test/Test_LifeCycle_Opt.java    |  347 --
 .../org/apache/jdo/test/Test_LifeCycle_RetF.java   |  239 -
 .../apache/jdo/test/Test_LifeCycle_RetFOpt.java    |  274 --
 ri11/test/java/org/apache/jdo/test/Test_Many.java  |   46 -
 .../java/org/apache/jdo/test/Test_Navigate.java    |  116 -
 .../test/java/org/apache/jdo/test/Test_NegAll.java |  212 -
 .../java/org/apache/jdo/test/Test_NonTxAccess.java |  170 -
 .../java/org/apache/jdo/test/Test_ObjectId.java    |  131 -
 .../java/org/apache/jdo/test/Test_Optimistic.java  |  220 -
 .../jdo/test/Test_OptimisticNullNotNull.java       |   90 -
 .../java/org/apache/jdo/test/Test_PCDerived.java   |   42 -
 .../org/apache/jdo/test/Test_PMFProperties.java    |  170 -
 .../java/org/apache/jdo/test/Test_ParallelPMs.java |  276 --
 .../java/org/apache/jdo/test/Test_Primitives.java  |   84 -
 ri11/test/java/org/apache/jdo/test/Test_Query.java |  948 ----
 .../org/apache/jdo/test/Test_Reachability.java     |  304 --
 ri11/test/java/org/apache/jdo/test/Test_Rect.java  |  116 -
 .../java/org/apache/jdo/test/Test_RectAppId.java   |  137 -
 .../java/org/apache/jdo/test/Test_RefArrays.java   |  122 -
 .../java/org/apache/jdo/test/Test_Rollback.java    |  196 -
 .../apache/jdo/test/Test_RollbackFlushedNew.java   |   82 -
 ri11/test/java/org/apache/jdo/test/Test_SCO.java   |   57 -
 .../org/apache/jdo/test/Test_SCOArrayList.java     |  181 -
 .../jdo/test/Test_SCOArrayListOptimistic.java      |  215 -
 .../java/org/apache/jdo/test/Test_SCODate.java     |  200 -
 .../java/org/apache/jdo/test/Test_SCOHashMap.java  |  153 -
 .../java/org/apache/jdo/test/Test_SCOHashSet.java  |  170 -
 .../org/apache/jdo/test/Test_SCOHashtable.java     |  171 -
 .../org/apache/jdo/test/Test_SCOLinkedList.java    |  221 -
 .../java/org/apache/jdo/test/Test_SCORollback.java |  225 -
 .../java/org/apache/jdo/test/Test_SCOSqlDate.java  |  169 -
 .../java/org/apache/jdo/test/Test_SCOTreeMap.java  |  182 -
 .../java/org/apache/jdo/test/Test_SCOTreeSet.java  |  194 -
 .../java/org/apache/jdo/test/Test_SCOVector.java   |  233 -
 .../java/org/apache/jdo/test/Test_SCO_Base.java    |  419 --
 .../java/org/apache/jdo/test/Test_SerialPMs.java   |   96 -
 .../java/org/apache/jdo/test/Test_Serialize.java   |   93 -
 .../org/apache/jdo/test/Test_SerializeComplex.java |  225 -
 .../org/apache/jdo/test/Test_SerializeInher.java   |  109 -
 .../java/org/apache/jdo/test/Test_StringOID.java   |   74 -
 .../test/java/org/apache/jdo/test/Test_Stroke.java |  127 -
 .../test/java/org/apache/jdo/test/Test_Update.java |  168 -
 .../org/apache/jdo/test/Test_UserHashCode.java     |  184 -
 .../java/org/apache/jdo/test/Test_WeakHashSet.java |  326 --
 .../org/apache/jdo/test/Test_WeakValueHashMap.java |  572 ---
 .../org/apache/jdo/test/query/AdvancedTest.java    | 1856 --------
 .../org/apache/jdo/test/query/ArithmeticTest.java  |  324 --
 .../java/org/apache/jdo/test/query/BasicTest.java  | 1473 ------
 .../org/apache/jdo/test/query/CollectionTest.java  | 1902 --------
 .../org/apache/jdo/test/query/InheritanceTest.java |  352 --
 .../org/apache/jdo/test/query/NavigationTest.java  | 1173 -----
 .../org/apache/jdo/test/query/NegativeTest.java    |  226 -
 .../org/apache/jdo/test/query/OrderingTest.java    |  949 ----
 .../org/apache/jdo/test/query/ParameterTest.java   | 1059 -----
 .../org/apache/jdo/test/query/PositiveTest.java    |  485 --
 .../org/apache/jdo/test/query/QueryApiTest.java    |  531 ---
 .../org/apache/jdo/test/query/QueryErrorTest.java  |  204 -
 .../java/org/apache/jdo/test/query/QueryTest.java  |   43 -
 .../org/apache/jdo/test/query/ScopingTest.java     |  564 ---
 .../apache/jdo/test/query/SemanticErrorTest.java   | 1363 ------
 .../org/apache/jdo/test/query/SyntaxErrorTest.java | 1336 ------
 .../java/org/apache/jdo/test/query/TreeTest.java   |  613 ---
 .../org/apache/jdo/test/query/UnsupportedTest.java |  220 -
 .../org/apache/jdo/test/util/AbstractTest.java     |  778 ----
 .../apache/jdo/test/util/BatchResultPrinter.java   |  103 -
 .../java/org/apache/jdo/test/util/Container.java   |  285 --
 .../java/org/apache/jdo/test/util/DumpExtent.java  |  109 -
 .../java/org/apache/jdo/test/util/Factory.java     |   45 -
 .../org/apache/jdo/test/util/JDORITestRunner.java  |  175 -
 .../org/apache/jdo/test/util/OIDComparator.java    |   39 -
 .../org/apache/jdo/test/util/SwingTestRunner.java  |  132 -
 .../org/apache/jdo/test/util/TestListSuite.java    |  165 -
 .../org/apache/jdo/test/util/TestSelector.java     |  284 --
 ri11/test/java/org/apache/jdo/test/util/Util.java  |  256 --
 .../org/apache/jdo/pc/appid/appid.jdoproperties    |   58 -
 ri11/test/jdo/org/apache/jdo/pc/appid/package.jdo  |   95 -
 .../apache/jdo/pc/empdept/empdept.jdoproperties    |   45 -
 .../test/jdo/org/apache/jdo/pc/empdept/package.jdo |   68 -
 ri11/test/jdo/org/apache/jdo/pc/package.jdo        |  441 --
 ri11/test/jdo/org/apache/jdo/pc/pc.jdoproperties   |  401 --
 .../jdo/org/apache/jdo/pc/serializable/package.jdo |   60 -
 .../jdo/pc/serializable/serializable.jdoproperties |   40 -
 .../jdo/org/apache/jdo/pc/xempdept/Company.jdo     |   15 -
 .../jdo/org/apache/jdo/pc/xempdept/Department.jdo  |   15 -
 .../jdo/org/apache/jdo/pc/xempdept/Employee.jdo    |   30 -
 .../apache/jdo/pc/xempdept/FullTimeEmployee.jdo    |   11 -
 .../jdo/org/apache/jdo/pc/xempdept/Insurance.jdo   |   12 -
 .../apache/jdo/pc/xempdept/PartTimeEmployee.jdo    |   11 -
 .../test/jdo/org/apache/jdo/pc/xempdept/Person.jdo |   12 -
 .../org/apache/jdo/pc/xempdept/PrimitiveTypes.jdo  |   31 -
 .../jdo/org/apache/jdo/pc/xempdept/Project.jdo     |   18 -
 .../apache/jdo/pc/xempdept/xempdept.jdoproperties  |   99 -
 ri11/test/runtest.xml                              | 1772 --------
 ri11/xdocs/index.xml                               |   35 -
 ri11/xdocs/navigation.xml                          |   37 -
 tck11/assertions/JdoTckAssertionsTable.sxc         |  Bin 92450 -> 0 bytes
 tck11/maven.xml                                    |  387 --
 tck11/project.properties                           |  311 --
 tck11/project.xml                                  |  127 -
 tck11/test/conf/JDOTCKTestCases.list               |  387 --
 tck11/test/conf/alltests.list                      |  345 --
 tck11/test/conf/applicationidentity.conf           |    3 -
 tck11/test/conf/commons-logging.properties         |   34 -
 tck11/test/conf/datastoreidentity.conf             |    3 -
 tck11/test/conf/enhancement-test.properties        |   19 -
 tck11/test/conf/jdori.properties                   |   24 -
 tck11/test/conf/jdori2.properties                  |   24 -
 tck11/test/conf/logging.properties                 |   43 -
 tck11/test/conf/simplelog.properties               |   35 -
 tck11/test/java/org/apache/jdo/tck/JDO_Test.java   |  571 ---
 .../AccessOtherInstancesInPrestore.java            |  107 -
 .../AccessingFieldsInPredelete.java                |  178 -
 .../api/instancecallbacks/CallingJdoPostload.java  |  148 -
 .../api/instancecallbacks/CallingJdoPreclear.java  |  136 -
 .../api/instancecallbacks/CallingJdoPredelete.java |  146 -
 .../api/instancecallbacks/CallingJdoPrestore.java  |  212 -
 ...ationOfNontransactionalNonpersistentFields.java |  176 -
 .../NoAccessToFieldsAfterPredelete.java            |  159 -
 .../jdo/tck/api/instancecallbacks/TestParts.java   |  139 -
 .../apache/jdo/tck/api/jdohelper/GetObjectId.java  |   81 -
 .../jdo/tck/api/jdohelper/GetObjectIdForNull.java  |   76 -
 .../tck/api/jdohelper/GetObjectIdForTransient.java |   75 -
 .../GetObjectIdNotPersistenceCapable.java          |   76 -
 .../tck/api/jdohelper/GetPersistenceManager.java   |   83 -
 .../jdohelper/GetPersistenceManagerForNull.java    |   77 -
 .../GetPersistenceManagerForTransient.java         |   75 -
 ...GetPersistenceManagerNotPersistenceCapable.java |   75 -
 .../api/jdohelper/GetTransactionalObjectId.java    |   78 -
 .../jdohelper/GetTransactionalObjectIdForNull.java |   75 -
 .../GetTransactionalObjectIdForTransient.java      |   76 -
 ...TransactionalObjectIdNotPersistenceCapable.java |   73 -
 .../apache/jdo/tck/api/jdohelper/IsDeleted.java    |   78 -
 .../jdo/tck/api/jdohelper/IsDeletedFalse.java      |   79 -
 .../jdo/tck/api/jdohelper/IsDeletedForNull.java    |   75 -
 .../tck/api/jdohelper/IsDeletedForTransient.java   |   75 -
 .../jdohelper/IsDeletedNotPersistenceCapable.java  |   75 -
 .../org/apache/jdo/tck/api/jdohelper/IsDirty.java  |   78 -
 .../apache/jdo/tck/api/jdohelper/IsDirtyFalse.java |   81 -
 .../jdo/tck/api/jdohelper/IsDirtyForNull.java      |   74 -
 .../jdo/tck/api/jdohelper/IsDirtyForTransient.java |   75 -
 .../jdohelper/IsDirtyNotPersistenceCapable.java    |   75 -
 .../org/apache/jdo/tck/api/jdohelper/IsNew.java    |   76 -
 .../apache/jdo/tck/api/jdohelper/IsNewFalse.java   |   80 -
 .../apache/jdo/tck/api/jdohelper/IsNewForNull.java |   74 -
 .../jdo/tck/api/jdohelper/IsNewForTransient.java   |   75 -
 .../api/jdohelper/IsNewNotPersistenceCapable.java  |   75 -
 .../apache/jdo/tck/api/jdohelper/IsPersistent.java |   76 -
 .../jdo/tck/api/jdohelper/IsPersistentFalse.java   |   75 -
 .../jdo/tck/api/jdohelper/IsPersistentForNull.java |   74 -
 .../api/jdohelper/IsPersistentForTransient.java    |   76 -
 .../IsPersistentNotPersistenceCapable.java         |   75 -
 .../jdo/tck/api/jdohelper/IsTransactional.java     |   83 -
 .../tck/api/jdohelper/IsTransactionalFalse.java    |   88 -
 .../tck/api/jdohelper/IsTransactionalForNull.java  |   72 -
 .../api/jdohelper/IsTransactionalForTransient.java |   73 -
 .../IsTransactionalNotPersistenceCapable.java      |   74 -
 .../apache/jdo/tck/api/jdohelper/MakeDirty.java    |   83 -
 .../jdo/tck/api/jdohelper/MakeDirtyForNull.java    |   75 -
 .../tck/api/jdohelper/MakeDirtyForTransient.java   |   78 -
 .../jdohelper/MakeDirtyNotPersistenceCapable.java  |   76 -
 .../AfterCloseAllMethodsThrowException.java        |  100 -
 ...llingEvictAllWithCollectionContainingNulls.java |  137 -
 ...ingRefreshAllWithCollectionContainingNulls.java |  140 -
 .../ChangingObjectIdHasNoEffectOnInstance.java     |   67 -
 .../CloseThrowsExceptionWhenActiveTx.java          |   67 -
 .../ConcurrentPersistenceManagers.java             |   92 -
 .../ConcurrentPersistenceManagersSameClasses.java  |  136 -
 .../api/persistencemanager/CurrentTransaction.java |   63 -
 .../api/persistencemanager/DeletePersistent.java   |  254 --
 .../DeletePersistentAllFails.java                  |  155 -
 ...DeletePersistentFailsIfInstanceIsTransient.java |  146 -
 ...InstanceManagedByAnotherPersistenceManager.java |  179 -
 ...etePersistentHasNoEffectOnDeletedInstances.java |  161 -
 .../EvictAllWithNoParameters.java                  |  141 -
 .../EvictingCollectionOfInstancesSideEffects.java  |  201 -
 .../EvictingWithRestoreValuesFalse.java            |  127 -
 .../EvictingWithRetainValuesFalse.java             |  134 -
 ...WithInstancesMadePersistentViaReachability.java |  113 -
 .../GetExtentWithNoSubclasses.java                 |  111 -
 .../GetExtentWithSubclasses.java                   |  128 -
 .../tck/api/persistencemanager/GetIgnoreCache.java |   74 -
 .../tck/api/persistencemanager/GetObjectById.java  |  140 -
 .../GetObjectByIdNoValidationInstanceInCache.java  |   84 -
 ...IdNoValidationInstanceInCacheNoStateChange.java |   83 -
 ...etObjectByIdNoValidationInstanceNotInCache.java |   87 -
 ...jectByIdNoValidationInstanceNotInCacheNoTx.java |   88 -
 ...jectByIdNoValidationInstanceNotInDatastore.java |   81 -
 .../GetObjectByIdNotResolved.java                  |   85 -
 ...GetObjectByIdWithValidationInstanceInCache.java |   87 -
 ...ithValidationInstanceInCacheNotInDatastore.java |   87 -
 ...ValidationInstanceNotInCacheNotInDatastore.java |   75 -
 .../tck/api/persistencemanager/GetObjectId.java    |   80 -
 .../api/persistencemanager/GetObjectIdClass.java   |  100 -
 ...assForAbstractOrNonPersistenceCapableClass.java |   77 -
 .../GetObjectIdForNullOrNotPersistent.java         |   80 -
 ...etObjectIdWithApplicationModifyingIdentity.java |   97 -
 .../GetPersistenceManagerFactory.java              |   63 -
 .../api/persistencemanager/GetSetUserObject.java   |   80 -
 ...nsactionalObjectIdWhenObjectIdBeingChanged.java |   95 -
 .../GetTransactionalObjectIdWithNoTransaction.java |   80 -
 .../IsClosedIsFalseUponConstruction.java           |   58 -
 .../IsClosedIsFalseUponRetrievalFromPool.java      |   61 -
 .../IsClosedIsTrueAfterClose.java                  |   61 -
 .../MakeNontransactionalAllFails.java              |  173 -
 .../MakeNontransactionalDirtyInstance.java         |  304 --
 .../MakeNontransactionalIsImmediate.java           |  243 -
 ...akeNontransactionalPersistentCleanInstance.java |  239 -
 ...MakeNontransactionalTransientCleanInstance.java |  218 -
 .../tck/api/persistencemanager/MakePersistent.java |  220 -
 .../persistencemanager/MakePersistentAllFails.java |  131 -
 .../MakePersistentAndInstancesNotReachable.java    |  122 -
 .../MakePersistentAssignsObjectId.java             |  183 -
 ...InstanceManagedByAnotherPersistenceManager.java |  184 -
 ...PersistentHasNoEffectOnPersistentInstances.java |  165 -
 .../api/persistencemanager/MakeTransactional.java  |  160 -
 ...ctionalANontransactionalPersistentInstance.java |  310 --
 .../MakeTransactionalAllFails.java                 |  133 -
 .../MakeTransactionalIsImmediate.java              |  184 -
 ...eTransactionalPriorToTransactionRolledback.java |  213 -
 ...keTransactionalWithinTransactionRolledback.java |  185 -
 .../tck/api/persistencemanager/MakeTransient.java  |  177 -
 .../persistencemanager/MakeTransientAllFails.java  |  134 -
 .../MakeTransientCausesLossOfIdentity.java         |  183 -
 .../MakeTransientFailsWithDirtyInstance.java       |  190 -
 .../MakeTransientFieldsPreservedUnchanged.java     |  243 -
 ...keTransientHasNoEffectOnTransientInstances.java |  150 -
 .../MakeTransientNotSubjectToRollback.java         |  184 -
 .../NoPersistenceManagerIfTransient.java           |   57 -
 .../ObjectIdUniqueAmongInstances.java              |  100 -
 .../OneInstanceOfObjectPerPersistenceManager.java  |  112 -
 ...sistenceManagerIfPersistentOrTransactional.java |   55 -
 .../api/persistencemanager/OptimisticFailure.java  |  232 -
 .../PassingNullToEvictAllThrowsException.java      |  112 -
 .../PassingNullToEvictHasNoEffect.java             |   79 -
 .../PassingNullToRefreshAllThrowsException.java    |  115 -
 .../PassingNullToRefreshHasNoEffect.java           |   80 -
 .../persistencemanager/PersistenceManagerTest.java |  181 -
 .../RefreshAllNoParameterSideEffects.java          |  261 --
 .../RefreshAllWithArraySideEffects.java            |  254 --
 .../RefreshAllWithCollectionSideEffects.java       |  252 --
 .../RefreshAllWithNoParameters.java                |  101 -
 .../api/persistencemanager/RefreshSideEffects.java |  237 -
 .../jdo/tck/api/persistencemanager/Retrieve.java   |  334 --
 ...ionInstanceForAllCallsToCurrentTransaction.java |   80 -
 .../persistencemanager/SetIgnoreCacheToFalse.java  |   83 -
 .../persistencemanager/SetIgnoreCacheToTrue.java   |   84 -
 .../persistencemanager/SetMultithreadedFalse.java  |   82 -
 .../persistencemanager/SetMultithreadedTrue.java   |   81 -
 .../SettingFlagsWithTransactionInstance.java       |   71 -
 .../jdo/tck/api/persistencemanager/ThreadSafe.java |  172 -
 ...TransactionalInstanceRetainsValuesAtCommit.java |  164 -
 .../AfterCloseGetPMThrowsException.java            |   76 -
 .../AfterCloseSetMethodsThrowException.java        |  196 -
 ...erGetPersistenceManagerNoSetMethodsSucceed.java |  231 -
 .../tck/api/persistencemanagerfactory/Close.java   |   66 -
 .../CloseFailsIfTransactionActive.java             |  203 -
 ...seWithoutPermissionThrowsSecurityException.java |   87 -
 .../GetPersistenceManager.java                     |  101 -
 ...sistenceManagerFactoryByPropertiesInstance.java |   70 -
 .../GetPersistenceManagerForUser.java              |   98 -
 .../persistencemanagerfactory/GetProperties.java   |   77 -
 .../SetConnectionPassword.java                     |   84 -
 .../SetConnectionURL.java                          |   93 -
 .../SetConnectionUserName.java                     |   94 -
 .../persistencemanagerfactory/SetIgnoreCache.java  |  103 -
 .../SetMultithreaded.java                          |  104 -
 .../SetNonTransactionalRead.java                   |  105 -
 .../SetNonTransactionalWrite.java                  |  104 -
 .../persistencemanagerfactory/SetOptimistic.java   |  102 -
 .../persistencemanagerfactory/SetRetainValues.java |  104 -
 .../SupportedOptions.java                          |   75 -
 .../apache/jdo/tck/enhancement/EnhancerTest.java   |  100 -
 .../jdo/tck/enhancement/FieldAccessModified.java   |  107 -
 .../enhancement/ImplementsPersistenceCapable.java  |  100 -
 .../java/org/apache/jdo/tck/extents/CloseAll.java  |   85 -
 .../CloseOfExtentIteratorIsIteratorSpecific.java   |   77 -
 .../org/apache/jdo/tck/extents/ExtentTest.java     |  260 --
 .../apache/jdo/tck/extents/GetCandidateClass.java  |   60 -
 .../jdo/tck/extents/GetPersistenceManager.java     |   62 -
 .../apache/jdo/tck/extents/HasSubclassesFalse.java |   61 -
 .../apache/jdo/tck/extents/HasSubclassesTrue.java  |   61 -
 ...nstancesDeletedPriorToIterationNotReturned.java |   84 -
 ...InstancesPersistedPriorToIterationReturned.java |   84 -
 .../IteratorHasNextFalseAfterExtentClose.java      |   97 -
 .../jdo/tck/extents/IteratorMutatingMethods.java   |   73 -
 .../tck/extents/IteratorNextAfterExtentClose.java  |  112 -
 .../extents/IteratorNextAfterExtentCloseAll.java   |  101 -
 .../java/org/apache/jdo/tck/extents/Iterators.java |   70 -
 .../tck/lifecycle/HollowInstanceMaintainsPK.java   |   92 -
 ...ltiplePMsReturnInstancesRepresentingSamePC.java |  143 -
 ...tIdNotModifiedWhenObjectIdInstanceModified.java |  108 -
 .../PMReturnsIdenticalInstancesForEqualObjIds.java |  110 -
 .../PMsCanSharePCClassesButNotPCInstances.java     |  230 -
 .../apache/jdo/tck/lifecycle/StateTransitions.java |  768 ----
 .../TransientTransactionalStateCommit.java         |  122 -
 .../TransientTransactionalStateRollback.java       |  131 -
 ...NontransactionalInstanceOutsideTransaction.java |  202 -
 .../SecondClassObjectsTrackTheirChanges.java       |  135 -
 .../FirstSetOfTestValuesForCollection.java         |  141 -
 .../SecondSetOfTestValuesForCollection.java        |  141 -
 .../models/fieldtypes/TestArrayCollections.java    |  174 -
 .../fieldtypes/TestArrayListCollections.java       |  150 -
 .../fieldtypes/TestCollectionCollections.java      |  144 -
 .../models/fieldtypes/TestFieldsOfBigDecimal.java  |  136 -
 .../models/fieldtypes/TestFieldsOfBigInteger.java  |  136 -
 .../tck/models/fieldtypes/TestFieldsOfBoolean.java |  132 -
 .../tck/models/fieldtypes/TestFieldsOfByte.java    |  133 -
 .../models/fieldtypes/TestFieldsOfCharacter.java   |  133 -
 .../tck/models/fieldtypes/TestFieldsOfDate.java    |  133 -
 .../tck/models/fieldtypes/TestFieldsOfDouble.java  |  132 -
 .../tck/models/fieldtypes/TestFieldsOfFloat.java   |  133 -
 .../tck/models/fieldtypes/TestFieldsOfInteger.java |  131 -
 .../tck/models/fieldtypes/TestFieldsOfLocale.java  |  134 -
 .../tck/models/fieldtypes/TestFieldsOfLong.java    |  132 -
 .../tck/models/fieldtypes/TestFieldsOfObject.java  |  133 -
 .../fieldtypes/TestFieldsOfPrimitiveboolean.java   |  128 -
 .../fieldtypes/TestFieldsOfPrimitivebyte.java      |  129 -
 .../fieldtypes/TestFieldsOfPrimitivechar.java      |  129 -
 .../fieldtypes/TestFieldsOfPrimitivedouble.java    |  129 -
 .../fieldtypes/TestFieldsOfPrimitivefloat.java     |  129 -
 .../fieldtypes/TestFieldsOfPrimitiveint.java       |  127 -
 .../fieldtypes/TestFieldsOfPrimitivelong.java      |  130 -
 .../fieldtypes/TestFieldsOfPrimitiveshort.java     |  128 -
 .../tck/models/fieldtypes/TestFieldsOfShort.java   |  133 -
 .../models/fieldtypes/TestFieldsOfSimpleClass.java |  129 -
 .../fieldtypes/TestFieldsOfSimpleInterface.java    |  131 -
 .../tck/models/fieldtypes/TestFieldsOfString.java  |  133 -
 .../TestHashMapStringKeyCollections.java           |  194 -
 .../TestHashMapStringValueCollections.java         |  199 -
 .../models/fieldtypes/TestHashSetCollections.java  |  144 -
 .../TestHashtableStringKeyCollections.java         |  191 -
 .../TestHashtableStringValueCollections.java       |  191 -
 .../fieldtypes/TestLinkedListCollections.java      |  152 -
 .../tck/models/fieldtypes/TestListCollections.java |  158 -
 .../fieldtypes/TestMapStringKeyCollections.java    |  196 -
 .../fieldtypes/TestMapStringValueCollections.java  |  202 -
 .../tck/models/fieldtypes/TestSetCollections.java  |  143 -
 .../TestTreeMapStringKeyCollections.java           |  191 -
 .../TestTreeMapStringValueCollections.java         |  191 -
 .../models/fieldtypes/TestTreeSetCollections.java  |  157 -
 .../apache/jdo/tck/models/fieldtypes/TestUtil.java |   88 -
 .../models/fieldtypes/TestVectorCollections.java   |  149 -
 .../inheritance/FieldWithSameNameInSuperclass.java |  235 -
 ...rsistentFieldsAreNonPersistentInSubclasses.java |  124 -
 .../inheritance/NonpersistentSuperClass.java       |  224 -
 ...ceCapableFlexibilityInInheritanceHierarchy.java |  227 -
 .../PersistentFieldsArePersistentInSubClasses.java |  224 -
 .../jdo/tck/models/inheritance/TestParts.java      |  125 -
 ...actionalFieldsAreTransactionalInSubclasses.java |  124 -
 .../org/apache/jdo/tck/pc/company/Address.java     |  292 --
 .../org/apache/jdo/tck/pc/company/Company.java     |  303 --
 .../jdo/tck/pc/company/CompanyModelReader.java     |  216 -
 .../apache/jdo/tck/pc/company/DentalInsurance.java |   95 -
 .../org/apache/jdo/tck/pc/company/Department.java  |  365 --
 .../org/apache/jdo/tck/pc/company/Employee.java    |  414 --
 .../jdo/tck/pc/company/FullTimeEmployee.java       |   95 -
 .../org/apache/jdo/tck/pc/company/Insurance.java   |  251 --
 .../jdo/tck/pc/company/MedicalInsurance.java       |  115 -
 .../jdo/tck/pc/company/PartTimeEmployee.java       |   93 -
 .../java/org/apache/jdo/tck/pc/company/Person.java |  378 --
 .../org/apache/jdo/tck/pc/company/Project.java     |  319 --
 .../java/org/apache/jdo/tck/pc/company/company.jpg |  Bin 91979 -> 0 bytes
 .../org/apache/jdo/tck/pc/fieldtypes/AllTypes.java |  320 --
 .../jdo/tck/pc/fieldtypes/ArrayCollections.java    |  273 --
 .../tck/pc/fieldtypes/ArrayListCollections.java    |  370 --
 .../tck/pc/fieldtypes/CollectionCollections.java   |  370 --
 .../jdo/tck/pc/fieldtypes/FieldsOfBigDecimal.java  | 1090 -----
 .../jdo/tck/pc/fieldtypes/FieldsOfBigInteger.java  | 1090 -----
 .../jdo/tck/pc/fieldtypes/FieldsOfBoolean.java     | 1089 -----
 .../apache/jdo/tck/pc/fieldtypes/FieldsOfByte.java | 1089 -----
 .../jdo/tck/pc/fieldtypes/FieldsOfCharacter.java   | 1089 -----
 .../apache/jdo/tck/pc/fieldtypes/FieldsOfDate.java | 1090 -----
 .../jdo/tck/pc/fieldtypes/FieldsOfDouble.java      | 1089 -----
 .../jdo/tck/pc/fieldtypes/FieldsOfFloat.java       | 1089 -----
 .../jdo/tck/pc/fieldtypes/FieldsOfInteger.java     | 1088 -----
 .../jdo/tck/pc/fieldtypes/FieldsOfLocale.java      | 1090 -----
 .../apache/jdo/tck/pc/fieldtypes/FieldsOfLong.java | 1089 -----
 .../jdo/tck/pc/fieldtypes/FieldsOfObject.java      | 1089 -----
 .../pc/fieldtypes/FieldsOfPrimitiveboolean.java    | 1089 -----
 .../tck/pc/fieldtypes/FieldsOfPrimitivebyte.java   | 1088 -----
 .../tck/pc/fieldtypes/FieldsOfPrimitivechar.java   | 1089 -----
 .../tck/pc/fieldtypes/FieldsOfPrimitivedouble.java | 1088 -----
 .../tck/pc/fieldtypes/FieldsOfPrimitivefloat.java  | 1089 -----
 .../tck/pc/fieldtypes/FieldsOfPrimitiveint.java    | 1089 -----
 .../tck/pc/fieldtypes/FieldsOfPrimitivelong.java   | 1088 -----
 .../tck/pc/fieldtypes/FieldsOfPrimitiveshort.java  | 1089 -----
 .../jdo/tck/pc/fieldtypes/FieldsOfShort.java       | 1089 -----
 .../jdo/tck/pc/fieldtypes/FieldsOfSimpleClass.java | 1089 -----
 .../tck/pc/fieldtypes/FieldsOfSimpleInterface.java | 1089 -----
 .../jdo/tck/pc/fieldtypes/FieldsOfString.java      | 1089 -----
 .../pc/fieldtypes/HashMapStringKeyCollections.java |  958 ----
 .../fieldtypes/HashMapStringValueCollections.java  |  896 ----
 .../jdo/tck/pc/fieldtypes/HashSetCollections.java  |  370 --
 .../fieldtypes/HashtableStringKeyCollections.java  |  958 ----
 .../HashtableStringValueCollections.java           |  895 ----
 .../tck/pc/fieldtypes/LinkedListCollections.java   |  369 --
 .../jdo/tck/pc/fieldtypes/ListCollections.java     |  370 --
 .../tck/pc/fieldtypes/MapStringKeyCollections.java |  958 ----
 .../pc/fieldtypes/MapStringValueCollections.java   |  895 ----
 .../jdo/tck/pc/fieldtypes/SetCollections.java      |  370 --
 .../apache/jdo/tck/pc/fieldtypes/SimpleClass.java  |  120 -
 .../jdo/tck/pc/fieldtypes/SimpleInterface.java     |   31 -
 .../pc/fieldtypes/TreeMapStringKeyCollections.java |  957 ----
 .../fieldtypes/TreeMapStringValueCollections.java  |  895 ----
 .../jdo/tck/pc/fieldtypes/TreeSetCollections.java  |  349 --
 .../jdo/tck/pc/fieldtypes/VectorCollections.java   |  370 --
 .../apache/jdo/tck/pc/inheritance/AllPersist.java  |   85 -
 .../apache/jdo/tck/pc/inheritance/AllPersist2.java |   39 -
 .../apache/jdo/tck/pc/inheritance/AllPersist3.java |   35 -
 .../apache/jdo/tck/pc/inheritance/AllPersist4.java |   39 -
 .../apache/jdo/tck/pc/inheritance/Constants.java   |   37 -
 .../jdo/tck/pc/inheritance/FieldSameName.java      |   97 -
 .../jdo/tck/pc/inheritance/FieldSameName2.java     |   62 -
 .../jdo/tck/pc/inheritance/FieldSameName3.java     |   58 -
 .../jdo/tck/pc/inheritance/FieldSameName4.java     |   62 -
 .../jdo/tck/pc/inheritance/TopNonPersist.java      |   33 -
 .../jdo/tck/pc/inheritance/TopNonPersistB.java     |   72 -
 .../jdo/tck/pc/inheritance/TopNonPersistC.java     |   33 -
 .../jdo/tck/pc/inheritance/TopNonPersistD.java     |   33 -
 .../jdo/tck/pc/inheritance/TopNonPersistE.java     |   33 -
 .../jdo/tck/pc/inheritance/TopNonPersistF.java     |   35 -
 .../jdo/tck/pc/inheritance/TopNonPersistG.java     |   35 -
 .../jdo/tck/pc/inheritance/TopNonPersistH.java     |   35 -
 .../apache/jdo/tck/pc/inheritance/TopPersist.java  |   74 -
 .../apache/jdo/tck/pc/inheritance/TopPersistC.java |   33 -
 .../apache/jdo/tck/pc/inheritance/TopPersistD.java |   33 -
 .../apache/jdo/tck/pc/inheritance/TopPersistE.java |   33 -
 .../apache/jdo/tck/pc/inheritance/TopPersistF.java |   35 -
 .../apache/jdo/tck/pc/inheritance/TopPersistG.java |   35 -
 .../apache/jdo/tck/pc/inheritance/TopPersistH.java |   34 -
 .../instancecallbacks/InstanceCallbackClass.java   |  238 -
 .../InstanceCallbackNonPersistFdsClass.java        |  307 --
 .../jdo/tck/pc/lifecycle/StateTransitionObj.java   |   49 -
 .../java/org/apache/jdo/tck/pc/mylib/PCPoint.java  |  121 -
 .../java/org/apache/jdo/tck/pc/mylib/PCPoint2.java |  148 -
 .../java/org/apache/jdo/tck/pc/mylib/PCRect.java   |  105 -
 .../java/org/apache/jdo/tck/pc/mylib/Point.java    |   65 -
 .../apache/jdo/tck/pc/mylib/PrimitiveTypes.java    |  330 --
 ...nmentPrePostIncrementDecrementNotSupported.java |  141 -
 .../apache/jdo/tck/query/BoundParameterCheck.java  |   93 -
 tck11/test/java/org/apache/jdo/tck/query/Cast.java |  103 -
 .../test/java/org/apache/jdo/tck/query/Close.java  |  135 -
 .../java/org/apache/jdo/tck/query/CloseAll.java    |  104 -
 .../tck/query/ComparingCollectionFieldToNull.java  |  102 -
 ...omparingPersistentAndNonPersistentInstance.java |  117 -
 .../org/apache/jdo/tck/query/CompileQuery.java     |   97 -
 .../org/apache/jdo/tck/query/DeclareImports.java   |  148 -
 .../apache/jdo/tck/query/DeclareParameters.java    |  156 -
 .../org/apache/jdo/tck/query/DeclareVariables.java |  114 -
 .../jdo/tck/query/DenoteUniquenessInFilter.java    |  132 -
 .../org/apache/jdo/tck/query/ExecuteQuery.java     |  161 -
 ...ExecuteQueryWhenPersistenceManagerIsClosed.java |   95 -
 .../jdo/tck/query/ExecuteQueryWithArray.java       |  138 -
 .../apache/jdo/tck/query/ExecuteQueryWithMap.java  |  140 -
 ...gMultipleQueriesSimultaneouslyIsThreadSafe.java |  189 -
 ...eryWhenNoTransactionNoNontransactionalRead.java |   84 -
 .../org/apache/jdo/tck/query/GetIgnoreCache.java   |  139 -
 .../jdo/tck/query/GetPersistenceManager.java       |  128 -
 ...sistenceManagerFromRestoredSerializedQuery.java |  129 -
 .../org/apache/jdo/tck/query/IgnoreCacheFalse.java |  179 -
 .../apache/jdo/tck/query/ImmutableQueryResult.java |  184 -
 .../MethodsAndObjectConstructionNotSupported.java  |   85 -
 ...ctiveQueryInstanceInSamePersistenceManager.java |  128 -
 .../jdo/tck/query/MultipleIdenticalImports.java    |  115 -
 .../jdo/tck/query/NamespaceOfIdentifiers.java      |   98 -
 .../query/NavigationThroughACollectionField.java   |   94 -
 .../query/NavigationThroughANullValuedField.java   |  111 -
 ...NavigationThroughReferencesUsesDotOperator.java |  102 -
 ...ryFromExistingQueryBoundToPMFromSameVendor.java |  157 -
 .../query/NewQueryFromRestoredSerializedQuery.java |  128 -
 .../jdo/tck/query/NewQueryWithCandidateClass.java  |   86 -
 .../NewQueryWithCandidateClassAndCollection.java   |   85 -
 .../query/NewQueryWithCandidateClassAndExtent.java |   92 -
 .../query/NewQueryWithCandidateClassAndFilter.java |   94 -
 ...NewQueryWithCandidateClassCollectionFilter.java |   92 -
 .../apache/jdo/tck/query/NewQueryWithExtent.java   |   87 -
 .../jdo/tck/query/NewQueryWithExtentAndFilter.java |   93 -
 .../NewQueryWithSpecifiedLanguageAndQuery.java     |  111 -
 .../query/NullCollectionsAndContainsMethod.java    |  109 -
 .../jdo/tck/query/NullCollectionsAndIsEmpty.java   |   98 -
 .../jdo/tck/query/OrderingSpecification.java       |  191 -
 .../jdo/tck/query/ParameterBoundToDifferentPM.java |  105 -
 ...eclaredWithSameNameAsFieldOfCandidateClass.java |  151 -
 .../query/ParenthesesMarkOperatorPrecedence.java   |  379 --
 .../tck/query/PrimitiveParameterPassedAsNull.java  |   94 -
 .../apache/jdo/tck/query/QueryIsSerializable.java  |  187 -
 .../tck/query/QueryResultPassedToAnotherQuery.java |  189 -
 .../java/org/apache/jdo/tck/query/QueryTest.java   |  400 --
 .../apache/jdo/tck/query/QueryWithNoFilter.java    |  105 -
 ...ializedQueryInstanceLosesAssociationWithPM.java |  103 -
 .../tck/query/SeparateNamespaceForTypeNames.java   |  111 -
 .../jdo/tck/query/SetCandidateCollection.java      |  107 -
 .../apache/jdo/tck/query/SetCandidateExtent.java   |  105 -
 .../java/org/apache/jdo/tck/query/SetFilter.java   |   98 -
 .../org/apache/jdo/tck/query/SetIgnoreCache.java   |  163 -
 .../java/org/apache/jdo/tck/query/SetOrdering.java |  135 -
 .../jdo/tck/query/SetterReplacePreviousValues.java |  113 -
 .../jdo/tck/query/StartsWithAndEndsWith.java       |  102 -
 .../jdo/tck/query/SupportedCollectionMethods.java  |  124 -
 .../ThisIsReservedWordForElementOfCollection.java  |   86 -
 .../jdo/tck/query/UseOfThisToAcessHiddenField.java |  137 -
 ...eclaredWithSameNameAsFieldOfCandidateClass.java |  104 -
 .../query/WhiteSpaceIsACharacterAndIgnored.java    |  133 -
 .../test/java/org/apache/jdo/tck/query/company.xml |  103 -
 .../jdo/tck/query/operators/BinaryAddition.java    |  125 -
 .../jdo/tck/query/operators/BinarySubtraction.java |  130 -
 .../jdo/tck/query/operators/BitwiseComplement.java |  111 -
 .../jdo/tck/query/operators/BooleanLogicalAND.java |  174 -
 .../jdo/tck/query/operators/BooleanLogicalOR.java  |  178 -
 .../jdo/tck/query/operators/ComparisonTests.java   |  143 -
 .../jdo/tck/query/operators/ConditionalAND.java    |  139 -
 .../jdo/tck/query/operators/ConditionalOR.java     |  139 -
 .../apache/jdo/tck/query/operators/Division.java   |  131 -
 .../apache/jdo/tck/query/operators/Equality.java   | 1287 ------
 ...dComparisonsBetweenDateFieldsAndParameters.java |  129 -
 ...risonsBetweenPrimitivesAndWrapperInstances.java |  111 -
 ...omparisonsBetweenStringFieldsAndParameters.java |  114 -
 .../jdo/tck/query/operators/GreaterThan.java       | 1194 -----
 .../tck/query/operators/GreaterThanOrEqual.java    | 1200 -----
 .../apache/jdo/tck/query/operators/LessThan.java   | 1200 -----
 .../jdo/tck/query/operators/LessThanOrEqual.java   | 1206 -----
 .../jdo/tck/query/operators/LogicalComplement.java |  108 -
 .../jdo/tck/query/operators/Multiplication.java    |  122 -
 .../apache/jdo/tck/query/operators/NotEquals.java  | 1282 ------
 .../operators/PromotionOfNumericOperands.java      |  106 -
 .../jdo/tck/query/operators/SignInversion.java     |  127 -
 .../tck/query/operators/StringConcatenation.java   |  104 -
 .../apache/jdo/tck/query/operators/UnaryPlus.java  |   93 -
 .../AfterCompletionMethodCalledWhenCommitted.java  |  128 -
 .../AfterCompletionMethodCalledWhenRolledback.java |  128 -
 .../transactions/BeforeCompletionMethodCalled.java |  119 -
 ...oreCompletionMethodNotCalledBeforeRollback.java |  114 -
 .../org/apache/jdo/tck/transactions/Commit.java    |  143 -
 .../apache/jdo/tck/transactions/GetOptimistic.java |  112 -
 .../tck/transactions/GetPersistenceManager.java    |   92 -
 .../jdo/tck/transactions/GetRetainValues.java      |  103 -
 .../jdo/tck/transactions/GetSynchronization.java   |  126 -
 .../org/apache/jdo/tck/transactions/IsActive.java  |  101 -
 .../IsActiveUntilAfterCompletionMethodCalled.java  |  128 -
 .../org/apache/jdo/tck/transactions/Rollback.java  |  154 -
 .../tck/transactions/SetNontransactionalRead.java  |  155 -
 ...ntransactionalReadCalledDuringTxCompletion.java |  144 -
 ...etNontransactionalReadTrueWhenNotSupported.java |   94 -
 ...transactionalWriteCalledDuringTxCompletion.java |  140 -
 .../apache/jdo/tck/transactions/SetOptimistic.java |   90 -
 .../SetOptimisticCalledDuringTxCompletion.java     |  134 -
 .../SetOptimisticDuringTransaction.java            |  107 -
 .../SetOptimisticTrueWhenNotSupported.java         |   90 -
 .../jdo/tck/transactions/SetRetainValues.java      |   89 -
 .../SetRetainValuesCalledDuringTxCompletion.java   |  137 -
 .../SetRetainValuesTrueWhenNotSupported.java       |   90 -
 .../jdo/tck/transactions/SetSynchronization.java   |  125 -
 .../tck/transactions/SetSynchronizationToNull.java |  104 -
 .../WhenNontransactionalReadIsFalse.java           |  140 -
 .../apache/jdo/tck/util/BatchResultPrinter.java    |  103 -
 .../org/apache/jdo/tck/util/BatchTestRunner.java   |  175 -
 .../org/apache/jdo/tck/util/ClassGenerator.java    |  916 ----
 .../java/org/apache/jdo/tck/util/DeepEquality.java |   67 -
 .../org/apache/jdo/tck/util/EqualityHelper.java    |  340 --
 .../apache/jdo/tck/util/GetSupportedOptions.java   |   43 -
 .../org/apache/jdo/tck/util/JDOJdk14Logger.java    |   93 -
 .../org/apache/jdo/tck/util/SwingTestRunner.java   |  132 -
 .../org/apache/jdo/tck/util/TestListSuite.java     |  165 -
 .../java/org/apache/jdo/tck/util/TestSelector.java |  284 --
 .../jdo/tck/util/ThreadExceptionHandler.java       |   63 -
 .../apache/jdo/tck/pc/company/jdoTest.properties   |   98 -
 .../org/apache/jdo/tck/pc/company/package.jdo      |  104 -
 .../org/apache/jdo/tck/pc/fieldtypes/AllTypes.jdo  |   10 -
 .../jdo/tck/pc/fieldtypes/ArrayCollections.jdo     |  122 -
 .../jdo/tck/pc/fieldtypes/ArrayListCollections.jdo |  178 -
 .../tck/pc/fieldtypes/CollectionCollections.jdo    |  178 -
 .../jdo/tck/pc/fieldtypes/FieldsOfBigDecimal.jdo   |  202 -
 .../jdo/tck/pc/fieldtypes/FieldsOfBigInteger.jdo   |  202 -
 .../jdo/tck/pc/fieldtypes/FieldsOfBoolean.jdo      |  202 -
 .../apache/jdo/tck/pc/fieldtypes/FieldsOfByte.jdo  |  202 -
 .../jdo/tck/pc/fieldtypes/FieldsOfCharacter.jdo    |  202 -
 .../apache/jdo/tck/pc/fieldtypes/FieldsOfDate.jdo  |  202 -
 .../jdo/tck/pc/fieldtypes/FieldsOfDouble.jdo       |  202 -
 .../apache/jdo/tck/pc/fieldtypes/FieldsOfFloat.jdo |  202 -
 .../jdo/tck/pc/fieldtypes/FieldsOfInteger.jdo      |  202 -
 .../jdo/tck/pc/fieldtypes/FieldsOfLocale.jdo       |  202 -
 .../apache/jdo/tck/pc/fieldtypes/FieldsOfLong.jdo  |  202 -
 .../jdo/tck/pc/fieldtypes/FieldsOfObject.jdo       |  202 -
 .../tck/pc/fieldtypes/FieldsOfPrimitiveboolean.jdo |  202 -
 .../tck/pc/fieldtypes/FieldsOfPrimitivebyte.jdo    |  202 -
 .../tck/pc/fieldtypes/FieldsOfPrimitivechar.jdo    |  202 -
 .../tck/pc/fieldtypes/FieldsOfPrimitivedouble.jdo  |  202 -
 .../tck/pc/fieldtypes/FieldsOfPrimitivefloat.jdo   |  202 -
 .../jdo/tck/pc/fieldtypes/FieldsOfPrimitiveint.jdo |  202 -
 .../tck/pc/fieldtypes/FieldsOfPrimitivelong.jdo    |  202 -
 .../tck/pc/fieldtypes/FieldsOfPrimitiveshort.jdo   |  202 -
 .../apache/jdo/tck/pc/fieldtypes/FieldsOfShort.jdo |  202 -
 .../jdo/tck/pc/fieldtypes/FieldsOfSimpleClass.jdo  |  202 -
 .../tck/pc/fieldtypes/FieldsOfSimpleInterface.jdo  |  202 -
 .../jdo/tck/pc/fieldtypes/FieldsOfString.jdo       |  202 -
 .../pc/fieldtypes/HashMapStringKeyCollections.jdo  |  514 ---
 .../fieldtypes/HashMapStringValueCollections.jdo   |  478 --
 .../jdo/tck/pc/fieldtypes/HashSetCollections.jdo   |  178 -
 .../fieldtypes/HashtableStringKeyCollections.jdo   |  514 ---
 .../fieldtypes/HashtableStringValueCollections.jdo |  478 --
 .../tck/pc/fieldtypes/LinkedListCollections.jdo    |  178 -
 .../jdo/tck/pc/fieldtypes/ListCollections.jdo      |  178 -
 .../tck/pc/fieldtypes/MapStringKeyCollections.jdo  |  514 ---
 .../pc/fieldtypes/MapStringValueCollections.jdo    |  478 --
 .../jdo/tck/pc/fieldtypes/SetCollections.jdo       |  178 -
 .../apache/jdo/tck/pc/fieldtypes/SimpleClass.jdo   |   10 -
 .../pc/fieldtypes/TreeMapStringKeyCollections.jdo  |  514 ---
 .../fieldtypes/TreeMapStringValueCollections.jdo   |  478 --
 .../jdo/tck/pc/fieldtypes/TreeSetCollections.jdo   |  166 -
 .../jdo/tck/pc/fieldtypes/VectorCollections.jdo    |  178 -
 .../jdo/tck/pc/inheritance/jdoTest.properties      |  101 -
 .../org/apache/jdo/tck/pc/inheritance/package.jdo  |  133 -
 .../tck/pc/instancecallbacks/jdoTest.properties    |   49 -
 .../jdo/tck/pc/instancecallbacks/package.jdo       |   26 -
 .../jdo/tck/pc/lifecycle/StateTransitionObj.jdo    |    9 -
 .../org/apache/jdo/tck/pc/mylib/package.jdo        |   63 -
 .../apache/jdo/tck/pc/company/jdoTest.properties   |   98 -
 .../org/apache/jdo/tck/pc/company/package.jdo      |   71 -
 .../org/apache/jdo/tck/pc/fieldtypes/AllTypes.jdo  |    7 -
 .../jdo/tck/pc/fieldtypes/ArrayCollections.jdo     |  120 -
 .../jdo/tck/pc/fieldtypes/ArrayListCollections.jdo |  176 -
 .../tck/pc/fieldtypes/CollectionCollections.jdo    |  176 -
 .../jdo/tck/pc/fieldtypes/FieldsOfBigDecimal.jdo   |  200 -
 .../jdo/tck/pc/fieldtypes/FieldsOfBigInteger.jdo   |  200 -
 .../jdo/tck/pc/fieldtypes/FieldsOfBoolean.jdo      |  200 -
 .../apache/jdo/tck/pc/fieldtypes/FieldsOfByte.jdo  |  200 -
 .../jdo/tck/pc/fieldtypes/FieldsOfCharacter.jdo    |  200 -
 .../apache/jdo/tck/pc/fieldtypes/FieldsOfDate.jdo  |  200 -
 .../jdo/tck/pc/fieldtypes/FieldsOfDouble.jdo       |  200 -
 .../apache/jdo/tck/pc/fieldtypes/FieldsOfFloat.jdo |  200 -
 .../jdo/tck/pc/fieldtypes/FieldsOfInteger.jdo      |  200 -
 .../jdo/tck/pc/fieldtypes/FieldsOfLocale.jdo       |  200 -
 .../apache/jdo/tck/pc/fieldtypes/FieldsOfLong.jdo  |  200 -
 .../jdo/tck/pc/fieldtypes/FieldsOfObject.jdo       |  200 -
 .../tck/pc/fieldtypes/FieldsOfPrimitiveboolean.jdo |  200 -
 .../tck/pc/fieldtypes/FieldsOfPrimitivebyte.jdo    |  200 -
 .../tck/pc/fieldtypes/FieldsOfPrimitivechar.jdo    |  200 -
 .../tck/pc/fieldtypes/FieldsOfPrimitivedouble.jdo  |  200 -
 .../tck/pc/fieldtypes/FieldsOfPrimitivefloat.jdo   |  200 -
 .../jdo/tck/pc/fieldtypes/FieldsOfPrimitiveint.jdo |  200 -
 .../tck/pc/fieldtypes/FieldsOfPrimitivelong.jdo    |  200 -
 .../tck/pc/fieldtypes/FieldsOfPrimitiveshort.jdo   |  200 -
 .../apache/jdo/tck/pc/fieldtypes/FieldsOfShort.jdo |  200 -
 .../jdo/tck/pc/fieldtypes/FieldsOfSimpleClass.jdo  |  200 -
 .../tck/pc/fieldtypes/FieldsOfSimpleInterface.jdo  |  200 -
 .../jdo/tck/pc/fieldtypes/FieldsOfString.jdo       |  200 -
 .../pc/fieldtypes/HashMapStringKeyCollections.jdo  |  512 ---
 .../fieldtypes/HashMapStringValueCollections.jdo   |  476 --
 .../jdo/tck/pc/fieldtypes/HashSetCollections.jdo   |  176 -
 .../fieldtypes/HashtableStringKeyCollections.jdo   |  512 ---
 .../fieldtypes/HashtableStringValueCollections.jdo |  476 --
 .../tck/pc/fieldtypes/LinkedListCollections.jdo    |  176 -
 .../jdo/tck/pc/fieldtypes/ListCollections.jdo      |  176 -
 .../tck/pc/fieldtypes/MapStringKeyCollections.jdo  |  512 ---
 .../pc/fieldtypes/MapStringValueCollections.jdo    |  476 --
 .../jdo/tck/pc/fieldtypes/SetCollections.jdo       |  176 -
 .../apache/jdo/tck/pc/fieldtypes/SimpleClass.jdo   |    8 -
 .../pc/fieldtypes/TreeMapStringKeyCollections.jdo  |  512 ---
 .../fieldtypes/TreeMapStringValueCollections.jdo   |  476 --
 .../jdo/tck/pc/fieldtypes/TreeSetCollections.jdo   |  164 -
 .../jdo/tck/pc/fieldtypes/VectorCollections.jdo    |  176 -
 .../jdo/tck/pc/inheritance/jdoTest.properties      |  101 -
 .../org/apache/jdo/tck/pc/inheritance/package.jdo  |  125 -
 .../tck/pc/instancecallbacks/jdoTest.properties    |   49 -
 .../jdo/tck/pc/instancecallbacks/package.jdo       |   22 -
 .../jdo/tck/pc/lifecycle/StateTransitionObj.jdo    |    9 -
 .../org/apache/jdo/tck/pc/mylib/package.jdo        |   57 -
 1878 files changed, 385870 deletions(-)

diff --git a/JDO11.MF b/JDO11.MF
deleted file mode 100644
index df874ce..0000000
--- a/JDO11.MF
+++ /dev/null
@@ -1 +0,0 @@
-Specification-Version: JDO 1.1
diff --git a/api11/LICENSE.txt b/api11/LICENSE.txt
deleted file mode 100644
index d645695..0000000
--- a/api11/LICENSE.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed 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.
diff --git a/api11/maven.xml b/api11/maven.xml
deleted file mode 100644
index c0f77c7..0000000
--- a/api11/maven.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Copyright 2005 The Apache Software Foundation
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    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.
-
--->
-
-<project default="default"
-    xmlns:j="jelly:core"
-    xmlns:ant="jelly:ant"
-    >
-
-    <!-- ==================== -->
-    <!-- Default Global Goals -->
-    <!-- ==================== -->
-
-    <goal name="default">
-        <attainGoal name="jar:install"/>
-    </goal>
-
-    <goal name="build">
-        <attainGoal name="javadoc"/>
-        <attainGoal name="default"/>
-    </goal>
-
-    <goal name="rebuild">
-        <attainGoal name="clean"/>
-        <attainGoal name="build"/>
-    </goal>
-
-    <goal name="clobber">
-        <attainGoal name="clean"/>
-        <delete>
-            <fileset dir="." defaultexcludes="no" includes="**/*~"/>
-        </delete>
-    </goal>
-
-</project>
diff --git a/api11/project.properties b/api11/project.properties
deleted file mode 100644
index 1ab8028..0000000
--- a/api11/project.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-#   Copyright 2005 The Apache Software Foundation
-#
-#   Licensed under the Apache License, Version 2.0 (the "License");
-#   you may not use this file except in compliance with the License.
-#   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.
-#
-
-# Make sure the API classes support J2SE 1.3 applications
-maven.compile.source = 1.3
-maven.compile.target = 1.3
-
-# Manifest seed file
-maven.jar.manifest = ${basedir}/../JDO11.MF
diff --git a/api11/project.xml b/api11/project.xml
deleted file mode 100644
index f0751c9..0000000
--- a/api11/project.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright 2005 The Apache Software Foundation
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    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.
--->
-
-<project>
-    <pomVersion>3</pomVersion>
-    <extend>../project.xml</extend>
-    <!-- ============== -->
-    <!-- Identification -->
-    <!-- ============== -->
-    <name>JDO1 API</name>
-    <groupId>javax.jdo</groupId>
-    <artifactId>jdo1-api</artifactId>
-    <currentVersion>SNAPSHOT</currentVersion>
-    <package>javax.jdo</package>
-    <shortDescription>Java Data Objects (JDO) API</shortDescription>
-    <description>The Java Data Objects (JDO) API is a standard interface-based 
-Java model abstraction of persistence, developed as Java Specification 
-Request 12 under the auspices of the Java Community Process.</description>
-    <repository />
-    <!-- ============ -->
-    <!-- Dependencies -->
-    <!-- ============ -->
-    <dependencies>
-        <dependency>
-            <groupId>geronimo-spec</groupId>
-            <artifactId>geronimo-spec-jta</artifactId>
-            <version>1.0.1B-rc2</version>
-        </dependency>
-    </dependencies>
-    <!-- =================== -->
-    <!-- Build Specification -->
-    <!-- =================== -->
-    <build>
-        <sourceDirectory>src/java</sourceDirectory>
-        <unitTestSourceDirectory>test/java</unitTestSourceDirectory>
-        <!-- Unit test cases -->
-        <unitTest>
-            <includes>
-                <include>**/*Test.java</include>
-            </includes>
-            <excludes>
-                <exclude>javax/jdo/util/AbstractTest.java</exclude>
-                <exclude>javax/jdo/pc/*.java</exclude>
-            </excludes>
-        </unitTest>
-        <!-- J A R  R E S O U R C E S -->
-        <!-- Resources that are packaged up inside the JAR file -->
-        <resources>
-            <resource>
-                <directory>${basedir}/src/java</directory>
-                <includes>
-                    <include>javax/jdo/*.properties</include>
-                </includes>
-            </resource>
-            <resource>
-                <directory>${basedir}/src/dtd</directory>
-                <includes>
-                    <include>javax/jdo/*.dtd</include>
-                </includes>
-            </resource>
-        </resources>
-    </build>
-</project>
-
diff --git a/api11/src/dtd/javax/jdo/jdo.dtd b/api11/src/dtd/javax/jdo/jdo.dtd
deleted file mode 100644
index ededae8..0000000
--- a/api11/src/dtd/javax/jdo/jdo.dtd
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- Copyright 2005 The Apache Software Foundation.
- 
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- 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.
--->
-<!--
-
-This is the DTD defining the Java Data Objects 1.0 metadata.
-
-The metadata must declare all persistence-capable classes. If any 
-field declarations are not provided in the metadata, then field 
-metadata is defaulted for the missing field declarations. 
-Therefore, the JDO implementation is able to determine based on the
-metadata whether a class is persistence-capable or not. 
-Any class not known to be persistence-capable by the JDO 
-specification (for example, java.lang.Integer) and not explicitly 
-named in the metadata is not persistence-capable. 
-
-The metadata associated with each persistence capable class must 
-be contained within a file, and its format is as defined in the DTD. 
-If the metadata is for only one class, then its file name should be 
-<class-name>.jdo. If the metadata is for a package, then its file name 
-should be <package-name>.jdo. For portability, files should be 
-available via resources loaded by the same class loader as the class. 
-These rules apply both to enhancement and to runtime.
-
-The metadata is used both at enhancement time and at runtime. 
-Information required at enhancement time is a subset of the information 
-needed at runtime. 
-
--->
-
-<!NOTATION JDO.1_0 PUBLIC
-          "-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 1.0//EN">
-<!--
-This is the XML DTD for the JDO 1.0 Metadata.
-All JDO 1.0 metadata descriptors must include a DOCTYPE
-of the following form:
-
-  <!DOCTYPE jdo
-    PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 1.0//EN"
-    "http://java.sun.com/dtd/jdo_1_0.dtd">
-
--->
-
-<!ELEMENT jdo ((package)+, (extension)*)>
-
-<!ELEMENT package ((class)+, (extension)*)>
-<!ATTLIST package name CDATA #REQUIRED>
-
-<!ELEMENT class (field|extension)*>
-<!ATTLIST class name CDATA #REQUIRED>
-<!ATTLIST class identity-type (application|datastore|nondurable) #IMPLIED>
-<!ATTLIST class objectid-class CDATA #IMPLIED>
-<!ATTLIST class requires-extent (true|false) 'true'>
-<!ATTLIST class persistence-capable-superclass CDATA #IMPLIED>
-
-<!ELEMENT field ((collection|map|array)?, (extension)*)?>
-<!ATTLIST field name CDATA #REQUIRED>
-<!ATTLIST field persistence-modifier (persistent|transactional|none) #IMPLIED>
-<!ATTLIST field primary-key (true|false) 'false'>
-<!ATTLIST field null-value (exception|default|none) 'none'>
-<!ATTLIST field default-fetch-group (true|false) #IMPLIED>
-<!ATTLIST field embedded (true|false) #IMPLIED>
-
-<!ELEMENT collection (extension)*>
-<!ATTLIST collection element-type CDATA #IMPLIED>
-<!ATTLIST collection embedded-element (true|false) #IMPLIED>
-
-<!ELEMENT map (extension)*>
-<!ATTLIST map key-type CDATA #IMPLIED>
-<!ATTLIST map embedded-key (true|false) #IMPLIED>
-<!ATTLIST map value-type CDATA #IMPLIED>
-<!ATTLIST map embedded-value (true|false) #IMPLIED>
-
-<!ELEMENT array (extension)*>
-<!ATTLIST array embedded-element (true|false) #IMPLIED>
-
-<!ELEMENT extension (extension)*>
-<!ATTLIST extension vendor-name CDATA #REQUIRED>
-<!ATTLIST extension key CDATA #IMPLIED>
-<!ATTLIST extension value CDATA #IMPLIED>
-
diff --git a/api11/src/java/javax/jdo/Bundle.properties b/api11/src/java/javax/jdo/Bundle.properties
deleted file mode 100644
index 8199752..0000000
--- a/api11/src/java/javax/jdo/Bundle.properties
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# Copyright 2005 The Apache Software Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# 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.
-
-# ResourceBundle properties file for JDO
-ERR_AbstractClassNoIdentity=Abstract class {0} does not implement key field helper methods
-ERR_CannotInitCause=The initCause method cannot be used. To set the cause of this exception, \
-use a constructor with a Throwable[] argument.
-ERR_StateManagerClassCast=An element of the parameter collection is of class {0}.  \
-The parameter collection must contain only elements that are instances of java.lang.Class.
-ERR_NoMetadata=No metadata has been registered for class {0}.
-ERR_NoSuchMethod=Method getPersistenceManagerFactory(Properties) does not exist or is not public
-ERR_UnexpectedException=Unexpected exception caught
-EXC_ClassNotFound=Class {0} was not found
-EXC_IllegalAccess=Illegal Access for class {0} 
-EXC_NoClassNameProperty=A property named PersistenceManagerFactoryClass must be specified.
-EXC_getPersistenceManagerFactory=Exception thrown by getPersistenceManagerFactory(Properties)
-MSG_FailedObject=FailedObject:
-MSG_NestedThrowables=NestedThrowables:
-MSG_NestedThrowablesStackTrace=NestedThrowablesStackTrace:
-MSG_ExceptionGettingFailedToString=Exception getting failed.toString(): ''{0}''.
-MSG_ExceptionGettingFailedToStringObjectId=Exception getting failed.toString(): ''{0}''. ObjectId of failed instance: ''{1}''. 
-ERR_NullClass=JDO implementation error: the parameter class object must not be null.
diff --git a/api11/src/java/javax/jdo/Extent.java b/api11/src/java/javax/jdo/Extent.java
deleted file mode 100644
index 08685a7..0000000
--- a/api11/src/java/javax/jdo/Extent.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * Extent.java
- *
- * Created on December 8, 2000, 3:06 PM
- */
-
-package javax.jdo;
-
-import java.util.Iterator;
-
-/** Instances of the <code>Extent</code> class represent the entire collection
- * of instances in the data store of the candidate class
- * possibly including its subclasses.
- * <P>The <code>Extent</code> instance has two possible uses:
- * <ol>
- * <li>to iterate all instances of a particular class 
- * <li>to execute a <code>Query</code> in the data store over all instances
- * of a particular class
- * </ol>
- * @author Craig Russell
- * @version 1.0
- */
-public interface Extent {
-        
-    /** Returns an iterator over all the instances in the <code>Extent</code>.
-     * The behavior of the returned iterator might depend on the setting of the
-     * <code>ignoreCache</code> flag in the owning <code>PersistenceManager</code>.
-     * @return an iterator over all instances in the <code>Extent</code>
-     */
-    Iterator iterator();
-
-    /** Returns whether this <code>Extent</code> was defined to contain subclasses.
-     * @return true if this <code>Extent</code> was defined to contain instances
-     * that are of a subclass type.
-     */    
-    boolean hasSubclasses();
-
-    /** An <code>Extent</code> contains all instances of a particular class in the data
-     * store; this method returns the <code>Class</code> of the instances.
-      * @return the <code>Class</code> of instances of this <code>Extent</code>.
-      */
-    Class getCandidateClass();
-
-    /** An <code>Extent</code> is managed by a <code>PersistenceManager</code>;
-     * this method gives access to the owning <code>PersistenceManager</code>.
-     * @return the owning <code>PersistenceManager</code>
-     */
-    PersistenceManager getPersistenceManager();
-    
-    /** Close all <code>Iterator</code>s associated with this <code>Extent</code> instance.
-     * <code>Iterator</code>s closed by this method will return <code>false</code>
-     * to <code>hasNext()</code> and will throw
-     * <code>NoSuchElementException</code> on <code>next()</code>.
-     * The <code>Extent</code> instance can still be used
-     * as a parameter of <code>Query.setExtent</code>, and to get an <code>Iterator</code>.
-     */    
-    void closeAll ();
-    
-    /** Close an <code>Iterator</code> associated with this <code>Extent</code> instance.
-     * <code>Iterator</code>s closed by this method will return <code>false</code>
-     * to <code>hasNext()</code> and will throw <code>NoSuchElementException</code>
-     * on <code>next()</code>. The <code>Extent</code> instance can still be used
-     * as a parameter of <code>Query.setExtent</code>, and to get an <code>Iterator</code>.
-     * @param it an <code>Iterator</code> obtained by the method
-     * <code>iterator()</code> on this <code>Extent</code> instance.
-     */    
-    void close (Iterator it);
-}
-
diff --git a/api11/src/java/javax/jdo/InstanceCallbacks.java b/api11/src/java/javax/jdo/InstanceCallbacks.java
deleted file mode 100644
index 0bebc75..0000000
--- a/api11/src/java/javax/jdo/InstanceCallbacks.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * InstanceCallbacks.java
- *
- * Created on February 25, 2000
- */
- 
-package javax.jdo;
-
-/** A <code>PersistenceCapable</code> class that provides callback methods for life
- * cycle events implements this interface.
- *
- * <P>Classes which include non-persistent fields whose values depend
- * on the values of persistent fields require callbacks on specific
- * JDO instance life cycle events in order to correctly populate the
- * values in these fields.
- *
- * <P>This interface defines the methods executed
- * by the <code>PersistenceManager</code> for these life cycle events.  If the class
- * implements <code>InstanceCallbacks</code>, it must explicitly declare it in the
- * class definition.  
- *
- * <P>The callbacks might also be used if the persistent instances
- * need to be put into the runtime infrastructure of the application.
- * For example, a persistent instance might notify other instances
- * on changes to state.  The persistent instance is in a list of
- * managed instances, and when the persistent instance is made hollow,
- * it can no longer generate change events, and the persistent
- * instance should be removed from the list of managed instances.
- *
- * <P>To implement this, the application programmer would implement
- * the <code>jdoPostLoad</code> callback to put itself into the list of managed
- * instances; and implement the <code>jdoPreClear</code> to remove itself from
- * the list.
- *
- * <P>Note that JDO does not manage the state of non-persistent
- * fields, and when a JDO instance transitions to hollow, JDO clears
- * the persistent fields.  It is the programmer's responsibility to
- * clear non-persistent fields so that garbage collection of
- * referred instances can occur.
- *
- * @author Craig Russell
- * @version 1.0
- */
-public interface InstanceCallbacks 
-{
-    /**
-     * Called after the values are loaded from the data store into
-     * this instance.
-     *
-     * <P>This method is not modified by the Reference Enhancer.
-     * <P>Derived fields should be initialized in this method.
-     * The context in which this call is made does not allow access to 
-     * other persistent JDO instances.
-     */
-    void jdoPostLoad();
-
-    /**
-     * Called before the values are stored from this instance to the
-     * data store.
-     *
-     * <P>Data store fields that might have been affected by modified
-     * non-persistent fields should be updated in this method.
-     *
-     * <P>This method is modified by the enhancer so that changes to 
-     * persistent fields will be reflected in the data store. 
-     * The context in which this call is made allows access to the 
-     * <code>PersistenceManager</code> and other persistent JDO instances.
-     */
-    void jdoPreStore();
-
-    /**
-     * Called before the values in the instance are cleared.
-     *
-     * <P>Transient fields should be cleared in this method.  
-     * Associations between this
-     * instance and others in the runtime environment should be cleared.
-     *
-     * <P>This method is not modified by the enhancer.
-     */
-    void jdoPreClear();
-
-    /**
-     * Called before the instance is deleted.
-     * This method is called before the state transition to persistent-deleted 
-     * or persistent-new-deleted. Access to field values within this call 
-     * are valid. Access to field values after this call are disallowed. 
-     * <P>This method is modified by the enhancer so that fields referenced 
-     * can be used in the business logic of the method.
-     */
-    void jdoPreDelete();
-}
diff --git a/api11/src/java/javax/jdo/JDOCanRetryException.java b/api11/src/java/javax/jdo/JDOCanRetryException.java
deleted file mode 100644
index be96789..0000000
--- a/api11/src/java/javax/jdo/JDOCanRetryException.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOCanRetryException.java
- *
- * Created on March 8, 2000, 8:32 AM
- */
-
-package javax.jdo;
-
-/** This is the base class for exceptions that can be retried.
- *
- * @author  Craig Russell
- * @version 1.0
- */
-public class JDOCanRetryException extends JDOException {
-
-  /**
-   * Constructs a new <code>JDOCanRetryException</code> without a detail message.
-   */
-  public JDOCanRetryException() {
-  }
-  
-
-  /**
-   * Constructs a new <code>JDOCanRetryException</code> with the specified detail message.
-   * @param msg the detail message.
-   */
-  public JDOCanRetryException(String msg) {
-    super(msg);
-  }
-
-  /**
-   * Constructs a new <code>JDOCanRetryException</code> with the specified detail
-   * message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDOCanRetryException(String msg, Throwable[] nested) {
-    super(msg, nested);
-  }
-  
-  /**
-   * Constructs a new <code>JDOCanRetryException</code> with the specified detail
-   * message and nested <code>Throwable<code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   */
-  public JDOCanRetryException(String msg, Throwable nested) {
-    super(msg, nested);
-  }
-  
-  /** Constructs a new <code>JDOCanRetryException</code> with the specified detail message
-   * and failed object.
-   * @param msg the detail message.
-   * @param failed the failed object.
-   */
-  public JDOCanRetryException(String msg, Object failed) {
-    super(msg, failed);
-  }
-  
-  /** Constructs a new <code>JDOCanRetryException</code> with the specified detail message,
-   * nested <code>Throwable</code>s, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   * @param failed the failed object.
-   */
-  public JDOCanRetryException(String msg, Throwable[] nested, Object failed) {
-    super(msg, nested, failed);
-    
-  }
-  /** Constructs a new <code>JDOCanRetryException</code> with the specified detail message,
-   * nested <code>Throwable</code>s, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   * @param failed the failed object.
-   */
-  public JDOCanRetryException(String msg, Throwable nested, Object failed) {
-    super(msg, nested, failed);
-  }
-}
-
diff --git a/api11/src/java/javax/jdo/JDODataStoreException.java b/api11/src/java/javax/jdo/JDODataStoreException.java
deleted file mode 100644
index 94c4252..0000000
--- a/api11/src/java/javax/jdo/JDODataStoreException.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDODataStoreException.java
- *
- * Created on March 8, 2000, 8:37 AM
- */
-
-package javax.jdo;
-
-/** This class represents data store exceptions that can be retried.
- *
- * @author  Craig Russell
- * @version 1.0
- */
-public class JDODataStoreException extends JDOCanRetryException {
-
-  /**
-   * Constructs a new <code>JDODataStoreException</code> without a detail message.
-   */
-  public JDODataStoreException() {
-  }
-  
-
-  /**
-   * Constructs a new <code>JDODataStoreException</code> with the specified detail message.
-   * @param msg the detail message.
-   */
-  public JDODataStoreException(String msg) {
-    super(msg);
-  }
-
-  /**
-   * Constructs a new <code>JDODataStoreException</code> with the specified 
-   * detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDODataStoreException(String msg, Throwable[] nested) {
-    super(msg, nested);
-  }
-
-  /**
-   * Constructs a new <code>JDODataStoreException</code> with the specified 
-   * detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   */
-  public JDODataStoreException(String msg, Throwable nested) {
-    super(msg, nested);
-  }
-
-  /** Constructs a new <code>JDODataStoreException</code> with the specified detail message
-   * and failed object.
-   * @param msg the detail message.
-   * @param failed the failed object.
-   */
-  public JDODataStoreException(String msg, Object failed) {
-    super(msg, failed);
-  }
- 
-  /** Constructs a new <code>JDODataStoreException</code> with the specified detail message,
-   * nested <code>Throwable</code>s, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   * @param failed the failed object.
-   */
-  public JDODataStoreException(String msg, Throwable[] nested, Object failed) {
-    super(msg, nested, failed);
-  }
-
-  /** Constructs a new <code>JDODataStoreException</code> with the specified detail message,
-   * nested <code>Throwable</code>s, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   * @param failed the failed object.
-   */
-  public JDODataStoreException(String msg, Throwable nested, Object failed) {
-    super(msg, nested, failed);
-  }
-
-}
-
diff --git a/api11/src/java/javax/jdo/JDOException.java b/api11/src/java/javax/jdo/JDOException.java
deleted file mode 100644
index 47267b8..0000000
--- a/api11/src/java/javax/jdo/JDOException.java
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOException.java
- *
- * Created on March 8, 2000, 8:29 AM
- */
-
-package javax.jdo;
-
-import javax.jdo.spi.I18NHelper;
-
-/** This is the root of all JDO Exceptions.  It contains an optional detail
- * message, an optional nested <code>Throwable</code> array and an optional failed object.
- * @author Craig Russell
- * @version 1.0.2
- */
-public class JDOException extends java.lang.RuntimeException {
-  
-  /** This exception was generated because of an exception in the runtime library.
-   * @serial the nested <code>Throwable</code> array
-   */
-  Throwable[] nested;
-  
-  /** This exception may be the result of incorrect parameters supplied
-   * to an API.  This is the object from which the user can determine
-   * the cause of the problem.
-   * @serial the failed <code>Object</code>
-   */
-  Object failed;
-
-    /** The Internationalization message helper.
-     */
-    private static I18NHelper msg = I18NHelper.getInstance ("javax.jdo.Bundle"); //NOI18N
-
-    /** Flag indicating whether printStackTrace is being executed.
-     */
-    private boolean inPrintStackTrace = false;
-    
-  /**
-   * Constructs a new <code>JDOException</code> without a detail message.
-   */
-  public JDOException() {
-  }
-  
-
-  /**
-   * Constructs a new <code>JDOException</code> with the specified detail message.
-   * @param msg the detail message.
-   */
-  public JDOException(String msg) {
-    super(msg);
-  }
-
-  /** Constructs a new <code>JDOException</code> with the specified detail message
-   * and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDOException(String msg, Throwable[] nested) {
-    super(msg);
-    this.nested = nested;
-  }
-  
-  /** Constructs a new <code>JDOException</code> with the specified detail message
-   * and nested <code>Throwable</code>.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   */
-  public JDOException(String msg, Throwable nested) {
-    super(msg);
-    this.nested = new Throwable[] {nested};
-  }
-  
-  /** Constructs a new <code>JDOException</code> with the specified detail message
-   * and failed object.
-   * @param msg the detail message.
-   * @param failed the failed object.
-   */
-  public JDOException(String msg, Object failed) {
-    super(msg);
-    this.failed = failed;
-  }
-  
-  /** Constructs a new <code>JDOException</code> with the specified detail message,
-   * nested <code>Throwable</code>s, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   * @param failed the failed object.
-   */
-  public JDOException(String msg, Throwable[] nested, Object failed) {
-    super(msg);
-    this.nested = nested;
-    this.failed = failed;
-  }
-  
-  /** Constructs a new <code>JDOException</code> with the specified detail message,
-   * nested <code>Throwable</code>, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   * @param failed the failed object.
-   */
-  public JDOException(String msg, Throwable nested, Object failed) {
-    super(msg);
-    this.nested = new Throwable[] {nested};
-    this.failed = failed;
-  }
-  
-  /** The exception may include a failed object.
-   * @return the failed object.
-   */
-  public Object getFailedObject() {
-    return failed;
-  }
-  
-  /** The exception may have been caused by multiple exceptions in the runtime.
-   * If multiple objects caused the problem, each failed object will have
-   * its own <code>Exception</code>.
-   * @return the nested Throwable array.
-   */
-  public Throwable[] getNestedExceptions() {
-    return nested;
-  }
-  
-  /** Often there is only one nested exception, and this method returns it.
-   * If there are more than one, then this method returns the first nested
-   * exception. If there is no nested exception, then null is returned.
-   * @return the first or only nested Throwable.
-   * @since 1.0.1
-   */
-  public synchronized Throwable getCause() {
-      // super.printStackTrace calls getCause to handle the cause. 
-      // Returning null prevents the superclass from handling the cause;
-      // instead the local implementation of printStackTrace should
-      // handle the cause. Otherwise, the cause is printed twice.
-      if (nested == null || nested.length == 0 || inPrintStackTrace) {
-          return null;
-      } else {
-          return nested[0];
-      }
-  }
-  
-  /** JDK 1.4 includes a new chaining mechanism for Throwable, but since
-   * JDO has its own "legacy" chaining mechanism, the "standard" mechanism
-   * cannot be used. This method always throws a JDOFatalInternalException.
-   * @param cause ignored.
-   * @return never.
-   */
-  public Throwable initCause(Throwable cause) {
-      throw new JDOFatalInternalException(msg.msg("ERR_CannotInitCause"));
-  }
-  
-  /** The <code>String</code> representation includes the name of the class,
-   * the descriptive comment (if any),
-   * the <code>String</code> representation of the failed <code>Object</code> (if any),
-   * and the <code>String</code> representation of the nested <code>Throwable</code>s (if any).
-   * @return the <code>String</code>.
-   */
-  public synchronized String toString() {
-    int len = nested==null?0:nested.length;
-    // calculate approximate size of the String to return
-    StringBuffer sb = new StringBuffer (10 + 100 * len);
-    sb.append (super.toString());
-    // include failed object information
-    if (failed != null) {
-        sb.append ("\n").append (msg.msg ("MSG_FailedObject"));
-      String failedToString = null;
-      try {
-          failedToString = failed.toString();
-      } catch (Exception ex) {
-          // include the information from the exception thrown by failed.toString
-          Object objectId = JDOHelper.getObjectId(failed);
-          if (objectId == null) {
-              failedToString = msg.msg("MSG_ExceptionGettingFailedToString", //NOI18N
-                                       exceptionToString(ex));
-          }
-          else {
-              // include the ObjectId information
-              String objectIdToString = null;
-              try {
-                  objectIdToString = objectId.toString();
-              }
-              catch (Exception ex2) {
-                  objectIdToString = exceptionToString(ex2);
-              }
-              failedToString = msg.msg("MSG_ExceptionGettingFailedToStringObjectId", //NOI18N
-                                       exceptionToString(ex), objectIdToString);
-          }
-      }
-      sb.append (failedToString);
-    }
-    // include nested Throwable information, but only if not called by
-    // printStackTrace; the stacktrace will include the cause anyway.
-    if (len > 0 && !inPrintStackTrace) {
-      sb.append ("\n").append (msg.msg ("MSG_NestedThrowables")).append ("\n");
-      Throwable exception = nested[0];
-      sb.append (exception==null?"null":exception.toString()); //NOI18N
-      for (int i=1; i<len; ++i) {
-        sb.append ("\n"); //NOI18N
-        exception = nested[i];
-      sb.append (exception==null?"null":exception.toString()); //NOI18N
-      }
-    }
-    return sb.toString();
-  }    
-  
-    /**
-     * Prints this <code>JDOException</code> and its backtrace to the 
-     * standard error output.
-     * Print nested Throwables' stack trace as well.
-     */
-    public void printStackTrace() { 
-        printStackTrace (System.err);
-    }
-
-    /**
-     * Prints this <code>JDOException</code> and its backtrace to the 
-     * specified print stream.
-     * Print nested Throwables' stack trace as well.
-     * @param s <code>PrintStream</code> to use for output
-     */
-    public synchronized void printStackTrace(java.io.PrintStream s) { 
-    int len = nested==null?0:nested.length;
-        synchronized (s) {
-            inPrintStackTrace = true;
-            super.printStackTrace(s);
-            if (len > 0) {
-                s.println (msg.msg ("MSG_NestedThrowablesStackTrace"));
-                for (int i=0; i<len; ++i) {
-                    Throwable exception = nested[i];
-                    if (exception != null) {
-                        exception.printStackTrace(s);
-                    }
-                }
-            }
-            inPrintStackTrace = false;
-        }
-    }
-
-    /**
-     * Prints this <code>JDOException</code> and its backtrace to the specified
-     * print writer.
-     * Print nested Throwables' stack trace as well.
-     * @param s <code>PrintWriter</code> to use for output
-     */
-    public synchronized void printStackTrace(java.io.PrintWriter s) { 
-    int len = nested==null?0:nested.length;
-        synchronized (s) {
-            inPrintStackTrace = true;
-            super.printStackTrace(s);
-            if (len > 0) {
-                s.println (msg.msg ("MSG_NestedThrowablesStackTrace"));
-                for (int i=0; i<len; ++i) {
-                    Throwable exception = nested[i];
-                    if (exception != null) {
-                        exception.printStackTrace(s);
-                    }
-                }
-            }
-            inPrintStackTrace = false;
-        }
-    }
-
-    /**
-     * Helper method returning a short description of the exception passed
-     * as an argument. The returned string has the format defined by
-     * Throwable.toString. If the exception has a non-null detail message 
-     * string, then it returns the name of exception class concatenated
-     * with ": " concatenated with the detailed message. Otherwise it
-     * returns the name of exception class.
-     * @param ex the exception to be represented.
-     * @return a string representation of the exception passed as an argument.
-     */
-    private static String exceptionToString(Exception ex)
-    {
-        if (ex == null) return null;
-        String s = ex.getClass().getName();
-        String message = ex.getMessage();
-        return (message != null) ? (s + ": " + message) : s;
-    }
-}
-
diff --git a/api11/src/java/javax/jdo/JDOFatalDataStoreException.java b/api11/src/java/javax/jdo/JDOFatalDataStoreException.java
deleted file mode 100644
index 367160b..0000000
--- a/api11/src/java/javax/jdo/JDOFatalDataStoreException.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOFatalDataStoreException.java
- *
- * Created on March 8, 2000, 8:36 AM
- */
-
-package javax.jdo;
-
-/** This class represents data store exceptions that cannot be retried.
- *
- * @author  Craig Russell
- * @version 1.0.1
- */
-public class JDOFatalDataStoreException extends JDOFatalException {
-
-  /**
-   * Constructs a new <code>JDOFatalDataStoreException</code> without a detail message.
-   */
-  public JDOFatalDataStoreException() {
-  }
-  
-
-  /**
-   * Constructs a new <code>JDOFatalDataStoreException</code> with the specified detail message.
-   * @param msg the detail message.
-   */
-  public JDOFatalDataStoreException(String msg) {
-    super(msg);
-  }
-
-  /** Constructs a new <code>JDOFatalDataStoreException</code> with the specified detail message
-   * and failed object.
-   * @param msg the detail message.
-   * @param failed the failed object.
-   */
-  public JDOFatalDataStoreException(String msg, Object failed) {
-    super(msg, failed);
-  }
-  
-  /**
-   * Constructs a new <code>JDOFatalDataStoreException</code> with the specified
-   * detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDOFatalDataStoreException(String msg, Throwable[] nested) {
-    super(msg, nested);
-  }
-
-  /**
-   * Constructs a new <code>JDOFatalDataStoreException</code> with the specified
-   * detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   */
-  public JDOFatalDataStoreException(String msg, Throwable nested) {
-    super(msg, nested);
-  }
-}
-
diff --git a/api11/src/java/javax/jdo/JDOFatalException.java b/api11/src/java/javax/jdo/JDOFatalException.java
deleted file mode 100644
index 885578e..0000000
--- a/api11/src/java/javax/jdo/JDOFatalException.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOFatalException.java
- *
- * Created on March 8, 2000, 8:32 AM
- */
-
-package javax.jdo;
-
-/** This class represents exceptions that are fatal; that is, the condition
- * that caused it cannot be bypassed even if the operation is retried.
- *
- * @author  Craig Russell
- * @version 1.0
- */
-public class JDOFatalException extends JDOException {
-
-  /**
-   * Constructs a new <code>JDOFatalException</code> without a detail message.
-   */
-  public JDOFatalException() {
-  }
-  
-
-  /**
-   * Constructs a new <code>JDOFatalException</code> with the specified detail message.
-   * @param msg the detail message.
-   */
-  public JDOFatalException(String msg) {
-    super(msg);
-  }
-
-  /**
-   * Constructs a new <code>JDOFatalException</code> with the specified detail
-   * message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDOFatalException(String msg, Throwable[] nested) {
-    super(msg, nested);
-  }
-  
-  /**
-   * Constructs a new <code>JDOFatalException</code> with the specified detail
-   * message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   */
-  public JDOFatalException(String msg, Throwable nested) {
-    super(msg, nested);
-  }
-  
-  /** Constructs a new <code>JDOFatalException</code> with the specified detail message
-   * and failed object.
-   * @param msg the detail message.
-   * @param failed the failed object.
-   */
-  public JDOFatalException(String msg, Object failed) {
-    super(msg, failed);
-  }
-  
-  /** Constructs a new <code>JDOFatalException</code> with the specified detail message,
-   * nested <code>Throwable</code>s, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   * @param failed the failed object.
-   */
-  public JDOFatalException(String msg, Throwable[] nested, Object failed) {
-    super(msg, nested, failed);
-    
-  }
-  /** Constructs a new <code>JDOFatalException</code> with the specified detail message,
-   * nested <code>Throwable</code>s, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   * @param failed the failed object.
-   */
-  public JDOFatalException(String msg, Throwable nested, Object failed) {
-    super(msg, nested, failed);
-  }
-}
-
diff --git a/api11/src/java/javax/jdo/JDOFatalInternalException.java b/api11/src/java/javax/jdo/JDOFatalInternalException.java
deleted file mode 100644
index e20682f..0000000
--- a/api11/src/java/javax/jdo/JDOFatalInternalException.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOFatalInternalException.java
- *
- * Created on March 8, 2000, 8:35 AM
- */
-
-package javax.jdo;
-
-/** This class represents errors in the implementation for which no user
- * error handling is possible.  The error should be reported to the JDO
- * vendor for corrective action.
- *
- * @author  Craig Russell
- * @version 1.0
- */
-public class JDOFatalInternalException extends JDOFatalException {
-
-  /**
-   * Constructs a new <code>JDOFatalInternalException</code> without a detail message.
-   */
-  public JDOFatalInternalException() {
-  }
-  
-
-  /**
-   * Constructs a new <code>JDOFatalInternalException</code> with the specified detail message.
-   * @param msg the detail message.
-   */
-  public JDOFatalInternalException(String msg) {
-    super(msg);
-  }
-
-  /**
-   * Constructs a new <code>JDOFatalInternalException</code> with the specified
-   * detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDOFatalInternalException(String msg, Throwable[] nested) {
-    super(msg, nested);
-  }
-
-  /**
-   * Constructs a new <code>JDOFatalInternalException</code> with the specified
-   * detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   */
-  public JDOFatalInternalException(String msg, Throwable nested) {
-    super(msg, nested);
-  }
-}
-
diff --git a/api11/src/java/javax/jdo/JDOFatalUserException.java b/api11/src/java/javax/jdo/JDOFatalUserException.java
deleted file mode 100644
index 3dc82f6..0000000
--- a/api11/src/java/javax/jdo/JDOFatalUserException.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOUserException.java
- *
- * Created on March 8, 2000, 8:33 AM
- */
-
-package javax.jdo;
-
-/** This class represents user errors that cannot be retried.  
- *
- * @author  Craig Russell
- * @version 1.0
- */
-public class JDOFatalUserException extends JDOFatalException {
-
-  /**
-   * Constructs a new <code>JDOFatalUserException</code> without a detail message.
-   */
-  public JDOFatalUserException() {
-  }
-  
-
-  /**
-   * Constructs a new <code>JDOFatalUserException</code> with the specified detail message.
-   * @param msg the detail message.
-   */
-  public JDOFatalUserException(String msg) {
-    super(msg);
-  }
-
-  /**
-   * Constructs a new <code>JDOFatalUserException</code> with the specified
-   * detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDOFatalUserException(String msg, Throwable[] nested) {
-    super(msg, nested);
-  }
-  
-  /**
-   * Constructs a new <code>JDOFatalUserException</code> with the specified
-   * detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   */
-  public JDOFatalUserException(String msg, Throwable nested) {
-    super(msg, nested);
-  }
-  
-  /** Constructs a new <code>JDOFatalUserException</code> with the specified
-   * detail message and failed object.
-   * @param msg the detail message.
-   * @param failed the failed object.
-   */
-  public JDOFatalUserException(String msg, Object failed) {
-    super(msg, failed);
-  }
-  
-  /** Constructs a new <code>JDOFatalUserException</code> with the specified
-   * detail message, nested <code>Throwable</code>s, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   * @param failed the failed object.
-   */
-  public JDOFatalUserException(String msg, Throwable[] nested, Object failed) {
-    super(msg, nested, failed);
-  }
-  
-  /** Constructs a new <code>JDOFatalUserException</code> with the specified
-   * detail message, nested <code>Throwable</code>s, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   * @param failed the failed object.
-   */
-  public JDOFatalUserException(String msg, Throwable nested, Object failed) {
-    super(msg, nested, failed);
-  }
-}
-
diff --git a/api11/src/java/javax/jdo/JDOHelper.java b/api11/src/java/javax/jdo/JDOHelper.java
deleted file mode 100644
index 9f08136..0000000
--- a/api11/src/java/javax/jdo/JDOHelper.java
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOHelper.java
- *
- * Created on April 24, 2000, 9:09 AM
- */
- 
-package javax.jdo;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.InvocationTargetException;
-
-import java.util.Properties;
-
-import javax.jdo.spi.I18NHelper;
-import javax.jdo.spi.PersistenceCapable;
-import javax.jdo.spi.StateManager; // for javadoc
-
-/**
- * This class can be used by a JDO-aware application to call the JDO behavior
- * of <code>PersistenceCapable</code> instances without declaring them to be
- * <code>PersistenceCapable</code>.
- * It is also used to acquire a <code>PersistenceManagerFactory</code> via a standard
- * <code>Properties</code> construction.
- * <P>Every class whose instances can be managed by a JDO <code>PersistenceManager</code> must
- * implement the <code>PersistenceCapable</code> interface.
- *
- * <P>This helper class defines static methods that allow a JDO-aware
- * application to examine the runtime state of instances.  For example,
- * an application can discover whether the instance is persistent, transactional,
- * dirty, new, or deleted; and to get its associated
- * <code>PersistenceManager</code> if it has one.
- * 
- * @author  Craig Russell
- * @version 1.0.2
- */
-public class JDOHelper extends Object {
-      
-    /** The Internationalization message helper.
-     */
-    private final static I18NHelper msg = I18NHelper.getInstance ("javax.jdo.Bundle"); //NOI18N
-
-    /** Return the associated <code>PersistenceManager</code> if there is one.
-     * Transactional and persistent instances return the associated
-     * <code>PersistenceManager</code>.  
-     *
-     * <P>Transient non-transactional instances and instances of classes 
-     * that do not implement <code>PersistenceCapable</code> return <code>null</code>.
-     * @see PersistenceCapable#jdoGetPersistenceManager()
-     * @param pc the <code>PersistenceCapable</code> instance.
-     * @return the <code>PersistenceManager</code> associated with the parameter instance.
-     */
-     public static PersistenceManager getPersistenceManager(Object pc) {
-        return pc instanceof PersistenceCapable?((PersistenceCapable)pc).jdoGetPersistenceManager():null;
-      }
-    
-    /** Explicitly mark the parameter instance and field dirty.
-     * Normally, <code>PersistenceCapable</code> classes are able to detect changes made
-     * to their fields.  However, if a reference to an array is given to a
-     * method outside the class, and the array is modified, then the
-     * persistent instance is not aware of the change.  This API allows the
-     * application to notify the instance that a change was made to a field.
-     *
-     * <P>Transient instances and instances of classes 
-     * that do not implement <code>PersistenceCapable</code> ignore this method.
-     * @see PersistenceCapable#jdoMakeDirty(String fieldName)
-     * @param pc the <code>PersistenceCapable</code> instance.
-     * @param fieldName the name of the field to be marked dirty.
-     */
-    public static void makeDirty(Object pc, String fieldName) {
-     if (pc instanceof PersistenceCapable) 
-      ((PersistenceCapable)pc).jdoMakeDirty(fieldName);
-    }
-    
-    /** Return a copy of the JDO identity associated with the parameter instance.
-     *
-     * <P>Persistent instances of <code>PersistenceCapable</code> classes have a JDO identity
-     * managed by the <code>PersistenceManager</code>.  This method returns a copy of the
-     * ObjectId that represents the JDO identity.  
-     * 
-     * <P>Transient instances and instances of classes 
-     * that do not implement <code>PersistenceCapable</code> return <code>null</code>.
-     *
-     * <P>The ObjectId may be serialized
-     * and later restored, and used with a <code>PersistenceManager</code> from the same JDO
-     * implementation to locate a persistent instance with the same data store
-     * identity.
-     *
-     * <P>If the JDO identity is managed by the application, then the ObjectId may
-     * be used with a <code>PersistenceManager</code> from any JDO implementation that supports
-     * the <code>PersistenceCapable</code> class.
-     *
-     * <P>If the JDO identity is not managed by the application or the data store,
-     * then the ObjectId returned is only valid within the current transaction.
-     *<P>
-     * @see PersistenceManager#getObjectId(Object pc)
-     * @see PersistenceCapable#jdoGetObjectId()
-     * @see PersistenceManager#getObjectById(Object oid, boolean validate)
-     * @param pc the PersistenceCapable instance.
-     * @return a copy of the ObjectId of the parameter instance as of the beginning of the transaction.
-     */
-    public static Object getObjectId(Object pc) {
-      return pc instanceof PersistenceCapable?((PersistenceCapable)pc).jdoGetObjectId():null;
-    }
-    
-    /** Return a copy of the JDO identity associated with the parameter instance.
-     *
-     * @see PersistenceCapable#jdoGetTransactionalObjectId()
-     * @see PersistenceManager#getObjectById(Object oid, boolean validate)
-     * @param pc the <code>PersistenceCapable</code> instance.
-     * @return a copy of the ObjectId of the parameter instance as modified in this transaction.
-     */
-    public static Object getTransactionalObjectId(Object pc) {
-      return pc instanceof PersistenceCapable?((PersistenceCapable)pc).jdoGetTransactionalObjectId():null;
-    }
-    
-    /** Tests whether the parameter instance is dirty.
-     *
-     * Instances that have been modified, deleted, or newly 
-     * made persistent in the current transaction return <code>true</code>.
-     *
-     *<P>Transient instances and instances of classes 
-     * that do not implement <code>PersistenceCapable</code> return <code>false</code>.
-     *<P>
-     * @see StateManager#makeDirty(PersistenceCapable pc, String fieldName)
-     * @see PersistenceCapable#jdoIsDirty()
-     * @param pc the <code>PersistenceCapable</code> instance.
-     * @return <code>true</code> if the parameter instance has been modified in the current transaction.
-     */
-    public static boolean isDirty(Object pc) {
-      return pc instanceof PersistenceCapable?((PersistenceCapable)pc).jdoIsDirty():false;
-    }
-
-    /** Tests whether the parameter instance is transactional.
-     *
-     * Instances whose state is associated with the current transaction 
-     * return true. 
-     *
-     *<P>Transient instances and instances of classes 
-     * that do not implement <code>PersistenceCapable</code> return <code>false</code>.
-     * @see PersistenceCapable#jdoIsTransactional()
-     * @param pc the <code>PersistenceCapable</code> instance.
-     * @return <code>true</code> if the parameter instance is transactional.
-     */
-    public static boolean isTransactional(Object pc) {
-      return pc instanceof PersistenceCapable?((PersistenceCapable)pc).jdoIsTransactional():false;
-    }
-
-    /** Tests whether the parameter instance is persistent.
-     *
-     * Instances that represent persistent objects in the data store 
-     * return <code>true</code>. 
-     *
-     *<P>Transient instances and instances of classes 
-     * that do not implement <code>PersistenceCapable</code> return <code>false</code>.
-     *<P>
-     * @see PersistenceManager#makePersistent(Object pc)
-     * @see PersistenceCapable#jdoIsPersistent()
-     * @param pc the <code>PersistenceCapable</code> instance.
-     * @return <code>true</code> if the parameter instance is persistent.
-     */
-    public static boolean isPersistent(Object pc) {
-      return pc instanceof PersistenceCapable?((PersistenceCapable)pc).jdoIsPersistent():false;
-    }
-
-    /** Tests whether the parameter instance has been newly made persistent.
-     *
-     * Instances that have been made persistent in the current transaction 
-     * return <code>true</code>.
-     *
-     *<P>Transient instances and instances of classes 
-     * that do not implement <code>PersistenceCapable</code> return <code>false</code>.
-     *<P>
-     * @see PersistenceManager#makePersistent(Object pc)
-     * @see PersistenceCapable#jdoIsNew()
-     * @param pc the <code>PersistenceCapable</code> instance.
-     * @return <code>true</code> if the parameter instance was made persistent
-     * in the current transaction.
-     */
-    public static boolean isNew(Object pc) {
-      return pc instanceof PersistenceCapable?((PersistenceCapable)pc).jdoIsNew():false;
-    }
-
-    /** Tests whether the parameter instance has been deleted.
-     *
-     * Instances that have been deleted in the current transaction return <code>true</code>.
-     *
-     *<P>Transient instances and instances of classes 
-     * that do not implement <code>PersistenceCapable</code> return <code>false</code>.
-     *<P>
-     * @see PersistenceManager#deletePersistent(Object pc)
-     * @see PersistenceCapable#jdoIsDeleted()
-     * @param pc the <code>PersistenceCapable</code> instance.
-     * @return <code>true</code> if the parameter instance was deleted
-     * in the current transaction.
-     */
-    public static boolean isDeleted(Object pc) {
-      return pc instanceof PersistenceCapable?((PersistenceCapable)pc).jdoIsDeleted():false;
-    }
-    
-    /** Get a <code>PersistenceManagerFactory</code> based on a <code>Properties</code> instance, using
-     * the current thread's context class loader to locate the
-     * <code>PersistenceManagerFactory</code> class.
-     * @return the <code>PersistenceManagerFactory</code>.
-     * @param props a <code>Properties</code> instance with properties of the <code>PersistenceManagerFactory</code>.
-     * @see #getPersistenceManagerFactory(Properties,ClassLoader)
-     */
-    public static PersistenceManagerFactory getPersistenceManagerFactory
-            (Properties props) {
-        ClassLoader cl = Thread.currentThread().getContextClassLoader();
-        return getPersistenceManagerFactory (props, cl);
-    }
-    
-    /** Get a <code>PersistenceManagerFactory</code> based on a <code>Properties</code>
-     * instance and a class loader.
-     * The following are standard key values:
-     * <BR><code>"javax.jdo.PersistenceManagerFactoryClass"
-     * <BR>"javax.jdo.option.Optimistic",
-     * <BR>"javax.jdo.option.RetainValues",
-     * <BR>"javax.jdo.option.RestoreValues",
-     * <BR>"javax.jdo.option.IgnoreCache",
-     * <BR>"javax.jdo.option.NontransactionalRead",
-     * <BR>"javax.jdo.option.NontransactionalWrite",
-     * <BR>"javax.jdo.option.Multithreaded",
-     * <BR>"javax.jdo.option.ConnectionUserName",
-     * <BR>"javax.jdo.option.ConnectionPassword",
-     * <BR>"javax.jdo.option.ConnectionURL",
-     * <BR>"javax.jdo.option.ConnectionFactoryName",
-     * <BR>"javax.jdo.option.ConnectionFactory2Name".
-     * </code><P>JDO implementations
-     * are permitted to define key values of their own.  Any key values not
-     * recognized by the implementation must be ignored.  Key values that are
-     * recognized but not supported by an implementation must result in a
-     * <code>JDOFatalUserException</code> thrown by the method.
-     * <P>The returned <code>PersistenceManagerFactory</code> is not configurable (the
-     * <code>set<I>XXX</I></code> methods will throw an exception).
-     * <P>JDO implementations might manage a map of instantiated
-     * <code>PersistenceManagerFactory</code> instances based on specified property key
-     * values, and return a previously instantiated <code>PersistenceManagerFactory</code>
-     * instance.  In this case, the properties of the returned
-     * instance must exactly match the requested properties.
-     * @return the <code>PersistenceManagerFactory</code>.
-     * @param props a <code>Properties</code> instance with properties of the <code>PersistenceManagerFactory</code>.
-     * @param cl a class loader to use to load the <code>PersistenceManagerFactory</code> class.
-     */
-    public static PersistenceManagerFactory getPersistenceManagerFactory
-            (Properties props, ClassLoader cl) {
-        String pmfClassName = (String) props.get ("javax.jdo.PersistenceManagerFactoryClass"); //NOI18N
-        if (pmfClassName == null) {
-            throw new JDOFatalUserException (msg.msg("EXC_NoClassNameProperty")); // NOI18N
-        }
-        try {
-            Class pmfClass = cl.loadClass (pmfClassName);
-            Method pmfMethod = pmfClass.getMethod ("getPersistenceManagerFactory",  //NOI18N
-                new Class[] {Properties.class});
-            return (PersistenceManagerFactory) pmfMethod.invoke (null, new Object[] {props});
-        } catch (ClassNotFoundException cnfe) {
-            throw new JDOFatalUserException (msg.msg("EXC_ClassNotFound", pmfClassName), cnfe); //NOI18N
-        } catch (IllegalAccessException iae) {
-            throw new JDOFatalUserException (msg.msg("EXC_IllegalAccess", pmfClassName), iae); //NOI18N
-        } catch (NoSuchMethodException nsme) {
-            throw new JDOFatalInternalException (msg.msg("ERR_NoSuchMethod"), nsme); //NOI18N
-        } catch (InvocationTargetException ite) {
-            Throwable nested = ite.getTargetException();
-            if  (nested instanceof JDOException) {
-                throw (JDOException)nested;
-            } else throw new JDOFatalUserException (msg.msg("EXC_getPersistenceManagerFactory"), ite); //NOI18N
-        } catch (Exception e) {
-            throw new JDOFatalInternalException (msg.msg("ERR_UnexpectedException"), e); //NOI18N
-        }
-    }
-
-}
diff --git a/api11/src/java/javax/jdo/JDOObjectNotFoundException.java b/api11/src/java/javax/jdo/JDOObjectNotFoundException.java
deleted file mode 100644
index 6cfba42..0000000
--- a/api11/src/java/javax/jdo/JDOObjectNotFoundException.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOObjectNotFoundException.java
- *
- * Created on April 11, 2003
- */
-
-package javax.jdo;
-
-/** This class represents exceptions caused by the user accessing 
- * an object that does not exist in the datastore.
- *
- * @author  Craig Russell
- * @since 1.0.1
- * @version 1.0.1
- */
-public class JDOObjectNotFoundException extends JDODataStoreException {
-
-  /**
-   * Constructs a new <code>JDOObjectNotFoundException</code> 
-   * without a detail message.
-   */
-  public JDOObjectNotFoundException() {
-  }
-  
-
-  /**
-   * Constructs a new <code>JDOObjectNotFoundException</code> 
-   * with the specified detail message.
-   * @param msg the detail message.
-   */
-  public JDOObjectNotFoundException(String msg) {
-    super(msg);
-  }
-
-  /** Constructs a new <code>JDOObjectNotFoundException</code> with the specified detail message
-   * and failed object.
-   * @param msg the detail message.
-   * @param failed the failed object.
-   */
-  public JDOObjectNotFoundException(String msg, Object failed) {
-    super(msg, failed);
-  }
-  
-  /**
-   * Constructs a new <code>JDOObjectNotFoundException</code> with the
-   * specified detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDOObjectNotFoundException(String msg, Throwable[] nested) {
-    super(msg, nested);
-  }
-
-}
-
diff --git a/api11/src/java/javax/jdo/JDOOptimisticVerificationException.java b/api11/src/java/javax/jdo/JDOOptimisticVerificationException.java
deleted file mode 100644
index d35c676..0000000
--- a/api11/src/java/javax/jdo/JDOOptimisticVerificationException.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOOptimisticVerificationException.java
- *
- * Created on April 11, 2003
- */
-
-package javax.jdo;
-
-/** This class represents optimistic verification failures.  The nested
- * exception array contains an exception for each instance that failed
- * the optimistic verification.
- *
- * @author  Craig Russell
- * @since 1.0.1
- * @version 1.0.1
- */
-public class JDOOptimisticVerificationException extends JDOFatalDataStoreException {
-
-  /**
-   * Constructs a new <code>JDOOptimisticVerificationException</code> without a detail message.
-   */
-  public JDOOptimisticVerificationException() {
-  }
-  
-
-  /**
-   * Constructs a new <code>JDOOptimisticVerificationException</code> with the specified detail message.
-   * @param msg the detail message.
-   */
-  public JDOOptimisticVerificationException(String msg) {
-    super(msg);
-  }
-
-  /** Constructs a new <code>JDOOptimisticVerificationException</code> with the specified detail message
-   * and failed object.
-   * @param msg the detail message.
-   * @param failed the failed object.
-   */
-  public JDOOptimisticVerificationException(String msg, Object failed) {
-    super(msg, failed);
-  }
-  
-  /**
-   * Constructs a new <code>JDOOptimisticVerificationException</code> with the specified
-   * detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDOOptimisticVerificationException(String msg, Throwable[] nested) {
-    super(msg, nested);
-  }
-
-}
-
diff --git a/api11/src/java/javax/jdo/JDOUnsupportedOptionException.java b/api11/src/java/javax/jdo/JDOUnsupportedOptionException.java
deleted file mode 100644
index ec9af0a..0000000
--- a/api11/src/java/javax/jdo/JDOUnsupportedOptionException.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOUnsupportedOptionException.java
- *
- * Created on March 8, 2000, 8:34 AM
- */
-
-package javax.jdo;
-
-/** This class represents exceptions caused by the use of optional features
- * not supported by the JDO implementation.
- *
- * @author  Craig Russell
- * @version 1.0
- */
-public class JDOUnsupportedOptionException extends JDOUserException {
-
-  /**
-   * Constructs a new <code>JDOUnsupportedOptionException</code> without a detail message.
-   */
-  public JDOUnsupportedOptionException() {
-  }
-  
-
-  /**
-   * Constructs a new <code>JDOUnsupportedOptionException</code> with the specified detail message.
-   * @param msg the detail message.
-   */
-  public JDOUnsupportedOptionException(String msg) {
-    super(msg);
-  }
-
-  /**
-   * Constructs a new <code>JDOUnsupportedOptionException</code> with the
-   * specified detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDOUnsupportedOptionException(String msg, Throwable[] nested) {
-    super(msg, nested);
-  }
-
-  /**
-   * Constructs a new <code>JDOUnsupportedOptionException</code> with the
-   * specified detail message and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   */
-  public JDOUnsupportedOptionException(String msg, Throwable nested) {
-    super(msg, nested);
-  }
-}
-
diff --git a/api11/src/java/javax/jdo/JDOUserException.java b/api11/src/java/javax/jdo/JDOUserException.java
deleted file mode 100644
index a06a202..0000000
--- a/api11/src/java/javax/jdo/JDOUserException.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOUserException.java
- *
- * Created on March 8, 2000, 8:33 AM
- */
-
-package javax.jdo;
-
-/** This class represents user errors that can possibly be retried.
- *
- * @author  Craig Russell
- * @version 1.0
- */
-public class JDOUserException extends JDOCanRetryException {
-
-  /**
-   * Constructs a new <code>JDOUserException</code> without a detail message.
-   */
-  public JDOUserException() {
-  }
-  
-
-  /**
-   * Constructs a new <code>JDOUserException</code> with the specified detail message.
-   * @param msg the detail message.
-   */
-  public JDOUserException(String msg) {
-    super(msg);
-  }
-
-  /**
-   * Constructs a new <code>JDOUserException</code> with the specified detail message
-   * and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   */
-  public JDOUserException(String msg, Throwable[] nested) {
-    super(msg, nested);
-  }
-
-  /**
-   * Constructs a new <code>JDOUserException</code> with the specified detail message
-   * and nested <code>Throwable</code>s.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   */
-  public JDOUserException(String msg, Throwable nested) {
-    super(msg, nested);
-  }
-  
-  /** Constructs a new <code>JDOUserException</code> with the specified detail message
-   * and failed object.
-   * @param msg the detail message.
-   * @param failed the failed object.
-   */
-  public JDOUserException(String msg, Object failed) {
-    super(msg, failed);
-  }
-  
-  /** Constructs a new <code>JDOUserException</code> with the specified detail message,
-   * nested <code>Throwable</code>s, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable[]</code>.
-   * @param failed the failed object.
-   */
-  public JDOUserException(String msg, Throwable[] nested, Object failed) {
-    super(msg, nested, failed);
-  }
-  
-  /** Constructs a new <code>JDOUserException</code> with the specified detail message,
-   * nested <code>Throwable</code>s, and failed object.
-   * @param msg the detail message.
-   * @param nested the nested <code>Throwable</code>.
-   * @param failed the failed object.
-   */
-  public JDOUserException(String msg, Throwable nested, Object failed) {
-    super(msg, nested, failed);
-  }
-}
-
diff --git a/api11/src/java/javax/jdo/PersistenceManager.java b/api11/src/java/javax/jdo/PersistenceManager.java
deleted file mode 100644
index f869137..0000000
--- a/api11/src/java/javax/jdo/PersistenceManager.java
+++ /dev/null
@@ -1,596 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * PersistenceManager.java
- *
- * Created on February 25, 2000
- */
- 
-package javax.jdo;
-import java.util.Collection;
-import java.lang.Class;
-
-/** <code>PersistenceManager</code> is the primary interface for JDO-aware application
- * components.  It is the factory for <code>Query</code> and <code>Transaction</code> instances,
- * and contains methods to manage the life cycle of <code>PersistenceCapable</code>
- * instances.
- *
- * <P>A <code>PersistenceManager</code> is obtained from the
- * {@link PersistenceManagerFactory}
- * (recommended) or by construction.
- * @author Craig Russell
- * @version 1.0.1
- */
-
-public interface PersistenceManager 
-{
-
-  /** A <code>PersistenceManager</code> instance can be used until it is closed.
-   * @return <code>true</code> if this <code>PersistenceManager</code> has been closed.
-   * @see #close()
-   */
-  boolean isClosed ();
-    
-    /** Close this <code>PersistenceManager</code> so that no further requests may be 
-     * made on it.  A <code>PersistenceManager</code> instance can be used 
-     * only until it is closed.
-     *
-     * <P>Closing a <code>PersistenceManager</code> might release it to the pool of available
-     * <code>PersistenceManager</code>s, or might be garbage collected, at the option of
-     * the JDO implementation.  Before being used again to satisfy a
-     * <code>getPersistenceManager()</code> request, the default values for options will
-     * be restored to their values as specified in the <code>PersistenceManagerFactory</code>.
-     *
-     * <P>This method closes the <code>PersistenceManager</code>.
-     */
-    void close ();
-
-    /** Return the <code>Transaction</code> instance associated with a <code>PersistenceManager</code>.
-     * There is one <code>Transaction</code> instance associated with each <code>PersistenceManager</code>
-     * instance.  The <code>Transaction</code> instance supports options as well as
-     * transaction completion requests.
-     * @return the <code>Transaction</code> associated with this
-     * <code>PersistenceManager</code>.
-     */
-    Transaction currentTransaction();
-
-    /** Mark an instance as no longer needed in the cache.
-     * Eviction is normally done automatically by the <code>PersistenceManager</code>
-     * at transaction completion.  This method allows the application to
-     * explicitly provide a hint to the <code>PersistenceManager</code> that the instance
-     * is no longer needed in the cache.
-     * @param pc the instance to evict from the cache.
-     */
-    void evict (Object pc);
-    
-    /** Mark an array of instances as no longer needed in the cache.
-     * @see #evict(Object pc)
-     * @param pcs the array of instances to evict from the cache.
-     */
-    void evictAll (Object[] pcs);
-    
-    /** Mark a <code>Collection</code> of instances as no longer needed in the cache.
-     * @see #evict(Object pc)
-     * @param pcs the <code>Collection</code> of instances to evict from the cache.
-     */
-    void evictAll (Collection pcs);
-    
-    /** Mark all persistent-nontransactional instances as no longer needed 
-     * in the cache.  It transitions
-     * all persistent-nontransactional instances to hollow.  Transactional
-     * instances are subject to eviction based on the RetainValues setting.
-     * @see #evict(Object pc)
-     */
-    void evictAll ();
-    
-    /** Refresh the state of the instance from the data store.
-     *
-     * <P>In an optimistic transaction, the state of instances in the cache
-     * might not match the state in the data store.  This method is used to
-     * reload the state of the instance from the data store so that a subsequent
-     * commit is more likely to succeed.
-     * <P>Outside a transaction, this method will refresh nontransactional state.
-     * @param pc the instance to refresh.
-     */
-    void refresh (Object pc);
-    
-    /** Refresh the state of an array of instances from the data store.
-     *
-     * @see #refresh(Object pc)
-     * @param pcs the array of instances to refresh.
-     */
-    void refreshAll (Object[] pcs);
-    
-    /** Refresh the state of a <code>Collection</code> of instances from the data store.
-     *
-     * @see #refresh(Object pc)
-     * @param pcs the <code>Collection</code> of instances to refresh.
-     */
-    void refreshAll (Collection pcs);
-    
-    /** Refresh the state of all applicable instances from the data store.
-     * <P>If called with an active transaction, all transactional instances
-     * will be refreshed.  If called outside an active transaction, all
-     * nontransactional instances will be refreshed.
-     * @see #refresh(Object pc)
-     */
-    void refreshAll ();
-    
-    /** Create a new <code>Query</code> with no elements.
-     * @return the new <code>Query</code>.
-     */
-    Query newQuery ();
-    
-    /** Create a new <code>Query</code> using elements from another <code>Query</code>.
-     * The other <code>Query</code> must have been created by the same JDO implementation.
-     * It might be active
-     * in a different <code>PersistenceManager</code> or might have been serialized and restored.
-     * <P>All of the settings of the other <code>Query</code> are copied to this <code>Query</code>,
-     * except for the candidate <code>Collection</code> or <code>Extent</code>.
-     * @return the new <code>Query</code>
-     * @param compiled another <code>Query</code> from the same JDO implementation
-     */
-    Query newQuery (Object compiled);
-    
-    /** Create a new <code>Query</code> using the specified language.
-     * @param language the language of the query parameter
-     * @param query the query, which is of a form determined by the language
-     * @return the new <code>Query</code>
-     */    
-    Query newQuery (String language, Object query);
-    
-    /** Create a new <code>Query</code> specifying the <code>Class</code> of the candidate instances.
-     * @param cls the <code>Class</code> of the candidate instances
-     * @return the new <code>Query</code>
-     */
-    Query newQuery (Class cls);
-    
-    /** Create a new <code>Query</code> with the <code>Class</code> of the
-     * candidate instances and candidate <code>Extent</code>.
-     * @param cln the <code>Extent</code> of candidate instances
-     * @return the new <code>Query</code>
-     */
-    Query newQuery (Extent cln);
-    
-    /** Create a new <code>Query</code> with the candidate <code>Class</code> 
-     * and <code>Collection</code>.
-     * @param cls the <code>Class</code> of results
-     * @param cln the <code>Collection</code> of candidate instances
-     * @return the new <code>Query</code>
-     */
-    Query newQuery (Class cls, Collection cln);
-    
-    /** Create a new <code>Query</code> with the <code>Class</code> of the
-     * candidate instances and filter.
-     * @param cls the <code>Class</code> of results
-     * @param filter the filter for candidate instances
-     * @return the new <code>Query</code>
-     */
-    Query newQuery (Class cls, String filter);
-    
-    /** Create a new <code>Query</code> with the <code>Class</code> of the candidate instances, 
-     * candidate <code>Collection</code>, and filter.
-     * @param cls the <code>Class</code> of candidate instances
-     * @param cln the <code>Collection</code> of candidate instances
-     * @param filter the filter for candidate instances
-     * @return the new <code>Query</code>
-     */
-    Query newQuery (Class cls, Collection cln, String filter);
-    
-    /** Create a new <code>Query</code> with the
-     * candidate <code>Extent</code> and filter; the class
-     * is taken from the <code>Extent</code>.
-     * @param cln the <code>Extent</code> of candidate instances
-     * @param filter the filter for candidate instances
-     * @return the new <code>Query</code>
-     */
-    Query newQuery (Extent cln, String filter);
-    
-    /** The <code>PersistenceManager</code> manages a collection of instances in the data
-     * store based on the class of the instances.  This method returns an
-     * <code>Extent</code> of instances in the data store that might be iterated or
-     * given to a <code>Query</code>.  The <code>Extent</code> itself might not reference any 
-     * instances, but only hold the class name and an
-     * indicator as to whether subclasses are included in the <code>Extent</code>.
-     * <P>Note that the <code>Extent</code> might be very large.
-     * @param persistenceCapableClass <code>Class</code> of instances
-     * @param subclasses whether to include instances of subclasses
-     * @return an <code>Extent</code> of the specified <code>Class</code>
-     * @see Query
-     */
-    Extent getExtent (Class persistenceCapableClass, boolean subclasses);
-
-    /** This method locates a persistent instance in the cache of instances
-     * managed by this <code>PersistenceManager</code>.
-     * The <code>getObjectById</code> method attempts 
-     * to find an instance in the cache with the specified JDO identity. 
-     * The <code>oid</code> parameter object might have been returned by an earlier call 
-     * to <code>getObjectId</code> or <code>getTransactionalObjectId</code>,
-     * or might have been constructed by the application. 
-     * <P>If the <code>PersistenceManager</code> is unable to resolve the <code>oid</code> parameter 
-     * to an ObjectId instance, then it throws a <code>JDOUserException</code>.
-     * <P>If the <code>validate</code> flag is <code>false</code>, and there is already an instance in the
-     * cache with the same JDO identity as the <code>oid</code> parameter, then this method
-     * returns it. There is no change made to the state of the returned
-     * instance.
-     * <P>If there is not an instance already in the cache with the same JDO
-     * identity as the <code>oid</code> parameter, then this method creates an instance
-     * with the specified JDO identity and returns it. If there is no
-     * transaction in progress, the returned instance will be hollow or
-     * persistent-nontransactional, at the choice of the implementation.
-     * <P>If there is a transaction in progress, the returned instance will
-     * be hollow, persistent-nontransactional, or persistent-clean, at the
-     * choice of the implementation.
-     * <P>It is an implementation decision whether to access the data store,
-     * if required to determine the exact class. This will be the case of
-     * inheritance, where multiple <code>PersistenceCapable</code> classes share the
-     * same ObjectId class.
-     * <P>If the validate flag is <code>false</code>, and the instance does not exist in
-     * the data store, then this method might not fail. It is an
-     * implementation choice whether to fail immediately with a
-     * <code>JDODataStoreException</code>. But a subsequent access of the fields of the
-     * instance will throw a <code>JDODataStoreException</code> if the instance does not
-     * exist at that time. Further, if a relationship is established to this
-     * instance, then the transaction in which the association was made will
-     * fail.
-     * <P>If the <code>validate</code> flag is <code>true</code>, and there is already a transactional
-     * instance in the cache with the same JDO identity as the <code>oid</code> parameter,
-     * then this method returns it. There is no change made to the state of
-     * the returned instance.
-     * <P>If there is an instance already in the cache with the same JDO
-     * identity as the <code>oid</code> parameter, but the instance is not transactional,
-     * then it must be verified in the data store. If the instance does not
-     * exist in the datastore, then a <code>JDODataStoreException</code> is thrown.
-     * <P>If there is not an instance already in the cache with the same JDO
-     * identity as the <code>oid</code> parameter, then this method creates an instance
-     * with the specified JDO identity, verifies that it exists in the data
-     * store, and returns it. If there is no transaction in progress, the
-     * returned instance will be hollow or persistent-nontransactional,
-     * at the choice of the implementation.
-     * <P>If there is a data store transaction in progress, the returned
-     * instance will be persistent-clean.
-     * If there is an optimistic transaction in progress, the returned
-     * instance will be persistent-nontransactional.
-     * @see #getObjectId(Object pc)
-     * @see #getTransactionalObjectId(Object pc)
-     * @return the <code>PersistenceCapable</code> instance with the specified ObjectId
-     * @param oid an ObjectId
-     * @param validate if the existence of the instance is to be validated
-     */
-    Object getObjectById (Object oid, boolean validate);
-    
-    /** The ObjectId returned by this method represents the JDO identity of
-     * the instance.  The ObjectId is a copy (clone) of the internal state
-     * of the instance, and changing it does not affect the JDO identity of
-     * the instance.  
-     * <P>The <code>getObjectId</code> method returns an ObjectId instance that represents
-     * the object identity of the specified JDO instance. The identity is
-     * guaranteed to be unique only in the context of the JDO
-     * <code>PersistenceManager</code> that created the identity, and only for two types
-     * of JDO Identity: those that are managed by the application, and
-     * those that are managed by the data store.
-     * <P>If the object identity is being changed in the transaction, by the
-     * application modifying one or more of the application key fields,
-     * then this method returns the identity as of the beginning of the
-     * transaction. The value returned by <code>getObjectId</code> will be different
-     * following <code>afterCompletion</code> processing for successful transactions.
-     * <P>Within a transaction, the ObjectId returned will compare equal to
-     * the ObjectId returned by only one among all JDO instances associated
-     * with the <code>PersistenceManager</code> regardless of the type of ObjectId.
-     * <P>The ObjectId does not necessarily contain any internal state of the
-     * instance, nor is it necessarily an instance of the class used to
-     * manage identity internally. Therefore, if the application makes a
-     * change to the ObjectId instance returned by this method, there is
-     * no effect on the instance from which the ObjectId was obtained.
-     * <P>The <code>getObjectById</code> method can be used between instances of
-     * <code>PersistenceManager</code> of different JDO vendors only for instances of
-     * persistence capable classes using application-managed (primary key)
-     * JDO identity. If it is used for instances of classes using datastore
-     * identity, the method might succeed, but there are no guarantees that
-     * the parameter and return instances are related in any way.
-     * @see #getTransactionalObjectId(Object pc)
-     * @see #getObjectById(Object oid, boolean validate)
-     * @param pc the <code>PersistenceCapable</code> instance
-     * @return the ObjectId of the instance
-     */
-    Object getObjectId (Object pc);
-    
-    /** The ObjectId returned by this method represents the JDO identity of
-     * the instance.  The ObjectId is a copy (clone) of the internal state
-     * of the instance, and changing it does not affect the JDO identity of
-     * the instance.
-     * <P>If the object identity is being changed in the transaction, by the
-     * application modifying one or more of the application key fields,
-     * then this method returns the current identity in the transaction.
-     * <P>If there is no transaction in progress, or if none of the key fields
-     * is being modified, then this method will return the same value as
-     * <code>getObjectId</code>.
-     * @see #getObjectId(Object pc)
-     * @see #getObjectById(Object oid, boolean validate)
-     * @param pc a <code>PersistenceCapable</code> instance
-     * @return the ObjectId of the instance
-     */
-    Object getTransactionalObjectId (Object pc);
-
-    /** 
-     * This method returns an object id instance corresponding to the <code>Class</code>
-     * and <code>String</code> arguments. The <code>String</code> argument might have been the 
-     * result of executing <code>toString</code> on an object id instance. 
-     * @param pcClass the <code>Class</code> of the persistence-capable instance
-     * @param str the <code>String</code> form of the object id
-     * @return an instance of the object identity class
-     */
-    Object newObjectIdInstance (Class pcClass, String str);
-    
-    /** Make the transient instance persistent in this <code>PersistenceManager</code>.
-     * This method must be called in an active transaction.
-     * The <code>PersistenceManager</code> assigns an ObjectId to the instance and
-     * transitions it to persistent-new.
-     * The instance will be managed in the <code>Extent</code> associated with its <code>Class</code>.
-     * The instance will be put into the data store at commit.
-     * The closure of instances of <code>PersistenceCapable</code> classes
-     * reachable from persistent
-     * fields will be made persistent at commit.  [This is known as 
-     * persistence by reachability.]
-     * @param pc a transient instance of a <code>Class</code> that implements
-     * <code>PersistenceCapable</code>
-     */
-    void makePersistent (Object pc);
-    
-    /** Make an array of instances persistent.
-     * @param pcs an array of transient instances
-     * @see #makePersistent(Object pc)
-     */
-    void makePersistentAll (Object[] pcs);
-    
-    /** Make a <code>Collection</code> of instances persistent.
-     * @param pcs a <code>Collection</code> of transient instances
-     * @see #makePersistent(Object pc)
-     */
-    void makePersistentAll (Collection pcs);
-    
-    /** Delete the persistent instance from the data store.
-     * This method must be called in an active transaction.
-     * The data store object will be removed at commit.
-     * Unlike <code>makePersistent</code>, which makes the closure of the instance persistent,
-     * the closure of the instance is not deleted from the data store.
-     * This method has no effect if the instance is already deleted in the
-     * current transaction.
-     * This method throws <code>JDOUserException</code> if the instance is transient or 
-     * is managed by another <code>PersistenceManager</code>.
-     *
-     * @param pc a persistent instance
-     */
-    void deletePersistent (Object pc);
-    
-    /** Delete an array of instances from the data store.
-     * @param pcs a <code>Collection</code> of persistent instances
-     * @see #deletePersistent(Object pc)
-     */
-    void deletePersistentAll (Object[] pcs);
-    
-    /** Delete a <code>Collection</code> of instances from the data store.
-     * @param pcs a <code>Collection</code> of persistent instances
-     * @see #deletePersistent(Object pc)
-     */
-    void deletePersistentAll (Collection pcs);
-    
-    /** Make an instance transient, removing it from management by this
-     * <code>PersistenceManager</code>.
-     *
-     * <P>The instance loses its JDO identity and it is no longer associated
-     * with any <code>PersistenceManager</code>.  The state of fields is preserved unchanged.
-     * @param pc the instance to make transient.
-     */
-    void makeTransient (Object pc);
-    
-    /** Make an array of instances transient, removing them from management by this
-     * <code>PersistenceManager</code>.
-     *
-     * <P>The instances lose their JDO identity and they are no longer associated
-     * with any <code>PersistenceManager</code>.  The state of fields is preserved unchanged.
-     * @param pcs the instances to make transient.
-     */
-    void makeTransientAll (Object[] pcs);
-    
-    /** Make a <code>Collection</code> of instances transient, removing them from
-     * management by this <code>PersistenceManager</code>.
-     *
-     * <P>The instances lose their JDO identity and they are no longer associated
-     * with any <code>PersistenceManager</code>.  The state of fields is preserved unchanged.
-     * @param pcs the instances to make transient.
-     */ 
-    void makeTransientAll (Collection pcs);
-    
-    /** Make an instance subject to transactional boundaries.
-     *
-     * <P>Transient instances normally do not observe transaction boundaries.
-     * This method makes transient instances sensitive to transaction completion.
-     * If an instance is modified in a transaction, and the transaction rolls back,
-     * the state of the instance is restored to the state before the first change
-     * in the transaction.
-     *
-     * <P>For persistent instances read in optimistic transactions, this method
-     * allows the application to make the state of the instance part of the
-     * transactional state.  At transaction commit, the state of the instance in
-     * the cache is compared to the state of the instance in the data store.  If they
-     * are not the same, then an exception is thrown.
-     * @param pc the instance to make transactional.
-     */
-    void makeTransactional (Object pc);
-
-    /** Make an array of instances subject to transactional boundaries.
-     * @param pcs the array of instances to make transactional.
-     * @see #makeTransactional(Object pc)
-     */
-    void makeTransactionalAll (Object[] pcs);
-
-    /** Make a <code>Collection</code> of instances subject to transactional boundaries.
-     * @param pcs the <code>Collection</code> of instances to make transactional.
-     * @see #makeTransactional(Object pc)
-     */
-    void makeTransactionalAll (Collection pcs);
-    
-    /** Make an instance non-transactional after commit.
-     *
-     * <P>Normally, at transaction completion, instances are evicted from the
-     * cache.  This method allows an application to identify an instance as
-     * not being evicted from the cache at transaction completion.  Instead,
-     * the instance remains in the cache with nontransactional state.
-     *
-     * @param pc the instance to make nontransactional.
-     */
-    void makeNontransactional (Object pc);
-    
-    /** Make an array of instances non-transactional after commit.
-     *
-     * @param pcs the array of instances to make nontransactional.
-     * @see #makeNontransactional(Object pc)
-     */
-    void makeNontransactionalAll (Object[] pcs);
-    
-    /** Make a <code>Collection</code> of instances non-transactional after commit.
-     *
-     * @param pcs the <code>Collection</code> of instances to make nontransactional.
-     * @see #makeNontransactional(Object pc)
-     */
-    void makeNontransactionalAll (Collection pcs);
-    
-    /** Retrieve field values of an instance from the store.  This tells
-     * the <code>PersistenceManager</code> that the application intends to use the
-     * instance, and its field values must be retrieved.
-     * <P>The <code>PersistenceManager</code> might use policy information about the
-     * class to retrieve associated instances.
-     * @param pc the instance
-     */
-    void retrieve (Object pc);
-    
-    /** Retrieve field values of instances from the store.  This tells
-     * the <code>PersistenceManager</code> that the application intends to use the
-     * instances, and all field values must be retrieved.
-     * <P>The <code>PersistenceManager</code> might use policy information about the
-     * class to retrieve associated instances.
-     * @param pcs the instances
-     */
-    void retrieveAll (Collection pcs);
-    
-    /** Retrieve field values of instances from the store.  This tells
-     * the <code>PersistenceManager</code> that the application intends to use the
-     * instances, and their field values should be retrieved.  The fields
-     * in the default fetch group must be retrieved, and the implementation
-     * might retrieve more fields than the default fetch group.
-     * <P>The <code>PersistenceManager</code> might use policy information about the
-     * class to retrieve associated instances.
-     * @param pcs the instances
-     * @param DFGOnly whether to retrieve only the default fetch group fields
-     * @since 1.0.1
-     */
-    void retrieveAll (Collection pcs, boolean DFGOnly);
-    
-    /** Retrieve field values of instances from the store.  This tells
-     * the <code>PersistenceManager</code> that the application intends to use the
-     * instances, and all field values must be retrieved.
-     * <P>The <code>PersistenceManager</code> might use policy information about the
-     * class to retrieve associated instances.
-     * @param pcs the instances
-     */
-    void retrieveAll (Object[] pcs);
-           
-    /** Retrieve field values of instances from the store.  This tells
-     * the <code>PersistenceManager</code> that the application intends to use the
-     * instances, and their field values should be retrieved.  The fields
-     * in the default fetch group must be retrieved, and the implementation
-     * might retrieve more fields than the default fetch group.
-     * <P>The <code>PersistenceManager</code> might use policy information about the
-     * class to retrieve associated instances.
-     * @param pcs the instances
-     * @param DFGOnly whether to retrieve only the default fetch group fields
-     * @since 1.0.1
-     */
-    void retrieveAll (Object[] pcs, boolean DFGOnly);
-           
-    /** The application can manage the <code>PersistenceManager</code> instances
-     * more easily by having an application object associated with each
-     * <code>PersistenceManager</code> instance.
-     * @param o the user instance to be remembered by the <code>PersistenceManager</code>
-     * @see #getUserObject
-     */
-    void setUserObject (Object o);
-    
-    /** The application can manage the <code>PersistenceManager</code> instances
-     * more easily by having an application object associated with each
-     * <code>PersistenceManager</code> instance.
-     * @return the user object associated with this <code>PersistenceManager</code>
-     * @see #setUserObject
-     */
-    Object getUserObject ();
-     
-    /** This method returns the <code>PersistenceManagerFactory</code> used to create
-     * this <code>PersistenceManager</code>.  
-     * @return the <code>PersistenceManagerFactory</code> that created
-     * this <code>PersistenceManager</code>
-     */
-    PersistenceManagerFactory getPersistenceManagerFactory();
-
-    /** Return the <code>Class</code> that implements the JDO Identity for the
-     * specified <code>PersistenceCapable</code> class.  The application can use the
-     * returned <code>Class</code> to construct a JDO Identity instance for
-     * application identity <code>PersistenceCapable</code> classes.  This JDO Identity
-     * instance can then be used to get an instance of the
-     * <code>PersistenceCapable</code> class for use in the application.
-     *
-     * <P>In order for the application to construct an instance of the ObjectId class
-     * it needs to know the class being used by the JDO implementation.
-     * @param cls the <code>PersistenceCapable Class</code>
-     * @return the <code>Class</code> of the ObjectId of the parameter
-     * @see #getObjectById
-     */
-    Class getObjectIdClass(Class cls);
-  
-  /** Set the Multithreaded flag for this <code>PersistenceManager</code>.  Applications
-   * that use multiple threads to invoke methods or access fields from 
-   * instances managed by this <code>PersistenceManager</code> must set this flag to <code>true</code>.
-   * Instances managed by this <code>PersistenceManager</code> include persistent or
-   * transactional instances of <code>PersistenceCapable</code> classes, as well as 
-   * helper instances such as <code>Query</code>, <code>Transaction</code>, or <code>Extent</code>.
-   *
-   * @param flag the Multithreaded setting.
-   */
-  void setMultithreaded (boolean flag);
-  
-  /** Get the current Multithreaded flag for this <code>PersistenceManager</code>.  
-   * @see #setMultithreaded
-   * @return the Multithreaded setting.
-   */
-  boolean getMultithreaded();
-    
-    /** Set the ignoreCache parameter for queries.
-     *
-     * <P>IgnoreCache set to <code>true</code> specifies that for all <code>Query</code> instances created by this
-     * <code>PersistenceManager</code>, the default is the cache should be ignored for queries.
-     * @param flag the ignoreCache setting.
-     */
-    void setIgnoreCache(boolean flag);
-  
-    /** Get the ignoreCache setting for queries.
-     *
-     * <P>IgnoreCache set to <code>true</code> specifies that for all <code>Query</code> instances created by this
-     * <code>PersistenceManager</code>, the default is the cache should be ignored for queries.
-     * @return the ignoreCache setting.
-     */
-   boolean getIgnoreCache();
-    }
diff --git a/api11/src/java/javax/jdo/PersistenceManagerFactory.java b/api11/src/java/javax/jdo/PersistenceManagerFactory.java
deleted file mode 100644
index 316ea85..0000000
--- a/api11/src/java/javax/jdo/PersistenceManagerFactory.java
+++ /dev/null
@@ -1,328 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * PersistenceManagerFactory.java
- *
- * Created on February 25, 2000
- */
- 
-package javax.jdo;
-
-import java.util.Properties;
-import java.util.Collection;
-
-/** The <code>PersistenceManagerFactory</code> is the interface to use to obtain
- * <code>PersistenceManager</code> instances.  All <code>PersistenceManager</code> instances obtained
- * from the same <code>PersistenceManagerFactory</code> will have the same default
- * properties.
- *
- * <P><code>PersistenceManagerFactory</code> instances may be configured and
- * serialized for later use.  They may be stored via JNDI and looked up
- * and used later.  Any properties configured will be saved and restored.
- *
- * <P>Once the first <code>PersistenceManager</code> is obtained from the 
- * <code>PersistenceManagerFactory</code>, the factory can no longer be configured.
- * <P>If the <code>ConnectionFactory</code> property is set (non-<code>null</code>) then 
- * all other Connection properties including <code>ConnectionFactoryName</code> are ignored;
- * otherwise, if <code>ConnectionFactoryName</code> is set (non-<code>null</code>) then
- * all other Connection properties are ignored.
- * Similarly, if the <code>ConnectionFactory2</code> property is set (non-<code>null</code>) then 
- * <code>ConnectionFactory2Name</code> is ignored.
- * <P>Operational state (<code>PersistenceManager</code> pooling, connection pooling,
- * operational parameters) must not be serialized.
- *
- * @author Craig Russell
- * @version 1.0.1
- */
-
-public interface PersistenceManagerFactory extends java.io.Serializable
-{
-  /** Close this PersistenceManagerFactory. Check for 
-   * JDOPermission("closePersistenceManagerFactory") and if not authorized, 
-   * throw SecurityException. 
-   * <P>If the authorization check succeeds, check to see that all 
-   * PersistenceManager instances obtained from this PersistenceManagerFactory 
-   * have no active transactions. If any PersistenceManager instances have 
-   * an active transaction, throw a JDOUserException, with one nested 
-   * JDOUserException for each PersistenceManager with an active Transaction. 
-   * <P>If there are no active transactions, then close all PersistenceManager 
-   * instances obtained from this PersistenceManagerFactory, mark this 
-   * PersistenceManagerFactory as closed, disallow getPersistenceManager 
-   * methods, and allow all other get methods. If a set method or 
-   * getPersistenceManager method is called after close, then 
-   * JDOUserException is thrown.
-   * @since 1.0.1
-   */
-  void close();
-    
-  /** Get an instance of <code>PersistenceManager</code> from this factory.  The instance has
-   * default values for options.
-   *
-   * <P>After the first use of <code>getPersistenceManager</code>, no "set" methods will
-   * succeed.
-   *
-   * @return a <code>PersistenceManager</code> instance with default options.
-   */
-  PersistenceManager getPersistenceManager();
-
-    /** Get an instance of <code>PersistenceManager</code> from this factory.  The instance has
-     * default values for options.  The parameters <code>userid</code> and <code>password</code> are used
-     * when obtaining datastore connections from the connection pool.
-     *
-     * <P>After the first use of <code>getPersistenceManager</code>, no "set" methods will
-     * succeed.
-     *
-     * @return a <code>PersistenceManager</code> instance with default options.
-     * @param userid the userid for the connection
-     * @param password the password for the connection
-     */
-  PersistenceManager getPersistenceManager(String userid, String password);
-
-  /** Set the user name for the data store connection.
-   * @param userName the user name for the data store connection.
-   */
-  void setConnectionUserName(String userName);
-
-  /** Get the user name for the data store connection.
-   * @return the user name for the data store connection.
-   */
-  String getConnectionUserName ();
-  
-  /** Set the password for the data store connection.
-   * @param password the password for the data store connection.
-   */
-  void setConnectionPassword (String password);
-  
-  /** Set the URL for the data store connection.
-   * @param URL the URL for the data store connection.
-   */
-  void setConnectionURL (String URL);
-
-  /** Get the URL for the data store connection.
-   * @return the URL for the data store connection.
-   */
-  String getConnectionURL ();
-  
-  /** Set the driver name for the data store connection.
-   * @param driverName the driver name for the data store connection.
-   */
-  void setConnectionDriverName  (String driverName);
-
-  /** Get the driver name for the data store connection.
-   * @return the driver name for the data store connection.
-   */
-  String getConnectionDriverName ();
-    
-  /** Set the name for the data store connection factory.
-   * @param connectionFactoryName the name of the data store connection factory.
-   */
-  void setConnectionFactoryName (String connectionFactoryName);
-
-  /** Get the name for the data store connection factory.
-   * @return the name of the data store connection factory.
-   */
-  String getConnectionFactoryName ();
-  
-  /** Set the data store connection factory.  JDO implementations
-   * will support specific connection factories.  The connection
-   * factory interfaces are not part of the JDO specification.
-   * @param connectionFactory the data store connection factory.
-   */
-  void setConnectionFactory (Object connectionFactory);
-  
-  /** Get the data store connection factory.
-   * @return the data store connection factory.
-   */
-  Object getConnectionFactory ();
-  
-  /** Set the name for the second data store connection factory.  This is
-   * needed for managed environments to get nontransactional connections for
-   * optimistic transactions.
-   * @param connectionFactoryName the name of the data store connection factory.
-   */
-  void setConnectionFactory2Name (String connectionFactoryName);
-
-  /** Get the name for the second data store connection factory.  This is
-   * needed for managed environments to get nontransactional connections for
-   * optimistic transactions.
-   * @return the name of the data store connection factory.
-   */
-  String getConnectionFactory2Name ();
-  
-  /** Set the second data store connection factory.  This is
-   * needed for managed environments to get nontransactional connections for
-   * optimistic transactions.  JDO implementations
-   * will support specific connection factories.  The connection
-   * factory interfaces are not part of the JDO specification.
-   * @param connectionFactory the data store connection factory.
-   */
-  void setConnectionFactory2 (Object connectionFactory);
-  
-  /** Get the second data store connection factory.  This is
-   * needed for managed environments to get nontransactional connections for
-   * optimistic transactions.
-   * @return the data store connection factory.
-   */
-  Object getConnectionFactory2 ();
-  
-  /** Set the default Multithreaded setting for all <code>PersistenceManager</code> instances
-   * obtained from this factory.
-   *
-   * @param flag the default Multithreaded setting.
-   */
-  void setMultithreaded (boolean flag);
-  
-  /** Get the default Multithreaded setting for all <code>PersistenceManager</code> instances
-   * obtained from this factory.  
-   *
-   * @return the default Multithreaded setting.
-   */
-  boolean getMultithreaded();
-    
-  /** Set the default Optimistic setting for all <code>PersistenceManager</code> instances
-   * obtained from this factory.  
-   *
-   * @param flag the default Optimistic setting.
-   */
-  void setOptimistic (boolean flag);
-  
-  /** Get the default Optimistic setting for all <code>PersistenceManager</code> instances
-   * obtained from this factory.  
-   *
-   * @return the default Optimistic setting.
-   */
-  boolean getOptimistic();
-    
-  /** Set the default RetainValues setting for all <code>PersistenceManager</code> instances
-   * obtained from this factory.
-   *
-   * @param flag the default RetainValues setting.
-   */
-  void setRetainValues (boolean flag);
-  
-  /** Get the default RetainValues setting for all <code>PersistenceManager</code> instances
-   * obtained from this factory.
-   *
-   * @return the default RetainValues setting.
-   */
-  boolean getRetainValues ();
-    
-    /** Set the default value for the RestoreValues property.  
-     * If <code>true</code>, at rollback, fields of newly persistent instances 
-     * are restored to 
-     * their values as of the beginning of the transaction, and the instances
-     * revert to transient.  Additionally, fields of modified
-     * instances of primitive types and immutable reference types
-     * are restored to their values as of the beginning of the 
-     * transaction.
-     * <P>If <code>false</code>, at rollback, the values of fields of 
-     * newly persistent instances are unchanged and the instances revert to
-     * transient.  Additionally, dirty instances transition to hollow.
-     * If an implementation does not support this option, a 
-     * <code>JDOUnsupportedOptionException</code> is thrown.
-     * @param restoreValues the value of the restoreValues property
-     */
-    void setRestoreValues(boolean restoreValues);
-    
-    /** Get the default value for the RestoreValues property.  
-     * @return the value of the restoreValues property
-     */
-    boolean getRestoreValues();
-    
-  /** Set the default NontransactionalRead setting for all <code>PersistenceManager</code> instances
-   * obtained from this factory.  
-   *
-   * @param flag the default NontransactionalRead setting.
-   */
-  void setNontransactionalRead (boolean flag);
-  
-  /** Get the default NontransactionalRead setting for all <code>PersistenceManager</code> instances
-   * obtained from this factory.
-   *
-   * @return the default NontransactionalRead setting.
-   */
-  boolean getNontransactionalRead ();
-    
-  /** Set the default NontransactionalWrite setting for all <code>PersistenceManager</code> instances
-   * obtained from this factory.  
-   *
-   * @param flag the default NontransactionalWrite setting.
-   */
-  void setNontransactionalWrite (boolean flag);
-  
-  /** Get the default NontransactionalWrite setting for all <code>PersistenceManager</code> instances
-   * obtained from this factory.
-   *
-   * @return the default NontransactionalWrite setting.
-   */
-  boolean getNontransactionalWrite ();
-    
-  /** Set the default IgnoreCache setting for all <code>PersistenceManager</code> instances
-   * obtained from this factory.
-   *
-   * @param flag the default IgnoreCache setting.
-   */
-  void setIgnoreCache (boolean flag);
-  
-  /** Get the default IgnoreCache setting for all <code>PersistenceManager</code> instances
-   * obtained from this factory.
-   *
-   * @return the default IngoreCache setting.
-   */
-  boolean getIgnoreCache ();
-  
-   /** Return non-configurable properties of this <code>PersistenceManagerFactory</code>.
-   * Properties with keys <code>VendorName</code> and <code>VersionNumber</code> are required.  Other
-   * keys are optional.
-   * @return the non-configurable properties of this
-   * <code>PersistenceManagerFactory</code>.
-   */
-  Properties getProperties();
-  
-    /** The application can determine from the results of this
-     * method which optional features, and which query languages 
-     * are supported by the JDO implementation.
-     * <P>Each supported JDO optional feature is represented by a
-     * <code>String</code> with one of the following values:
-     *
-     * <P><code>javax.jdo.option.TransientTransactional
-     * <BR>javax.jdo.option.NontransactionalRead
-     * <BR>javax.jdo.option.NontransactionalWrite
-     * <BR>javax.jdo.option.RetainValues
-     * <BR>javax.jdo.option.Optimistic
-     * <BR>javax.jdo.option.ApplicationIdentity
-     * <BR>javax.jdo.option.DatastoreIdentity
-     * <BR>javax.jdo.option.NonDatastoreIdentity
-     * <BR>javax.jdo.option.ArrayList
-     * <BR>javax.jdo.option.HashMap
-     * <BR>javax.jdo.option.Hashtable
-     * <BR>javax.jdo.option.LinkedList
-     * <BR>javax.jdo.option.TreeMap
-     * <BR>javax.jdo.option.TreeSet
-     * <BR>javax.jdo.option.Vector
-     * <BR>javax.jdo.option.Map
-     * <BR>javax.jdo.option.List
-     * <BR>javax.jdo.option.Array  
-     * <BR>javax.jdo.option.NullCollection</code>
-     *
-     *<P>The standard JDO query language is represented by a <code>String</code>:
-     *<P><code>javax.jdo.query.JDOQL</code>
-     * @return the <code>Collection</code> of <code>String</code>s representing the supported options.
-     */    
-    Collection supportedOptions();
-   
-}
diff --git a/api11/src/java/javax/jdo/Query.java b/api11/src/java/javax/jdo/Query.java
deleted file mode 100644
index 0d476d6..0000000
--- a/api11/src/java/javax/jdo/Query.java
+++ /dev/null
@@ -1,313 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package javax.jdo;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Map;
-
-/** The <code>Query</code> interface allows applications to obtain persistent instances
- * from the data store.
- *
- * The {@link PersistenceManager} is the factory for <code>Query</code> instances.  There
- * may be many <code>Query</code> instances associated with a <code>PersistenceManager</code>.
- * Multiple queries might be executed simultaneously by different threads, but the
- * implementation might choose to execute them serially.  In either case, the
- * implementation must be thread safe.
- *
- * <P>There are three required elements in a <code>Query</code>: the class of the results,
- * the candidate collection of instances, and the filter.
- *
- * <P>There are optional elements: parameter declarations, variable
- * declarations, import statements, and an ordering specification.
- * <P>The query namespace is modeled after methods in Java:
- * <ul>
- * <li><code>setClass</code> corresponds to the class definition
- * <li><code>declareParameters</code> corresponds to formal parameters of a method
- * <li><code>declareVariables</code> corresponds to local variables of a method
- * <li><code>setFilter</code> and <code>setOrdering</code> correspond to the method body
- * </ul>
- * <P>There are two namespaces in queries. Type names have their own
- * namespace that is separate from the namespace for fields, variables
- * and parameters.
- * <P>The method <code>setClass</code> introduces the name of the candidate class in
- * the type namespace. The method <code>declareImports</code> introduces the names of
- * the imported class or interface types in the type namespace. Imported
- * type names must be unique. When used (e.g. in a parameter declaration,
- * cast expression, etc.) a type name must be the name of the candidate
- * class, the name of a class or interface imported by method
- * <code>declareImports</code>, or denote a class or interface from the same
- * package as the candidate class.
- * <P>The method <code>setClass</code> introduces the names of the candidate class fields.
- * <P>The method <code>declareParameters</code> introduces the names of the
- * parameters. A name introduced by <code>declareParameters</code> hides the name
- * of a candidate class field if equal. Parameter names must be unique.
- * <P>The method <code>declareVariables</code> introduces the names of the variables.
- * A name introduced by <code>declareVariables</code> hides the name of a candidate
- * class field if equal. Variable names must be unique and must not
- * conflict with parameter names.
- * <P>A hidden field may be accessed using the 'this' qualifier:
- * <code>this.fieldName</code>.
- * <P>The <code>Query</code> interface provides methods which execute the query
- * based on the parameters given. They return a <code>Collection</code> which the
- * user can iterate to get results. For future extension, the signature
- * of the <code>execute</code> methods specifies that they return an <code>Object</code> which
- * must be cast to <code>Collection</code> by the user.
- * <P>Any parameters passed to the <code>execute</code> methods are used only for
- * this execution, and are not remembered for future execution.
- * @author Craig Russell
- * @version 1.0
- */
-
-public interface Query extends Serializable 
-{
-   /** Set the class of the candidate instances of the query.
-    * <P>The class specifies the class
-    * of the candidates of the query.  Elements of the candidate collection
-    * that are of the specified class are filtered before being
-    * put into the result <code>Collection</code>.
-    *
-    * @param cls the <code>Class</code> of the candidate instances.
-    */
-void setClass(Class cls);
-    
-    /** Set the candidate <code>Extent</code> to query.
-     * @param pcs the candidate <code>Extent</code>.
-     */
-    void setCandidates(Extent pcs);
-    
-    /** Set the candidate <code>Collection</code> to query.
-     * @param pcs the candidate <code>Collection</code>.
-     */
-    void setCandidates(Collection pcs);
-    
-    /** Set the filter for the query.
-     *
-     * <P>The filter specification is a <code>String</code> containing a Boolean
-     * expression that is to be evaluated for each of the instances
-     * in the candidate collection. If the filter is not specified,
-     * then it defaults to "true", which has the effect of filtering
-     * the input <code>Collection</code> only for class type.
-     * <P>An element of the candidate collection is returned in the result if:
-     * <ul><li>it is assignment compatible to the candidate <code>Class</code> of the <code>Query</code>; and
-     * <li>for all variables there exists a value for which the filter
-     * expression evaluates to <code>true</code>.
-     * </ul>
-     * <P>The user may denote uniqueness in the filter expression by
-     * explicitly declaring an expression (for example, <code>e1 != e2</code>).
-     * <P>Rules for constructing valid expressions follow the Java
-     * language, except for these differences:
-     * <ul>
-     * <li>Equality and ordering comparisons between primitives and instances
-     * of wrapper classes are valid.
-     * <li>Equality and ordering comparisons of <code>Date</code> fields and <code>Date</code>
-     * parameters are valid.
-     * <li>White space (non-printing characters space, tab, carriage
-     * return, and line feed) is a separator and is otherwise ignored.
-     * <li>The assignment operators <code>=</code>, <code>+=</code>, etc. and pre- and post-increment
-     * and -decrement are not supported. Therefore, there are no side
-     * effects from evaluation of any expressions.
-     * <li>Methods, including object construction, are not supported, except
-     * for <code>Collection.contains(Object o)</code>, <code>Collection.isEmpty()</code>,
-     * <code>String.startsWith(String s)</code>, and <code>String.endsWith(String e)</code>.
-     * Implementations might choose to support non-mutating method
-     * calls as non-standard extensions.
-     * <li>Navigation through a <code>null</code>-valued field, which would throw
-     * <code>NullPointerException</code>, is treated as if the filter expression
-     * returned <code>false</code> for the evaluation of the current set of variable
-     * values. Other values for variables might still qualify the candidate
-     * instance for inclusion in the result set.
-     * <li>Navigation through multi-valued fields (<code>Collection</code> types) is
-     * specified using a variable declaration and the
-     * <code>Collection.contains(Object o)</code> method.
-     * </ul>
-     * <P>Identifiers in the expression are considered to be in the name
-     * space of the specified class, with the addition of declared imports,
-     * parameters and variables. As in the Java language, <code>this</code> is a reserved
-     * word which means the element of the collection being evaluated.
-     * <P>Navigation through single-valued fields is specified by the Java
-     * language syntax of <code>field_name.field_name....field_name</code>.
-     * <P>A JDO implementation is allowed to reorder the filter expression
-     * for optimization purposes.
-     * @param filter the query filter.
-     */
-    void setFilter(String filter);
-    
-    /** Set the import statements to be used to identify the fully qualified name of
-     * variables or parameters.  Parameters and unbound variables might 
-     * come from a different class from the candidate class, and the names 
-     * need to be declared in an import statement to eliminate ambiguity. 
-     * Import statements are specified as a <code>String</code> with semicolon-separated 
-     * statements. 
-     * <P>The <code>String</code> parameter to this method follows the syntax of the  
-     * import statement of the Java language.
-     * @param imports import statements separated by semicolons.
-     */
-    void declareImports(String imports);
-    
-    /** Declare the list of parameters query execution.
-     *
-     * The parameter declaration is a <code>String</code> containing one or more query 
-     * parameter declarations separated with commas. Each parameter named 
-     * in the parameter declaration must be bound to a value when 
-     * the query is executed.
-     * <P>The <code>String</code> parameter to this method follows the syntax for formal 
-     * parameters in the Java language. 
-     * @param parameters the list of parameters separated by commas.
-     */
-    void declareParameters(String parameters);
-    
-    /** Declare the unbound variables to be used in the query. Variables 
-     * might be used in the filter, and these variables must be declared 
-     * with their type. The unbound variable declaration is a <code>String</code> 
-     * containing one or more unbound variable declarations separated 
-     * with semicolons. It follows the syntax for local variables in 
-     * the Java language.
-     * @param variables the variables separated by semicolons.
-     */
-    void declareVariables(String variables);
-    
-    /** Set the ordering specification for the result <code>Collection</code>.  The
-     * ordering specification is a <code>String</code> containing one or more ordering
-     * declarations separated by commas.
-     *
-     * <P>Each ordering declaration is the name of the field on which
-     * to order the results followed by one of the following words:
-     * "<code>ascending</code>" or "<code>descending</code>".
-     *
-     *<P>The field must be declared in the candidate class or must be
-     * a navigation expression starting with a field in the candidate class.
-     *
-     *<P>Valid field types are primitive types except <code>boolean</code>; wrapper types 
-     * except <code>Boolean</code>; <code>BigDecimal</code>; <code>BigInteger</code>;
-     * <code>String</code>; and <code>Date</code>.
-     * @param ordering the ordering specification.
-     */
-    void setOrdering(String ordering);
-    
-    /** Set the ignoreCache option.  The default value for this option was
-     * set by the <code>PersistenceManagerFactory</code> or the
-     * <code>PersistenceManager</code> used to create this <code>Query</code>.
-     *
-     * The ignoreCache option setting specifies whether the query should execute
-     * entirely in the back end, instead of in the cache.  If this flag is set
-     * to <code>true</code>, an implementation might be able to optimize the query
-     * execution by ignoring changed values in the cache.  For optimistic
-     * transactions, this can dramatically improve query response times.
-     * @param ignoreCache the setting of the ignoreCache option.
-     */
-    void setIgnoreCache(boolean ignoreCache);   
-    
-    /** Get the ignoreCache option setting.
-     * @return the ignoreCache option setting.
-     * @see #setIgnoreCache
-     */
-    boolean getIgnoreCache();
-    
-    /** Verify the elements of the query and provide a hint to the query to
-     * prepare and optimize an execution plan.
-     */
-    void compile();
-    
-    /** Execute the query and return the filtered Collection.
-     * @return the filtered <code>Collection</code>.
-     * @see #executeWithArray(Object[] parameters)
-     */
-    Object execute();
-    
-    /** Execute the query and return the filtered <code>Collection</code>.
-     * @return the filtered <code>Collection</code>.
-     * @see #executeWithArray(Object[] parameters)
-     * @param p1 the value of the first parameter declared.
-     */
-    Object execute(Object p1);
-    
-    /** Execute the query and return the filtered <code>Collection</code>.
-     * @return the filtered <code>Collection</code>.
-     * @see #executeWithArray(Object[] parameters)
-     * @param p1 the value of the first parameter declared.
-     * @param p2 the value of the second parameter declared.
-     */
-    Object execute(Object p1, Object p2);
-    
-    /** Execute the query and return the filtered <code>Collection</code>.
-     * @return the filtered <code>Collection</code>.
-     * @see #executeWithArray(Object[] parameters)
-     * @param p1 the value of the first parameter declared.
-     * @param p2 the value of the second parameter declared.
-     * @param p3 the value of the third parameter declared.
-     */
-    Object execute(Object p1, Object p2, Object p3);
-    
-    /** Execute the query and return the filtered <code>Collection</code>.  The query
-     * is executed with the parameters set by the <code>Map</code> values.  Each <code>Map</code> entry
-     * consists of a key which is the name of the parameter in the 
-     * <code>declareParameters</code> method, and a value which is the value used in 
-     * the <code>execute</code> method.  The keys in the <code>Map</code> and the declared parameters 
-     * must exactly match or a <code>JDOUserException</code> is thrown.
-     * @return the filtered <code>Collection</code>.
-     * @see #executeWithArray(Object[] parameters)
-     * @param parameters the <code>Map</code> containing all of the parameters.
-     */
-    Object executeWithMap (Map parameters);
-    
-    /** Execute the query and return the filtered <code>Collection</code>.
-     *
-     * <P>The execution of the query obtains the values of the parameters and
-     * matches them against the declared parameters in order.  The names
-     * of the declared parameters are ignored.  The type of
-     * the declared parameters must match the type of the passed parameters,
-     * except that the passed parameters might need to be unwrapped to get
-     * their primitive values.
-     *
-     * <P>The filter, import, declared parameters, declared variables, and
-     * ordering statements are verified for consistency.
-     *
-     * <P>Each element in the candidate <code>Collection</code> is examined to see that it
-     * is assignment compatible to the <code>Class</code> of the query.  It is then evaluated
-     * by the Boolean expression of the filter.  The element passes the filter
-     * if there exist unique values for all variables for which the filter
-     * expression evaluates to <code>true</code>.
-     * @return the filtered <code>Collection</code>.
-     * @param parameters the <code>Object</code> array with all of the parameters.
-     */
-    Object executeWithArray (Object[] parameters);
-    
-    /** Get the <code>PersistenceManager</code> associated with this <code>Query</code>.
-     *
-     * <P>If this <code>Query</code> was restored from a serialized form, it has no 
-     * <code>PersistenceManager</code>, and this method returns <code>null</code>.
-     * @return the <code>PersistenceManager</code> associated with this <code>Query</code>.
-     */
-    PersistenceManager getPersistenceManager();
-  
-    /** Close a query result and release any resources associated with it.  The
-     * parameter is the return from <code>execute(...)</code> and might have iterators open on it.
-     * Iterators associated with the query result are invalidated: they return <code>false</code>
-     * to <code>hasNext()</code> and throw <code>NoSuchElementException</code> to <code>next()</code>.
-     * @param queryResult the result of <code>execute(...)</code> on this <code>Query</code> instance.
-     */    
-    void close (Object queryResult);
-    
-    /** Close all query results associated with this <code>Query</code> instance, and release all
-     * resources associated with them.  The query results might have iterators open
-     * on them.  Iterators associated with the query results are invalidated:
-     * they return <code>false</code> to <code>hasNext()</code> and throw
-     * <code>NoSuchElementException</code> to <code>next()</code>.
-     */    
-    void closeAll ();
-}
-
diff --git a/api11/src/java/javax/jdo/Transaction.java b/api11/src/java/javax/jdo/Transaction.java
deleted file mode 100644
index 35cd0b3..0000000
--- a/api11/src/java/javax/jdo/Transaction.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * Transaction.java
- *
- * Created on February 25, 2000
- */
- 
-package javax.jdo;
-import javax.transaction.Synchronization;
-
-/** The JDO <code>Transaction</code> interface provides for initiation and completion 
- * of transactions under user control.
- * It is a sub-interface of the {@link PersistenceManager}
- * that deals with options and transaction demarcation. 
- * <P>Transaction options include whether optimistic concurrency
- * control should be used for the current transaction, whether instances
- * may hold values in the cache outside transactions, and whether
- * values should be retained in the cache after transaction completion.  These
- * options are valid for both managed and non-managed transactions.
- *
- * <P>Transaction completion methods have the same semantics as
- * <code>javax.transaction.UserTransaction</code>, and are valid only in the
- * non-managed, non-distributed transaction environment.
- * <P>For operation in the distributed environment, <code>Transaction</code> is declared
- * to implement <code>javax.transaction.Synchronization</code>.  This allows for
- * flushing the cache to the data store during externally managed
- * transaction completion.
- * @author Craig Russell
- * @version 1.0
- */
-
-public interface Transaction
-{
-    /** Begin a transaction.  The type of transaction is determined by the
-     * setting of the Optimistic flag.
-     * @see #setOptimistic
-     * @see #getOptimistic
-     * @throws JDOUserException if transactions are managed by a container
-     * in the managed environment, or if the transaction is already active.
-     */
-    void begin();
-    
-    /** Commit the current transaction.
-     * @throws JDOUserException if transactions are managed by a container
-     * in the managed environment, or if the transaction is not active.
-     */
-    void commit();
-    
-    /** Roll back the current transaction.
-     * @throws JDOUserException if transactions are managed by a container
-     * in the managed environment, or if the transaction is not active.
-     */
-    void rollback();
-
-    /** Returns whether there is a transaction currently active.
-     * @return <code>true</code> if the transaction is active.
-     */
-    boolean isActive();
-    
-    /** If <code>true</code>, allow persistent instances to be read without
-     * a transaction active.
-     * If an implementation does not support this option, a 
-     * <code>JDOUnsupportedOptionException</code> is thrown.
-     * @param nontransactionalRead the value of the nontransactionalRead property
-     */
-    void setNontransactionalRead (boolean nontransactionalRead);
-    
-    /** If <code>true</code>, allows persistent instances to be read without
-     * a transaction active.
-     * @return the value of the nontransactionalRead property
-     */
-    boolean getNontransactionalRead ();
-    
-    /** If <code>true</code>, allow persistent instances to be written without
-     * a transaction active.
-     * If an implementation does not support this option, a 
-     * <code>JDOUnsupportedOptionException</code> is thrown.
-     * @param nontransactionalWrite the value of the nontransactionalRead property
-     */
-    void setNontransactionalWrite (boolean nontransactionalWrite);
-    
-    /** If <code>true</code>, allows persistent instances to be written without
-     * a transaction active.
-     * @return the value of the nontransactionalWrite property
-     */
-    boolean getNontransactionalWrite ();
-    
-    /** If <code>true</code>, at commit instances retain their values and the instances
-     * transition to persistent-nontransactional.
-     * If an implementation does not support this option, a 
-     * <code>JDOUnsupportedOptionException</code> is thrown.
-     * @param retainValues the value of the retainValues property
-     */
-    void setRetainValues(boolean retainValues);
-    
-    /** If <code>true</code>, at commit time instances retain their field values.
-     * @return the value of the retainValues property
-     */
-    boolean getRetainValues();
-    
-    /** If <code>true</code>, at rollback, fields of newly persistent instances 
-     * are restored to 
-     * their values as of the beginning of the transaction, and the instances
-     * revert to transient.  Additionally, fields of modified
-     * instances of primitive types and immutable reference types
-     * are restored to their values as of the beginning of the 
-     * transaction.
-     * <P>If <code>false</code>, at rollback, the values of fields of 
-     * newly persistent instances are unchanged and the instances revert to
-     * transient.  Additionally, dirty instances transition to hollow.
-     * If an implementation does not support this option, a 
-     * <code>JDOUnsupportedOptionException</code> is thrown.
-     * @param restoreValues the value of the restoreValues property
-     */
-    void setRestoreValues(boolean restoreValues);
-    
-    /** Return the current value of the restoreValues property.
-     * @return the value of the restoreValues property
-     */
-    boolean getRestoreValues();
-    
-    /** Optimistic transactions do not hold data store locks until commit time.
-     * If an implementation does not support this option, a 
-     * <code>JDOUnsupportedOptionException</code> is thrown.
-     * @param optimistic the value of the Optimistic flag.
-     */
-    void setOptimistic(boolean optimistic);
-    
-    /** Optimistic transactions do not hold data store locks until commit time.
-     * @return the value of the Optimistic property.
-     */
-    boolean getOptimistic();
-    
-    /** The user can specify a <code>Synchronization</code> instance to be notified on
-     * transaction completions.  The <code>beforeCompletion</code> method is called prior
-     * to flushing instances to the data store.
-     *
-     * <P>The <code>afterCompletion</code> method is called after performing state
-     * transitions of persistent and transactional instances, following 
-     * the data store commit or rollback operation.
-     * <P>Only one <code>Synchronization</code> instance can be registered with the 
-     * <code>Transaction</code>. If the application requires more than one instance to 
-     * receive synchronization callbacks, then the single application instance 
-     * is responsible for managing them, and forwarding callbacks to them.
-     * @param sync the <code>Synchronization</code> instance to be notified; <code>null</code> for none
-     */
-    void setSynchronization(Synchronization sync);
-    
-    /** The user-specified <code>Synchronization</code> instance for this <code>Transaction</code> instance.    
-     * @return the user-specified <code>Synchronization</code> instance.
-     */
-    Synchronization getSynchronization();
-
-    /** The <code>Transaction</code> instance is always associated with exactly one
-     * <code>PersistenceManager</code>.
-     *
-     * @return the <code>PersistenceManager</code> for this <code>Transaction</code> instance
-     */
-    PersistenceManager getPersistenceManager();
-}
diff --git a/api11/src/java/javax/jdo/package.html b/api11/src/java/javax/jdo/package.html
deleted file mode 100644
index 3cc37f0..0000000
--- a/api11/src/java/javax/jdo/package.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!--
- Copyright 2005 The Apache Software Foundation.
- 
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- 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.
--->
-
-<html>
-<head>
-<title>JDO package</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</head>
-
-<body bgcolor="#FFFFFF">
-This package contains the JDO specification interfaces and classes. 
-<P>There are two major objectives of the JDO architecture: 
-first, to provide application programmers a transparent,
-Java-centric view of persistent information, including enterprise data 
-and locally stored data; and second, to enable pluggable implementations 
-of data stores into 
-application servers.  Data stored in data stores is presented as
-instances of persistence-capable classes.
-<P>JDO defines interfaces and classes to be used by application programmers 
-when using classes whose instances are to be stored in persistent storage 
-(persistence-capable classes), and specifies the contracts between 
-suppliers of persistence-capable classes and the 
-runtime environment (which is part of the JDO implementation).
-<P>The JDO architecture defines a standard set of contracts between an 
-application programmer and an JDO vendor. These contracts focus on the 
-view of the Java instances of persistence capable classes.
-<P>The JDO PersistenceManagerFactory is the boostrap class for a JDO
-application.  The application gets an instance of the
-PersistenceManagerFactory by construction or via JDNI lookup.
-<P>The application acquires an instance of the JDO PersistenceManager by
-calling the getPersistenceManager method on an instance of JDO
-PersistenceManagerFactory.  
-<P>The JDO PersistenceManager is the primary interface for JDO-aware 
-application components: 
-<ul>
-<li>it gives access to the current Transaction interface;
-<li>it is the factory for the Query interface;
-<li>it contains methods for managing the life cycle of persistent instances.
-</ul>
-<P>A JDO PersistenceManager instance supports any number of JDO instances 
-at a time. It is responsible for managing the identity of its 
-associated JDO instances. A JDO instance is associated with either 
-zero or one JDO PersistenceManager. It will be zero if and only if the 
-JDO instance is transient nontransactional. As soon as the instance is made persistent 
-or transactional, it will be associated with exactly one JDO PersistenceManager.
-<P>A JDO PersistenceManager instance supports one transaction at a time, 
-and uses one connection to the underlying data source at a time. The JDO 
-PersistenceManager instance might use multiple transactions serially, 
-and might use multiple connections serially.
-<P>Normally, cache management is automatic and transparent. When instances 
-are queried, navigated to, or modified, instantiation of instances and 
-their fields and garbage collection of unreferenced instances occurs 
-without any explicit control. When the transaction in which persistent 
-instances are created, deleted, or modified commits, eviction is 
-automatically done by the transaction completion mechanisms. 
-<P>Operations on persistent JDO instances at the user's choice might be 
-performed in the context of a transaction. That is, the view of data 
-in the data store is transactionally consistent, according to the 
-standard definition of ACID transactions.
-<P>The Transaction interface is used to mark the beginning and end of a 
-application-defined unit of work.  The PersistenceManager allows the 
-application to get the instance that manages these transactional
-boundaries via the currentTransaction method.
-<P>The persistent manager instance is a factory for query instances, 
-and queries are executed in the context of the persistent manager instance. 
-The actual query execution might be performed by the JDO PersistenceManager 
-or might be delegated by the JDO PersistenceManager to its data store. 
-The actual query executed thus might be implemented in a very different 
-language from Java, and might be optimized to take advantage of particular 
-query language implementations.
-<P>Extents are collections of data store objects managed by the data store, 
-not by explicit user operations on collections. Extent capability is a 
-boolean property of classes that are persistence capable. If an instance 
-of a class that has a managed extent is made persistent via reachability, 
-the instance is put into the extent implicitly.
-</body>
-</html>
diff --git a/api11/src/java/javax/jdo/spi/I18NHelper.java b/api11/src/java/javax/jdo/spi/I18NHelper.java
deleted file mode 100644
index 12efd07..0000000
--- a/api11/src/java/javax/jdo/spi/I18NHelper.java
+++ /dev/null
@@ -1,398 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package javax.jdo.spi;
-
-import java.util.*;
-import java.text.MessageFormat;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-
-import javax.jdo.JDOFatalInternalException;
-
-/** Helper class for constructing messages from bundles.  The intended usage
- * of this class is to construct a new instance bound to a bundle, as in
- * <P>
- * <code>I18NHelper msg = I18NHelper.getInstance("javax.jdo.Bundle");</code>
- * <P>
- * This call uses the class loader that loaded the I18NHelper class to find
- * the specified Bundle. The class provides two overloaded getInstance
- * methods allowing to specify a different class loader: 
- * {@link #getInstance(Class cls)} looks for a bundle
- * called "Bundle.properties" located in the package of the specified class 
- * object and {@link #getInstance(String bundleName,ClassLoader loader)} 
- * uses the specified class loader to find the bundle.
- * <P>
- * Subsequently, instance methods can be used to format message strings 
- * using the text from the bundle, as in 
- * <P>
- * <code>throw new JDOFatalInternalException (msg.msg("ERR_NoMetadata", cls.getName()));</code>
- * @since 1.0.1
- * @version 1.1
- */        
-public class I18NHelper {
-
-    /** Bundles that have already been loaded 
-     */
-    private static Hashtable    bundles = new Hashtable();
-    
-    /** Helper instances that have already been created 
-     */
-    private static Hashtable    helpers = new Hashtable();
-    
-    /** The default locale for this VM.
-     */
-    private static Locale       locale = Locale.getDefault();
-
-    /** The name of the bundle used by this instance of the helper.
-     */
-    private final String        bundleName;
-
-    /** The bundle used by this instance of the helper.
-     */
-    private ResourceBundle      bundle = null;
-
-    /** Throwable if ResourceBundle couldn't be loaded
-     */
-    private Throwable           failure = null;
-
-    /** The unqualified standard name of a bundle. */
-    private static final String bundleSuffix = ".Bundle";    // NOI18N
-
-    /** Constructor */
-    private I18NHelper() {
-        this.bundleName = null;
-    }
-
-    /** Constructor for an instance bound to a bundle.
-     * @param bundleName the name of the resource bundle
-     * @param loader the class loader from which to load the resource
-     * bundle
-     */
-    private I18NHelper (String bundleName, ClassLoader loader) {
-        this.bundleName = bundleName;
-        try {
-            bundle = loadBundle (bundleName, loader);
-        }
-        catch (Throwable e) {
-            failure = e;
-        }
-    }
-    
-    /** An instance bound to a bundle. This method uses the current class 
-     * loader to find the bundle.
-     * @param bundleName the name of the bundle
-     * @return the helper instance bound to the bundle
-     */
-    public static I18NHelper getInstance (String bundleName) {
-        return getInstance (bundleName, I18NHelper.class.getClassLoader());
-    }
-
-    /** An instance bound to a bundle. This method figures out the bundle name
-     * for the class object's package and uses the class' class loader to
-     * find the bundle. Note, the specified class object must not be
-     * <code>null</code>.
-     * @param cls the class object from which to load the resource bundle
-     * @return the helper instance bound to the bundle
-     */
-    public static I18NHelper getInstance (final Class cls) {
-        ClassLoader classLoader = (ClassLoader) AccessController.doPrivileged (
-            new PrivilegedAction () {
-                public Object run () {
-                    return cls.getClassLoader();
-                }
-            }
-            );
-        String bundle = getPackageName (cls.getName()) + bundleSuffix;
-        return getInstance (bundle, classLoader);
-    }
-
-    /** An instance bound to a bundle. This method uses the specified class
-     * loader to find the bundle. Note, the specified class loader must not
-     * be <code>null</code>.
-     * @param bundleName the name of the bundle
-     * @param loader the class loader from which to load the resource
-     * bundle
-     * @return the helper instance bound to the bundle
-     */
-    public static I18NHelper getInstance (String bundleName, 
-                                          ClassLoader loader) {
-        I18NHelper helper = (I18NHelper) helpers.get (bundleName);
-        if (helper != null) {
-            return helper;
-        }
-        helper = new I18NHelper(bundleName, loader);
-        helpers.put (bundleName, helper);
-        // if two threads simultaneously create the same helper, return the first
-        // one to be put into the Hashtable.  The other will be garbage collected.
-        return (I18NHelper) helpers.get (bundleName);
-    }
-
-    /** Message formatter
-     * @param messageKey the message key
-     * @return the resolved message text
-     */
-    public String msg (String messageKey) {
-        assertBundle (messageKey);
-        return getMessage (bundle, messageKey);
-    }
-
-    /** Message formatter
-     * @param messageKey the message key
-     * @param arg1 the first argument
-     * @return the resolved message text
-     */
-    public String msg (String messageKey, Object arg1) {
-        assertBundle (messageKey);
-        return getMessage (bundle, messageKey, arg1);
-    }
-
-    /** Message formatter
-     * @param messageKey the message key
-     * @param arg1 the first argument
-     * @param arg2 the second argument
-     * @return the resolved message text
-     */
-    public String msg (String messageKey, Object arg1, Object arg2) {
-        assertBundle (messageKey);
-        return getMessage (bundle, messageKey, arg1, arg2);
-    }
-
-    /** Message formatter
-     * @param messageKey the message key
-     * @param arg1 the first argument
-     * @param arg2 the second argument
-     * @param arg3 the third argument
-     * @return the resolved message text
-     */
-    public String msg (String messageKey, Object arg1, Object arg2, Object arg3) {
-        assertBundle (messageKey);
-        return getMessage (bundle, messageKey, arg1, arg2, arg3);
-    }
-
-    /** Message formatter
-     * @param messageKey the message key
-     * @param args the array of arguments
-     * @return the resolved message text
-     */
-    public String msg (String messageKey, Object[] args) {
-        assertBundle (messageKey);
-        return getMessage (bundle, messageKey, args);
-    }
-
-    /** Message formatter
-     * @param messageKey the message key
-     * @param arg the argument
-     * @return the resolved message text
-     */
-    public String msg (String messageKey, int arg) {
-        assertBundle (messageKey);
-        return getMessage(bundle, messageKey, arg);
-    }
-    
-    /** Message formatter
-     * @param messageKey the message key
-     * @param arg the argument
-     * @return the resolved message text
-     */
-    public String msg (String messageKey, boolean arg) {
-        assertBundle (messageKey);
-        return getMessage(bundle, messageKey, arg);
-    }
-    
-    /** Returns the resource bundle used by this I18NHelper.
-     * @return the associated resource bundle
-     * @since 1.1
-     */
-    public ResourceBundle getResourceBundle () {
-        assertBundle ();
-        return bundle;
-    }
-    
-    //========= Internal helper methods ==========
-
-    /**
-     * Load ResourceBundle by bundle name
-     * @param bundleName the name of the bundle
-     * @param loader the class loader from which to load the resource bundle
-     * @return  the ResourceBundle
-     */
-    final private static ResourceBundle loadBundle(
-        String bundleName, ClassLoader loader) {
-        ResourceBundle messages = (ResourceBundle)bundles.get(bundleName);
-
-        if (messages == null) //not found as loaded - add
-        {
-            if (loader != null) {
-                messages = ResourceBundle.getBundle(bundleName, locale, loader);
-            } else {
-                // the JDO library is loaded by the boostrap class loader
-                messages = ResourceBundle.getBundle(bundleName, locale,
-                        getSystemClassLoaderPrivileged());
-            }
-            bundles.put(bundleName, messages);
-        }
-        return messages;
-    }
-
-    /** Assert resources available
-     * @since 1.1
-     * @throws JDOFatalInternalException if the resource bundle could not
-     * be loaded during construction.
-     */
-    private void assertBundle () {
-        if (failure != null)
-            throw new JDOFatalInternalException (
-                "No resources could be found for bundle:\"" + 
-                bundle + "\" ", failure);
-    }
-    
-    /** Assert resources available
-     * @param key the message key 
-     * @since 1.0.2
-     * @throws JDOFatalInternalException if the resource bundle could not
-     * be loaded during construction.
-     */
-    private void assertBundle (String key) {
-        if (failure != null)
-            throw new JDOFatalInternalException (
-                "No resources could be found to annotate error message key:\"" + 
-                key + "\"", failure);
-    }
-
-    /**
-     * Returns message as <code>String</code>
-     * @param messages the resource bundle
-     * @param messageKey the message key
-     * @return the resolved message text
-     */
-    final private static String getMessage(ResourceBundle messages, String messageKey) 
-    {
-        return messages.getString(messageKey);
-    }
-
-    /**
-     * Formats message by adding array of arguments
-     * @param messages the resource bundle
-     * @param messageKey the message key
-     * @param msgArgs an array of arguments to substitute into the message
-     * @return the resolved message text
-     */
-    final private static String getMessage(ResourceBundle messages, String messageKey, Object msgArgs[]) 
-    {
-        for (int i=0; i<msgArgs.length; i++) {
-            if (msgArgs[i] == null) msgArgs[i] = ""; // NOI18N
-        }
-        MessageFormat formatter = new MessageFormat(messages.getString(messageKey));
-        return formatter.format(msgArgs);
-    }
-    
-    /**
-     * Formats message by adding an <code>Object</code> argument.
-     * @param messages the resource bundle
-     * @param messageKey the message key
-     * @param arg the argument
-     * @return the resolved message text
-     */
-    final private static String getMessage(ResourceBundle messages, String messageKey, Object arg) 
-    {
-        Object []args = {arg};
-        return getMessage(messages, messageKey, args);
-    }
-    
-    /**
-     * Formats message by adding two <code>Object</code> arguments.
-     * @param messages the resource bundle
-     * @param messageKey the message key
-     * @param arg1 the first argument
-     * @param arg2 the second argument
-     * @return the resolved message text
-     */
-    final private static String getMessage(ResourceBundle messages, String messageKey, Object arg1,
-                                   Object arg2) 
-    {
-        Object []args = {arg1, arg2};
-        return getMessage(messages, messageKey, args);
-    }
-    
-    /**
-     * Formats message by adding three <code>Object</code> arguments.
-     * @param messages the resource bundle
-     * @param messageKey the message key
-     * @param arg1 the first argument
-     * @param arg2 the second argument
-     * @param arg3 the third argument
-     * @return the resolved message text
-     */
-    final private static String getMessage(ResourceBundle messages, String messageKey, Object arg1,
-                                   Object arg2, Object arg3) 
-    {
-        Object []args = {arg1, arg2, arg3};
-        return getMessage(messages, messageKey, args);
-    }
-
-    /**
-     * Formats message by adding an <code>int</code> as an argument.
-     * @param messages the resource bundle
-     * @param messageKey the message key
-     * @param arg the argument
-     * @return the resolved message text
-     */
-    final private static String getMessage(ResourceBundle messages, String messageKey, int arg) 
-    {
-        Object []args = {new Integer(arg)};
-        return getMessage(messages, messageKey, args);
-    }
-    
-    /**
-     * Formats message by adding a <code>boolean</code> as an argument.
-     * @param messages the resource bundle
-     * @param messageKey the message key
-     * @param arg the argument
-     * @return the resolved message text
-     */
-    final private static String getMessage(ResourceBundle messages, String messageKey, boolean arg) 
-    {
-        Object []args = {String.valueOf(arg)};
-        return getMessage(messages, messageKey, args);
-    }
-
-    /**  
-     * Returns the package portion of the specified class.
-     * @param className the name of the class from which to extract the 
-     * package 
-     * @return package portion of the specified class
-     */   
-    final private static String getPackageName(final String className)
-    { 
-        final int index = className.lastIndexOf('.');
-        return ((index != -1) ? className.substring(0, index) : ""); // NOI18N
-    }
-
-    /**
-     * Get the system class loader. This must be done in a doPrivileged 
-     * block because of security.
-     */
-    private static ClassLoader getSystemClassLoaderPrivileged() {
-        return (ClassLoader) AccessController.doPrivileged (
-            new PrivilegedAction () {
-                public Object run () {
-                    return ClassLoader.getSystemClassLoader();
-                }
-            }
-        );
-    }
-}
diff --git a/api11/src/java/javax/jdo/spi/JDOImplHelper.java b/api11/src/java/javax/jdo/spi/JDOImplHelper.java
deleted file mode 100644
index 94058b6..0000000
--- a/api11/src/java/javax/jdo/spi/JDOImplHelper.java
+++ /dev/null
@@ -1,589 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * JDOImplHelper.java
- *
- * Created on February 2, 2001, 3:53 PM
- */
-
-package javax.jdo.spi;
-
-import java.util.HashMap;
-import java.util.WeakHashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.Collection;
-import java.util.Collections;
-
-import javax.jdo.spi.JDOPermission;
-import javax.jdo.JDOFatalUserException;
-import javax.jdo.JDOFatalInternalException;
-
-/** This class is a helper class for JDO implementations.  It contains methods
- * to register metadata for persistence-capable classes and to perform common
- * operations needed by implementations, not by end users.
- * <P><code>JDOImplHelper</code> allows construction of instances of persistence-capable
- * classes without using reflection.
- * <P>Persistence-capable classes register themselves via a static method 
- * at class load time.
- * There is no security restriction on this access.  JDO implementations
- * get access to the functions provided by this class only if they are
- * authorized by the security manager.  To avoid having every call go through
- * the security manager, only the call to get an instance is checked.  Once an 
- * implementation
- * has an instance, any of the methods can be invoked without security checks.
- * @author Craig Russell
- * @version 1.0.2
- *
- */
-public class JDOImplHelper extends java.lang.Object {
-    
-    /** This synchronized <code>HashMap</code> contains a static mapping of
-     * <code>PersistenceCapable</code> class to
-     * metadata for the class used for constructing new instances.  New entries
-     * are added by the static method in each <code>PersistenceCapable</code> class.
-     * Entries are never removed.
-     */    
-    private static Map registeredClasses = Collections.synchronizedMap(new HashMap ());
-    
-    /** This Set contains all classes that have registered for setStateManager
-     * permissions via authorizeStateManagerClass.
-     */
-    private static Map authorizedStateManagerClasses = new WeakHashMap();
-
-    /** This list contains the registered listeners for <code>RegisterClassEvent</code>s.
-     */
-    private static List listeners = new ArrayList();
-
-    /** The singleton <code>JDOImplHelper</code> instance.
-     */    
-    private static JDOImplHelper jdoImplHelper = new JDOImplHelper();
-    
-    /** The Internationalization message helper.
-     */
-    private final static I18NHelper msg = I18NHelper.getInstance ("javax.jdo.Bundle");
-    
-    /** Creates new JDOImplHelper */
-    private JDOImplHelper() {
-    }
-    
-    /** Get an instance of <code>JDOImplHelper</code>.  This method
-     * checks that the caller is authorized for <code>JDOPermission("getMetadata")</code>,
-     * and if not, throws <code>SecurityException</code>.
-     * @return an instance of <code>JDOImplHelper</code>.
-     * @throws SecurityException if the caller is not authorized for JDOPermission("getMetadata").
-     */    
-    public static JDOImplHelper getInstance() 
-        throws SecurityException {        
-        SecurityManager sec = System.getSecurityManager();
-        if (sec != null) { 
-            // throws exception if caller is not authorized
-            sec.checkPermission (JDOPermission.GET_METADATA);
-        }
-        return jdoImplHelper;
-    }
-    
-    /** Get the field names for a <code>PersistenceCapable</code> class.  The order 
-     * of fields is the natural ordering of the <code>String</code> class (without
-     * considering localization).
-     * @param pcClass the <code>PersistenceCapable</code> class.
-     * @return the field names for the class.
-     */    
-    public String[] getFieldNames (Class pcClass) {
-        Meta meta = getMeta (pcClass);
-        return meta.getFieldNames();
-    }
-
-    /** Get the field types for a <code>PersistenceCapable</code> class.  The order
-     * of fields is the same as for field names.
-     * @param pcClass the <code>PersistenceCapable</code> class.
-     * @return the field types for the class.
-     */    
-    public Class[] getFieldTypes (Class pcClass) {
-        Meta meta = getMeta (pcClass);
-        return meta.getFieldTypes();
-    }
-            
-    /** Get the field flags for a <code>PersistenceCapable</code> class.  The order
-     * of fields is the same as for field names.
-     * @param pcClass the <code>PersistenceCapable</code> class.
-     * @return the field types for the class.
-     */    
-    public byte[] getFieldFlags (Class pcClass) {
-        Meta meta = getMeta (pcClass);
-        return meta.getFieldFlags();
-    }
-            
-    /** Get the persistence-capable superclass for a <code>PersistenceCapable</code> class.
-     * @param pcClass the <code>PersistenceCapable</code> class.
-     * @return The <code>PersistenceCapable</code> superclass for this class,
-     * or <code>null</code> if there isn't one.
-     */    
-    public Class getPersistenceCapableSuperclass (Class pcClass) {
-        Meta meta = getMeta (pcClass);
-        return meta.getPersistenceCapableSuperclass();
-    }
-            
-    
-    /** Create a new instance of the class and assign its <code>jdoStateManager</code>.
-     * The new instance has its <code>jdoFlags</code> set to <code>LOAD_REQUIRED</code>.
-     * @see PersistenceCapable#jdoNewInstance(StateManager sm)
-     * @param pcClass the <code>PersistenceCapable</code> class.
-     * @param sm the <code>StateManager</code> which will own the new instance.
-     * @return the new instance, or <code>null</code> if the class is not registered.
-     */    
-    public PersistenceCapable newInstance (Class pcClass, StateManager sm) {
-        Meta meta = getMeta (pcClass);
-        PersistenceCapable pcInstance = meta.getPC();
-        return pcInstance == null?null:pcInstance.jdoNewInstance(sm);
-    }
-    
-    /** Create a new instance of the class and assign its <code>jdoStateManager</code> and 
-     * key values from the ObjectId.  If the oid parameter is <code>null</code>,
-     * no key values are copied.
-     * The new instance has its <code>jdoFlags</code> set to <code>LOAD_REQUIRED</code>.
-     * @see PersistenceCapable#jdoNewInstance(StateManager sm, Object oid)
-     * @param pcClass the <code>PersistenceCapable</code> class.
-     * @param sm the <code>StateManager</code> which will own the new instance.
-     * @return the new instance, or <code>null</code> if the class is not registered.
-     * @param oid the ObjectId instance from which to copy key field values.
- */    
-    public PersistenceCapable newInstance 
-            (Class pcClass, StateManager sm, Object oid) {
-        Meta meta = getMeta (pcClass);
-        PersistenceCapable pcInstance = meta.getPC();
-        return pcInstance == null?null:pcInstance.jdoNewInstance(sm, oid);
-    }
-    
-    /** Create a new instance of the ObjectId class of this
-     * <code>PersistenceCapable</code> class.
-     * @param pcClass the <code>PersistenceCapable</code> class.
-     * @return the new ObjectId instance, or <code>null</code> if the class is not registered.
-     */    
-    public Object newObjectIdInstance (Class pcClass) {
-        Meta meta = getMeta (pcClass);
-        PersistenceCapable pcInstance = meta.getPC();
-        return pcInstance == null?null:pcInstance.jdoNewObjectIdInstance();
-    }
-    
-    /** Create a new instance of the ObjectId class of this <code>PersistenceCapable</code>
-     * class, using the <code>String</code> form of the constructor.
-     * @return the new ObjectId instance, or <code>null</code> if the class is not registered.
-     * @param str the <code>String</code> form of the object id
-     * @param pcClass the <code>PersistenceCapable</code> class.
-     */    
-    public Object newObjectIdInstance (Class pcClass, String str) {
-        Meta meta = getMeta (pcClass);
-        PersistenceCapable pcInstance = meta.getPC();
-        return pcInstance == null?null:pcInstance.jdoNewObjectIdInstance(str);
-    }
-    
-    /** Copy fields from an outside source to the key fields in the ObjectId.
-     * This method is generated in the <code>PersistenceCapable</code> class to
-     * generate a call to the field manager for each key field in the ObjectId.  
-     * <P>For example, an ObjectId class that has three key fields (<code>int id</code>, 
-     * <code>String name</code>, and <code>Float salary</code>) would have the method generated:
-     * <P><code>
-     * void jdoCopyKeyFieldsToObjectId (Object oid, ObjectIdFieldSupplier fm) {
-     * <BR>    oid.id = fm.fetchIntField (0);
-     * <BR>    oid.name = fm.fetchStringField (1);
-     * <BR>    oid.salary = fm.fetchObjectField (2);
-     * <BR>}</code>
-     * <P>The implementation is responsible for implementing the 
-     * <code>ObjectIdFieldSupplier</code> to provide the values for the key fields.
-     * @param pcClass the <code>PersistenceCapable Class</code>.
-     * @param oid the ObjectId target of the copy.
-     * @param fm the field manager that supplies the field values.
- */    
-    public void copyKeyFieldsToObjectId 
-    (Class pcClass, PersistenceCapable.ObjectIdFieldSupplier fm, Object oid) {
-        Meta meta = getMeta (pcClass);
-        PersistenceCapable pcInstance = meta.getPC();
-        if (pcInstance == null) {
-            throw new JDOFatalInternalException (
-                msg.msg("ERR_AbstractClassNoIdentity", pcClass.getName())); //NOI18N
-        }
-        pcInstance.jdoCopyKeyFieldsToObjectId(fm, oid);
-    }
-
-    /** Copy fields to an outside source from the key fields in the ObjectId.
-     * This method is generated in the <code>PersistenceCapable</code> class to generate
-     * a call to the field manager for each key field in the ObjectId.  For
-     * example, an ObjectId class that has three key fields (<code>int id</code>,
-     * <code>String name</code>, and <code>Float salary</code>) would have the method generated:
-     * <P><code>void jdoCopyKeyFieldsFromObjectId
-     * <BR>        (PersistenceCapable oid, ObjectIdFieldConsumer fm) {
-     * <BR>     fm.storeIntField (0, oid.id);
-     * <BR>     fm.storeStringField (1, oid.name);
-     * <BR>     fm.storeObjectField (2, oid.salary);
-     * <BR>}</code>
-     * <P>The implementation is responsible for implementing the
-     * <code>ObjectIdFieldConsumer</code> to store the values for the key fields.
-     * @param pcClass the <code>PersistenceCapable</code> class
-     * @param oid the ObjectId source of the copy.
-     * @param fm the field manager that receives the field values.
-     */    
-    public void copyKeyFieldsFromObjectId
-    (Class pcClass, PersistenceCapable.ObjectIdFieldConsumer fm, Object oid) {
-        Meta meta = getMeta (pcClass);
-        PersistenceCapable pcInstance = meta.getPC();
-        if (pcInstance == null) {
-            throw new JDOFatalInternalException (
-                msg.msg("ERR_AbstractClassNoIdentity", pcClass.getName())); //NOI18N
-        }
-        pcInstance.jdoCopyKeyFieldsFromObjectId(fm, oid);
-    }
-    
-    /** Register metadata by class.  The registration will be done in the
-     * class named <code>JDOImplHelper</code> loaded by the same or an
-     * ancestor class loader as the <code>PersistenceCapable</code> class
-     * performing the registration. 
-     *
-     * @param pcClass the <code>PersistenceCapable</code> class
-     * used as the key for lookup.
-     * @param fieldNames an array of <code>String</code> field names for persistent and transactional fields
-     * @param fieldTypes an array of <code>Class</code> field types
-     * @param fieldFlags the Field Flags for persistent and transactional fields
-     * @param pc an instance of the <code>PersistenceCapable</code> class
-     * @param persistenceCapableSuperclass the most immediate superclass that is <code>PersistenceCapable</code>
-     */    
-    public static void registerClass (Class pcClass, 
-            String[] fieldNames, Class[] fieldTypes, 
-            byte[] fieldFlags, Class persistenceCapableSuperclass,
-            PersistenceCapable pc) {
-        if (pcClass == null) 
-            throw new NullPointerException(msg.msg("ERR_NullClass"));
-        Meta meta = new Meta (fieldNames, fieldTypes, 
-            fieldFlags, persistenceCapableSuperclass, pc);
-        registeredClasses.put (pcClass, meta);
-
-        // handle class registration listeners
-        synchronized (listeners) {
-            if (!listeners.isEmpty()) {
-                RegisterClassEvent event = new RegisterClassEvent(
-                    jdoImplHelper, pcClass, fieldNames, fieldTypes, 
-                    fieldFlags, persistenceCapableSuperclass);
-                for (Iterator i = listeners.iterator(); i.hasNext();) {
-                    RegisterClassListener crl = 
-                        (RegisterClassListener)i.next();
-                    if (crl != null) {
-                        crl.registerClass(event);
-                    }
-                }
-            }
-        }
-    }
-        
-    /**
-     * Unregister metadata by class loader. This method unregisters all
-     * registered <code>PersistenceCapable</code> classes loaded by the
-     * specified class loader. Any attempt to get metadata for unregistered
-     * classes will result in a <code>JDOFatalUserException</code>. 
-     * @param cl the class loader.
-     * @since 1.0.2
-     */
-    public void unregisterClasses (ClassLoader cl)
-    {
-        SecurityManager sec = System.getSecurityManager();
-        if (sec != null) { 
-            // throws exception if caller is not authorized
-            sec.checkPermission (JDOPermission.MANAGE_METADATA);
-        }
-        synchronized(registeredClasses) {
-            for (Iterator i = registeredClasses.keySet().iterator(); i.hasNext();) {
-                Class pcClass = (Class)i.next();
-                // Note, the pc class was registered by calling the static
-                // method JDOImplHelper.registerClass. This means the
-                // JDOImplHelper class loader is the same as or an ancestor
-                // of the class loader of the pc class. In this case method
-                // getClassLoader does not perform a security check for
-                // RuntimePermission("getClassLoader") and thus we do not 
-                // need a privileged block for the getClassLoader call.
-                if ((pcClass != null) && (pcClass.getClassLoader() == cl)) {
-                    // unregister pc class, if its class loader is the
-                    // specified one.
-                    i.remove();
-                }
-            }
-        }
-    }
-
-    /**
-     * Unregister metadata by class. This method unregisters the specified
-     * class. Any further attempt to get metadata for the specified class will
-     * result in a <code>JDOFatalUserException</code>. 
-     * @param pcClass the <code>PersistenceCapable</code> class to be unregistered.
-     * @since 1.0.2
-     */
-    public void unregisterClass (Class pcClass)
-    {
-        if (pcClass == null) 
-            throw new NullPointerException(msg.msg("ERR_NullClass"));
-        SecurityManager sec = System.getSecurityManager();
-        if (sec != null) { 
-            // throws exception if caller is not authorized
-            sec.checkPermission (JDOPermission.MANAGE_METADATA);
-        }
-        registeredClasses.remove(pcClass);
-    }
-
-    /** 
-     * Add the specified <code>RegisterClassListener</code> to the listener list.
-     * @param crl the listener to be added
-     */
-    public void addRegisterClassListener (RegisterClassListener crl) {
-        HashSet alreadyRegisteredClasses = null;
-        synchronized (listeners) {
-            listeners.add(crl);
-            // Make a copy of the existing set of registered classes.
-            // Between these two lines of code, any number of new class registrations
-            // might occur, and will then all wait until this synchronized block completes.
-            // Some of the class registrations might be delivered twice to
-            // the newly registered listener.
-            alreadyRegisteredClasses = new HashSet (registeredClasses.keySet());
-        }
-        // new registrations will call the new listener while the following occurs
-        // notify the new listener about already-registered classes
-        for (Iterator it = alreadyRegisteredClasses.iterator(); it.hasNext();) {
-            Class pcClass = (Class)it.next();
-            Meta meta = getMeta (pcClass);
-            RegisterClassEvent event = new RegisterClassEvent(
-                this, pcClass, meta.getFieldNames(), meta.getFieldTypes(), 
-                meta.getFieldFlags(), meta.getPersistenceCapableSuperclass());
-            crl.registerClass (event);
-        }
-    }
-
-    /** 
-     * Remove the specified <code>RegisterClassListener</code> from the listener list.
-     * @param crl the listener to be removed
-     */
-    public void removeRegisterClassListener (RegisterClassListener crl) {
-        synchronized (listeners) {
-            listeners.remove(crl);
-        }
-    }
-
-    /**
-     * Returns a collection of class objects of the registered 
-     * persistence-capable classes.
-     * @return registered persistence-capable classes
-     */
-    public Collection getRegisteredClasses() {
-        return Collections.unmodifiableCollection(registeredClasses.keySet());
-    }
-
-    /** Look up the metadata for a <code>PersistenceCapable</code> class.
-     * @param pcClass the <code>Class</code>.
-     * @return the <code>Meta</code> for the <code>Class</code>.
-     */    
-    private static Meta getMeta (Class pcClass) {
-        Meta ret = (Meta) registeredClasses.get (pcClass);
-        if (ret == null) {
-            throw new JDOFatalUserException(
-                msg.msg ("ERR_NoMetadata", pcClass.getName())); //NOI18N
-        }
-        return ret;
-    }
-    
-    /** Register a class authorized to replaceStateManager.  The caller of
-     * this method must be authorized for JDOPermission("setStateManager").
-     * During replaceStateManager, a persistence-capable class will call
-     * the corresponding checkAuthorizedStateManager and the class of the
-     * instance of the parameter must have been registered.
-     * @param smClass a Class that is authorized for JDOPermission("setStateManager").
-     * @throws SecurityException if the caller is not authorized for JDOPermission("setStateManager").
-     * @since 1.0.1
-     */
-    public static void registerAuthorizedStateManagerClass (Class smClass) 
-        throws SecurityException {
-        if (smClass == null) 
-            throw new NullPointerException(msg.msg("ERR_NullClass"));
-        SecurityManager sm = System.getSecurityManager();
-        if (sm != null) {
-            sm.checkPermission(JDOPermission.SET_STATE_MANAGER);
-        }
-        synchronized (authorizedStateManagerClasses) {
-            authorizedStateManagerClasses.put(smClass, null);
-        }
-    }
-    
-    /** Register classes authorized to replaceStateManager.  The caller of
-     * this method must be authorized for JDOPermission("setStateManager").
-     * During replaceStateManager, a persistence-capable class will call
-     * the corresponding checkAuthorizedStateManager and the class of the
-     * instance of the parameter must have been registered.
-     * @param smClasses a Collection of Classes that are authorized for JDOPermission("setStateManager").
-     * @throws SecurityException if the caller is not authorized for JDOPermission("setStateManager").
-     * @since 1.0.1
-     */
-    public static void registerAuthorizedStateManagerClasses (Collection smClasses) 
-        throws SecurityException {
-        SecurityManager sm = System.getSecurityManager();
-        if (sm != null) {
-            sm.checkPermission(JDOPermission.SET_STATE_MANAGER);
-            synchronized (authorizedStateManagerClasses) {
-                for (Iterator it = smClasses.iterator(); it.hasNext();) {
-                    Object smClass = it.next();
-                    if (!(smClass instanceof Class)) {
-                        throw new ClassCastException(
-                            msg.msg("ERR_StateManagerClassCast", 
-                                smClass.getClass().getName()));
-                    }
-                    registerAuthorizedStateManagerClass((Class)it.next());
-                }
-            }
-        }
-    }
-    
-    /** Check that the parameter instance is of a class that is authorized for
-     * JDOPermission("setStateManager").  This method is called by the
-     * replaceStateManager method in persistence-capable classes.
-     * A class that is passed as the parameter to replaceStateManager must be
-     * authorized for JDOPermission("setStateManager").  To improve performance,
-     * first the set of authorized classes is checked, and if not present, a
-     * regular permission check is made.  The regular permission check requires
-     * that all callers on the stack, including the persistence-capable class
-     * itself, must be authorized for JDOPermission("setStateManager").
-     * @param sm an instance of StateManager whose class is to be checked.
-     * @since 1.0.1
-     */
-    public static void checkAuthorizedStateManager (StateManager sm) {
-        checkAuthorizedStateManagerClass(sm.getClass());
-    }
-
-    /** Check that the parameter instance is a class that is authorized for
-     * JDOPermission("setStateManager").  This method is called by the
-     * constructors of JDO Reference Implementation classes.
-     * @param smClass a Class to be checked for JDOPermission("setStateManager")
-     * @since 1.0.1
-     */
-    public static void checkAuthorizedStateManagerClass (Class smClass) {
-        final SecurityManager scm = System.getSecurityManager();
-        if (scm == null) {
-            // if no security manager, no checking.
-            return;
-        }
-        synchronized(authorizedStateManagerClasses) {
-            if (authorizedStateManagerClasses.containsKey(smClass)) {
-                return;
-            }
-        }
-
-        // if not already authorized, perform "long" security checking.
-        scm.checkPermission(JDOPermission.SET_STATE_MANAGER);
-    }
-
-    /** This is a helper class to manage metadata per persistence-capable
-     * class.  The information is used at runtime to provide field names and
-     * field types to the JDO Model.
-     *
-     * This is the value of the <code>HashMap</code> which
-     * relates the <code>PersistenceCapable Class</code>
-     * as a key to the metadata.
-     */    
-    static class Meta {
-        
-        /** Construct an instance of <code>Meta</code>.
-         * @param fieldNames An array of <code>String</code>
-         * @param fieldTypes An array of <code>Class</code>
-         * @param fieldFlags an array of <code>int</code>
-         * @param persistenceCapableSuperclass the most immediate <code>PersistenceCapable</code> superclass
-         * @param pc An instance of the <code>PersistenceCapable</code> class
-         */        
-        Meta (String[] fieldNames, Class[] fieldTypes, byte[] fieldFlags,
-              Class persistenceCapableSuperclass, PersistenceCapable pc) {
-            this.fieldNames = fieldNames;
-            this.fieldTypes = fieldTypes;
-            this.fieldFlags = fieldFlags;
-            this.persistenceCapableSuperclass = persistenceCapableSuperclass;
-            this.pc = pc;
-        }
-    
-        /** This is an array of field names used
-         * for the Model at runtime.  The field
-         * is passed by the static class initialization.
-         */
-        String fieldNames[];
-    
-        /** Get the field names from the metadata.
-         * @return the array of field names.
-         */
-        String[] getFieldNames() {
-            return fieldNames;
-        }
-    
-        /** This is an array of field types used
-         * for the Model at runtime.  The field
-         * is passed by the static class initialization.
-         */
-        Class fieldTypes[];
-    
-        /** Get the field types from the metadata.
-         * @return the array of field types.
-         */
-        Class[] getFieldTypes() {
-            return fieldTypes;
-        }
-    
-        /** This is an array of field flags used
-         * for the Model at runtime.  The field
-         * is passed by the static class initialization.
-         */
-        byte fieldFlags[];
-    
-        /** Get the field types from the metadata.
-         * @return the array of field types.
-         */
-        byte[] getFieldFlags() {
-            return fieldFlags;
-        }
-
-        /** This is the <code>Class</code> instance of the <code>PersistenceCapable</code> superclass.
-         */
-        Class persistenceCapableSuperclass;
-    
-        /** Return the <code>PersistenceCapable</code> superclass.
-         * @return the <code>PersistenceCapable</code> superclass
-         */
-        Class getPersistenceCapableSuperclass() {
-            return persistenceCapableSuperclass;
-        }
-        /** This is an instance of <code>PersistenceCapable</code>,
-         * used at runtime to create new instances.
-         */
-        PersistenceCapable pc;
-    
-        /** Get an instance of the <code>PersistenceCapable</code> class.
-         * @return an instance of the <code>PersistenceCapable Class</code>.
-         */
-        PersistenceCapable getPC() {
-            return pc;
-        }
-    
-        /** Return the string form of the metadata.
-         * @return the string form
-         */
-        public String toString() {
-            return "Meta-" + pc.getClass().getName(); //NOI18N
-        }
-    }
-}
diff --git a/api11/src/java/javax/jdo/spi/JDOPermission.java b/api11/src/java/javax/jdo/spi/JDOPermission.java
deleted file mode 100644
index f1da029..0000000
--- a/api11/src/java/javax/jdo/spi/JDOPermission.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package javax.jdo.spi;
-
-/**
- * The <code>JDOPermission</code> class is for operations that are reserved for JDO 
- * implementations and should not be called by other code.  A
- * <code>JDOPermission</code> is a <em>named permission</em> and has no
- * actions.  There are two names currently defined.  Each named permission
- * has a corresponding public static final field which contains an instance
- * of the named permission.
- * <P>
- * The following table
- * provides a summary description of what each named permission allows,
- * and discusses the risks of granting code the permission.
- * <P>
- *
- * <table border=1 cellpadding=5>
- * <tr>
- * <th>Permission Target Name</th>
- * <th>What the Permission Allows</th>
- * <th>Risks of Allowing this Permission</th>
- * </tr>
- *
- * <tr>
- *   <td><code>setStateManager</code></td>
- *   <td>This allows setting the <code>StateManager</code> for an instance of <code>PersistenceCapable</code>. 
- *   The <code>StateManager</code>
- *   has unlimited access to get and set persistent and transactional fields of
- *   the <code>PersistenceCapable</code> instance.</td>
- *   <td>This is dangerous in that information (possibly confidential) 
- *   normally unavailable would be accessible to malicious code.</td>
- * </tr>
- *
- * <tr>
- *   <td><code>getMetadata</code></td>
- *   <td>This allows getting metadata for any <code>PersistenceCapable</code> class that has
- *   registered with <code>JDOImplHelper</code>.</td>
- *   <td>This is dangerous in that metadata information (possibly confidential) 
- *   normally unavailable would be accessible to malicious code.</td>
- * </tr>
- *
- * <tr>
- *   <td><code>manageMetadata</code></td>
- *   <td>This allows managing metadata for any <code>PersistenceCapable</code> class that has
- *   registered with <code>JDOImplHelper</code>.</td>
- *   <td>This is dangerous in that metadata information (possibly confidential) 
- *   normally unavailable would be manageable (modifiable) by malicious code.</td>
- * </tr>
- *
- * <tr>
- *   <td><code>closePersistenceManagerFactory</code></td>
- *   <td>This allows closing a <code>PersistenceManagerFactory</code>,
- *       thereby releasing resources.</td> 
- *   <td>This is dangerous in that resources bound to the
- *       <code>PersistenceManagerFactory</code> would be releaseable by
- *       malicious code.</td>  
- * </tr>
- *
- * </table>
- *
- * @see java.security.Permission
- * @see java.security.BasicPermission
- * @see javax.jdo.spi.JDOImplHelper
- * @see javax.jdo.spi.PersistenceCapable
- * @version 1.0.2
- */
-public final
-class JDOPermission extends java.security.BasicPermission {
-    
-    /**
-     * Constructs a <code>JDOPermission</code> with the specified name.
-     *
-     * @param name the name of the <code>JDOPermission</code>
-     */
-    public JDOPermission(String name) {
-        super(name);
-    }
-
-    /**
-     * Constructs a <code>JDOPermission</code> with the specified name and actions.
-     * The actions should be <code>null</code>; they are ignored. This
-     * constructor exists for use by the <code>Policy</code> object
-     * to instantiate new <code>Permission</code> objects.
-     *
-     * @param name the name of the <code>JDOPermission</code>
-     * @param actions should be <code>null</code>.
-     */
-    public JDOPermission(String name, String actions) {
-        super(name, actions);
-    }
-
-    /** An instance of <code>JDOPermission</code> to be used for
-     * <code>getMetadata</code> permission checking.
-     */
-    public final static JDOPermission GET_METADATA = 
-        new JDOPermission("getMetadata"); // NOI18N
-    
-    /** An instance of <code>JDOPermission</code> to be used for
-     * <code>manageMetadata</code> permission checking.
-     * @since 1.0.2
-     */
-    public final static JDOPermission MANAGE_METADATA = 
-        new JDOPermission("manageMetadata"); // NOI18N
-    
-    /** An instance of <code>JDOPermission</code> to be used for
-     * <code>setStateManager</code> permission checking.
-     */
-    public final static JDOPermission SET_STATE_MANAGER = 
-        new JDOPermission("setStateManager"); // NOI18N
-    
-    /** An instance of <code>JDOPermission</code> to be used for
-     * <code>closePersistenceManagerFactory</code> permission checking.
-     * @since 1.0.1
-     */
-    public final static JDOPermission CLOSE_PERSISTENCE_MANAGER_FACTORY = 
-        new JDOPermission("closePersistenceManagerFactory"); // NOI18N
-    
-}
diff --git a/api11/src/java/javax/jdo/spi/PersistenceCapable.java b/api11/src/java/javax/jdo/spi/PersistenceCapable.java
deleted file mode 100644
index 0d6e4d6..0000000
--- a/api11/src/java/javax/jdo/spi/PersistenceCapable.java
+++ /dev/null
@@ -1,543 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package javax.jdo.spi;
-
-import javax.jdo.PersistenceManager;
-import javax.jdo.JDOHelper; // for javadoc
-
-/**
- *
- * @author Craig Russell
- * @version 1.0
- */
-
-/**
- * A class that can be managed by a JDO implementation must implement this interface.
- *
- * <P>Every class whose instances can be managed by a JDO PersistenceManager must
- * implement the PersistenceCapable interface.
- *
- * <P>This interface defines methods that allow the implementation to manage
- * the instances.  It also defines methods that allow a JDO aware
- * application to examine the runtime state of instances.  For example,
- * an application can discover whether the instance is persistent, transactional,
- * dirty, new, or deleted; and to get its associated
- * PersistenceManager if it has one.
- *
- * <P>In the Reference Implementation, the JDO Enhancer modifies the class
- * to implement PersistenceCapable prior to loading the class into the runtime
- * environment.  The Reference Enhancer also adds code to implement the
- * methods defined by PersistenceCapable.
- *
- *<P>The extra methods in the PersistenceCapable interface might be generated
- * by pre-processing a .java file, or might be generated from a tool directly.
- * The exact technique for generating the extra methods is not specified by
- * JDO.
- *
- * <P>The PersistenceCapable interface is designed to avoid name conflicts
- * in the scope of user-defined classes.  All of its declared method
- * names are prefixed with 'jdo'.
- */
-public interface PersistenceCapable {
-    /** If jdoFlags is set to READ_WRITE_OK, then the fields in the default fetch group
-     * can be accessed for read or write without notifying the StateManager.
-     */
-    static final byte READ_WRITE_OK = 0;
-    
-    /** If jdoFlags is set to LOAD_REQUIRED, then the fields in the default fetch group
-     * cannot be accessed for read or write without notifying the StateManager.
-     */
-    static final byte LOAD_REQUIRED = 1;
-    
-    /** If jdoFlags is set to READ_OK, then the fields in the default fetch group
-     * can be accessed for read without notifying the StateManager.
-     */
-    static final byte READ_OK = -1;
-    
-    /** If jdoFieldFlags for a field includes CHECK_READ, then
-     * the field has been enhanced to call the jdoStateManager on read
-     * if the jdoFlags setting is not READ_OK or READ_WRITE_OK.
-     */
-    static final byte CHECK_READ = 1;
-    
-    /** If jdoFieldFlags for a field includes MEDIATE_READ, then
-     * the field has been enhanced to always call the jdoStateManager
-     * on all reads.
-     */
-    static final byte MEDIATE_READ = 2;
-    
-    /** If jdoFieldFlags for a field includes CHECK_WRITE,
-     * then the field has been enhanced to call the
-     * jdoStateManager on write if the jdoFlags setting is not
-     * READ_WRITE_OK;.
-     */
-    static final byte CHECK_WRITE = 4;
-    
-    /** If jdoFieldFlags for a field includes MEDIATE_WRITE, then
-     * the field has been enhanced to always call the jdoStateManager
-     * on all writes.
-     */
-    static final byte MEDIATE_WRITE = 8;
-    
-    /** If jdoFieldFlags for a field includes SERIALIZABLE,
-     * then the field is not declared as TRANSIENT.
-     */
-    static final byte SERIALIZABLE = 16;
-    
-    /** Return the associated PersistenceManager if there is one.
-     * Transactional and persistent instances return the associated
-     * PersistenceManager.
-     *
-     * <P>Transient non-transactional instances return null.
-     * <P>This method always delegates to the StateManager if it is non-null.
-     * @return the PersistenceManager associated with this instance.
-     */
-    PersistenceManager jdoGetPersistenceManager();
-    
-    /** This method sets the StateManager instance that manages the state
-     * of this instance. This method is normally used by the StateManager
-     * during the process of making an instance persistent, transient,
-     * or transactional.
-     *
-     * The caller of this method must have JDOPermission for the instance,
-     * if the instance is not already owned by a StateManager.
-     * If the parameter is null, and the StateManager approves the change,
-     * then the jdoFlags field will be reset to READ_WRITE_OK.
-     * If the parameter is not null, and the security manager approves
-     * the change, then the jdoFlags field will be reset to LOAD_REQUIRED.
-     * @param sm The StateManager which will own this instance, or null
-     * to reset the instance to transient state
-     * @throws SecurityException if the caller does not have JDOPermission
-     * @see JDOPermission
-     */
-    void jdoReplaceStateManager(StateManager sm)
-    throws SecurityException;
-    
-    /** The owning StateManager uses this method to ask the instance to
-     * provide the value of the single field identified by fieldNumber.
-     * @param fieldNumber the field whose value is to be provided by
-     * a callback to the StateManager's
-     * providedXXXField method
-     */
-    void jdoProvideField(int fieldNumber);
-    
-    /** The owning StateManager uses this method to ask the instance to
-     * provide the values of the multiple fields identified by fieldNumbers.
-     * @param fieldNumbers the fields whose values are to be provided by
-     * multiple callbacks to the StateManager's
-     * providedXXXField method
-     */
-    void jdoProvideFields(int[] fieldNumbers);
-    
-    /** The owning StateManager uses this method to ask the instance to
-     * replace the value of the single field identified by number.
-     * @param fieldNumber the field whose value is to be replaced by
-     * a callback to the StateManager's
-     * replacingXXXField method
-     */
-    void jdoReplaceField(int fieldNumber);
-    
-    /** The owning StateManager uses this method to ask the instance to
-     * replace the values of the multiple fields identified by number.
-     * @param fieldNumbers the fields whose values are to be replaced by
-     * multiple callbacks to the StateManager's
-     * replacingXXXField method
-     */
-    void jdoReplaceFields(int[] fieldNumbers);
-    
-    /** The owning StateManager uses this method to ask the instance to
-     * replace the value of the flags by calling back the StateManager
-     * replacingFlags method.
-     */
-    void jdoReplaceFlags();
-    
-    /** Copy field values from another instance of the same class
-     * to this instance.
-     *<P>This method will throw an exception if the other instance is
-     * not managed by the same StateManager as this instance.
-     * @param other the PC instance from which field values are to be copied
-     * @param fieldNumbers the field numbers to be copied into this instance
-     */
-    void jdoCopyFields(Object other, int[] fieldNumbers);
-    
-    /** Explicitly mark this instance and this field dirty.
-     * Normally, PersistenceCapable classes are able to detect changes made
-     * to their fields.  However, if a reference to an array is given to a
-     * method outside the class, and the array is modified, then the
-     * persistent instance is not aware of the change.  This API allows the
-     * application to notify the instance that a change was made to a field.
-     *
-     *<P>The field name should be the fully qualified name, including package
-     * name and class name of the class declaring the field.  This allows
-     * unambiguous identification of the field to be marked dirty.
-     * If multiple classes declare the same field, and
-     * if the package and class name are not provided by the parameter in
-     * this API, then the field marked
-     * dirty is the field declared by the most derived class.
-     * <P>Transient instances ignore this method.
-     *<P>
-     * @param fieldName the name of the field to be marked dirty.
-     */
-    void jdoMakeDirty(String fieldName);
-    
-    /** Return a copy of the JDO identity associated with this instance.
-     *
-     * <P>Persistent instances of PersistenceCapable classes have a JDO identity
-     * managed by the PersistenceManager.  This method returns a copy of the
-     * ObjectId that represents the JDO identity.
-     *
-     * <P>Transient instances return null.
-     *
-     * <P>The ObjectId may be serialized
-     * and later restored, and used with a PersistenceManager from the same JDO
-     * implementation to locate a persistent instance with the same data store
-     * identity.
-     *
-     * <P>If the JDO identity is managed by the application, then the ObjectId may
-     * be used with a PersistenceManager from any JDO implementation that supports
-     * the PersistenceCapable class.
-     *
-     * <P>If the JDO identity is not managed by the application or the data store,
-     * then the ObjectId returned is only valid within the current transaction.
-     * <P>If the JDO identity is being changed in the transaction, this method
-     * returns the object id as of the beginning of the current transaction.
-     *
-     * @see PersistenceManager#getObjectId(Object pc)
-     * @see PersistenceManager#getObjectById(Object oid, boolean validate)
-     * @return a copy of the ObjectId of this instance as of the beginning of the transaction.
-     */
-    Object jdoGetObjectId();
-    
-    /** Return a copy of the JDO identity associated with this instance.
-     * This method is the same as jdoGetObjectId if the identity of the
-     * instance has not changed in the current transaction.
-     * <P>If the JDO identity is being changed in the transaction, this method
-     * returns the current object id as modified in the current transaction.
-     *
-     * @see #jdoGetObjectId()
-     * @see PersistenceManager#getObjectId(Object pc)
-     * @see PersistenceManager#getObjectById(Object oid, boolean validate)
-     * @return a copy of the ObjectId of this instance as modified in the transaction.
-     */
-    Object jdoGetTransactionalObjectId();
-    
-    /** Tests whether this object is dirty.
-     *
-     * Instances that have been modified, deleted, or newly
-     * made persistent in the current transaction return true.
-     *
-     *<P>Transient instances return false.
-     *<P>
-     * @see JDOHelper#isDirty(Object pc)
-     * @see JDOHelper#makeDirty(Object pc, String fieldName)
-     * @see #jdoMakeDirty(String fieldName)
-     * @return true if this instance has been modified in the current transaction.
-     */
-    boolean jdoIsDirty();
-    
-    /** Tests whether this object is transactional.
-     *
-     * Instances whose state is associated with the current transaction
-     * return true.
-     *
-     *<P>Transient instances return false.
-     *<P>
-     * @see JDOHelper#isTransactional(Object pc)
-     * @see PersistenceManager#makeTransactional(Object pc)
-     * @return true if this instance is transactional.
-     */
-    boolean jdoIsTransactional();
-    
-    /** Tests whether this object is persistent.
-     * Instances that represent persistent objects in the data store
-     * return true.
-     * @see JDOHelper#isPersistent(Object pc)
-     * @see PersistenceManager#makePersistent(Object pc)
-     * @return true if this instance is persistent.
-     */
-    boolean jdoIsPersistent();
-    
-    /** Tests whether this object has been newly made persistent.
-     *
-     * Instances that have been made persistent in the current transaction
-     * return true.
-     *
-     *<P>Transient instances return false.
-     *<P>
-     * @see JDOHelper#isNew(Object pc)
-     * @see PersistenceManager#makePersistent(Object pc)
-     * @return true if this instance was made persistent
-     * in the current transaction.
-     */
-    boolean jdoIsNew();
-    
-    /** Tests whether this object has been deleted.
-     *
-     * Instances that have been deleted in the current transaction return true.
-     *
-     *<P>Transient instances return false.
-     *<P>
-     * @see JDOHelper#isDeleted(Object pc)
-     * @see PersistenceManager#deletePersistent(Object pc)
-     * @return true if this instance was deleted
-     * in the current transaction.
-     */
-    boolean jdoIsDeleted();
-    
-    /** Return a new instance of this class, with the jdoStateManager set to the
-     * parameter, and jdoFlags set to LOAD_REQUIRED.
-     * <P>This method is used as a performance optimization as an alternative to
-     * using reflection to construct a new instance.  It is used by the
-     * JDOImplHelper class method newInstance.
-     * @return a new instance of this class.
-     * @see JDOImplHelper#newInstance(Class pcClass, StateManager sm)
-     * @param sm the StateManager that will own the new instance.
-     */
-    PersistenceCapable jdoNewInstance(StateManager sm);
-    
-    /** Return a new instance of this class, with the jdoStateManager set to the
-     * parameter, key fields initialized to the values in the oid, and jdoFlags
-     * set to LOAD_REQUIRED.
-     * <P>This method is used as a performance optimization as an alternative to
-     * using reflection to construct a new instance of a class that uses
-     * application identity.  It is used by the
-     * JDOImplHelper class method newInstance.
-     * @return a new instance of this class.
-     * @see JDOImplHelper#newInstance(Class pcClass, StateManager sm)
-     * @param sm the StateManager that will own the new instance.
-     * @param oid an instance of the object id class (application identity).
-     */
-    PersistenceCapable jdoNewInstance(StateManager sm, Object oid);
-    
-    /** Create a new instance of the ObjectId class for this PersistenceCapable class.
-     * The fields will have their Java default values.
-     * @return the new instance created.
-     */
-    Object jdoNewObjectIdInstance();
-    
-    /** Create a new instance of the ObjectId class for this PersistenceCapable
-     * class, using the String form of the constructor.
-     * The fields will have their Java default values.
-     * @return the new instance created.
-     * @param str the String form of the object identity instance
-     */
-    Object jdoNewObjectIdInstance(String str);
-    
-    /** Copy fields from this PersistenceCapable instance to the Object Id instance.
-     * @param oid the ObjectId target of the key fields
-     */
-    void jdoCopyKeyFieldsToObjectId(Object oid);
-    
-    /** Copy fields from an outside source to the key fields in the ObjectId.
-     * This method is generated in the PersistenceCapable class to generate
-     * a call to the field manager for each key field in the ObjectId.  For
-     * example, an ObjectId class that has three key fields (int id,
-     * String name, and Float salary) would have the method generated:
-     * <P>void jdoCopyKeyFieldsToObjectId
-     * <P>        (ObjectIdFieldSupplier fm, Object objectId) {
-     * <P>    EmployeeKey oid = (EmployeeKey)objectId;
-     * <P>    oid.id = fm.fetchIntField (0);
-     * <P>    oid.name = fm.fetchStringField (1);
-     * <P>    oid.salary = fm.fetchObjectField (2);
-     * <P>}
-     * <P>The implementation is responsible for implementing the
-     * ObjectIdFieldSupplier to produce the values for the key fields.
-     * @param oid the ObjectId target of the copy.
-     * @param fm the field supplier that supplies the field values.
-     */
-    void jdoCopyKeyFieldsToObjectId(ObjectIdFieldSupplier fm, Object oid);
-    
-    /** Copy fields to an outside source from the key fields in the ObjectId.
-     * This method is generated in the PersistenceCapable class to generate
-     * a call to the field manager for each key field in the ObjectId.  For
-     * example, an ObjectId class that has three key fields (int id,
-     * String name, and Float salary) would have the method generated:
-     * <P>void copyKeyFieldsFromObjectId
-     * <P>        (ObjectIdFieldConsumer fm, Object objectId) {
-     * <P>     EmployeeKey oid = (EmployeeKey)objectId;
-     * <P>     fm.storeIntField (0, oid.id);
-     * <P>     fm.storeStringField (1, oid.name);
-     * <P>     fm.storeObjectField (2, oid.salary);
-     * <P>}
-     * <P>The implementation is responsible for implementing the
-     * ObjectIdFieldManager to store the values for the key fields.
-     * @param oid the ObjectId source of the copy.
-     * @param fm the field manager that receives the field values.
-     */
-    void jdoCopyKeyFieldsFromObjectId(ObjectIdFieldConsumer fm, Object oid);
-    
-    /** This interface is a convenience interface that allows an instance to
-     * implement both ObjectIdFieldSupplier and ObjectIdFieldConsumer.
-     */
-    static interface ObjectIdFieldManager extends ObjectIdFieldConsumer, ObjectIdFieldSupplier {}
-    
-    /** This interface is used to provide fields to the Object id instance.  It is used
-     * by the method copyKeyFieldsToObjectId.  When the method is called, the
-     * generated code calls the instance of ObjectIdFieldManager for each field in
-     * the object id.
-     */
-    static interface ObjectIdFieldSupplier {
-        
-        /** Fetch one field from the field manager.  This field will be stored in the
-         * proper field of the ObjectId.
-         * @param fieldNumber the field number of the key field.
-         * @return the value of the field to be stored into the ObjectId.
-         */
-        boolean fetchBooleanField(int fieldNumber);
-        
-        /** Fetch one field from the field manager.  This field will be stored in the
-         * proper field of the ObjectId.
-         * @param fieldNumber the field number of the key field.
-         * @return the value of the field to be stored into the ObjectId.
-         */
-        char fetchCharField(int fieldNumber);
-        
-        /** Fetch one field from the field manager.  This field will be stored in the
-         * proper field of the ObjectId.
-         * @param fieldNumber the field number of the key field.
-         * @return the value of the field to be stored into the ObjectId.
-         */
-        byte fetchByteField(int fieldNumber);
-        
-        /** Fetch one field from the field manager.  This field will be stored in the
-         * proper field of the ObjectId.
-         * @param fieldNumber the field number of the key field.
-         * @return the value of the field to be stored into the ObjectId.
-         */
-        short fetchShortField(int fieldNumber);
-        
-        /** Fetch one field from the field manager.  This field will be stored in the
-         * proper field of the ObjectId.
-         * @param fieldNumber the field number of the key field.
-         * @return the value of the field to be stored into the ObjectId.
-         */
-        int fetchIntField(int fieldNumber);
-        
-        /** Fetch one field from the field manager.  This field will be stored in the
-         * proper field of the ObjectId.
-         * @param fieldNumber the field number of the key field.
-         * @return the value of the field to be stored into the ObjectId.
-         */
-        long fetchLongField(int fieldNumber);
-        
-        /** Fetch one field from the field manager.  This field will be stored in the
-         * proper field of the ObjectId.
-         * @param fieldNumber the field number of the key field.
-         * @return the value of the field to be stored into the ObjectId.
-         */
-        float fetchFloatField(int fieldNumber);
-        
-        /** Fetch one field from the field manager.  This field will be stored in the
-         * proper field of the ObjectId.
-         * @param fieldNumber the field number of the key field.
-         * @return the value of the field to be stored into the ObjectId.
-         */
-        double fetchDoubleField(int fieldNumber);
-        
-        /** Fetch one field from the field manager.  This field will be stored in the
-         * proper field of the ObjectId.
-         * @param fieldNumber the field number of the key field.
-         * @return the value of the field to be stored into the ObjectId.
-         */
-        String fetchStringField(int fieldNumber);
-        
-        /** Fetch one field from the field manager.  This field will be stored in the
-         * proper field of the ObjectId.
-         * @param fieldNumber the field number of the key field.
-         * @return the value of the field to be stored into the ObjectId.
-         */
-        Object fetchObjectField(int fieldNumber);
-    }
-    
-    /** This interface is used to store fields from the Object id instance.  It is used
-     * by the method copyKeyFieldsFromObjectId.  When the method is called, the
-     * generated code calls the instance of ObjectIdFieldManager for each field in
-     * the object id.
-     */
-    static interface ObjectIdFieldConsumer {
-        
-        /** Store one field into the field manager.  This field was retrieved from
-         * the field of the ObjectId.
-         * @param fieldNumber the field number of the key field.
-         * @param value the value of the field from the ObjectId.
-         */
-        void storeBooleanField(int fieldNumber, boolean value);
-        
-        /** Store one field into the field manager.  This field was retrieved from
-         * the field of the ObjectId.
-         * @param fieldNumber the field number of the key field.
-         * @param value the value of the field from the ObjectId.
-         */
-        void storeCharField(int fieldNumber, char value);
-        
-        /** Store one field into the field manager.  This field was retrieved from
-         * the field of the ObjectId.
-         * @param fieldNumber the field number of the key field.
-         * @param value the value of the field from the ObjectId.
-         */
-        void storeByteField(int fieldNumber, byte value);
-        
-        /** Store one field into the field manager.  This field was retrieved from
-         * the field of the ObjectId.
-         * @param fieldNumber the field number of the key field.
-         * @param value the value of the field from the ObjectId.
-         */
-        void storeShortField(int fieldNumber, short value);
-        
-        /** Store one field into the field manager.  This field was retrieved from
-         * the field of the ObjectId.
-         * @param fieldNumber the field number of the key field.
-         * @param value the value of the field from the ObjectId.
-         */
-        void storeIntField(int fieldNumber, int value);
-        
-        /** Store one field into the field manager.  This field was retrieved from
-         * the field of the ObjectId.
-         * @param fieldNumber the field number of the key field.
-         * @param value the value of the field from the ObjectId.
-         */
-        void storeLongField(int fieldNumber, long value);
-        
-        /** Store one field into the field manager.  This field was retrieved from
-         * the field of the ObjectId.
-         * @param fieldNumber the field number of the key field.
-         * @param value the value of the field from the ObjectId.
-         */
-        void storeFloatField(int fieldNumber, float value);
-        
-        /** Store one field into the field manager.  This field was retrieved from
-         * the field of the ObjectId.
-         * @param fieldNumber the field number of the key field.
-         * @param value the value of the field from the ObjectId.
-         */
-        void storeDoubleField(int fieldNumber, double value);
-        
-        /** Store one field into the field manager.  This field was retrieved from
-         * the field of the ObjectId.
-         * @param fieldNumber the field number of the key field.
-         * @param value the value of the field from the ObjectId.
-         */
-        void storeStringField(int fieldNumber, String value);
-        
-        /** Store one field into the field manager.  This field was retrieved from
-         * the field of the ObjectId.
-         * @param fieldNumber the field number of the key field.
-         * @param value the value of the field from the ObjectId.
-         */
-        void storeObjectField(int fieldNumber, Object value);
-    }
-}
diff --git a/api11/src/java/javax/jdo/spi/RegisterClassEvent.java b/api11/src/java/javax/jdo/spi/RegisterClassEvent.java
deleted file mode 100644
index 0698cb9..0000000
--- a/api11/src/java/javax/jdo/spi/RegisterClassEvent.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- * RegisterClassEvent.java
- *
- * Created on July 12, 2001
- */
-
-package javax.jdo.spi;
-
-import java.util.EventObject;
-
-/**
- * A <code>RegisterClassEvent</code> event gets delivered whenever a persistence-capable
- * class registers itself with the <code>JDOImplHelper</code>.
- *
- * @author Michael Bouschen
- * @version 1.0
- */
-public class RegisterClassEvent 
-    extends EventObject
-{
-    /** The class object of the registered persistence-capable class */
-    protected Class pcClass;
-
-    /** The names of managed fields of the persistence-capable class */
-    protected String[] fieldNames;  
-
-    /** The types of managed fields of the persistence-capable class */
-    protected Class[] fieldTypes;
-
-    /** The flags of managed fields of the persistence-capable class */
-    protected byte[] fieldFlags;
-
-    /** */
-    protected Class persistenceCapableSuperclass; 
-
-    /** 
-     * Constructs a new <code>RegisterClassEvent</code>.
-     * @param helper the <code>JDOImplHelper</code> instance
-     * @param registeredClass the persistence-capable class
-     * @param fieldNames the names of the managed fields
-     * @param fieldTypes the types of the managed fields
-     * @param fieldFlags the flags of the managed fields
-     * @param persistenceCapableSuperclass the persistence-capable superclass
-     **/
-    public RegisterClassEvent(JDOImplHelper helper,
-                              Class registeredClass, 
-                              String[] fieldNames, 
-                              Class[] fieldTypes,
-                              byte[] fieldFlags,
-                              Class persistenceCapableSuperclass)
-    {
-        super(helper);
-        this.pcClass = registeredClass;
-        this.fieldNames = fieldNames;
-        this.fieldTypes = fieldTypes;
-        this.fieldFlags = fieldFlags;
-        this.persistenceCapableSuperclass = persistenceCapableSuperclass;
-    }
-
-    /**
-     * Returns the class object of the registered persistence-capable class.
-     * @return the persistence-capable class.
-     */
-    public Class getRegisteredClass()
-    {
-        return pcClass;
-    }
-    
-    /**    
-     * Returns the names of the managed field of the persistence-capable class.
-     * @return the names of the managed fields
-     */
-    public String[] getFieldNames()
-    {
-        return fieldNames;
-    }
-
-    /**
-     * Returns the types of the managed field of the persistence-capable class.
-     * @return the types of the managed fields
-     */
-    public Class[] getFieldTypes()
-    {
-        return fieldTypes;
-    }
-
-    /**
-     * Returns the flags of the managed field of the persistence-capable class.
-     * @return the flags of the managed fields
-     */
-    public byte[] getFieldFlags()
-    {
-        return fieldFlags;
-    }
-
-    /**
-     * Returns the class object of the persistence-capable superclass.
-     * @return the persistence-capable superclass.
-     */
-    public Class getPersistenceCapableSuperclass()
-    {
-        return persistenceCapableSuperclass;
-    }
-    
-}
-
-
-
diff --git a/api11/src/java/javax/jdo/spi/RegisterClassListener.java b/api11/src/java/javax/jdo/spi/RegisterClassListener.java
deleted file mode 100644
index c90f687..0000000
--- a/api11/src/java/javax/jdo/spi/RegisterClassListener.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-/*
- *  RegisterClassListener.java
- *
- * Created on July 11, 2001
- */
-
-package javax.jdo.spi;
-
-import java.util.EventListener;
-
-/**
- * A "RegisterClassEvent" event gets fired whenever a persistence-capable class 
- * is loaded and gets registered with the <code>JDOImplHelper</code>. You can register a 
- * <code>RegisterClassListener</code> so as to be notified of any registration of a 
- * persistence-capable class.
- *
- * @author Michael Bouschen
- * @version 1.0
- */
-public interface RegisterClassListener 
-    extends EventListener
-{
-    /**
-     * This method gets called when a persistence-capable class is registered.
-     * @param event a <code>RegisterClassEvent</code> instance describing the registered 
-     * class plus metadata.
-     */
-    public void registerClass(RegisterClassEvent event);
-}
diff --git a/api11/src/java/javax/jdo/spi/StateManager.java b/api11/src/java/javax/jdo/spi/StateManager.java
deleted file mode 100644
index 5b6057a..0000000
--- a/api11/src/java/javax/jdo/spi/StateManager.java
+++ /dev/null
@@ -1,462 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package javax.jdo.spi;
-
-import javax.jdo.PersistenceManager;
-
-/** This interface is the point of contact between managed instances of
- * <code>PersistenceCapable</code> classes and the JDO implementation.  It contains
- * the methods used by <code>PersistenceCapable</code> instances to delegate behavior to 
- * the JDO implementation.
- *<P>Each managed <code>PersistenceCapable</code> instance contains a reference to a
- * <code>StateManager</code>.  A <code>StateManager</code> might manage one or multiple instances of
- * <code>PersistenceCapable</code> instances, at the choice of the implementation.
- *
- * @author  Craig Russell
- * @version 1.0
- *
- */
-public interface StateManager {
-    
-    /** The owning <code>StateManager</code> uses this method to supply the 
-     * value of the flags to the <code>PersistenceCapable</code> instance.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @return the value of <code>jdoFlags</code> to be stored in the <code>PersistenceCapable</code> instance
-     */
-    byte replacingFlags(PersistenceCapable pc);
-
-    /** Replace the current value of <code>jdoStateManager</code>.
-     * <P>
-     * This method is called by the <code>PersistenceCapable</code> whenever
-     * <code>jdoReplaceStateManager</code> is called and there is already
-     * an owning <code>StateManager</code>.  This is a security precaution
-     * to ensure that the owning <code>StateManager</code> is the only
-     * source of any change to its reference in the <code>PersistenceCapable</code>.
-     * @return the new value for the <code>jdoStateManager</code>
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param sm the proposed new value for the <code>jdoStateManager</code>
-     */ 
-    StateManager replacingStateManager (PersistenceCapable pc, StateManager sm);
-    
-    /** Tests whether this object is dirty.
-     *
-     * Instances that have been modified, deleted, or newly 
-     * made persistent in the current transaction return <code>true</code>.
-     *
-     *<P>Transient nontransactional instances return <code>false</code>.
-     *<P>
-     * @see PersistenceCapable#jdoMakeDirty(String fieldName)
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @return <code>true</code> if this instance has been modified in the current transaction.
-     */
-    boolean isDirty(PersistenceCapable pc);
-
-    /** Tests whether this object is transactional.
-     *
-     * Instances that respect transaction boundaries return <code>true</code>.  These instances
-     * include transient instances made transactional as a result of being the
-     * target of a <code>makeTransactional</code> method call; newly made persistent or deleted
-     * persistent instances; persistent instances read in data store
-     * transactions; and persistent instances modified in optimistic transactions.
-     *
-     *<P>Transient nontransactional instances return <code>false</code>.
-     *<P>
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @return <code>true</code> if this instance is transactional.
-     */
-    boolean isTransactional(PersistenceCapable pc);
-
-    /** Tests whether this object is persistent.
-     *
-     * Instances whose state is stored in the data store return <code>true</code>.
-     *
-     *<P>Transient instances return <code>false</code>.
-     *<P>
-     * @see PersistenceManager#makePersistent(Object pc)
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @return <code>true</code> if this instance is persistent.
-     */
-    boolean isPersistent(PersistenceCapable pc);
-
-    /** Tests whether this object has been newly made persistent.
-     *
-     * Instances that have been made persistent in the current transaction 
-     * return <code>true</code>.
-     *
-     *<P>Transient instances return <code>false</code>.
-     *<P>
-     * @see PersistenceManager#makePersistent(Object pc)
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @return <code>true</code> if this instance was made persistent
-     * in the current transaction.
-     */
-    boolean isNew(PersistenceCapable pc);
-
-    /** Tests whether this object has been deleted.
-     *
-     * Instances that have been deleted in the current transaction return <code>true</code>.
-     *
-     *<P>Transient instances return <code>false</code>.
-     *<P>
-     * @see PersistenceManager#deletePersistent(Object pc)
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @return <code>true</code> if this instance was deleted
-     * in the current transaction.
-     */
-    boolean isDeleted(PersistenceCapable pc);
-    
-    /** Return the <code>PersistenceManager</code> that owns this instance.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @return the <code>PersistenceManager</code> that owns this instance
-     */
-    PersistenceManager getPersistenceManager (PersistenceCapable pc);
-    
-    /** Mark the associated <code>PersistenceCapable</code> field dirty.
-     * <P>The <code>StateManager</code> will make a copy of the field
-     * so it can be restored if needed later, and then mark
-     * the field as modified in the current transaction.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param fieldName the name of the field
-     */    
-    void makeDirty (PersistenceCapable pc, String fieldName);
-    
-    /** Return the object representing the JDO identity 
-     * of the calling instance.  If the JDO identity is being changed in
-     * the current transaction, this method returns the identity as of
-     * the beginning of the transaction.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @return the object representing the JDO identity of the calling instance
-     */    
-    Object getObjectId (PersistenceCapable pc);
-
-    /** Return the object representing the JDO identity 
-     * of the calling instance.  If the JDO identity is being changed in
-     * the current transaction, this method returns the current identity as
-     * changed in the transaction.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @return the object representing the JDO identity of the calling instance
-     */    
-    Object getTransactionalObjectId (PersistenceCapable pc);
-
-    /** Return <code>true</code> if the field is cached in the calling
-     * instance.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number
-     * @return whether the field is cached in the calling instance
-     */    
-    boolean isLoaded (PersistenceCapable pc, int field);
-    
-    /** Guarantee that the serializable transactional and persistent fields
-     * are loaded into the instance.  This method is called by the generated
-     * <code>jdoPreSerialize</code> method prior to serialization of the
-     * instance.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     */    
-    void preSerialize (PersistenceCapable pc);
-    
-    /** Return the value for the field.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @param currentValue the current value of the field
-     * @return the new value for the field
-     */    
-    boolean getBooleanField (PersistenceCapable pc, int field, boolean currentValue);
-    
-    /** Return the value for the field.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @param currentValue the current value of the field
-     * @return the new value for the field
-     */    
-    char getCharField (PersistenceCapable pc, int field, char currentValue);
-    
-    /** Return the value for the field.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @param currentValue the current value of the field
-     * @return the new value for the field
-     */    
-    byte getByteField (PersistenceCapable pc, int field, byte currentValue);
-    
-    /** Return the value for the field.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @param currentValue the current value of the field
-     * @return the new value for the field
-     */    
-    short getShortField (PersistenceCapable pc, int field, short currentValue);
-    
-    /** Return the value for the field.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @param currentValue the current value of the field
-     * @return the new value for the field
-     */    
-    int getIntField (PersistenceCapable pc, int field, int currentValue);
-    
-    /** Return the value for the field.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @param currentValue the current value of the field
-     * @return the new value for the field
-     */    
-    long getLongField (PersistenceCapable pc, int field, long currentValue);
-    
-    /** Return the value for the field.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @param currentValue the current value of the field
-     * @return the new value for the field
-     */    
-    float getFloatField (PersistenceCapable pc, int field, float currentValue);
-    
-    /** Return the value for the field.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @param currentValue the current value of the field
-     * @return the new value for the field
-     */    
-    double getDoubleField (PersistenceCapable pc, int field, double currentValue);
-    
-    /** Return the value for the field.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @param currentValue the current value of the field
-     * @return the new value for the field
-     */    
-    String getStringField (PersistenceCapable pc, int field, String currentValue);
-    
-    /** Return the value for the field.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @param currentValue the current value of the field
-     * @return the new value for the field
-     */    
-    Object getObjectField (PersistenceCapable pc, int field, Object currentValue);
-
-    /** Mark the field as modified by the user.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number
-     * @param currentValue the current value of the field
-     * @param newValue the proposed new value of the field */    
-    void setBooleanField (PersistenceCapable pc, int field, boolean currentValue, boolean newValue);
-
-    /** Mark the field as modified by the user.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number
-     * @param currentValue the current value of the field
-     * @param newValue the proposed new value of the field */    
-    void setCharField (PersistenceCapable pc, int field, char currentValue, char newValue);
-
-    /** Mark the field as modified by the user.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number
-     * @param currentValue the current value of the field
-     * @param newValue the proposed new value of the field */    
-    void setByteField (PersistenceCapable pc, int field, byte currentValue, byte newValue);
-
-    /** Mark the field as modified by the user.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number
-     * @param currentValue the current value of the field
-     * @param newValue the proposed new value of the field */    
-    void setShortField (PersistenceCapable pc, int field, short currentValue, short newValue);
-
-    /** Mark the field as modified by the user.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number
-     * @param currentValue the current value of the field
-     * @param newValue the proposed new value of the field */    
-    void setIntField (PersistenceCapable pc, int field, int currentValue, int newValue);
-
-    /** Mark the field as modified by the user.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number
-     * @param currentValue the current value of the field
-     * @param newValue the proposed new value of the field */    
-    void setLongField (PersistenceCapable pc, int field, long currentValue, long newValue);
-
-    /** Mark the field as modified by the user.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number
-     * @param currentValue the current value of the field
-     * @param newValue the proposed new value of the field */    
-    void setFloatField (PersistenceCapable pc, int field, float currentValue, float newValue);
-
-    /** Mark the field as modified by the user.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number
-     * @param currentValue the current value of the field
-     * @param newValue the proposed new value of the field */    
-    void setDoubleField (PersistenceCapable pc, int field, double currentValue, double newValue);
-
-    /** Mark the field as modified by the user.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number
-     * @param currentValue the current value of the field
-     * @param newValue the proposed new value of the field */    
-    void setStringField (PersistenceCapable pc, int field, String currentValue, String newValue);
-
-    /** Mark the field as modified by the user.
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number
-     * @param currentValue the current value of the field
-     * @param newValue the proposed new value of the field */    
-    void setObjectField (PersistenceCapable pc, int field, Object currentValue, Object newValue);
-
-    /** The value of the field requested to be provided to the <code>StateManager</code>
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @param currentValue the current value of the field
-     */    
-    void providedBooleanField (PersistenceCapable pc, int field, boolean currentValue);
-
-    /** The value of the field requested to be provided to the <code>StateManager</code>
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @param currentValue the current value of the field
-     */    
-    void providedCharField (PersistenceCapable pc, int field, char currentValue);
-
-    /** The value of the field requested to be provided to the <code>StateManager</code>
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @param currentValue the current value of the field
-     */    
-    void providedByteField (PersistenceCapable pc, int field, byte currentValue);
-
-    /** The value of the field requested to be provided to the <code>StateManager</code>
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @param currentValue the current value of the field
-     */    
-    void providedShortField (PersistenceCapable pc, int field, short currentValue);
-
-    /** The value of the field requested to be provided to the <code>StateManager</code>
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @param currentValue the current value of the field
-     */    
-    void providedIntField (PersistenceCapable pc, int field, int currentValue);
-
-    /** The value of the field requested to be provided to the <code>StateManager</code>
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @param currentValue the current value of the field
-     */    
-    void providedLongField (PersistenceCapable pc, int field, long currentValue);
-
-    /** The value of the field requested to be provided to the <code>StateManager</code>
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @param currentValue the current value of the field
-     */    
-    void providedFloatField (PersistenceCapable pc, int field, float currentValue);
-
-    /** The value of the field requested to be provided to the <code>StateManager</code>
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @param currentValue the current value of the field
-     */    
-    void providedDoubleField (PersistenceCapable pc, int field, double currentValue);
-
-    /** The value of the field requested to be provided to the <code>StateManager</code>
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @param currentValue the current value of the field
-     */    
-    void providedStringField (PersistenceCapable pc, int field, String currentValue);
-
-    /** The value of the field requested to be provided to the <code>StateManager</code>
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @param currentValue the current value of the field
-     */    
-    void providedObjectField (PersistenceCapable pc, int field, Object currentValue);
-
-    /** The replacing value of the field in the calling instance
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number
-     * @return the new value for the field
-     */    
-    boolean replacingBooleanField (PersistenceCapable pc, int field);
-
-    /** The replacing value of the field in the calling instance
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @return the new value for the field
-     */    
-    char replacingCharField (PersistenceCapable pc, int field);
-
-    /** The replacing value of the field in the calling instance
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @return the new value for the field
-     */    
-    byte replacingByteField (PersistenceCapable pc, int field);
-
-    /** The replacing value of the field in the calling instance
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @return the new value for the field
-     */    
-    short replacingShortField (PersistenceCapable pc, int field);
-
-    /** The replacing value of the field in the calling instance
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @return the new value for the field
-     */    
-    int replacingIntField (PersistenceCapable pc, int field);
-
-    /** The replacing value of the field in the calling instance
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @return the new value for the field
-     */    
-    long replacingLongField (PersistenceCapable pc, int field);
-
-    /** The replacing value of the field in the calling instance
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @return the new value for the field
-     */    
-    float replacingFloatField (PersistenceCapable pc, int field);
-
-    /** The replacing value of the field in the calling instance
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @return the new value for the field
-     */    
-    double replacingDoubleField (PersistenceCapable pc, int field);
-
-    /** The replacing value of the field in the calling instance
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @return the new value for the field
-     */    
-    String replacingStringField (PersistenceCapable pc, int field);
-
-    /** The replacing value of the field in the calling instance
-     * @param pc the calling <code>PersistenceCapable</code> instance
-     * @param field the field number 
-     * @return the new value for the field
-     */    
-    Object replacingObjectField (PersistenceCapable pc, int field);
-
-}
-
diff --git a/api11/src/java/javax/jdo/spi/package.html b/api11/src/java/javax/jdo/spi/package.html
deleted file mode 100644
index fc16c0d..0000000
--- a/api11/src/java/javax/jdo/spi/package.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!--
- Copyright 2005 The Apache Software Foundation.
- 
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- 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.
--->
-
-<html>
-<head>
-<title>JDO Service Provider Interface package</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</head>
-
-<body bgcolor="#FFFFFF">
-<P>This package contains the interfaces and classes used by JDO implementations. 
-<P>JDO defines interfaces and classes to be used by application programmers 
-when using classes whose instances are to be stored in persistent storage 
-(persistence-capable classes), and specifies the contracts between 
-suppliers of persistence-capable classes and the 
-runtime environment (which is part of the JDO implementation).
-<P>The PersistenceCapable interface is implemented by all classes
-whose instances are to be made persistent.  The implementation might be
-done by a combination of techniques, as determined by the JDO vendor:
-<ul>
-<li>Pre-processing .java files
-<li>Post-processing .class files
-<li>Generating .java or .class files directly from an abstraction
-</ul
-<P>The StateManager interface is the implementation's contact point with
-the PersistenceCapable instances.  It defines methods that are called by 
-the PersistenceCapable instances to implement the required PersistenceCapable
-behavior for persistent and transactional instances.
-<P>The JDOPermission class is used to manage security controls on JDO implementations.
-<P>The RegisterClassEvent class and RegisterClassListener interface are used
-by JDO implementations that need access to metadata of PersistenceCapable classes.
-<P>The JDOImplHelper class contains helper methods for JDO implementations.
-</body>
-</html>
diff --git a/api11/test/java/javax/jdo/JDOHelperTest.java b/api11/test/java/javax/jdo/JDOHelperTest.java
deleted file mode 100644
index 91fd4d9..0000000
--- a/api11/test/java/javax/jdo/JDOHelperTest.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package javax.jdo;
-
-import java.util.Properties;
-
-import javax.jdo.pc.PCPoint;
-import javax.jdo.util.AbstractTest;
-import javax.jdo.util.BatchTestRunner;
-
-/**
- * Tests class javax.jdo.JDOHelper.
- * <p>
- * TBD: implementation of testMakeDirty, 
- * TBD: testing interrogative methods for persistent instances
- * TBD: getPMF for valid PMF class
- */
-public class JDOHelperTest extends AbstractTest {
-    
-    /** */
-    public static void main(String args[]) {
-        BatchTestRunner.run(JDOHelperTest.class);
-    }
-
-    /** */
-    public void testGetPM() {
-        PCPoint p = new PCPoint(1, new Integer(1));
-        if (JDOHelper.getPersistenceManager(p) != null) {
-            fail("JDOHelper.getPersistenceManager should return null pm for non-persistent instance");
-        }
-
-        // TBD: test for persistent instance
-    }
-
-    /** */
-    public void testMakeDirty() {
-        // TBD: test JDOHelper.makeDirty(pc, fieldName);
-    }
-
-    /** */
-    public void testGetObjectId() {
-        PCPoint p = new PCPoint(1, new Integer(1));
-        if (JDOHelper.getObjectId(p) != null) {
-            fail("JDOHelper.getObjectId should return null ObjectId for non-persistent instance");
-        }
-
-        // TBD test JDOHelper.getObjectId(pc) for persistent instance
-    }
-
-    /** */
-    public void testGetTransactionObjectId() {
-        PCPoint p = new PCPoint(1, new Integer(1));
-        if (JDOHelper.getObjectId(p) != null) {
-            fail("JDOHelper.getTransactionalObjectId should return null ObjectId for non-persistent instance");
-        }
-
-        // TBD test JDOHelper.getTransactionalObjectId(pc) for persistent instance
-    }
-
-    /** */
-    public void testIsDirty() {
-        PCPoint p = new PCPoint(1, new Integer(1));
-        if (JDOHelper.isDirty(p)) {
-            fail("JDOHelper.isDirty should return false for non-persistent instance");
-        }
-
-        // TBD test JDOHelper.isDirty(pc) for persistent instance
-    }
-
-    /** */
-    public void testIsTransactional() {
-        PCPoint p = new PCPoint(1, new Integer(1));
-        if (JDOHelper.isTransactional(p)) {
-            fail("JDOHelper.isTransactional should return false for non-persistent instance");
-        }
-
-        // TBD test JDOHelper.isTransactional(pc) for persistent instance
-    }
-
-    /** */
-    public void testIsPersistent() {
-        PCPoint p = new PCPoint(1, new Integer(1));
-        if (JDOHelper.isPersistent(p)) {
-            fail("JDOHelper.isPersistent should return false for non-persistent instance");
-        }
-
-        // TBD test JDOHelper.isPersistent(pc) for persistent instance
-    }
-
-    /** */
-    public void testIsNew() {
-        PCPoint p = new PCPoint(1, new Integer(1));
-        if (JDOHelper.isNew(p)) {
-            fail("JDOHelper.isNew should return false for non-persistent instance");
-        }
-
-        // TBD test JDOHelper.isNew(pc) for persistent instance
-    }
-
-
-    /** */
-    public void testIsDeleted() {
-        PCPoint p = new PCPoint(1, new Integer(1));
-        if (JDOHelper.isDeleted(p)) {
-            fail("JDOHelper.isDeleted should return false for non-persistent instance");
-        }
-
-        // TBD test JDOHelper.isDeleted(pc) for persistent instance
-    }
-
-    /** */
-    public void testGetPMF() {
-        // test missing property javax.jdo.PersistenceManagerFactoryClass
-        PersistenceManagerFactory pmf = null;
-        try {
-            pmf = JDOHelper.getPersistenceManagerFactory(new Properties());
-            fail("Missing property PersistenceManagerFactoryClass should result in JDOFatalUserException ");
-        }
-        catch (JDOFatalUserException ex) {
-            if (verbose)
-                println("Caught expected exception " + ex);
-        }
-
-        // TBD: valid PMF class
-    }
-
-}
-
diff --git a/api11/test/java/javax/jdo/pc/PCPoint.java b/api11/test/java/javax/jdo/pc/PCPoint.java
deleted file mode 100644
index bd8668f..0000000
--- a/api11/test/java/javax/jdo/pc/PCPoint.java
+++ /dev/null
@@ -1,448 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package javax.jdo.pc;
-
-import java.io.*;
-import java.util.*;
-import javax.jdo.PersistenceManager;
-import javax.jdo.spi.*;
-
-import javax.jdo.spi.PersistenceCapable;
-
-/**
- * This is a hand-enhanced version of a simple class with two fields. The
- * enhanced code assumes datastore identity.
- *
- * @author Michael Bouschen
- */
-public class PCPoint 
-    implements PersistenceCapable
-{
-    public int x;
-    public Integer y;
-
-    // JDO generated fields
-    protected transient StateManager jdoStateManager;
-    protected transient byte jdoFlags;
-    private static final int jdoInheritedFieldCount = 0;
-    private static final String jdoFieldNames[] = { "x", "y" };
-    private static final Class jdoFieldTypes[]; 
-    private static final byte jdoFieldFlags[] = { 
-        (byte)(PersistenceCapable.CHECK_READ + PersistenceCapable.CHECK_WRITE + 
-               PersistenceCapable.SERIALIZABLE), 
-        (byte)(PersistenceCapable.CHECK_READ + PersistenceCapable.CHECK_WRITE + 
-               PersistenceCapable.SERIALIZABLE), 
-    }; 
-    private static final Class jdoPersistenceCapableSuperclass; 
-
-    static 
-    {
-        jdoFieldTypes = (new Class[] {
-            Integer.TYPE, sunjdo$classForName$("java.lang.Integer")
-        });
-        jdoPersistenceCapableSuperclass = null;
-        JDOImplHelper.registerClass(
-            sunjdo$classForName$("javax.jdo.pc.PCPoint"), 
-            jdoFieldNames, jdoFieldTypes, jdoFieldFlags, 
-            jdoPersistenceCapableSuperclass, new PCPoint());
-    }
-
-    /** JDO required no-args constructor. */
-    public PCPoint() { }
-
-    /** Constructor. */
-    public PCPoint(int x, Integer y) {
-        jdoSetx(this, x);
-        jdoSety(this, y);
-    }
-
-    /** */
-    public void setX(int x) {
-        jdoSetx(this, x);
-    }
-
-    /** */
-    public int getX() {
-        return jdoGetx(this);
-    }
-
-    /** */
-    public void setY(Integer y) {
-        jdoSety(this, y);
-    }
-
-    /** */
-    public Integer getY() {
-        return jdoGety(this);
-    }
-
-    /** */
-    public boolean equals(Object o) {
-        if (o == null || !(o instanceof PCPoint))
-            return false;
-        PCPoint other = (PCPoint)o;
-        if (jdoGetx(this) != jdoGetx(other))
-            return false;
-        if (jdoGety(this) == null)
-            return jdoGety(other) == null;
-        if (jdoGety(other) == null)
-            return jdoGety(this) == null;
-        else
-            return jdoGety(this).intValue() == jdoGety(other).intValue();
-    }
-
-    /** */
-    public int hashCode() {
-        int code = getX();
-        if (getY() != null) {
-            code += getY().intValue();
-        }
-        return code;
-    }
-    
-    /** */
-    public String toString() {
-        return "PCPoint(x: " + getX() + ", y: " + getY() + ")";
-    }
-    
-
-    // Generated methods in least-derived PersistenceCapable class
-
-    public final boolean jdoIsPersistent() {
-        StateManager statemanager = jdoStateManager;
-        if (statemanager != null)
-            return statemanager.isPersistent(this);
-        else
-            return false;
-    }
-
-    public final boolean jdoIsTransactional() {
-        StateManager statemanager = jdoStateManager;
-        if (statemanager != null)
-            return statemanager.isTransactional(this);
-        else
-            return false;
-    }
-
-    public final boolean jdoIsNew() {
-        StateManager statemanager = jdoStateManager;
-        if (statemanager != null)
-            return statemanager.isNew(this);
-        else
-            return false;
-    }
-
-    public final boolean jdoIsDirty() {
-        StateManager statemanager = jdoStateManager;
-        if (statemanager != null)
-            return statemanager.isDirty(this);
-        else
-            return false;
-    }
-
-    public final boolean jdoIsDeleted() {
-        StateManager statemanager = jdoStateManager;
-        if (statemanager != null)
-            return statemanager.isDeleted(this);
-        else
-            return false;
-    }
-
-    public final void jdoMakeDirty(String s) {
-        StateManager statemanager = jdoStateManager;
-        if (statemanager != null)
-            statemanager.makeDirty(this, s);
-    }
-
-    public final PersistenceManager jdoGetPersistenceManager() {
-        StateManager statemanager = jdoStateManager;
-        if (statemanager != null)
-            return statemanager.getPersistenceManager(this);
-        else
-            return null;
-    }
-
-    public final Object jdoGetObjectId() {
-        StateManager statemanager = jdoStateManager;
-        if (statemanager != null)
-            return statemanager.getObjectId(this);
-        else
-            return null;
-    }
-
-    public final Object jdoGetTransactionalObjectId() {
-        StateManager statemanager = jdoStateManager;
-        if (statemanager != null)
-            return statemanager.getTransactionalObjectId(this);
-        else
-            return null;
-    }
-
-    public final synchronized void jdoReplaceStateManager(
-        StateManager statemanager) {
-        StateManager statemanager1 = jdoStateManager;
-        if (statemanager1 != null) {
-            jdoStateManager = statemanager1.replacingStateManager(
-                this, statemanager);
-            return;
-        } 
-        else {
-            JDOImplHelper.checkAuthorizedStateManager(statemanager);
-            jdoStateManager = statemanager;
-            jdoFlags = PersistenceCapable.LOAD_REQUIRED;
-            return;
-        }
-    }
-    
-    public final void jdoReplaceFlags() {
-        StateManager statemanager = jdoStateManager;
-        if (statemanager != null)
-            jdoFlags = statemanager.replacingFlags(this);
-    }
-
-    public final void jdoReplaceFields(int fields[]) {
-        if (fields == null)
-            throw new IllegalArgumentException("fields is null");
-        int i = fields.length;
-        for(int j = 0; j < i; j++)
-            jdoReplaceField(fields[j]);
-
-    }
-
-    public final void jdoProvideFields(int fields[]) {
-        if (fields == null)
-            throw new IllegalArgumentException("fields is null");
-        int i = fields.length;
-        for(int j = 0; j < i; j++)
-            jdoProvideField(fields[j]);
-
-    }
-
-    protected final void jdoPreSerialize() {
-        StateManager statemanager = jdoStateManager;
-        if (statemanager != null)
-            statemanager.preSerialize(this);
-    }
-
-    // Generated methods in PersistenceCapable root classes and all classes
-    // that declare objectid-class in xml metadata:
-
-    public void jdoCopyKeyFieldsToObjectId(
-        PersistenceCapable.ObjectIdFieldSupplier objectidfieldsupplier, 
-        Object obj) { }
-
-    public void jdoCopyKeyFieldsToObjectId(Object obj) {
-    }
-    
-    public void jdoCopyKeyFieldsFromObjectId(
-        PersistenceCapable.ObjectIdFieldConsumer objectidfieldconsumer, 
-        Object obj) { }
-
-    protected void jdoCopyKeyFieldsFromObjectId(Object obj) {
-    }
-
-    public Object jdoNewObjectIdInstance() {
-        return null;
-    }
-
-    public Object jdoNewObjectIdInstance(String s) {
-        return null;
-    }
-    
-    // Generated methods in all PersistenceCapable classes
-
-    public PersistenceCapable jdoNewInstance(StateManager statemanager) {
-        PCPoint pcpoint = new PCPoint();
-        pcpoint.jdoFlags = PersistenceCapable.LOAD_REQUIRED;
-        pcpoint.jdoStateManager = statemanager;
-        return pcpoint;
-    }
-
-    public PersistenceCapable jdoNewInstance(
-        StateManager statemanager, Object obj) {
-        PCPoint pcpoint = new PCPoint();
-        pcpoint.jdoCopyKeyFieldsFromObjectId(obj);
-        pcpoint.jdoFlags = PersistenceCapable.LOAD_REQUIRED;
-        pcpoint.jdoStateManager = statemanager;
-        return pcpoint;
-    }
-
-    protected static int jdoGetManagedFieldCount() {
-        return 2;
-    }
-
-     public static final int jdoGetx(PCPoint pcpoint) {
-        if (pcpoint.jdoFlags <= PersistenceCapable.READ_WRITE_OK)
-            return pcpoint.x;
-        StateManager statemanager = pcpoint.jdoStateManager;
-        if (statemanager == null)
-            return pcpoint.x;
-        if (statemanager.isLoaded(pcpoint, jdoInheritedFieldCount + 0))
-            return pcpoint.x;
-        else
-            return statemanager.getIntField(
-                pcpoint, jdoInheritedFieldCount + 0, pcpoint.x);
-    }
-
-    public static final Integer jdoGety(PCPoint pcpoint) {
-        if (pcpoint.jdoFlags <= PersistenceCapable.READ_WRITE_OK)
-            return pcpoint.y;
-        StateManager statemanager = pcpoint.jdoStateManager;
-        if (statemanager == null)
-            return pcpoint.y;
-        if (statemanager.isLoaded(pcpoint, jdoInheritedFieldCount + 1))
-            return pcpoint.y;
-        else
-            return (Integer)statemanager.getObjectField(
-                pcpoint, jdoInheritedFieldCount + 1, pcpoint.y);
-    }
-
-    public static final void jdoSetx(PCPoint pcpoint, int i) {
-        if (pcpoint.jdoFlags == PersistenceCapable.READ_WRITE_OK) {
-            pcpoint.x = i;
-            return;
-        }
-        StateManager statemanager = pcpoint.jdoStateManager;
-        if (statemanager == null) {
-            pcpoint.x = i;
-            return;
-        } 
-        else {
-            statemanager.setIntField(
-                pcpoint, jdoInheritedFieldCount + 0, pcpoint.x, i);
-            return;
-        }
-    }
-
-    public static final void jdoSety(PCPoint pcpoint, Integer integer) {
-        if (pcpoint.jdoFlags == PersistenceCapable.READ_WRITE_OK) {
-            pcpoint.y = integer;
-            return;
-        }
-        StateManager statemanager = pcpoint.jdoStateManager;
-        if (statemanager == null) {
-            pcpoint.y = integer;
-            return;
-        } 
-        else {
-            statemanager.setObjectField(pcpoint, jdoInheritedFieldCount + 1, pcpoint.y, integer);
-            return;
-        }
-    }
-
-    public void jdoReplaceField(int field) {
-        StateManager statemanager = jdoStateManager;
-        switch(field - jdoInheritedFieldCount) {
-        case 0: 
-            if (statemanager == null) {
-                throw new IllegalStateException("jdoStateManager is null");
-            } 
-            else {
-                x = statemanager.replacingIntField(this, field);
-                return;
-            }
-        case 1:
-            if (statemanager == null) {
-                throw new IllegalStateException("jdoStateManager is null");
-            } 
-            else {
-                y = (Integer)statemanager.replacingObjectField(this, field);
-                return;
-            }
-        }
-        throw new IllegalArgumentException("field number out of range");
-    }
-
-    public void jdoProvideField(int field) {
-        StateManager statemanager = jdoStateManager;
-        switch(field - jdoInheritedFieldCount) {
-        case 0:
-            if (statemanager == null) {
-                throw new IllegalStateException("jdoStateManager is null");
-            } 
-            else {
-                statemanager.providedIntField(this, field, x);
-                return;
-            }
-        case 1: 
-            if (statemanager == null) {
-                throw new IllegalStateException("jdoStateManager is null");
-            } 
-            else {
-                statemanager.providedObjectField(this, field, y);
-                return;
-            }
-        }
-        throw new IllegalArgumentException("field number out of range");
-    }
-
-    public void jdoCopyFields(Object obj, int fieldNumbers[]) {
-        if (jdoStateManager == null)
-            throw new IllegalStateException("jdoStateManager is null");
-        if (!(obj instanceof PCPoint))
-            throw new ClassCastException(obj.getClass().getName());
-        if (fieldNumbers == null)
-            throw new IllegalArgumentException("fieldNumber is null");
-        PCPoint pcpoint = (PCPoint)obj;
-        if (pcpoint.jdoStateManager != jdoStateManager)
-            throw new IllegalArgumentException("wrong jdoStateManager");
-        int i = fieldNumbers.length;
-        for(int j = 0; j < i; j++)
-            jdoCopyField(pcpoint, fieldNumbers[j]);
-    }
-
-    protected final void jdoCopyField(PCPoint pcpoint, int fieldNumber)
-    {
-        switch(fieldNumber - jdoInheritedFieldCount) {
-        case 0: 
-            if (pcpoint == null) {
-                throw new IllegalArgumentException("pcpoint is null");
-            } 
-            else {
-                x = pcpoint.x;
-                return;
-            }
-        case 1: 
-            if (pcpoint == null) {
-                throw new IllegalArgumentException("pcpoint is null");
-            } 
-            else {
-                y = pcpoint.y;
-                return;
-            }
-        }
-        throw new IllegalArgumentException("field number out of range");
-    }
-
-    private void writeObject(java.io.ObjectOutputStream out)
-        throws java.io.IOException {
-        jdoPreSerialize();
-        out.defaultWriteObject();
-    }
-    
-    protected static final Class sunjdo$classForName$(String s) {
-        try {
-            return Class.forName(s);
-        }
-        catch(ClassNotFoundException ex) {
-            throw new NoClassDefFoundError(ex.getMessage());
-        }
-    }
-    
-    
-
-}
diff --git a/api11/test/java/javax/jdo/spi/JDOImplHelperTest.java b/api11/test/java/javax/jdo/spi/JDOImplHelperTest.java
deleted file mode 100644
index 073536e..0000000
--- a/api11/test/java/javax/jdo/spi/JDOImplHelperTest.java
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package javax.jdo.spi;
-
-import java.util.Collection;
-
-import javax.jdo.pc.PCPoint;
-import javax.jdo.util.AbstractTest;
-import javax.jdo.util.BatchTestRunner;
-
-/** 
- * Tests class javax.jdo.spi.JDOImplHelper.
- * <p>
- * Missing: testNewInstance + testNewObjectIdInstance
- * Missing: tests for JDOImplHelper methods: copyKeyFieldsToObjectId and 
- * copyKeyFieldsFromObjectId.
- */
-public class JDOImplHelperTest extends AbstractTest {
-    
-    /** */
-    private RegisterClassEvent event;
-
-    /** */
-    public static void main(String args[]) {
-        BatchTestRunner.run(JDOImplHelperTest.class);
-    }
-
-    /** */
-    public void testGetFieldNames() {
-        JDOImplHelper implHelper = JDOImplHelper.getInstance();
-        String[] fieldNames = implHelper.getFieldNames(PCPoint.class);
-        if (fieldNames == null) {
-            fail("array of field names is null");
-        }
-        if (fieldNames.length != 2) {
-            fail("Unexpected length of fieldNames; expected 2, got " + 
-                 fieldNames.length);
-        }
-        if (!fieldNames[0].equals("x")) {
-            fail("Unexpected field; expected x, got " + fieldNames[0]);
-        }
-        if (!fieldNames[1].equals("y")) {
-            fail("Unexpected field; expected y, got " + fieldNames[1]);
-        }
-    }
-
-    /** */
-    public void testGetFieldTypes() {
-        JDOImplHelper implHelper = JDOImplHelper.getInstance();
-        Class[] fieldTypes = implHelper.getFieldTypes(PCPoint.class);
-        if (fieldTypes == null) {
-            fail("array of field types is null");
-        }
-        if (fieldTypes.length != 2) {
-            fail("Unexpected length of fieldTypes; expected 2, got " + 
-                 fieldTypes.length);
-        }
-        if (fieldTypes[0] != int.class) {
-            fail("Unexpected field type; expected int, got " + 
-                 fieldTypes[0]);
-        }
-        if (fieldTypes[1] != Integer.class) {
-            fail("Unexpected field type; expected Integer, got " + 
-                 fieldTypes[1]);
-        }
-    }
-    
-    /** */
-    public void testGetFieldFlags() {
-        byte expected = (byte) (PersistenceCapable.CHECK_READ +
-            PersistenceCapable.CHECK_WRITE + PersistenceCapable.SERIALIZABLE);
-            
-        JDOImplHelper implHelper = JDOImplHelper.getInstance();
-        byte[] fieldFlags = implHelper.getFieldFlags(PCPoint.class);
-        if (fieldFlags == null) {
-            fail("array of field flags is null");
-        }
-        if (fieldFlags.length != 2) {
-            fail("Unexpected length of fieldFlags; expected 2, got " + 
-                 fieldFlags.length);
-        }
-        if (fieldFlags[0] != expected) {
-            fail("Unexpected field flag; expected " + expected + 
-                 ", got " + fieldFlags[0]);
-        }
-        if (fieldFlags[1] != expected) {
-            fail("Unexpected field flag; expected " + expected + 
-                 ", got " + fieldFlags[1]);
-        }
-    }
-
-    /** */
-    public void testGetPCSuperclass() {
-        JDOImplHelper implHelper = JDOImplHelper.getInstance();
-        Class pcSuper = 
-            implHelper.getPersistenceCapableSuperclass(PCPoint.class);
-        if (pcSuper != null) {
-            fail("Wrong pc superclass of PCPoint; expected null, got " + 
-                 pcSuper);
-        }
-    }
-
-    /** */
-    public void testNewInstance() {
-        // TBD: test JDOImplHelper.newInstance(pcClass, sm) and
-        // JDOImplHelper.newInstance(pcClass, sm, oid)  
-    }
-
-    /** */
-    public void testNewObjectIdInstance() {
-        // TBD: test JDOImplHelper.newObjectIdInstance(pcClass)
-    }
-    
-    /** */
-    public void testClassRegistration() {
-        JDOImplHelper implHelper = JDOImplHelper.getInstance();
-        // make sure PCClass is loaded
-        PCPoint p = new PCPoint(1, new Integer(1));
-
-        Collection registeredClasses = implHelper.getRegisteredClasses();
-        // test whether PCPoint is registered
-        if (!registeredClasses.contains(PCPoint.class)) {
-            fail("Missing registration of pc class PCPoint");
-        }
-
-        // Save registered meta data for restoring
-        String[] fieldNames = implHelper.getFieldNames(PCPoint.class);
-        Class[] fieldTypes = implHelper.getFieldTypes(PCPoint.class);
-        byte[] fieldFlags = implHelper.getFieldFlags(PCPoint.class);
-        Class pcSuperclass = implHelper.getPersistenceCapableSuperclass(PCPoint.class);
-        
-        // test unregisterClass with null parameter
-        try {
-            implHelper.unregisterClass(null);
-            fail("Missing exception when calling unregisterClass(null)");
-        }
-        catch (NullPointerException ex) {
-            // expected exception => OK
-        }
-
-        // test unregister PCPoint class
-        implHelper.unregisterClass(PCPoint.class);
-        registeredClasses = implHelper.getRegisteredClasses();
-        if (registeredClasses.contains(PCPoint.class)) {
-            fail("PCPoint still registered");
-        }
-
-        // register PCPoint again
-        JDOImplHelper.registerClass(PCPoint.class, fieldNames, fieldTypes, 
-                                    fieldFlags, pcSuperclass, new PCPoint());
-    }
-
-    /** */
-    public void testClassListenerRegistration() {
-        JDOImplHelper implHelper = JDOImplHelper.getInstance();
-
-        // add listener and check event
-        event = null;
-        RegisterClassListener listener = new SimpleListener();
-        implHelper.addRegisterClassListener(listener);
-        JDOImplHelper.registerClass(JDOImplHelperTest.class, new String[0], 
-                                    new Class[0], new byte[0], null, null);
-        if (event == null) {
-            fail("Missing event "); 
-        }
-
-        // remove listener and check event
-        event = null;
-        implHelper.removeRegisterClassListener(listener);
-        JDOImplHelper.registerClass(JDOImplHelperTest.class, new String[0], 
-                                    new Class[0], new byte[0], null, null);
-        if (event != null) {
-            fail("Unexpected event " + event);
-        }
-    }
-
-    /** */
-    class SimpleListener implements RegisterClassListener {
-
-        /** */
-        public void registerClass(RegisterClassEvent event) {
-            JDOImplHelperTest.this.event = event;
-        }
-        
-    }
-    
-}
-
diff --git a/api11/test/java/javax/jdo/util/AbstractTest.java b/api11/test/java/javax/jdo/util/AbstractTest.java
deleted file mode 100644
index 62c0945..0000000
--- a/api11/test/java/javax/jdo/util/AbstractTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package javax.jdo.util;
-
-import java.io.PrintStream;
-
-import junit.framework.TestCase;
-
-/** */
-public class AbstractTest extends TestCase {
-
-    /** */
-    protected static PrintStream out = System.out;
-    
-    /** If true, print extra messages. */
-    protected boolean verbose;
-
-    /**
-     * Construct and initialize from properties.
-     */
-    protected AbstractTest() {
-        super(null);
-        verbose = Boolean.getBoolean("verbose");
-    }
-    
-    /**
-     */
-    protected void println(String s) {
-        if (verbose) 
-            out.println(s);
-    }
-}
-
diff --git a/api11/test/java/javax/jdo/util/BatchResultPrinter.java b/api11/test/java/javax/jdo/util/BatchResultPrinter.java
deleted file mode 100644
index 7252319..0000000
--- a/api11/test/java/javax/jdo/util/BatchResultPrinter.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package javax.jdo.util;
-
-import java.io.PrintStream;
-
-import junit.framework.AssertionFailedError;
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestResult;
-import junit.textui.ResultPrinter;
-
-/**
- * Default result printer implementation for running tests in batch mode.
- * 
- * @author Michael Bouschen
- */
-public class BatchResultPrinter
-    extends ResultPrinter
-{
-    /** */
-    public BatchResultPrinter(PrintStream writer) {
-        super(writer);
-    }
-        
-    /** Called in case of a test error. */
-    public void addError(Test test, Throwable t) {
-        getWriter().print("   ERROR");
-    }
-        
-    /** Called in case of a test failure. */ 
-    public void addFailure(Test test, AssertionFailedError t) {
-        getWriter().print("   FAILURE");
-    }
-        
-    /** Called when a test case is finished. */
-    public void endTest(Test test) {
-        getWriter().println();
-    }
-        
-    /** Called when a test case is started. */
-    public void startTest(Test test) {
-        String testName;
-        if (test instanceof TestCase) {
-            testName = getClassBaseName(test) + "." + ((TestCase)test).getName();
-        }
-        else {
-            testName = test.toString();
-        }
-        getWriter().print("RUN " + testName);
-    }
-        
-    /** */
-    protected void printHeader(long runTime) {
-        getWriter().println("Time: "+elapsedTimeAsString(runTime));
-    }
-        
-    /** */
-    protected void printFooter(TestResult result) {
-        if (result.wasSuccessful()) {
-            getWriter().print("OK");
-            getWriter().println (" (" + result.runCount() + " test" + (result.runCount() == 1 ? "": "s") + ")");
-                
-        } else {
-            getWriter().println("FAILURES!!!");
-            getWriter().println("Tests run: "+result.runCount()+ 
-                                ",  Failures: "+result.failureCount()+
-                                ",  Errors: "+result.errorCount());
-        }
-    }
-        
-    // helper method
-        
-    /** 
-     * @return Name of the class of the given object without package prefix
-     */
-    private String getClassBaseName(Object obj) {
-        if (obj == null) return null;
-        String className = obj.getClass().getName();
-        int index = className.lastIndexOf('.');
-        if (index != -1) {
-            className = className.substring(index + 1);
-        }
-        return className;
-    }
-        
-}
-
-
diff --git a/api11/test/java/javax/jdo/util/BatchTestRunner.java b/api11/test/java/javax/jdo/util/BatchTestRunner.java
deleted file mode 100644
index f76b72b..0000000
--- a/api11/test/java/javax/jdo/util/BatchTestRunner.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-
-package javax.jdo.util;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.io.PrintStream;
-
-import junit.framework.Test;
-import junit.framework.TestResult;
-import junit.framework.TestSuite;
-import junit.textui.ResultPrinter;
-import junit.textui.TestRunner;
-
-/**
- * TestRunner class for running a single test or a test suite in batch
- * mode. The format of the test output is specified by the result printer
- * class. The main method sets an exit code according to the test result:
- * <ul>
- * <li><code>0</code>: success
- * <li><code>1</code>: failure, the test shows an unexpected behavior
- * <li><code>2</code>: exception, the test throws an unhandled excption 
- * </ul>
- * 
- * @author Michael Bouschen
- */
-public class BatchTestRunner
-    extends TestRunner
-{
-    /** Name of the system property to specify the result printer class. */
-    public static final String RESULTPRINTER_PROPERTY = "ResultPrinterClass"; 
-    
-    /** Default of the system property ResultPrinterClass. */
-    public static final String RESULTPRINTER_DEFAULT = BatchResultPrinter.class.getName();
-    
-    /** 
-     * Constructor. 
-     * It creates a result printer instance based on the system property
-     * and delegates to the constructor taking a result printer argument. 
-     */
-    public BatchTestRunner() {
-    	super();
-        setPrinter(getResultPrinter());
-    }
-    
-    /**  
-     * Constructor. USes teh specified resultPrinter to format the test result.
-     */
-    public BatchTestRunner(ResultPrinter resultPrinter) {
-        super(resultPrinter);
-    }
-
-    /** Runs all test methods from the specified class. */
-    public static void run(Class clazz) {
-        run(new TestSuite(clazz));
-    }
-    
-    /** Runs the specified test. */
-    public static TestResult run(Test test) {
-		return new BatchTestRunner().doRun(test);
-    }
-
-	/**	Runs the specified test and waits until the user types RETURN. */
-	public static void runAndWait(Test suite) {
-		new BatchTestRunner().doRun(suite, true);
-	}
-
-	/** 
-     * Runs in batch mode and sets an exit code. If the specified String
-     * array includes a single fully qualified class name, this test class
-     * is executed. If it is empty it runs the TestListSuite.
-     */
-    public static void main(String args[]) {
-		BatchTestRunner aTestRunner= new BatchTestRunner();
-		try {
-            /*
-            if ((args == null) || args.length == 0)
-                args = new String[] { TestListSuite.class.getName() };
-            */
-			TestResult r = aTestRunner.start(args);
-			if (!r.wasSuccessful()) 
-				System.exit(FAILURE_EXIT);
-			System.exit(SUCCESS_EXIT);
-		} catch(Exception e) {
-			System.err.println(e.getMessage());
-			System.exit(EXCEPTION_EXIT);
-		}
-	}
-    
-    /** Returns a result printer instance. n instance of tCheck the system property */
-    protected ResultPrinter getResultPrinter() {
-      	String className =  System.getProperty(RESULTPRINTER_PROPERTY);
-        if (className != null) {
-            className = className.trim();
-            if (className.length() != 0) {
-                String msg = null;
-                try {
-                    // get class instance
-                    Class clazz = Class.forName(className);
-                    // constructor taking PrintStream arg
-                    Constructor ctor = clazz.getConstructor(
-                        new Class[] { PrintStream.class } );
-                    // create instance
-                    return (ResultPrinter)ctor.newInstance(
-                        new Object[] { System.out });
-                }
-                catch (ClassNotFoundException ex) {
-                    // specified ResultPrinter class not 
-                    msg = "Cannot find specified result printer class " + 
-                        className + ".";
-                }
-                catch (NoSuchMethodException ex) {
-                    msg = "Class " + className + 
-                        " does not provide constructor taking a PrintStream.";
-                }
-                catch (InstantiationException ex) {
-                    msg = "Class " + className + " is abstract.";
-                }
-                catch (IllegalAccessException ex) {
-                    msg = "Constructor taking a PrintStream of class " + 
-                        className + " is not accessible.";
-                }
-                catch (InvocationTargetException ex) {
-                    msg = "Constructor call results in exception " + ex + ".";
-                }
-
-                // ResultPrinter class specified, but not avaiable
-                System.out.println(msg);
-                ResultPrinter printer = getDefaultResultPrinter();
-                System.out.println("Using default result printer of class " + 
-                                   printer.getClass().getName());
-            }
-        }
-        
-        // ResultPrinter class not specified => use default
-        return getDefaultResultPrinter();
-    }
-
-    /** 
-     * Returns an instance of the default result printer class
-     * BatchResultPrinter.
-     */
-    protected ResultPrinter getDefaultResultPrinter() {
-        return new BatchResultPrinter(System.out);
-    }
-    
-
-}
-
diff --git a/api11/xdocs/index.xml b/api11/xdocs/index.xml
deleted file mode 100644
index 9fe4244..0000000
--- a/api11/xdocs/index.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright 2005 The Apache Software Foundation
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    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.
--->
-
-<document>
-  <properties> <title>About</title> </properties>
-
-  <body>
-    <section name="JDO1 API">
-      <p>The Java Data Objects (JDO) API is a standard interface-based 
-Java model abstraction of persistence, developed as 
-<a href="http://www.jcp.org/en/jsr/detail?id=12">Java Specification 
-Request 12</a> under the auspices of the <a href="http://www.jcp.org">
-Java Community Process</a>.
-      </p>
-      <p>
-This project implements the public interfaces, helper classes and exceptions 
-as specified in the JDO specification. They are intended to be shared by all 
-JDO implementations. 
-      </p>
-    </section>
-
-  </body>
-</document>
diff --git a/api11/xdocs/navigation.xml b/api11/xdocs/navigation.xml
deleted file mode 100644
index 29cc7aa..0000000
--- a/api11/xdocs/navigation.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright 2005 The Apache Software Foundation
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    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.
--->
-
-<project name="JDO1 API">
-
-  <body>
-    <links>
-      <item name="Apache" href="http://www.apache.org"/>
-      <item name="JDO Wiki" href="http://wiki.apache.org/jdo"/>
-    </links>
-
-    <menu name="JDO Links">
-      <item name="JDO Wiki" href="http://wiki.apache.org/jdo"/>
-    </menu>
-    <menu name="JCP Links">
-      <item name="JDO 1.0 JSR-12" href="http://www.jcp.org/en/jsr/detail?id=12"/>
-      <item name="JDO 2.0 JSR-243" href="http://www.jcp.org/en/jsr/detail?id=243"/>
-    </menu>
-
-    <footer><div>Java, J2EE, and JCP are trademarks or registered trademarks of
-      Sun Microsystems, Inc. in the United States and other countries.</div></footer>
-  </body>
-</project>
diff --git a/btree/maven.xml b/btree/maven.xml
deleted file mode 100644
index 9d4775e..0000000
--- a/btree/maven.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Copyright 2005 The Apache Software Foundation
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    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.
-
--->
-
-<project default="default"
-    xmlns:j="jelly:core"
-    xmlns:ant="jelly:ant"
-    xmlns:maven="jelly:maven"
-    >
-
-    <!-- ==================== -->
-    <!-- Default Global Goals -->
-    <!-- ==================== -->
-
-    <goal name="default">
-        <attainGoal name="jar:install"/>
-    </goal>
-
-    <goal name="build">
-        <attainGoal name="default"/>
-    </goal>
-
-    <goal name="rebuild">
-        <attainGoal name="clean"/>
-        <attainGoal name="build"/>
-    </goal>
-
-    <goal name="clobber">
-        <attainGoal name="clean"/>
-        <delete dir="mdr" includeEmptyDirs="true"/>
-    </goal>
-
-    <!-- Checkout btree sources from nebeans repository -->
-    <preGoal name="java:prepare-filesystem">
-        <echo>Using cvsroot ${netbeans.cvsroot}</echo>
-        <cvs cvsRoot="${netbeans.cvsroot}"
-             command="checkout -l ${netbeans.cvs.tag}"
-             package="mdr/src/org/netbeans/mdr/persistence"/>
-        <cvs cvsRoot="${netbeans.cvsroot}"
-             command="checkout ${netbeans.cvs.tag}"
-	     package="mdr/src/org/netbeans/mdr/persistence/btreeimpl"/>
-        <cvs cvsRoot="${netbeans.cvsroot}"
-             command="checkout ${netbeans.cvs.tag}"
-	     package="mdr/src/org/netbeans/mdr/util/MapEntryImpl.java"/>
-    </preGoal>
-
-    <!-- Need multiple source diretories: --> 
-    <!--   mdr - the netbeans sources     -->
-    <!--   src - local source files       -->
-    <preGoal name="java:compile">
-       <ant:path id="mdr.src" location="${basedir}/mdr/src"/>
-       <maven:addPath id="maven.compile.src.set" refid="mdr.src"/>
-    </preGoal>
-
-</project>
diff --git a/btree/project.properties b/btree/project.properties
deleted file mode 100644
index c95e87f..0000000
--- a/btree/project.properties
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-#   Copyright 2005 The Apache Software Foundation
-#
-#   Licensed under the Apache License, Version 2.0 (the "License");
-#   you may not use this file except in compliance with the License.
-#   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.
-#
-
-# The cvsroot of the netbeans repository. 
-# The official netbeans cvs host is cvs.netbeans.org. This might not work if you
-# are behind a firewall that blocks the cvs port. Please consult 
-# http://www.netbeans.org/community/sources for more info. 
-# If you are inside SWAN you can use a proxy cvsnetbeansorg.sfbay.sun.com.
-
-netbeans.cvsroot=:pserver:anoncvs@cvs.netbeans.org:/cvs
-# SWAN proxy
-#netbeans.cvsroot=:pserver:anoncvs@cvsnetbeansorg.sfbay.sun.com:/cvs
-
-# We need btree sources that compile with -target 1.3, 
-# so use a specific btree version
-netbeans.cvs.tag=-r release36-BLD200409100900
diff --git a/btree/project.xml b/btree/project.xml
deleted file mode 100644
index 02dc0d5..0000000
--- a/btree/project.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Copyright 2005 The Apache Software Foundation
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    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.
--->
-
-<project>
-    <pomVersion>3</pomVersion>
-    <extend>../project.xml</extend>
-    <!-- ============== -->
-    <!-- Identification -->
-    <!-- ============== -->
-    <name>Binary Tree for FOStore JDO</name>
-    <groupId>org.apache.jdo</groupId>
-    <artifactId>jdo-btree</artifactId>
-    <currentVersion>1.1</currentVersion>
-    <package>org.netbeans.mdr</package>
-    <shortDescription>Binary Tree for FOStore JDO</shortDescription>
-    <description>This project takes the Netbeans mdr btree implementation and provides it as a library.</description>
-    <repository />
-    <!-- ============ -->
-    <!-- Dependencies -->
-    <!-- ============ -->
-    <!-- =================== -->
-    <!-- Build Specification -->
-    <!-- =================== -->
-    <build>
-        <sourceDirectory>src/java</sourceDirectory>
-    </build>
-</project>
-
diff --git a/btree/src/java/org/netbeans/mdr/util/Logger.java b/btree/src/java/org/netbeans/mdr/util/Logger.java
deleted file mode 100644
index c28c512..0000000
--- a/btree/src/java/org/netbeans/mdr/util/Logger.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright 2005 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * 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.
- */
-package org.netbeans.mdr.util;
-
-import java.io.PrintStream;
-
-/** 
- * Logger utility.
- * 
- * This class replaces the implementation of the Logger class in package 
- * org.netbeans.mdr.util from the NetBeans open source mdr project. 
- * The NetBeans implemenation uses a non-mdr class
- * (org.openide.ErrorManager). This imposes a dependency on other NetBeans 
- * modules which makes it harder to use the btree implemenatation as a
- * library. 
- * 
- * @author Michael Bouschen
- */
-public class Logger {
-
-    /** */
-    public static final int INFORMATIONAL = 0x00000001;
-    public static final int WARNING = 0x00000010;
-    public static final int USER = 0x00000100;
-    public static final int EXCEPTION = 0x00001000;
-    public static final int ERROR = 0x00010000;
-
-    /** */
-    public static final PrintStream out = System.out;
-    
-    /** */
-    private static final Logger logger = new Logger();
-    
-
-    /** The name of the boolean system property to enable btree logging. */
-    public static final String VERBOSE_PROPERTY = 
-        "org.netbeans.mdr.persistence.verbose";
-
-    /** */
-    private boolean verbose;
-
-    /** */
-    public static Logger getDefault() {
-        return logger;
-    }
-
-    /** */
-    protected Logger() {
-        verbose = Boolean.getBoolean(VERBOSE_PROPERTY);
-    }
-
-    /** */
-    public void notify(int level, Exception e) {
-        if (verbose && (e != null))
-            log(e.toString());
-    }
-    
-    /** */
-    public void log(String msg) {
-        if (verbose) out.println(msg);
-    }
-
-    /** */
-    public void log(int severity, String msg) {
-        if (verbose) out.println(msg);
-    }
-
-    /** */
-    public final Throwable annotate(Throwable t, String localizedMessage) {
-        return t;
-    }
-
-    /** */
-    public final Throwable annotate(Throwable target, Throwable t) {
-        return target;
-    }
-}
diff --git a/fostore20/LICENSE.txt b/fostore20/LICENSE.txt
deleted file mode 100644
index d645695..0000000
--- a/fostore20/LICENSE.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed 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.
diff --git a/fostore20/maven.xml b/fostore20/maven.xml
deleted file mode 100644
index 829a0b7..0000000
--- a/fostore20/maven.xml
+++ /dev/null
@@ -1,332 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright 2005 The Apache Software Foundation
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    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.
--->
-
-<project default="default"
-    xmlns:j="jelly:core"
-    xmlns:ant="jelly:ant"
-    xmlns:maven="jelly:maven"
-    >
-
-    <!-- ==================== -->
-    <!-- Default Global Goals -->
-    <!-- ==================== -->
-
-    <goal name="default">
-        <attainGoal name="jar:install"/>
-    </goal>
-
-    <goal name="build">
-        <attainGoal name="default"/>
-    </goal>
-
-    <goal name="rebuild">
-        <attainGoal name="clean"/>
-        <attainGoal name="build"/>
-    </goal>
-
-    <postGoal name="test:prepare-filesystem">
-        <mkdir dir="${jdo.testdir}"/>
-    </postGoal>
-
-    <preGoal name="test:test">
-        <attainGoal name="pcclasses"/>
-        <attainGoal name="testjar.build"/>
-        <attainGoal name="fsuid2.build"/>
-    </preGoal>
-
-    <postGoal name="clean:clean">
-        <delete file="${jdo.pcclasses.jarfile}"/>
-        <delete file="${jdo.testclasses.jarfile}"/>
-        <ant dir="${basedir}/test/fsuid2" target="clean"/>
-    </postGoal>
-
-    <goal name="clobber" prereqs="clean">
-        <delete>
-            <fileset dir="." defaultexcludes="no" includes="**/*~"/>
-        </delete>
-        <ant dir="${basedir}/test/fsuid2" target="clobber"/>
-    </goal>
-
-    <!-- ================== -->
-    <!-- Running test cases -->
-    <!-- ================== -->
-
-    <goal name="runtest">
-        <attainGoal name="runtest.list"/>
-        <attainGoal name="runtest.security"/>
-        <attainGoal name="runtest.multiJVMtests"/>
-    </goal>
-
-    <!-- Runs all tests from the specified test list in batch mode. -->
-    <goal name="runtest.list" prereqs="pcclasses, testjar.build">
-        <ant target="runtest.list"
-             dir="${basedir}/test" antfile="runtest.xml">
-            <property name="testlist" value="${jdo.testlist}"/>
-            <property name="jdoapi" value="${jdo.api.jarfile}"/>
-            <property name="jdobtree" value="${jdo.jdobtree.jarfile}"/>
-            <property name="jdocore" value="${jdo.jdocore.jarfile}"/>
-            <property name="jdoruntime" value="${jdo.jdoruntime.jarfile}"/>
-            <property name="jdoquery" value="${jdo.jdoquery.jarfile}"/>
-            <property name="jdofostore" value="${maven.build.dir}/classes"/>
-            <property name="jdoritests" value="${jdo.testclasses.jarfile}"/>
-            <property name="pcclasses" value="${jdo.pcclasses.jarfile}"/>
-            <property name="testdir" value="${jdo.testdir}"/>
-            <property name="fsuidjar" value="${jdo.fsuid.jarfile}"/>
-            <property name="junit" value="${junit.jarfile}"/>
-            <property name="jta" value="${jta.jarfile}"/>
-            <property name="antlr" value="${antlr.jarfile}"/>
-            <property name="logging" value="${logging.jarfile}"/>
-            <property name="jndi" value="${jndi}"/>
-            <property name="xmlparser" value="${xmlparser}"/>
-            <property name="status.verbose" value="${status.verbose}"/>
-        </ant>
-    </goal>
-
-    <goal name="runtest.security" prereqs="pcclasses, testjar.build">
-        <ant target="runtest.security"
-             dir="${basedir}/test" antfile="runtest.xml">
-            <property name="policyfile" value="${jdo.security.policy}"/>
-            <property name="testlist" value="${jdo.testlist}"/>
-            <property name="jdoapi" value="${jdo.api.jarfile}"/>
-            <property name="jdobtree" value="${jdo.jdobtree.jarfile}"/>
-            <property name="jdocore" value="${jdo.jdocore.jarfile}"/>
-            <property name="jdoruntime" value="${jdo.jdoruntime.jarfile}"/>
-            <property name="jdoquery" value="${jdo.jdoquery.jarfile}"/>
-            <property name="jdofostore" value="${maven.build.dir}/classes"/>
-            <property name="jdoritests" value="${jdo.testclasses.jarfile}"/>
-            <property name="pcclasses" value="${jdo.pcclasses.jarfile}"/>
-            <property name="testdir" value="${jdo.testdir}"/>
-            <property name="fsuidjar" value="${jdo.fsuid.jarfile}"/>
-            <property name="junit" value="${junit.jarfile}"/>
-            <property name="jta" value="${jta.jarfile}"/>
-            <property name="antlr" value="${antlr.jarfile}"/>
-            <property name="logging" value="${logging.jarfile}"/>
-            <property name="jndi" value="${jndi}"/>
-            <property name="xmlparser" value="${xmlparser}"/>
-            <property name="status.verbose" value="${status.verbose}"/>
-        </ant>
-    </goal>
-
-    <!-- Runs tests that cannot be run from a test list 
-         (e.g. they require starting a sequence of test programs 
-          where each test programs needs to run in its own JVM.
-    -->
-    <goal name="runtest.multiJVMtests" prereqs="pcclasses, testjar.build">
-        <ant target="runtest.multiJVMtests" 
-             dir="${basedir}/test" antfile="runtest.xml">
-            <property name="jdoapi" value="${jdo.api.jarfile}"/>
-            <property name="jdobtree" value="${jdo.jdobtree.jarfile}"/>
-            <property name="jdocore" value="${jdo.jdocore.jarfile}"/>
-            <property name="jdoruntime" value="${jdo.jdoruntime.jarfile}"/>
-            <property name="jdoquery" value="${jdo.jdoquery.jarfile}"/>
-            <property name="jdofostore" value="${maven.build.dir}/classes"/>
-            <property name="jdoenhancer" value="${jdo.jdoenhancer.jarfile}"/>
-            <property name="jdoritests" value="${jdo.testclasses.jarfile}"/>
-            <property name="pcclasses" value="${jdo.pcclasses.jarfile}"/>
-            <property name="testdir" value="${jdo.testdir}"/>
-            <property name="fsuidjar" value="${jdo.fsuid.jarfile}"/>
-            <property name="junit" value="${junit.jarfile}"/>
-            <property name="jta" value="${jta.jarfile}"/>
-            <property name="antlr" value="${antlr.jarfile}"/>
-            <property name="logging" value="${logging.jarfile}"/>
-            <property name="jndi" value="${jndi}"/>
-            <property name="xmlparser" value="${xmlparser}"/>
-            <property name="status.verbose" value="${status.verbose}"/>
-        </ant>
-    </goal>
-
-    <!-- ================ -->
-    <!-- Enhancer support -->
-    <!-- ================ -->
-
-    <preGoal name="pcclasses">
-        <condition property="enhancement.required">
-            <not>
-                <uptodate targetfile="${jdo.pcclasses.jarfile}">
-                    <srcfiles dir="${basedir}/test/jdo"
-                              includes="org/apache/jdo/pc/**/*.jdo, 
-                                        org/apache/jdo/pc/**/*.jdoproperties"/>
-                    <srcfiles dir="${basedir}/test/java"
-                              includes="org/apache/jdo/pc/**/*.java,
-                                        org/apache/jdo/util/Util.java,
-                                        org/apache/jdo/test/Test_PCDerived.java"/>
-                </uptodate>
-            </not>
-        </condition>
-    </preGoal>
-
-    <goal name="pcclasses">
-        <j:if test="${enhancement.required}">
-            <attainGoal name="copymetadata"/>
-            <attainGoal name="checkmetadata"/>
-            <attainGoal name="enhance"/>
-            <attainGoal name="augmentationtest"/>
-            <attainGoal name="annotationtest"/>
-	    <attainGoal name="pcclassesjar.build"/>
-        </j:if>
-    </goal>
-
-    <goal name="copymetadata"
-          description="Copies JDO metadata files to target/test-classes">
-        <copy todir="${jdo.testclasses.dir}">
-            <fileset dir="${basedir}/test/jdo" includes="**/*.jdo"/>
-        </copy>
-        <mkdir dir="${jdo.enhancer.enhanced.dir}"/>
-        <copy todir="${jdo.enhancer.enhanced.dir}">
-            <fileset dir="${basedir}/test/jdo" includes="**/*.jdo"/>
-        </copy>
-    </goal>
-
-    <goal name="checkmetadata"
-          description="Check existence of XML metadata for pc classes">
-        <echo>Check existence of XML metadata for pc classes</echo>
-        <java fork="yes" failonerror="yes" 
-              classname="${jdo.xmlexists.main}" 
-              classpath="${jdo.xmlexists.classpath}">
-            <arg line="${jdo.pcclasses.pc.classes}"/>
-            <arg line="${jdo.pcclasses.empdept.classes}"/>
-            <arg line="${jdo.pcclasses.xempdept.classes}"/>
-            <arg line="${jdo.pcclasses.appid.classes}"/>
-            <arg line="${jdo.pcclasses.serializable.classes}"/>
-        </java>
-    </goal>
-
-    <goal name="enhance"
-          description="Enhance persistence-capable and persistence-aware classes">
-        <echo>Enhance persistence-capable and persistence-aware classes</echo>
-        <java failonerror="true" fork="true" 
-              classname="${jdo.enhancer.main}" 
-              classpath="${jdo.enhancer.classpath}">
-            <arg line="${jdo.enhancer.options}"/>
-            <arg line="${jdo.pcclasses.pc.files}"/>
-            <arg line="${jdo.pcclasses.empdept.files}"/>
-            <arg line="${jdo.pcclasses.xempdept.files}"/>
-            <arg line="${jdo.pcclasses.appid.files}"/>
-            <arg line="${jdo.pcclasses.serializable.files}"/>
-            <arg line="${jdo.pawareclasses.test.files}"/>
-        </java>
-   </goal>
-
-    <goal name="augmentationtest">
-        <java fork="yes" failonerror="yes" 
-              classname="${jdo.augmentationtest.main}" 
-              classpath="${jdo.enhancer.classpath}">
-            <arg line="${jdo.augmentationtest.options}"/>
-            <arg line="--properties ${basedir}/test/jdo/org/apache/jdo/pc/pc.jdoproperties"/>
-            <arg line="${jdo.pcclasses.pc.classes}"/>
-        </java>
-        <java fork="yes" failonerror="yes"
-              classname="${jdo.augmentationtest.main}" 
-              classpath="${jdo.enhancer.classpath}">
-            <arg line="${jdo.augmentationtest.options}"/>
-            <arg line="--properties ${basedir}/test/jdo/org/apache/jdo/pc/empdept/empdept.jdoproperties"/>
-            <arg line="${jdo.pcclasses.empdept.classes}"/>
-        </java>
-        <java fork="yes" failonerror="yes"
-              classname="${jdo.augmentationtest.main}" 
-              classpath="${jdo.enhancer.classpath}">
-            <arg line="${jdo.augmentationtest.options}"/>
-            <arg line=" --properties ${basedir}/test/jdo/org/apache/jdo/pc/xempdept/xempdept.jdoproperties"/>
-            <arg line="${jdo.pcclasses.xempdept.classes}"/>
-        </java>
-        <java fork="yes" failonerror="yes"
-              classname="${jdo.augmentationtest.main}" 
-              classpath="${jdo.enhancer.classpath}">
-            <arg line="${jdo.augmentationtest.options}"/>
-            <arg line=" --properties ${basedir}/test/jdo/org/apache/jdo/pc/appid/appid.jdoproperties"/>
-            <arg line=" ${jdo.pcclasses.appid.classes}"/>
-        </java>
-        <java fork="yes" failonerror="yes"
-              classname="${jdo.augmentationtest.main}" 
-              classpath="${jdo.enhancer.classpath}">
-            <arg line="${jdo.augmentationtest.options}"/>
-            <arg line="--properties ${basedir}/test/jdo/org/apache/jdo/pc/serializable/serializable.jdoproperties"/>
-            <arg line="${jdo.pcclasses.serializable.classes}"/>
-        </java>
-    </goal>
-
-    <goal name="annotationtest">
-        <java fork="yes" failonerror="yes"
-              classname="${jdo.annotationtest.main}" 
-              classpath="${jdo.enhancer.classpath}">
-            <arg line="--properties ${basedir}/test/jdo/org/apache/jdo/pc/pc.jdoproperties"/>
-            <arg line="${jdo.pcclasses.pc.files}"/>
-            <arg line="${jdo.pawareclasses.test.files}"/>
-        </java>
-        <java fork="yes" failonerror="yes"
-              classname="${jdo.annotationtest.main}"
-              classpath="${jdo.enhancer.classpath}">
-            <arg line="--properties ${basedir}/test/jdo/org/apache/jdo/pc/empdept/empdept.jdoproperties"/>
-            <arg line="${jdo.pcclasses.empdept.files}"/>
-        </java>
-        <java fork="yes" failonerror="yes"
... 389024 lines suppressed ...