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 mb...@apache.org on 2022/12/30 21:38:29 UTC

[db-jdo] 02/02: JDO-823: Constants should not be defined in interfaces

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

mbo pushed a commit to branch JDO-823
in repository https://gitbox.apache.org/repos/asf/db-jdo.git

commit 72907f79d444af7802263847bb61b70bf5c28414
Author: Michael Bouschen <Mi...@akquinet.de>
AuthorDate: Fri Dec 30 22:38:18 2022 +0100

    JDO-823: Constants should not be defined in interfaces
---
 api/src/main/java/javax/jdo/Constants.java         |   3 +
 api/src/main/java/javax/jdo/Enhancer.java          |  10 +-
 .../jdo/{Constants.java => JDOConstants.java}      | 254 +++++++++++----------
 api/src/main/java/javax/jdo/JDOHelper.java         | 102 ++++-----
 .../java/javax/jdo/PersistenceManagerFactory.java  |  16 +-
 api/src/main/java/javax/jdo/Transaction.java       |  12 +-
 api/src/main/java/javax/jdo/spi/JDOImplHelper.java |  72 +++---
 .../test/java/javax/jdo/AbstractJDOConfigTest.java |   2 +-
 api/src/test/java/javax/jdo/EnhancerTest.java      |   6 +-
 .../test/java/javax/jdo/JDOHelperConfigTest.java   |  74 +++---
 api/src/test/java/javax/jdo/MockEnhancer.java      |   4 +-
 api/src/test/java/javax/jdo/PMFMapMapTest.java     |  22 +-
 api/src/test/java/javax/jdo/PMFService.java        |   6 +-
 .../test/java/javax/jdo/spi/JDOImplHelperTest.java |   4 +-
 api/src/test/java/javax/jdo/stub/StubPMF.java      |  56 ++---
 api/src/test/java/javax/jdo/util/AbstractTest.java |   3 +-
 tck/src/main/java/org/apache/jdo/tck/JDO_Test.java |  14 +-
 .../tck/api/persistencemanager/GetProperties.java  |  48 ++--
 .../FlushThrowsIfReadOnly.java                     |   4 +-
 .../SetTransactionIsolationLevel.java              |  17 +-
 .../config/Persistence.java                        |   4 +-
 .../jdo/tck/transactions/SetIsolationLevel.java    |   9 +-
 tck/src/main/resources/conf/jdo-signatures.txt     | 244 ++++++++++----------
 23 files changed, 497 insertions(+), 489 deletions(-)

diff --git a/api/src/main/java/javax/jdo/Constants.java b/api/src/main/java/javax/jdo/Constants.java
index 8f4a69ce..ac6a2511 100644
--- a/api/src/main/java/javax/jdo/Constants.java
+++ b/api/src/main/java/javax/jdo/Constants.java
@@ -19,10 +19,13 @@ package javax.jdo;
 
 /**
  * Constant values used in JDO.
+ * @deprecated
+ * This interface is replaced by the class {@link JDOConstants}.
  *
  * @since 2.1
  * @version 3.0
  */
+@Deprecated
 public interface Constants {
 
   /**
diff --git a/api/src/main/java/javax/jdo/Enhancer.java b/api/src/main/java/javax/jdo/Enhancer.java
index d8dd9c6c..3b0eb2bd 100644
--- a/api/src/main/java/javax/jdo/Enhancer.java
+++ b/api/src/main/java/javax/jdo/Enhancer.java
@@ -16,11 +16,11 @@
  */
 package javax.jdo;
 
-import static javax.jdo.Constants.ENHANCER_EXCEPTION;
-import static javax.jdo.Constants.ENHANCER_NO_JDO_ENHANCER_FOUND;
-import static javax.jdo.Constants.ENHANCER_USAGE_ERROR;
-import static javax.jdo.Constants.PROPERTY_ENHANCER_VENDOR_NAME;
-import static javax.jdo.Constants.PROPERTY_ENHANCER_VERSION_NUMBER;
+import static javax.jdo.JDOConstants.ENHANCER_EXCEPTION;
+import static javax.jdo.JDOConstants.ENHANCER_NO_JDO_ENHANCER_FOUND;
+import static javax.jdo.JDOConstants.ENHANCER_USAGE_ERROR;
+import static javax.jdo.JDOConstants.PROPERTY_ENHANCER_VENDOR_NAME;
+import static javax.jdo.JDOConstants.PROPERTY_ENHANCER_VERSION_NUMBER;
 
 import java.io.File;
 import java.net.MalformedURLException;
diff --git a/api/src/main/java/javax/jdo/Constants.java b/api/src/main/java/javax/jdo/JDOConstants.java
similarity index 66%
copy from api/src/main/java/javax/jdo/Constants.java
copy to api/src/main/java/javax/jdo/JDOConstants.java
index 8f4a69ce..8121f6dd 100644
--- a/api/src/main/java/javax/jdo/Constants.java
+++ b/api/src/main/java/javax/jdo/JDOConstants.java
@@ -20,20 +20,24 @@ package javax.jdo;
 /**
  * Constant values used in JDO.
  *
- * @since 2.1
- * @version 3.0
+ * @since 3.2
  */
-public interface Constants {
+public class JDOConstants {
+
+  /**
+   * This class should not be instantiated.
+   */
+  private JDOConstants() {}
 
   /**
    * The JDO standard package name.
    *
    * @since 3.1
    */
-  static String JAVAX_JDO = "javax.jdo";
+  public static final String JAVAX_JDO = "javax.jdo";
 
   /** The JDO standard property string and option string prefix. */
-  static String JAVAX_JDO_PREFIX = JAVAX_JDO + ".";
+  public static final String JAVAX_JDO_PREFIX = JAVAX_JDO + ".";
 
   /**
    * The name of the standard service configuration resource text file containing the name of an
@@ -42,7 +46,7 @@ public interface Constants {
    *
    * @since 2.1
    */
-  static String SERVICE_LOOKUP_PMF_RESOURCE_NAME =
+  public static final String SERVICE_LOOKUP_PMF_RESOURCE_NAME =
       "META-INF/services/javax.jdo.PersistenceManagerFactory";
 
   /**
@@ -52,7 +56,7 @@ public interface Constants {
    *
    * @since 3.0
    */
-  static String SERVICE_LOOKUP_ENHANCER_RESOURCE_NAME = "META-INF/services/javax.jdo.JDOEnhancer";
+  public static final String SERVICE_LOOKUP_ENHANCER_RESOURCE_NAME = "META-INF/services/javax.jdo.JDOEnhancer";
 
   /**
    * The name of the standard JDO configuration resource file(s). Constant value is <code>
@@ -60,7 +64,7 @@ public interface Constants {
    *
    * @since 2.1
    */
-  static String JDOCONFIG_RESOURCE_NAME = "META-INF/jdoconfig.xml";
+  public static final String JDOCONFIG_RESOURCE_NAME = "META-INF/jdoconfig.xml";
 
   /**
    * The standard JDO configuration schema namespace. Constant value is <code>
@@ -68,7 +72,7 @@ public interface Constants {
    *
    * @since 2.1
    */
-  static String JDOCONFIG_XSD_NS = "https://db.apache.org/jdo/xmlns/jdoconfig";
+  public static final String JDOCONFIG_XSD_NS = "https://db.apache.org/jdo/xmlns/jdoconfig";
 
   /**
    * The standard JDO metadata schema namespace. Constant value is <code>
@@ -76,7 +80,7 @@ public interface Constants {
    *
    * @since 2.1
    */
-  static String JDO_XSD_NS = "https://db.apache.org/jdo/xmlns/jdo";
+  public static final String JDO_XSD_NS = "https://db.apache.org/jdo/xmlns/jdo";
 
   /**
    * The standard JDO object-repository mapping schema namespace. Constant value is <code>
@@ -84,7 +88,7 @@ public interface Constants {
    *
    * @since 2.1
    */
-  static String ORM_XSD_NS = "https://db.apache.org/jdo/xmlns/orm";
+  public static final String ORM_XSD_NS = "https://db.apache.org/jdo/xmlns/orm";
 
   /**
    * The standard JDO query schema namespace. Constant value is <code>
@@ -92,7 +96,7 @@ public interface Constants {
    *
    * @since 2.1
    */
-  static String JDOQUERY_XSD_NS = "https://db.apache.org/jdo/xmlns/jdoquery";
+  public static final String JDOQUERY_XSD_NS = "https://db.apache.org/jdo/xmlns/jdoquery";
 
   /**
    * The name of the persistence manager factory element in the JDO configuration file. Constant
@@ -100,164 +104,164 @@ public interface Constants {
    *
    * @since 2.1
    */
-  static String ELEMENT_PERSISTENCE_MANAGER_FACTORY = "persistence-manager-factory";
+  public static final String ELEMENT_PERSISTENCE_MANAGER_FACTORY = "persistence-manager-factory";
 
   /**
    * The name of the persistence manager factory element's "class" attribute.
    *
    * @since 2.1
    */
-  static String PMF_ATTRIBUTE_CLASS = "class";
+  public static final String PMF_ATTRIBUTE_CLASS = "class";
   /**
    * The name of the persistence manager factory element's "name" attribute.
    *
    * @since 2.1
    */
-  static String PMF_ATTRIBUTE_NAME = "name";
+  public static final String PMF_ATTRIBUTE_NAME = "name";
   /**
    * The name of the persistence manager factory element's "persistence-unit-name" attribute.
    *
    * @since 2.1
    */
-  static String PMF_ATTRIBUTE_PERSISTENCE_UNIT_NAME = "persistence-unit-name";
+  public static final String PMF_ATTRIBUTE_PERSISTENCE_UNIT_NAME = "persistence-unit-name";
   /**
    * The name of the persistence manager factory element's "optimistic" attribute.
    *
    * @since 2.1
    */
-  static String PMF_ATTRIBUTE_OPTIMISTIC = "optimistic";
+  public static final String PMF_ATTRIBUTE_OPTIMISTIC = "optimistic";
   /**
    * The name of the persistence manager factory element's "readonly" attribute.
    *
    * @since 2.2
    */
-  static String PMF_ATTRIBUTE_READONLY = "readonly";
+  public static final String PMF_ATTRIBUTE_READONLY = "readonly";
   /**
    * The name of the persistence manager factory element's "retain-values" attribute.
    *
    * @since 2.1
    */
-  static String PMF_ATTRIBUTE_RETAIN_VALUES = "retain-values";
+  public static final String PMF_ATTRIBUTE_RETAIN_VALUES = "retain-values";
   /**
    * The name of the persistence manager factory element's "restore-values" attribute.
    *
    * @since 2.1
    */
-  static String PMF_ATTRIBUTE_RESTORE_VALUES = "restore-values";
+  public static final String PMF_ATTRIBUTE_RESTORE_VALUES = "restore-values";
   /**
    * The name of the persistence manager factory element's "ignore-cache" attribute.
    *
    * @since 2.1
    */
-  static String PMF_ATTRIBUTE_IGNORE_CACHE = "ignore-cache";
+  public static final String PMF_ATTRIBUTE_IGNORE_CACHE = "ignore-cache";
   /**
    * The name of the persistence manager factory element's "nontransactional-read" attribute.
    *
    * @since 2.1
    */
-  static String PMF_ATTRIBUTE_NONTRANSACTIONAL_READ = "nontransactional-read";
+  public static final String PMF_ATTRIBUTE_NONTRANSACTIONAL_READ = "nontransactional-read";
   /**
    * The name of the persistence manager factory element's "nontransactional-write" attribute.
    *
    * @since 2.1
    */
-  static String PMF_ATTRIBUTE_NONTRANSACTIONAL_WRITE = "nontransactional-write";
+  public static final String PMF_ATTRIBUTE_NONTRANSACTIONAL_WRITE = "nontransactional-write";
   /**
    * The name of the persistence manager factory element's "multithreaded" attribute.
    *
    * @since 2.1
    */
-  static String PMF_ATTRIBUTE_MULTITHREADED = "multithreaded";
+  public static final String PMF_ATTRIBUTE_MULTITHREADED = "multithreaded";
   /**
    * The name of the persistence manager factory element's "connection-driver-name" attribute.
    *
    * @since 2.1
    */
-  static String PMF_ATTRIBUTE_CONNECTION_DRIVER_NAME = "connection-driver-name";
+  public static final String PMF_ATTRIBUTE_CONNECTION_DRIVER_NAME = "connection-driver-name";
   /**
    * The name of the persistence manager factory element's "connection-user-name" attribute.
    *
    * @since 2.1
    */
-  static String PMF_ATTRIBUTE_CONNECTION_USER_NAME = "connection-user-name";
+  public static final String PMF_ATTRIBUTE_CONNECTION_USER_NAME = "connection-user-name";
   /**
    * The name of the persistence manager factory element's "connection-password" attribute.
    *
    * @since 2.1
    */
-  static String PMF_ATTRIBUTE_CONNECTION_PASSWORD = "connection-password";
+  public static final String PMF_ATTRIBUTE_CONNECTION_PASSWORD = "connection-password";
   /**
    * The name of the persistence manager factory element's "connection-url" attribute.
    *
    * @since 2.1
    */
-  static String PMF_ATTRIBUTE_CONNECTION_URL = "connection-url";
+  public static final String PMF_ATTRIBUTE_CONNECTION_URL = "connection-url";
   /**
    * The name of the persistence manager factory element's "connection-factory-name" attribute.
    *
    * @since 2.1
    */
-  static String PMF_ATTRIBUTE_CONNECTION_FACTORY_NAME = "connection-factory-name";
+  public static final String PMF_ATTRIBUTE_CONNECTION_FACTORY_NAME = "connection-factory-name";
   /**
    * The name of the persistence manager factory element's "connection-factory2-name" attribute.
    *
    * @since 2.1
    */
-  static String PMF_ATTRIBUTE_CONNECTION_FACTORY2_NAME = "connection-factory2-name";
+  public static final String PMF_ATTRIBUTE_CONNECTION_FACTORY2_NAME = "connection-factory2-name";
   /**
    * The name of the persistence manager factory element's "detach-all-on-commit" attribute.
    *
    * @since 2.1
    */
-  static String PMF_ATTRIBUTE_DETACH_ALL_ON_COMMIT = "detach-all-on-commit";
+  public static final String PMF_ATTRIBUTE_DETACH_ALL_ON_COMMIT = "detach-all-on-commit";
   /**
    * The name of the persistence manager factory element's "copy-on-attach" attribute.
    *
    * @since 2.1
    */
-  static String PMF_ATTRIBUTE_COPY_ON_ATTACH = "copy-on-attach";
+  public static final String PMF_ATTRIBUTE_COPY_ON_ATTACH = "copy-on-attach";
   /**
    * The name of the persistence manager factory element's "mapping" attribute.
    *
    * @since 2.1
    */
-  static String PMF_ATTRIBUTE_MAPPING = "mapping";
+  public static final String PMF_ATTRIBUTE_MAPPING = "mapping";
   /**
    * The name of the persistence manager factory element's "server-time-zone-id" attribute.
    *
    * @since 2.1
    */
-  static String PMF_ATTRIBUTE_SERVER_TIME_ZONE_ID = "server-time-zone-id";
+  public static final String PMF_ATTRIBUTE_SERVER_TIME_ZONE_ID = "server-time-zone-id";
   /**
    * The name of the persistence manager factory element's "datastore-read-timeout-millis"
    * attribute.
    *
    * @since 3.0
    */
-  static String PMF_ATTRIBUTE_DATASTORE_READ_TIMEOUT_MILLIS = "datastore-read-timeout-millis";
+  public static final String PMF_ATTRIBUTE_DATASTORE_READ_TIMEOUT_MILLIS = "datastore-read-timeout-millis";
   /**
    * The name of the persistence manager factory element's "datastore-write-timeout-millis"
    * attribute.
    *
    * @since 3.0
    */
-  static String PMF_ATTRIBUTE_DATASTORE_WRITE_TIMEOUT_MILLIS = "datastore-write-timeout-millis";
+  public static final String PMF_ATTRIBUTE_DATASTORE_WRITE_TIMEOUT_MILLIS = "datastore-write-timeout-millis";
   /**
    * The name of the persistence manager factory property elements in the JDO configuration file.
    */
-  static String ELEMENT_PROPERTY = "property";
+  public static final String ELEMENT_PROPERTY = "property";
   /** The name of the persistence manager factory property element's "name" attribute. */
-  static String PROPERTY_ATTRIBUTE_NAME = "name";
+  public static final String PROPERTY_ATTRIBUTE_NAME = "name";
   /** The name of the persistence manager factory property element's "value" attribute. */
-  static String PROPERTY_ATTRIBUTE_VALUE = "value";
+  public static final String PROPERTY_ATTRIBUTE_VALUE = "value";
 
   /** The name of the instance lifecycle listener element in the JDO configuration file. */
-  static String ELEMENT_INSTANCE_LIFECYCLE_LISTENER = "instance-lifecycle-listener";
+  public static final String ELEMENT_INSTANCE_LIFECYCLE_LISTENER = "instance-lifecycle-listener";
 
   /** The name of the instance lifecycle listener element's "listener" attribute. */
-  static String INSTANCE_LIFECYCLE_LISTENER_ATTRIBUTE_LISTENER = "listener";
+  public static final String INSTANCE_LIFECYCLE_LISTENER_ATTRIBUTE_LISTENER = "listener";
   /** The name of the instance lifecycle listener element's "classes" attribute. */
-  static String INSTANCE_LIFECYCLE_LISTENER_ATTRIBUTE_CLASSES = "classes";
+  public static final String INSTANCE_LIFECYCLE_LISTENER_ATTRIBUTE_CLASSES = "classes";
 
   /**
    * "javax.jdo.option.TransientTransactional"
@@ -265,140 +269,140 @@ public interface Constants {
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_TRANSACTIONAL_TRANSIENT = "javax.jdo.option.TransientTransactional";
+  public static final String OPTION_TRANSACTIONAL_TRANSIENT = "javax.jdo.option.TransientTransactional";
   /**
    * "javax.jdo.option.NontransactionalRead"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_NONTRANSACTIONAL_READ = "javax.jdo.option.NontransactionalRead";
+  public static final String OPTION_NONTRANSACTIONAL_READ = "javax.jdo.option.NontransactionalRead";
   /**
    * "javax.jdo.option.NontransactionalWrite"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_NONTRANSACTIONAL_WRITE = "javax.jdo.option.NontransactionalWrite";
+  public static final String OPTION_NONTRANSACTIONAL_WRITE = "javax.jdo.option.NontransactionalWrite";
   /**
    * "javax.jdo.option.RetainValues"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_RETAIN_VALUES = "javax.jdo.option.RetainValues";
+  public static final String OPTION_RETAIN_VALUES = "javax.jdo.option.RetainValues";
   /**
    * "javax.jdo.option.Optimistic"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_OPTIMISTIC = "javax.jdo.option.Optimistic";
+  public static final String OPTION_OPTIMISTIC = "javax.jdo.option.Optimistic";
   /**
    * "javax.jdo.option.ApplicationIdentity"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_APPLICATION_IDENTITY = "javax.jdo.option.ApplicationIdentity";
+  public static final String OPTION_APPLICATION_IDENTITY = "javax.jdo.option.ApplicationIdentity";
   /**
    * "javax.jdo.option.DatastoreIdentity"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_DATASTORE_IDENTITY = "javax.jdo.option.DatastoreIdentity";
+  public static final String OPTION_DATASTORE_IDENTITY = "javax.jdo.option.DatastoreIdentity";
   /**
    * "javax.jdo.option.NonDurableIdentity"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_NONDURABLE_IDENTITY = "javax.jdo.option.NonDurableIdentity";
+  public static final String OPTION_NONDURABLE_IDENTITY = "javax.jdo.option.NonDurableIdentity";
   /**
    * "javax.jdo.option.ArrayList"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_ARRAYLIST = "javax.jdo.option.ArrayList";
+  public static final String OPTION_ARRAYLIST = "javax.jdo.option.ArrayList";
   /**
    * "javax.jdo.option.LinkedList"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_LINKEDLIST = "javax.jdo.option.LinkedList";
+  public static final String OPTION_LINKEDLIST = "javax.jdo.option.LinkedList";
   /**
    * "javax.jdo.option.TreeMap"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_TREEMAP = "javax.jdo.option.TreeMap";
+  public static final String OPTION_TREEMAP = "javax.jdo.option.TreeMap";
   /**
    * "javax.jdo.option.TreeSet"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_TREESET = "javax.jdo.option.TreeSet";
+  public static final String OPTION_TREESET = "javax.jdo.option.TreeSet";
   /**
    * "javax.jdo.option.Vector"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_VECTOR = "javax.jdo.option.Vector";
+  public static final String OPTION_VECTOR = "javax.jdo.option.Vector";
   /**
    * "javax.jdo.option.Array"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_ARRAY = "javax.jdo.option.Array";
+  public static final String OPTION_ARRAY = "javax.jdo.option.Array";
   /**
    * "javax.jdo.option.NullCollection"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_NULL_COLLECTION = "javax.jdo.option.NullCollection";
+  public static final String OPTION_NULL_COLLECTION = "javax.jdo.option.NullCollection";
   /**
    * "javax.jdo.option.ChangeApplicationIdentity"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_CHANGE_APPLICATION_IDENTITY = "javax.jdo.option.ChangeApplicationIdentity";
+  public static final String OPTION_CHANGE_APPLICATION_IDENTITY = "javax.jdo.option.ChangeApplicationIdentity";
   /**
    * "javax.jdo.option.BinaryCompatibility"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_BINARY_COMPATIBILITY = "javax.jdo.option.BinaryCompatibility";
+  public static final String OPTION_BINARY_COMPATIBILITY = "javax.jdo.option.BinaryCompatibility";
   /**
    * "javax.jdo.option.GetDataStoreConnection"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_GET_DATASTORE_CONNECTION = "javax.jdo.option.GetDataStoreConnection";
+  public static final String OPTION_GET_DATASTORE_CONNECTION = "javax.jdo.option.GetDataStoreConnection";
   /**
    * "javax.jdo.option.GetJDBCConnection"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_GET_JDBC_CONNECTION = "javax.jdo.option.GetJDBCConnection";
+  public static final String OPTION_GET_JDBC_CONNECTION = "javax.jdo.option.GetJDBCConnection";
   /**
    * "javax.jdo.query.SQL"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_QUERY_SQL = "javax.jdo.query.SQL";
+  public static final String OPTION_QUERY_SQL = "javax.jdo.query.SQL";
 
   /**
    * "javax.jdo.option.QueryCancel"
@@ -406,7 +410,7 @@ public interface Constants {
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 3.0
    */
-  static String OPTION_QUERY_CANCEL = "javax.jdo.option.QueryCancel";
+  public static final String OPTION_QUERY_CANCEL = "javax.jdo.option.QueryCancel";
 
   /**
    * "javax.jdo.query.JDOQL.BitwiseOperations"
@@ -414,7 +418,7 @@ public interface Constants {
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 3.2
    */
-  static String OPTION_QUERY_JDOQL_BITWISE_OPERATIONS = "javax.jdo.query.JDOQL.BitwiseOperations";
+  public static final String OPTION_QUERY_JDOQL_BITWISE_OPERATIONS = "javax.jdo.query.JDOQL.BitwiseOperations";
 
   /**
    * "javax.jdo.query.JDOQL.UnconstrainedQueryVariables"
@@ -422,7 +426,7 @@ public interface Constants {
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_UNCONSTRAINED_QUERY_VARIABLES =
+  public static final String OPTION_UNCONSTRAINED_QUERY_VARIABLES =
       "javax.jdo.query.JDOQL.UnconstrainedQueryVariables";
 
   /**
@@ -431,35 +435,35 @@ public interface Constants {
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 3.0
    */
-  static String OPTION_DATASTORE_TIMEOUT = "javax.jdo.option.DatastoreTimeout";
+  public static final String OPTION_DATASTORE_TIMEOUT = "javax.jdo.option.DatastoreTimeout";
   /**
    * "javax.jdo.option.version.DateTime"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_VERSION_DATETIME = "javax.jdo.option.version.DateTime";
+  public static final String OPTION_VERSION_DATETIME = "javax.jdo.option.version.DateTime";
   /**
    * "javax.jdo.option.version.StateImage"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_VERSION_STATE_IMAGE = "javax.jdo.option.version.StateImage";
+  public static final String OPTION_VERSION_STATE_IMAGE = "javax.jdo.option.version.StateImage";
   /**
    * "javax.jdo.option.PreDirtyEvent"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_PREDIRTY_EVENT = "javax.jdo.option.PreDirtyEvent";
+  public static final String OPTION_PREDIRTY_EVENT = "javax.jdo.option.PreDirtyEvent";
   /**
    * "javax.jdo.option.mapping.HeterogeneousObjectType"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_MAPPING_HETEROGENEOUS_OBJECT_TYPE =
+  public static final String OPTION_MAPPING_HETEROGENEOUS_OBJECT_TYPE =
       "javax.jdo.option.mapping.HeterogeneousObjectType";
   /**
    * "javax.jdo.option.mapping.HeterogeneousInterfaceType"
@@ -467,7 +471,7 @@ public interface Constants {
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_MAPPING_HETEROGENEOUS_INTERFACE_TYPE =
+  public static final String OPTION_MAPPING_HETEROGENEOUS_INTERFACE_TYPE =
       "javax.jdo.option.mapping.HeterogeneousInterfaceType";
   /**
    * "javax.jdo.option.mapping.JoinedTablePerClass"
@@ -475,7 +479,7 @@ public interface Constants {
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_MAPPING_JOINED_TABLE_PER_CLASS =
+  public static final String OPTION_MAPPING_JOINED_TABLE_PER_CLASS =
       "javax.jdo.option.mapping.JoinedTablePerClass";
   /**
    * "javax.jdo.option.mapping.JoinedTablePerConcreteClass"
@@ -483,7 +487,7 @@ public interface Constants {
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_MAPPING_JOINED_TABLE_PER_CONCRETE_CLASS =
+  public static final String OPTION_MAPPING_JOINED_TABLE_PER_CONCRETE_CLASS =
       "javax.jdo.option.mapping.JoinedTablePerConcreteClass";
   /**
    * "javax.jdo.option.mapping.NonJoinedTablePerConcreteClass"
@@ -491,7 +495,7 @@ public interface Constants {
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_MAPPING_NON_JOINED_TABLE_PER_CONCRETE_CLASS =
+  public static final String OPTION_MAPPING_NON_JOINED_TABLE_PER_CONCRETE_CLASS =
       "javax.jdo.option.mapping.NonJoinedTablePerConcreteClass";
   /**
    * "javax.jdo.option.mapping.RelationSubclassTable"
@@ -499,7 +503,7 @@ public interface Constants {
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.1
    */
-  static String OPTION_MAPPING_RELATION_SUBCLASS_TABLE =
+  public static final String OPTION_MAPPING_RELATION_SUBCLASS_TABLE =
       "javax.jdo.option.mapping.RelationSubclassTable";
 
   /**
@@ -508,7 +512,7 @@ public interface Constants {
    * @see JDOHelper#getPersistenceManagerFactory(java.util.Map)
    * @since 2.1
    */
-  static String PROPERTY_PERSISTENCE_MANAGER_FACTORY_CLASS =
+  public static final String PROPERTY_PERSISTENCE_MANAGER_FACTORY_CLASS =
       "javax.jdo.PersistenceManagerFactoryClass";
 
   /**
@@ -554,69 +558,69 @@ public interface Constants {
    * @see PersistenceManagerFactory#getOptimistic()
    * @since 2.1
    */
-  static String PROPERTY_OPTIMISTIC = "javax.jdo.option.Optimistic";
+  public static final String PROPERTY_OPTIMISTIC = "javax.jdo.option.Optimistic";
   /**
    * "javax.jdo.option.ReadOnly"
    *
    * @see PersistenceManagerFactory#getReadOnly()
    * @since 2.2
    */
-  static String PROPERTY_READONLY = "javax.jdo.option.ReadOnly";
+  public static final String PROPERTY_READONLY = "javax.jdo.option.ReadOnly";
   /**
    * "javax.jdo.option.RetainValues"
    *
    * @see PersistenceManagerFactory#getRetainValues()
    * @since 2.1
    */
-  static String PROPERTY_RETAIN_VALUES = "javax.jdo.option.RetainValues";
+  public static final String PROPERTY_RETAIN_VALUES = "javax.jdo.option.RetainValues";
   /**
    * "javax.jdo.option.RestoreValues"
    *
    * @see PersistenceManagerFactory#getRestoreValues()
    * @since 2.1
    */
-  static String PROPERTY_RESTORE_VALUES = "javax.jdo.option.RestoreValues";
+  public static final String PROPERTY_RESTORE_VALUES = "javax.jdo.option.RestoreValues";
   /**
    * "javax.jdo.option.IgnoreCache"
    *
    * @see PersistenceManagerFactory#getIgnoreCache()
    * @since 2.1
    */
-  static String PROPERTY_IGNORE_CACHE = "javax.jdo.option.IgnoreCache";
+  public static final String PROPERTY_IGNORE_CACHE = "javax.jdo.option.IgnoreCache";
   /**
    * "javax.jdo.option.NontransactionalRead"
    *
    * @see PersistenceManagerFactory#getNontransactionalRead()
    * @since 2.1
    */
-  static String PROPERTY_NONTRANSACTIONAL_READ = "javax.jdo.option.NontransactionalRead";
+  public static final String PROPERTY_NONTRANSACTIONAL_READ = "javax.jdo.option.NontransactionalRead";
   /**
    * "javax.jdo.option.NontransactionalWrite"
    *
    * @see PersistenceManagerFactory#getNontransactionalWrite()
    * @since 2.1
    */
-  static String PROPERTY_NONTRANSACTIONAL_WRITE = "javax.jdo.option.NontransactionalWrite";
+  public static final String PROPERTY_NONTRANSACTIONAL_WRITE = "javax.jdo.option.NontransactionalWrite";
   /**
    * "javax.jdo.option.Multithreaded"
    *
    * @see PersistenceManagerFactory#getMultithreaded()
    * @since 2.1
    */
-  static String PROPERTY_MULTITHREADED = "javax.jdo.option.Multithreaded";
+  public static final String PROPERTY_MULTITHREADED = "javax.jdo.option.Multithreaded";
   /**
    * "javax.jdo.option.TransactionIsolationLevel"
    *
    * @since 2.2
    */
-  static String PROPERTY_TRANSACTION_ISOLATION_LEVEL = "javax.jdo.option.TransactionIsolationLevel";
+  public static final String PROPERTY_TRANSACTION_ISOLATION_LEVEL = "javax.jdo.option.TransactionIsolationLevel";
   /**
    * "javax.jdo.option.TransactionIsolationLevel.read-uncommitted"
    *
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.2
    */
-  static String PROPERTY_TRANSACTION_ISOLATION_LEVEL_READ_UNCOMMITTED =
+  public static final String PROPERTY_TRANSACTION_ISOLATION_LEVEL_READ_UNCOMMITTED =
       "javax.jdo.option.TransactionIsolationLevel.read-uncommitted";
   /**
    * "javax.jdo.option.TransactionIsolationLevel.read-committed"
@@ -624,7 +628,7 @@ public interface Constants {
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.2
    */
-  static String PROPERTY_TRANSACTION_ISOLATION_LEVEL_READ_COMMITTED =
+  public static final String PROPERTY_TRANSACTION_ISOLATION_LEVEL_READ_COMMITTED =
       "javax.jdo.option.TransactionIsolationLevel.read-committed";
   /**
    * "javax.jdo.option.TransactionIsolationLevel.repeatable-read"
@@ -632,7 +636,7 @@ public interface Constants {
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.2
    */
-  static String PROPERTY_TRANSACTION_ISOLATION_LEVEL_REPEATABLE_READ =
+  public static final String PROPERTY_TRANSACTION_ISOLATION_LEVEL_REPEATABLE_READ =
       "javax.jdo.option.TransactionIsolationLevel.repeatable-read";
   /**
    * "javax.jdo.option.TransactionIsolationLevel.snapshot"
@@ -640,7 +644,7 @@ public interface Constants {
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.2
    */
-  static String PROPERTY_TRANSACTION_ISOLATION_LEVEL_SNAPSHOT =
+  public static final String PROPERTY_TRANSACTION_ISOLATION_LEVEL_SNAPSHOT =
       "javax.jdo.option.TransactionIsolationLevel.snapshot";
   /**
    * "javax.jdo.option.TransactionIsolationLevel.serializable"
@@ -648,7 +652,7 @@ public interface Constants {
    * @see PersistenceManagerFactory#supportedOptions()
    * @since 2.2
    */
-  static String PROPERTY_TRANSACTION_ISOLATION_LEVEL_SERIALIZABLE =
+  public static final String PROPERTY_TRANSACTION_ISOLATION_LEVEL_SERIALIZABLE =
       "javax.jdo.option.TransactionIsolationLevel.serializable";
   /**
    * "javax.jdo.option.DetachAllOnCommit"
@@ -656,14 +660,14 @@ public interface Constants {
    * @see PersistenceManagerFactory#getDetachAllOnCommit()
    * @since 2.1
    */
-  static String PROPERTY_DETACH_ALL_ON_COMMIT = "javax.jdo.option.DetachAllOnCommit";
+  public static final String PROPERTY_DETACH_ALL_ON_COMMIT = "javax.jdo.option.DetachAllOnCommit";
   /**
    * "javax.jdo.option.CopyOnAttach"
    *
    * @see PersistenceManagerFactory#getCopyOnAttach()
    * @since 2.1
    */
-  static String PROPERTY_COPY_ON_ATTACH = "javax.jdo.option.CopyOnAttach";
+  public static final String PROPERTY_COPY_ON_ATTACH = "javax.jdo.option.CopyOnAttach";
   /**
    * "javax.jdo.option.ConnectionDriverName" This property might be ignored by the JDO
    * implementation because the JDBC DriverManager handles the driver name.
@@ -671,76 +675,76 @@ public interface Constants {
    * @see PersistenceManagerFactory#getConnectionDriverName()
    * @since 2.1
    */
-  static String PROPERTY_CONNECTION_DRIVER_NAME = "javax.jdo.option.ConnectionDriverName";
+  public static final String PROPERTY_CONNECTION_DRIVER_NAME = "javax.jdo.option.ConnectionDriverName";
   /**
    * "javax.jdo.option.ConnectionUserName"
    *
    * @see PersistenceManagerFactory#getConnectionUserName()
    * @since 2.1
    */
-  static String PROPERTY_CONNECTION_USER_NAME = "javax.jdo.option.ConnectionUserName";
+  public static final String PROPERTY_CONNECTION_USER_NAME = "javax.jdo.option.ConnectionUserName";
   /**
    * "javax.jdo.option.Password"
    *
    * @since 2.1
    */
-  static String PROPERTY_CONNECTION_PASSWORD = "javax.jdo.option.ConnectionPassword";
+  public static final String PROPERTY_CONNECTION_PASSWORD = "javax.jdo.option.ConnectionPassword";
   /**
    * "javax.jdo.option.ConnectionURL"
    *
    * @see PersistenceManagerFactory#getConnectionURL()
    * @since 2.1
    */
-  static String PROPERTY_CONNECTION_URL = "javax.jdo.option.ConnectionURL";
+  public static final String PROPERTY_CONNECTION_URL = "javax.jdo.option.ConnectionURL";
   /**
    * "javax.jdo.option.ConnectionFactoryName"
    *
    * @see PersistenceManagerFactory#getConnectionFactoryName()
    * @since 2.1
    */
-  static String PROPERTY_CONNECTION_FACTORY_NAME = "javax.jdo.option.ConnectionFactoryName";
+  public static final String PROPERTY_CONNECTION_FACTORY_NAME = "javax.jdo.option.ConnectionFactoryName";
   /**
    * "javax.jdo.option.ConnectionFactory2Name"
    *
    * @see PersistenceManagerFactory#getConnectionFactory2Name()
    * @since 2.1
    */
-  static String PROPERTY_CONNECTION_FACTORY2_NAME = "javax.jdo.option.ConnectionFactory2Name";
+  public static final String PROPERTY_CONNECTION_FACTORY2_NAME = "javax.jdo.option.ConnectionFactory2Name";
   /**
    * "javax.jdo.option.Mapping"
    *
    * @see PersistenceManagerFactory#getMapping()
    * @since 2.1
    */
-  static String PROPERTY_MAPPING = "javax.jdo.option.Mapping";
+  public static final String PROPERTY_MAPPING = "javax.jdo.option.Mapping";
   /**
    * "javax.jdo.option.PersistenceUnitName"
    *
    * @see PersistenceManagerFactory#getPersistenceUnitName()
    * @since 2.1
    */
-  static String PROPERTY_PERSISTENCE_UNIT_NAME = "javax.jdo.option.PersistenceUnitName";
+  public static final String PROPERTY_PERSISTENCE_UNIT_NAME = "javax.jdo.option.PersistenceUnitName";
   /**
    * "javax.jdo.option.Name"
    *
    * @see PersistenceManagerFactory#getName()
    * @since 2.1
    */
-  static String PROPERTY_NAME = "javax.jdo.option.Name";
+  public static final String PROPERTY_NAME = "javax.jdo.option.Name";
 
   /**
    * "javax.jdo.spi.PropertiesFileName"
    *
    * @since 3.2
    */
-  static String PROPERTY_SPI_PROPERTIES_FILE_NAME = "javax.jdo.spi.PropertiesFileName";
+  public static final String PROPERTY_SPI_PROPERTIES_FILE_NAME = "javax.jdo.spi.PropertiesFileName";
 
   /**
    * "javax.jdo.option.spi.ResourceName"
    *
    * @since 2.1
    */
-  static String PROPERTY_SPI_RESOURCE_NAME = "javax.jdo.option.spi.ResourceName";
+  public static final String PROPERTY_SPI_RESOURCE_NAME = "javax.jdo.option.spi.ResourceName";
 
   /**
    * "javax.jdo.listener.InstanceLifecycleListener"
@@ -750,7 +754,7 @@ public interface Constants {
    * @see
    *     PersistenceManagerFactory#removeInstanceLifecycleListener(javax.jdo.listener.InstanceLifecycleListener)
    */
-  static String PROPERTY_INSTANCE_LIFECYCLE_LISTENER =
+  public static final String PROPERTY_INSTANCE_LIFECYCLE_LISTENER =
       "javax.jdo.listener.InstanceLifecycleListener";
 
   /**
@@ -771,10 +775,10 @@ public interface Constants {
    * where <code>pmf</code> is an instance of type <code>PersistenceManagerFactory</code>.
    *
    * @see
-   *     javax.jdo.PersistenceManagerFactory#addInstanceLifecycleListener(javax.jdo.listener.InstanceLifecycleListener,Class[])
+   *     PersistenceManagerFactory#addInstanceLifecycleListener(javax.jdo.listener.InstanceLifecycleListener,Class[])
    * @since 2.1
    */
-  static String PROPERTY_PREFIX_INSTANCE_LIFECYCLE_LISTENER =
+  public static final String PROPERTY_PREFIX_INSTANCE_LIFECYCLE_LISTENER =
       PROPERTY_INSTANCE_LIFECYCLE_LISTENER + ".";
 
   /**
@@ -782,27 +786,27 @@ public interface Constants {
    *
    * @since 2.1
    */
-  static String PROPERTY_MAPPING_CATALOG = "javax.jdo.mapping.Catalog";
+  public static final String PROPERTY_MAPPING_CATALOG = "javax.jdo.mapping.Catalog";
   /**
    * Mapping "javax.jdo.mapping.Schema"
    *
    * @since 2.1
    */
-  static String PROPERTY_MAPPING_SCHEMA = "javax.jdo.mapping.Schema";
+  public static final String PROPERTY_MAPPING_SCHEMA = "javax.jdo.mapping.Schema";
 
   /**
    * Specified value "javax.jdo.option.ServerTimeZoneID"
    *
    * @since 2.1
    */
-  static String PROPERTY_SERVER_TIME_ZONE_ID = "javax.jdo.option.ServerTimeZoneID";
+  public static final String PROPERTY_SERVER_TIME_ZONE_ID = "javax.jdo.option.ServerTimeZoneID";
 
   /**
    * Specified value "javax.jdo.option.DatastoreReadTimeoutMillis"
    *
    * @since 3.0
    */
-  static String PROPERTY_DATASTORE_READ_TIMEOUT_MILLIS =
+  public static final String PROPERTY_DATASTORE_READ_TIMEOUT_MILLIS =
       "javax.jdo.option.DatastoreReadTimeoutMillis";
 
   /**
@@ -810,7 +814,7 @@ public interface Constants {
    *
    * @since 3.0
    */
-  static String PROPERTY_DATASTORE_WRITE_TIMEOUT_MILLIS =
+  public static final String PROPERTY_DATASTORE_WRITE_TIMEOUT_MILLIS =
       "javax.jdo.option.DatastoreWriteTimeoutMillis";
 
   /**
@@ -819,7 +823,7 @@ public interface Constants {
    * @see PersistenceManagerFactory#getProperties()
    * @since 2.1
    */
-  static String NONCONFIGURABLE_PROPERTY_VENDOR_NAME = "VendorName";
+  public static final String NONCONFIGURABLE_PROPERTY_VENDOR_NAME = "VendorName";
 
   /**
    * Nonconfigurable property constant "VersionNumber"
@@ -827,14 +831,14 @@ public interface Constants {
    * @see PersistenceManagerFactory#getProperties()
    * @since 2.1
    */
-  static String NONCONFIGURABLE_PROPERTY_VERSION_NUMBER = "VersionNumber";
+  public static final String NONCONFIGURABLE_PROPERTY_VERSION_NUMBER = "VersionNumber";
 
   /**
    * Specified value "javax.jdo.option.TransactionType"
    *
    * @since 2.1
    */
-  static String PROPERTY_TRANSACTION_TYPE = "javax.jdo.option.TransactionType";
+  public static final String PROPERTY_TRANSACTION_TYPE = "javax.jdo.option.TransactionType";
 
   /**
    * The value for TransactionType to specify that transactions are managed by the Java Transactions
@@ -842,7 +846,7 @@ public interface Constants {
    *
    * @since 2.1
    */
-  static String JTA = "JTA";
+  public static final String JTA = "JTA";
 
   /**
    * The value for TransactionType to specify that transactions are managed by the
@@ -850,35 +854,35 @@ public interface Constants {
    *
    * @since 2.1
    */
-  static String RESOURCE_LOCAL = "RESOURCE_LOCAL";
+  public static final String RESOURCE_LOCAL = "RESOURCE_LOCAL";
 
   /**
    * The name of the resource for the DTD of the standard JDO configuration file.
    *
    * @since 2.1
    */
-  static String JDOCONFIG_DTD_RESOURCE = "javax/jdo/jdoconfig_3_0.dtd";
+  public static final String JDOCONFIG_DTD_RESOURCE = "javax/jdo/jdoconfig_3_0.dtd";
 
   /**
    * The name of the resource for the XML schema of the standard JDO configuration file.
    *
    * @since 2.1
    */
-  static String JDOCONFIG_XSD_RESOURCE = "javax/jdo/jdoconfig_3_0.xsd";
+  public static final String JDOCONFIG_XSD_RESOURCE = "javax/jdo/jdoconfig_3_0.xsd";
 
   /**
    * The name of the resource for the DTD of the standard JDO metadata file.
    *
    * @since 2.1
    */
-  static String JDO_DTD_RESOURCE = "javax/jdo/jdo_3_0.dtd";
+  public static final String JDO_DTD_RESOURCE = "javax/jdo/jdo_3_0.dtd";
 
   /**
    * The name of the resource for the XML schema of the standard JDO metadata file.
    *
    * @since 2.1
    */
-  static String JDO_XSD_RESOURCE = "javax/jdo/jdo_3_0.xsd";
+  public static final String JDO_XSD_RESOURCE = "javax/jdo/jdo_3_0.xsd";
 
   /**
    * The name of the resource for the DTD of the standard JDO object-relational mapping metadata
@@ -886,7 +890,7 @@ public interface Constants {
    *
    * @since 2.1
    */
-  static String ORM_DTD_RESOURCE = "javax/jdo/orm_3_0.dtd";
+  public static final String ORM_DTD_RESOURCE = "javax/jdo/orm_3_0.dtd";
 
   /**
    * The name of the resource for the XML schema of the standard JDO object-relational mapping
@@ -894,28 +898,28 @@ public interface Constants {
    *
    * @since 2.1
    */
-  static String ORM_XSD_RESOURCE = "javax/jdo/orm_3_0.xsd";
+  public static final String ORM_XSD_RESOURCE = "javax/jdo/orm_3_0.xsd";
 
   /**
    * The name of the resource for the DTD of the standard JDO query metadata file.
    *
    * @since 2.1
    */
-  static String JDOQUERY_DTD_RESOURCE = "javax/jdo/jdoquery_3_0.dtd";
+  public static final String JDOQUERY_DTD_RESOURCE = "javax/jdo/jdoquery_3_0.dtd";
 
   /**
    * The name of the resource for the XML schema of the standard JDO query metadata file.
    *
    * @since 2.1
    */
-  static String JDOQUERY_XSD_RESOURCE = "javax/jdo/jdoquery_3_0.xsd";
+  public static final String JDOQUERY_XSD_RESOURCE = "javax/jdo/jdoquery_3_0.xsd";
 
   /**
    * The name of the anonymous PersistenceManagerFactory, which is the empty string.
    *
    * @since 2.1
    */
-  static String ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME = "";
+  public static final String ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME = "";
 
   /**
    * Transaction isolation level representing the ability to read uncommitted data.
diff --git a/api/src/main/java/javax/jdo/JDOHelper.java b/api/src/main/java/javax/jdo/JDOHelper.java
index 87dd3fbc..4f6c9027 100644
--- a/api/src/main/java/javax/jdo/JDOHelper.java
+++ b/api/src/main/java/javax/jdo/JDOHelper.java
@@ -79,7 +79,7 @@ import org.xml.sax.SAXParseException;
  *
  * @version 2.1
  */
-public class JDOHelper implements Constants {
+public class JDOHelper {
 
   /** A mapping from jdoconfig.xsd element attributes to PMF properties. */
   static final Map<String, String> ATTRIBUTE_PROPERTY_XREF = createAttributePropertyXref();
@@ -95,27 +95,27 @@ public class JDOHelper implements Constants {
   static Map<String, String> createAttributePropertyXref() {
     Map<String, String> xref = new HashMap<>();
 
-    xref.put(PMF_ATTRIBUTE_CLASS, PROPERTY_PERSISTENCE_MANAGER_FACTORY_CLASS);
-    xref.put(PMF_ATTRIBUTE_CONNECTION_DRIVER_NAME, PROPERTY_CONNECTION_DRIVER_NAME);
-    xref.put(PMF_ATTRIBUTE_CONNECTION_FACTORY_NAME, PROPERTY_CONNECTION_FACTORY_NAME);
-    xref.put(PMF_ATTRIBUTE_CONNECTION_FACTORY2_NAME, PROPERTY_CONNECTION_FACTORY2_NAME);
-    xref.put(PMF_ATTRIBUTE_CONNECTION_PASSWORD, PROPERTY_CONNECTION_PASSWORD);
-    xref.put(PMF_ATTRIBUTE_CONNECTION_URL, PROPERTY_CONNECTION_URL);
-    xref.put(PMF_ATTRIBUTE_CONNECTION_USER_NAME, PROPERTY_CONNECTION_USER_NAME);
-    xref.put(PMF_ATTRIBUTE_IGNORE_CACHE, PROPERTY_IGNORE_CACHE);
-    xref.put(PMF_ATTRIBUTE_MAPPING, PROPERTY_MAPPING);
-    xref.put(PMF_ATTRIBUTE_MULTITHREADED, PROPERTY_MULTITHREADED);
-    xref.put(PMF_ATTRIBUTE_NONTRANSACTIONAL_READ, PROPERTY_NONTRANSACTIONAL_READ);
-    xref.put(PMF_ATTRIBUTE_NONTRANSACTIONAL_WRITE, PROPERTY_NONTRANSACTIONAL_WRITE);
-    xref.put(PMF_ATTRIBUTE_OPTIMISTIC, PROPERTY_OPTIMISTIC);
-    xref.put(PMF_ATTRIBUTE_PERSISTENCE_UNIT_NAME, PROPERTY_PERSISTENCE_UNIT_NAME);
-    xref.put(PMF_ATTRIBUTE_NAME, PROPERTY_NAME);
-    xref.put(PMF_ATTRIBUTE_RESTORE_VALUES, PROPERTY_RESTORE_VALUES);
-    xref.put(PMF_ATTRIBUTE_RETAIN_VALUES, PROPERTY_RETAIN_VALUES);
-    xref.put(PMF_ATTRIBUTE_DETACH_ALL_ON_COMMIT, PROPERTY_DETACH_ALL_ON_COMMIT);
-    xref.put(PMF_ATTRIBUTE_SERVER_TIME_ZONE_ID, PROPERTY_SERVER_TIME_ZONE_ID);
-    xref.put(PMF_ATTRIBUTE_DATASTORE_READ_TIMEOUT_MILLIS, PROPERTY_DATASTORE_READ_TIMEOUT_MILLIS);
-    xref.put(PMF_ATTRIBUTE_DATASTORE_WRITE_TIMEOUT_MILLIS, PROPERTY_DATASTORE_WRITE_TIMEOUT_MILLIS);
+    xref.put(JDOConstants.PMF_ATTRIBUTE_CLASS, JDOConstants.PROPERTY_PERSISTENCE_MANAGER_FACTORY_CLASS);
+    xref.put(JDOConstants.PMF_ATTRIBUTE_CONNECTION_DRIVER_NAME, JDOConstants.PROPERTY_CONNECTION_DRIVER_NAME);
+    xref.put(JDOConstants.PMF_ATTRIBUTE_CONNECTION_FACTORY_NAME, JDOConstants.PROPERTY_CONNECTION_FACTORY_NAME);
+    xref.put(JDOConstants.PMF_ATTRIBUTE_CONNECTION_FACTORY2_NAME, JDOConstants.PROPERTY_CONNECTION_FACTORY2_NAME);
+    xref.put(JDOConstants.PMF_ATTRIBUTE_CONNECTION_PASSWORD, JDOConstants.PROPERTY_CONNECTION_PASSWORD);
+    xref.put(JDOConstants.PMF_ATTRIBUTE_CONNECTION_URL, JDOConstants.PROPERTY_CONNECTION_URL);
+    xref.put(JDOConstants.PMF_ATTRIBUTE_CONNECTION_USER_NAME, JDOConstants.PROPERTY_CONNECTION_USER_NAME);
+    xref.put(JDOConstants.PMF_ATTRIBUTE_IGNORE_CACHE, JDOConstants.PROPERTY_IGNORE_CACHE);
+    xref.put(JDOConstants.PMF_ATTRIBUTE_MAPPING, JDOConstants.PROPERTY_MAPPING);
+    xref.put(JDOConstants.PMF_ATTRIBUTE_MULTITHREADED, JDOConstants.PROPERTY_MULTITHREADED);
+    xref.put(JDOConstants.PMF_ATTRIBUTE_NONTRANSACTIONAL_READ, JDOConstants.PROPERTY_NONTRANSACTIONAL_READ);
+    xref.put(JDOConstants.PMF_ATTRIBUTE_NONTRANSACTIONAL_WRITE, JDOConstants.PROPERTY_NONTRANSACTIONAL_WRITE);
+    xref.put(JDOConstants.PMF_ATTRIBUTE_OPTIMISTIC, JDOConstants.PROPERTY_OPTIMISTIC);
+    xref.put(JDOConstants.PMF_ATTRIBUTE_PERSISTENCE_UNIT_NAME, JDOConstants.PROPERTY_PERSISTENCE_UNIT_NAME);
+    xref.put(JDOConstants.PMF_ATTRIBUTE_NAME, JDOConstants.PROPERTY_NAME);
+    xref.put(JDOConstants.PMF_ATTRIBUTE_RESTORE_VALUES, JDOConstants.PROPERTY_RESTORE_VALUES);
+    xref.put(JDOConstants.PMF_ATTRIBUTE_RETAIN_VALUES, JDOConstants.PROPERTY_RETAIN_VALUES);
+    xref.put(JDOConstants.PMF_ATTRIBUTE_DETACH_ALL_ON_COMMIT, JDOConstants.PROPERTY_DETACH_ALL_ON_COMMIT);
+    xref.put(JDOConstants.PMF_ATTRIBUTE_SERVER_TIME_ZONE_ID, JDOConstants.PROPERTY_SERVER_TIME_ZONE_ID);
+    xref.put(JDOConstants.PMF_ATTRIBUTE_DATASTORE_READ_TIMEOUT_MILLIS, JDOConstants.PROPERTY_DATASTORE_READ_TIMEOUT_MILLIS);
+    xref.put(JDOConstants.PMF_ATTRIBUTE_DATASTORE_WRITE_TIMEOUT_MILLIS, JDOConstants.PROPERTY_DATASTORE_WRITE_TIMEOUT_MILLIS);
 
     return Collections.unmodifiableMap(xref);
   }
@@ -570,7 +570,7 @@ public class JDOHelper implements Constants {
    */
   public static PersistenceManagerFactory getPersistenceManagerFactory() {
     ClassLoader cl = getContextClassLoader();
-    return getPersistenceManagerFactory(null, ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME, cl, cl);
+    return getPersistenceManagerFactory(null, JDOConstants.ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME, cl, cl);
   }
 
   /**
@@ -584,7 +584,7 @@ public class JDOHelper implements Constants {
    */
   public static PersistenceManagerFactory getPersistenceManagerFactory(ClassLoader pmfClassLoader) {
     return getPersistenceManagerFactory(
-        null, ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME, pmfClassLoader, pmfClassLoader);
+        null, JDOConstants.ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME, pmfClassLoader, pmfClassLoader);
   }
 
   /**
@@ -695,7 +695,7 @@ public class JDOHelper implements Constants {
     JDOImplHelper.assertOnlyKnownStandardProperties(props);
 
     // first try to get the class name from the properties object.
-    String pmfClassName = (String) props.get(PROPERTY_PERSISTENCE_MANAGER_FACTORY_CLASS);
+    String pmfClassName = (String) props.get(JDOConstants.PROPERTY_PERSISTENCE_MANAGER_FACTORY_CLASS);
 
     if (!isNullOrBlank(pmfClassName)) {
       // a valid name was returned from the properties.
@@ -721,7 +721,7 @@ public class JDOHelper implements Constants {
        */
       Enumeration<URL> urls = null;
       try {
-        urls = getResources(pmfClassLoader, SERVICE_LOOKUP_PMF_RESOURCE_NAME);
+        urls = getResources(pmfClassLoader, JDOConstants.SERVICE_LOOKUP_PMF_RESOURCE_NAME);
       } catch (Throwable ex) {
         exceptions.add(ex);
       }
@@ -876,7 +876,7 @@ public class JDOHelper implements Constants {
    * with the given name or, if not found, returns a <code>javax.persistence.EntityManagerFactory
    * </code> cast to a {@link PersistenceManagerFactory}. If the name given is null or consists only
    * of whitespace, it is interpreted as {@link
-   * Constants#ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME}. The following are standard key names:
+   * JDOConstants#ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME}. The following are standard key names:
    * <br>
    * <code>"javax.jdo.PersistenceManagerFactoryClass"
    * <BR>"javax.jdo.option.Optimistic",
@@ -936,7 +936,7 @@ public class JDOHelper implements Constants {
    *     <code>javax.persistence.EntityManagerFactory</code> classes
    * @return the {@link PersistenceManagerFactory} with properties in the given resource, with the
    *     given name, or with the given persitence unit name
-   * @see Constants#ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME
+   * @see JDOConstants#ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME
    */
   public static PersistenceManagerFactory getPersistenceManagerFactory(
       Map<?, ?> overrides, String name, ClassLoader resourceLoader, ClassLoader pmfLoader) {
@@ -948,8 +948,8 @@ public class JDOHelper implements Constants {
 
     Map<Object, Object> props = null;
     // trim spaces from name and ensure non-null
-    name = (name == null ? ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME : name.trim());
-    if (!ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME.equals(name)) {
+    name = (name == null ? JDOConstants.ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME : name.trim());
+    if (!JDOConstants.ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME.equals(name)) {
       props = loadPropertiesFromResource(resourceLoader, name);
     }
 
@@ -957,8 +957,8 @@ public class JDOHelper implements Constants {
       // add the SPI property to inform the implementation that
       // the PMF was configured by the given resource name
       // and not via named PMF for proper deserialization
-      props.put(PROPERTY_SPI_RESOURCE_NAME, name);
-      props.remove(PROPERTY_NAME);
+      props.put(JDOConstants.PROPERTY_SPI_RESOURCE_NAME, name);
+      props.remove(JDOConstants.PROPERTY_NAME);
       return getPersistenceManagerFactory(overrides, props, pmfLoader);
     }
     // props were null; try getting from jdoconfig.xml
@@ -966,15 +966,15 @@ public class JDOHelper implements Constants {
     if (props != null) {
       // inform the impl that the config came from a jdoconfig.xml
       // element with the given name
-      props.put(PROPERTY_NAME, name);
-      props.remove(PROPERTY_SPI_RESOURCE_NAME);
+      props.put(JDOConstants.PROPERTY_NAME, name);
+      props.remove(JDOConstants.PROPERTY_SPI_RESOURCE_NAME);
       // we have loaded a Properties, delegate to implementation
       return getPersistenceManagerFactory(overrides, props, pmfLoader);
     }
     // no properties found; last try to see if name is a JPA PU name
-    if (!ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME.equals(name)) {
+    if (!JDOConstants.ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME.equals(name)) {
       props = new Properties();
-      props.put(PROPERTY_PERSISTENCE_UNIT_NAME, name);
+      props.put(JDOConstants.PROPERTY_PERSISTENCE_UNIT_NAME, name);
       return getPersistenceManagerFactory(overrides, props, pmfLoader);
     }
 
@@ -1119,7 +1119,7 @@ public class JDOHelper implements Constants {
    */
   protected static Map<Object, Object> getPropertiesFromJdoconfig(
       String name, ClassLoader resourceLoader) {
-    return getNamedPMFProperties(name, resourceLoader, JDOCONFIG_RESOURCE_NAME);
+    return getNamedPMFProperties(name, resourceLoader, JDOConstants.JDOCONFIG_RESOURCE_NAME);
   }
 
   /**
@@ -1127,12 +1127,12 @@ public class JDOHelper implements Constants {
    * If multiple named PMF property sets with the given name are found (including anonymous ones),
    * throw {@link JDOFatalUserException}. This method is here only to facilitate testing; the
    * parameter "jdoconfigResourceName" in public usage should always have the value given in the
-   * constant {@link Constants#JDOCONFIG_RESOURCE_NAME}.
+   * constant {@link JDOConstants#JDOCONFIG_RESOURCE_NAME}.
    *
    * @param name The persistence unit name; null is disallowed.
    * @param resourceLoader The ClassLoader used to load the standard JDO configuration file.
    * @param jdoconfigResourceName The name of the configuration file to read. In public usage, this
-   *     should always be the value of {@link Constants#JDOCONFIG_RESOURCE_NAME}.
+   *     should always be the value of {@link JDOConstants#JDOCONFIG_RESOURCE_NAME}.
    * @return The named <code>PersistenceManagerFactory</code> properties if found, null if not.
    * @since 2.1
    * @throws JDOFatalUserException if multiple named PMF property sets are found with the given
@@ -1268,7 +1268,7 @@ public class JDOHelper implements Constants {
             MSG.msg("EXC_InvalidJDOConfigNoRoot", url.toExternalForm()));
       }
 
-      NodeList pmfs = root.getElementsByTagName(ELEMENT_PERSISTENCE_MANAGER_FACTORY);
+      NodeList pmfs = root.getElementsByTagName(JDOConstants.ELEMENT_PERSISTENCE_MANAGER_FACTORY);
 
       for (int i = 0; i < pmfs.getLength(); i++) {
         Node pmfElement = pmfs.item(i);
@@ -1278,8 +1278,8 @@ public class JDOHelper implements Constants {
         Properties pmfPropertiesFromElements = readPropertiesFromPMFSubelements(pmfElement, url);
 
         // for informative error handling, get name (or names) now
-        String pmfNameFromAtts = pmfPropertiesFromAttributes.getProperty(PROPERTY_NAME);
-        String pmfNameFromElem = pmfPropertiesFromElements.getProperty(PROPERTY_NAME);
+        String pmfNameFromAtts = pmfPropertiesFromAttributes.getProperty(JDOConstants.PROPERTY_NAME);
+        String pmfNameFromElem = pmfPropertiesFromElements.getProperty(JDOConstants.PROPERTY_NAME);
 
         String pmfName = null;
         if (isNullOrBlank(pmfNameFromAtts)) {
@@ -1289,7 +1289,7 @@ public class JDOHelper implements Constants {
             pmfName = pmfNameFromElem;
           } else {
             // PMF name not given at all, means the "anonymous" PMF
-            pmfName = ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME;
+            pmfName = JDOConstants.ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME;
           }
         } else {
           // PMF name given in an attribute
@@ -1399,11 +1399,11 @@ public class JDOHelper implements Constants {
 
       String elementName = element.getNodeName();
       NamedNodeMap attributes = element.getAttributes();
-      if (ELEMENT_PROPERTY.equalsIgnoreCase(elementName)) {
+      if (JDOConstants.ELEMENT_PROPERTY.equalsIgnoreCase(elementName)) {
         // <property name="..." value="..."/>
 
         // get the "name" attribute's value (required)
-        Node nameAtt = attributes.getNamedItem(PROPERTY_ATTRIBUTE_NAME);
+        Node nameAtt = attributes.getNamedItem(JDOConstants.PROPERTY_ATTRIBUTE_NAME);
         if (nameAtt == null) {
           throw new JDOFatalUserException(MSG.msg("EXC_PropertyElementHasNoNameAttribute", url));
         }
@@ -1426,15 +1426,15 @@ public class JDOHelper implements Constants {
         }
 
         // get the "value" attribute's value (optional)
-        Node valueAtt = attributes.getNamedItem(PROPERTY_ATTRIBUTE_VALUE);
+        Node valueAtt = attributes.getNamedItem(JDOConstants.PROPERTY_ATTRIBUTE_VALUE);
         String value = valueAtt == null ? null : valueAtt.getNodeValue().trim();
 
         p.put(propertyName, value);
-      } else if (ELEMENT_INSTANCE_LIFECYCLE_LISTENER.equals(elementName)) {
+      } else if (JDOConstants.ELEMENT_INSTANCE_LIFECYCLE_LISTENER.equals(elementName)) {
         // <instance-lifecycle-listener listener="..." classes="..."/>
 
         // get the "listener" attribute's value
-        Node listenerAtt = attributes.getNamedItem(INSTANCE_LIFECYCLE_LISTENER_ATTRIBUTE_LISTENER);
+        Node listenerAtt = attributes.getNamedItem(JDOConstants.INSTANCE_LIFECYCLE_LISTENER_ATTRIBUTE_LISTENER);
         if (listenerAtt == null) {
           throw new JDOFatalUserException(MSG.msg("EXC_MissingListenerAttribute", url));
         }
@@ -1445,10 +1445,10 @@ public class JDOHelper implements Constants {
 
         // listener properties are of the form
         // "javax.jdo.option.InstanceLifecycleListener." + listener
-        listener = PROPERTY_PREFIX_INSTANCE_LIFECYCLE_LISTENER + listener;
+        listener = JDOConstants.PROPERTY_PREFIX_INSTANCE_LIFECYCLE_LISTENER + listener;
 
         // get the "classes" attribute's value (optional)
-        Node classesAtt = attributes.getNamedItem(INSTANCE_LIFECYCLE_LISTENER_ATTRIBUTE_CLASSES);
+        Node classesAtt = attributes.getNamedItem(JDOConstants.INSTANCE_LIFECYCLE_LISTENER_ATTRIBUTE_CLASSES);
         String value = classesAtt == null ? "" : classesAtt.getNodeValue().trim();
 
         p.put(listener, value);
@@ -1631,7 +1631,7 @@ public class JDOHelper implements Constants {
     ArrayList<Throwable> exceptions = new ArrayList<>();
     int numberOfJDOEnhancers = 0;
     try {
-      Enumeration<URL> urls = getResources(loader, SERVICE_LOOKUP_ENHANCER_RESOURCE_NAME);
+      Enumeration<URL> urls = getResources(loader, JDOConstants.SERVICE_LOOKUP_ENHANCER_RESOURCE_NAME);
       if (urls != null) {
         while (urls.hasMoreElements()) {
           numberOfJDOEnhancers++;
diff --git a/api/src/main/java/javax/jdo/PersistenceManagerFactory.java b/api/src/main/java/javax/jdo/PersistenceManagerFactory.java
index f76e5835..9c29abb5 100644
--- a/api/src/main/java/javax/jdo/PersistenceManagerFactory.java
+++ b/api/src/main/java/javax/jdo/PersistenceManagerFactory.java
@@ -488,8 +488,8 @@ public interface PersistenceManagerFactory extends Serializable {
    * EntityManagerFactory.
    *
    * @see #getTransactionType()
-   * @see Constants#JTA
-   * @see Constants#RESOURCE_LOCAL
+   * @see JDOConstants#JTA
+   * @see JDOConstants#RESOURCE_LOCAL
    * @since 2.1
    * @param name the TransactionType
    * @throws JDOUserException if the parameter is not a permitted value
@@ -538,7 +538,7 @@ public interface PersistenceManagerFactory extends Serializable {
 
   /**
    * Set the value for transaction isolation level for this PMF. Transaction isolation levels are
-   * defined in javax.jdo.Constants. If the requested level is not available, but a higher level is
+   * defined in javax.jdo.JDOConstants. If the requested level is not available, but a higher level is
    * available, the higher level is silently used. If the requested level is not available, and no
    * higher level is available, then JDOUnsupportedOptionException is thrown. Standard values in
    * order from low to high are:
@@ -553,11 +553,11 @@ public interface PersistenceManagerFactory extends Serializable {
    *
    * @param level the transaction isolation level
    * @see #getTransactionIsolationLevel()
-   * @see Constants#TX_READ_UNCOMMITTED
-   * @see Constants#TX_READ_COMMITTED
-   * @see Constants#TX_REPEATABLE_READ
-   * @see Constants#TX_SNAPSHOT
-   * @see Constants#TX_SERIALIZABLE
+   * @see JDOConstants#TX_READ_UNCOMMITTED
+   * @see JDOConstants#TX_READ_COMMITTED
+   * @see JDOConstants#TX_REPEATABLE_READ
+   * @see JDOConstants#TX_SNAPSHOT
+   * @see JDOConstants#TX_SERIALIZABLE
    * @since 2.2
    */
   void setTransactionIsolationLevel(String level);
diff --git a/api/src/main/java/javax/jdo/Transaction.java b/api/src/main/java/javax/jdo/Transaction.java
index 0482ce77..6245d86e 100644
--- a/api/src/main/java/javax/jdo/Transaction.java
+++ b/api/src/main/java/javax/jdo/Transaction.java
@@ -191,7 +191,7 @@ public interface Transaction {
 
   /**
    * Set the value for transaction isolation level for this transaction. Transaction isolation
-   * levels are defined in javax.jdo.Constants. If the requested level is not available, but a
+   * levels are defined in javax.jdo.JDOConstants. If the requested level is not available, but a
    * higher level is available, the higher level is silently used. If the requested level is not
    * available, and no higher level is available, then JDOUnsupportedOptionException is thrown. Five
    * standard isolation levels are defined. Other isolation levels might be supported by an
@@ -209,11 +209,11 @@ public interface Transaction {
    *
    * @param level the transaction isolation level
    * @see #getIsolationLevel()
-   * @see Constants#TX_READ_UNCOMMITTED
-   * @see Constants#TX_READ_COMMITTED
-   * @see Constants#TX_REPEATABLE_READ
-   * @see Constants#TX_SNAPSHOT
-   * @see Constants#TX_SERIALIZABLE
+   * @see JDOConstants#TX_READ_UNCOMMITTED
+   * @see JDOConstants#TX_READ_COMMITTED
+   * @see JDOConstants#TX_REPEATABLE_READ
+   * @see JDOConstants#TX_SNAPSHOT
+   * @see JDOConstants#TX_SERIALIZABLE
    * @since 2.2
    */
   void setIsolationLevel(String level);
diff --git a/api/src/main/java/javax/jdo/spi/JDOImplHelper.java b/api/src/main/java/javax/jdo/spi/JDOImplHelper.java
index a6c84bef..b2d3888d 100644
--- a/api/src/main/java/javax/jdo/spi/JDOImplHelper.java
+++ b/api/src/main/java/javax/jdo/spi/JDOImplHelper.java
@@ -41,7 +41,7 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 import java.util.WeakHashMap;
-import javax.jdo.Constants;
+import javax.jdo.JDOConstants;
 import javax.jdo.JDOException;
 import javax.jdo.JDOFatalInternalException;
 import javax.jdo.JDOFatalUserException;
@@ -115,43 +115,43 @@ public class JDOImplHelper extends java.lang.Object {
   private static Set<String> createUserConfigurableStandardProperties() {
     Set<String> props = new HashSet<>();
 
-    props.add(Constants.PROPERTY_CONNECTION_DRIVER_NAME);
-    props.add(Constants.PROPERTY_CONNECTION_FACTORY2_NAME);
-    props.add(Constants.PROPERTY_CONNECTION_FACTORY_NAME);
-    props.add(Constants.PROPERTY_CONNECTION_PASSWORD);
-    props.add(Constants.PROPERTY_CONNECTION_URL);
-    props.add(Constants.PROPERTY_CONNECTION_USER_NAME);
-    props.add(Constants.PROPERTY_COPY_ON_ATTACH);
-    props.add(Constants.PROPERTY_DATASTORE_READ_TIMEOUT_MILLIS);
-    props.add(Constants.PROPERTY_DATASTORE_WRITE_TIMEOUT_MILLIS);
-    props.add(Constants.PROPERTY_DETACH_ALL_ON_COMMIT);
-    props.add(Constants.PROPERTY_IGNORE_CACHE);
-    props.add(Constants.PROPERTY_INSTANCE_LIFECYCLE_LISTENER);
-    props.add(Constants.PROPERTY_MAPPING);
-    props.add(Constants.PROPERTY_MAPPING_CATALOG);
-    props.add(Constants.PROPERTY_MAPPING_SCHEMA);
-    props.add(Constants.PROPERTY_MULTITHREADED);
-    props.add(Constants.PROPERTY_NAME);
-    props.add(Constants.PROPERTY_NONTRANSACTIONAL_READ);
-    props.add(Constants.PROPERTY_NONTRANSACTIONAL_WRITE);
-    props.add(Constants.PROPERTY_OPTIMISTIC);
-    props.add(Constants.PROPERTY_PERSISTENCE_MANAGER_FACTORY_CLASS);
-    props.add(Constants.PROPERTY_PERSISTENCE_UNIT_NAME);
-    props.add(Constants.PROPERTY_READONLY);
-    props.add(Constants.PROPERTY_RESTORE_VALUES);
-    props.add(Constants.PROPERTY_RETAIN_VALUES);
-    props.add(Constants.PROPERTY_SERVER_TIME_ZONE_ID);
-    props.add(Constants.PROPERTY_SPI_RESOURCE_NAME);
-    props.add(Constants.PROPERTY_TRANSACTION_ISOLATION_LEVEL);
-    props.add(Constants.PROPERTY_TRANSACTION_TYPE);
+    props.add(JDOConstants.PROPERTY_CONNECTION_DRIVER_NAME);
+    props.add(JDOConstants.PROPERTY_CONNECTION_FACTORY2_NAME);
+    props.add(JDOConstants.PROPERTY_CONNECTION_FACTORY_NAME);
+    props.add(JDOConstants.PROPERTY_CONNECTION_PASSWORD);
+    props.add(JDOConstants.PROPERTY_CONNECTION_URL);
+    props.add(JDOConstants.PROPERTY_CONNECTION_USER_NAME);
+    props.add(JDOConstants.PROPERTY_COPY_ON_ATTACH);
+    props.add(JDOConstants.PROPERTY_DATASTORE_READ_TIMEOUT_MILLIS);
+    props.add(JDOConstants.PROPERTY_DATASTORE_WRITE_TIMEOUT_MILLIS);
+    props.add(JDOConstants.PROPERTY_DETACH_ALL_ON_COMMIT);
+    props.add(JDOConstants.PROPERTY_IGNORE_CACHE);
+    props.add(JDOConstants.PROPERTY_INSTANCE_LIFECYCLE_LISTENER);
+    props.add(JDOConstants.PROPERTY_MAPPING);
+    props.add(JDOConstants.PROPERTY_MAPPING_CATALOG);
+    props.add(JDOConstants.PROPERTY_MAPPING_SCHEMA);
+    props.add(JDOConstants.PROPERTY_MULTITHREADED);
+    props.add(JDOConstants.PROPERTY_NAME);
+    props.add(JDOConstants.PROPERTY_NONTRANSACTIONAL_READ);
+    props.add(JDOConstants.PROPERTY_NONTRANSACTIONAL_WRITE);
+    props.add(JDOConstants.PROPERTY_OPTIMISTIC);
+    props.add(JDOConstants.PROPERTY_PERSISTENCE_MANAGER_FACTORY_CLASS);
+    props.add(JDOConstants.PROPERTY_PERSISTENCE_UNIT_NAME);
+    props.add(JDOConstants.PROPERTY_READONLY);
+    props.add(JDOConstants.PROPERTY_RESTORE_VALUES);
+    props.add(JDOConstants.PROPERTY_RETAIN_VALUES);
+    props.add(JDOConstants.PROPERTY_SERVER_TIME_ZONE_ID);
+    props.add(JDOConstants.PROPERTY_SPI_RESOURCE_NAME);
+    props.add(JDOConstants.PROPERTY_TRANSACTION_ISOLATION_LEVEL);
+    props.add(JDOConstants.PROPERTY_TRANSACTION_TYPE);
 
     return Collections.unmodifiableSet(props);
   }
 
-  static final String JAVAX_JDO_PREFIX_LOWER_CASED = Constants.JAVAX_JDO_PREFIX.toLowerCase();
+  static final String JAVAX_JDO_PREFIX_LOWER_CASED = JDOConstants.JAVAX_JDO_PREFIX.toLowerCase();
 
   static final String PROPERTY_PREFIX_INSTANCE_LIFECYCLE_LISTENER_LOWER_CASED =
-      Constants.PROPERTY_PREFIX_INSTANCE_LIFECYCLE_LISTENER.toLowerCase();
+      JDOConstants.PROPERTY_PREFIX_INSTANCE_LIFECYCLE_LISTENER.toLowerCase();
 
   static final Set<String> USER_CONFIGURABLE_STANDARD_PROPERTIES_LOWER_CASED =
       createUserConfigurableStandardPropertiesLowerCased();
@@ -1153,14 +1153,14 @@ public class JDOImplHelper extends java.lang.Object {
 
   /**
    * Examines the given map for keys beginning with the JDO standard prefix, {@link
-   * Constants#JAVAX_JDO_PREFIX}. If any property keys are found with that prefix but are unknown to
+   * JDOConstants#JAVAX_JDO_PREFIX}. If any property keys are found with that prefix but are unknown to
    * this version of the JDO standard, a JDOUserException is thrown with a message indicating the
    * unknown property. Keys that are not strings are ignored, as are string keys beginning with
-   * {@link Constants#PROPERTY_PREFIX_INSTANCE_LIFECYCLE_LISTENER} or not beginning with {@link
-   * Constants#JAVAX_JDO_PREFIX}.
+   * {@link JDOConstants#PROPERTY_PREFIX_INSTANCE_LIFECYCLE_LISTENER} or not beginning with {@link
+   * JDOConstants#JAVAX_JDO_PREFIX}.
    *
    * @param properties The properties to examine.
-   * @see Constants#JAVAX_JDO_PREFIX
+   * @see JDOConstants#JAVAX_JDO_PREFIX
    * @since 3.1
    */
   public static void assertOnlyKnownStandardProperties(Map<?, ?> properties) {
diff --git a/api/src/test/java/javax/jdo/AbstractJDOConfigTest.java b/api/src/test/java/javax/jdo/AbstractJDOConfigTest.java
index 567d5f4f..d539b381 100644
--- a/api/src/test/java/javax/jdo/AbstractJDOConfigTest.java
+++ b/api/src/test/java/javax/jdo/AbstractJDOConfigTest.java
@@ -118,7 +118,7 @@ public abstract class AbstractJDOConfigTest extends AbstractTest {
 
   protected String getPMFClassNameViaServiceLookup(ClassLoader loader) {
     try {
-      Enumeration<URL> urls = JDOHelper.getResources(loader, SERVICE_LOOKUP_PMF_RESOURCE_NAME);
+      Enumeration<URL> urls = JDOHelper.getResources(loader, JDOConstants.SERVICE_LOOKUP_PMF_RESOURCE_NAME);
       while (urls.hasMoreElements()) {
         // return the first one found
         return JDOHelper.getClassNameFromURL(urls.nextElement());
diff --git a/api/src/test/java/javax/jdo/EnhancerTest.java b/api/src/test/java/javax/jdo/EnhancerTest.java
index 3c584751..68b13bb0 100644
--- a/api/src/test/java/javax/jdo/EnhancerTest.java
+++ b/api/src/test/java/javax/jdo/EnhancerTest.java
@@ -90,7 +90,7 @@ public class EnhancerTest extends AbstractTest {
   public void testInvalidOption() {
     // invoke enhancer with an invalid option
     InvocationResult result = invokeEnhancer("-poo");
-    assertEquals("Wrong return value ", ENHANCER_USAGE_ERROR, result.getExitValue());
+    assertEquals("Wrong return value ", JDOConstants.ENHANCER_USAGE_ERROR, result.getExitValue());
     String errorString = result.getErrorString();
     assertTrue(
         "Expected Usage message from err:\n" + errorString,
@@ -109,13 +109,13 @@ public class EnhancerTest extends AbstractTest {
             + outputString
             + " with err:\n"
             + errorString,
-        outputString.contains(PROPERTY_ENHANCER_VENDOR_NAME));
+        outputString.contains(JDOConstants.PROPERTY_ENHANCER_VENDOR_NAME));
     assertTrue(
         "Expected MockEnhancer version message from out:\n"
             + outputString
             + " with err:\n"
             + errorString,
-        outputString.contains(PROPERTY_ENHANCER_VERSION_NUMBER));
+        outputString.contains(JDOConstants.PROPERTY_ENHANCER_VERSION_NUMBER));
     assertTrue(
         "Expected MockEnhancer vendor message from out:\n"
             + outputString
diff --git a/api/src/test/java/javax/jdo/JDOHelperConfigTest.java b/api/src/test/java/javax/jdo/JDOHelperConfigTest.java
index 7d096ba2..968fc718 100644
--- a/api/src/test/java/javax/jdo/JDOHelperConfigTest.java
+++ b/api/src/test/java/javax/jdo/JDOHelperConfigTest.java
@@ -25,7 +25,7 @@ import javax.jdo.util.BatchTestRunner;
 import junit.framework.TestSuite;
 
 /** Tests class javax.jdo.JDOHelper for META-INF/jdoconfig.xml compliance. */
-public class JDOHelperConfigTest extends AbstractJDOConfigTest implements Constants {
+public class JDOHelperConfigTest extends AbstractJDOConfigTest {
 
   public static void main(String args[]) {
     BatchTestRunner.run(JDOHelperConfigTest.class);
@@ -47,17 +47,17 @@ public class JDOHelperConfigTest extends AbstractJDOConfigTest implements Consta
    * @param testVariant the name of the test to include in the {@link java.util.Map Map} values.
    * @param listenerCount the number of life cycle listener class names to add to this map. The
    *     listener names will begin with the value stored in {@link
-   *     javax.jdo.Constants.PROPERTY_INSTANCE_LIFECYCLE_LISTENER
+   *     javax.jdo.JDOConstants#PROPERTY_INSTANCE_LIFECYCLE_LISTENER
    *     PROPERTY_INSTANCE_LIFECYCLE_LISTENER}.
    * @param vendorSpecificPropertyCount the number of properties named of the form
    *     <pre>
    * &quot;property.&quot; + testVariant + &quot;.name&quot;
    * </pre>
    *     that are added to the map.
-   * @param excludeName if true the property specified by {@link javax.jdo.Constants.PROPERTY_NAME
+   * @param excludeName if true the property specified by {@link javax.jdo.JDOConstants#PROPERTY_NAME
    *     PROPERTY_NAME} is not added to the map.
    * @param excludePUName if true the property specified by {@link
-   *     javax.jdo.Constants.PROPERTY_PERSISTENCE_UNIT_NAME PROPERTY_PERSISTENCE_UNIT_NAME} is not
+   *     javax.jdo.JDOConstants#PROPERTY_PERSISTENCE_UNIT_NAME PROPERTY_PERSISTENCE_UNIT_NAME} is not
    *     added to the map.
    * @return a new {@link java.util.Map Map} object populated with properties that can be used in
    *     this test suite.
@@ -71,47 +71,47 @@ public class JDOHelperConfigTest extends AbstractJDOConfigTest implements Consta
     Map<String, String> expected = new HashMap<>();
 
     if (!excludeName) {
-      expected.put(PROPERTY_NAME, PMF_ATTRIBUTE_NAME + "." + testVariant);
+      expected.put(JDOConstants.PROPERTY_NAME, JDOConstants.PMF_ATTRIBUTE_NAME + "." + testVariant);
     }
     if (!excludePUName) {
       expected.put(
-          PROPERTY_PERSISTENCE_UNIT_NAME, PMF_ATTRIBUTE_PERSISTENCE_UNIT_NAME + "." + testVariant);
+              JDOConstants.PROPERTY_PERSISTENCE_UNIT_NAME, JDOConstants.PMF_ATTRIBUTE_PERSISTENCE_UNIT_NAME + "." + testVariant);
     }
 
     expected.put(
-        PROPERTY_PERSISTENCE_MANAGER_FACTORY_CLASS, PMF_ATTRIBUTE_CLASS + "." + testVariant);
+            JDOConstants.PROPERTY_PERSISTENCE_MANAGER_FACTORY_CLASS, JDOConstants.PMF_ATTRIBUTE_CLASS + "." + testVariant);
     expected.put(
-        PROPERTY_CONNECTION_DRIVER_NAME, PMF_ATTRIBUTE_CONNECTION_DRIVER_NAME + "." + testVariant);
+            JDOConstants.PROPERTY_CONNECTION_DRIVER_NAME, JDOConstants.PMF_ATTRIBUTE_CONNECTION_DRIVER_NAME + "." + testVariant);
     expected.put(
-        PROPERTY_CONNECTION_FACTORY_NAME,
-        PMF_ATTRIBUTE_CONNECTION_FACTORY_NAME + "." + testVariant);
+            JDOConstants.PROPERTY_CONNECTION_FACTORY_NAME,
+            JDOConstants.PMF_ATTRIBUTE_CONNECTION_FACTORY_NAME + "." + testVariant);
     expected.put(
-        PROPERTY_CONNECTION_FACTORY2_NAME,
-        PMF_ATTRIBUTE_CONNECTION_FACTORY2_NAME + "." + testVariant);
+            JDOConstants.PROPERTY_CONNECTION_FACTORY2_NAME,
+            JDOConstants.PMF_ATTRIBUTE_CONNECTION_FACTORY2_NAME + "." + testVariant);
     expected.put(
-        PROPERTY_CONNECTION_PASSWORD, PMF_ATTRIBUTE_CONNECTION_PASSWORD + "." + testVariant);
-    expected.put(PROPERTY_CONNECTION_URL, PMF_ATTRIBUTE_CONNECTION_URL + "." + testVariant);
+            JDOConstants.PROPERTY_CONNECTION_PASSWORD, JDOConstants.PMF_ATTRIBUTE_CONNECTION_PASSWORD + "." + testVariant);
+    expected.put(JDOConstants.PROPERTY_CONNECTION_URL, JDOConstants.PMF_ATTRIBUTE_CONNECTION_URL + "." + testVariant);
     expected.put(
-        PROPERTY_CONNECTION_USER_NAME, PMF_ATTRIBUTE_CONNECTION_USER_NAME + "." + testVariant);
-    expected.put(PROPERTY_IGNORE_CACHE, PMF_ATTRIBUTE_IGNORE_CACHE + "." + testVariant);
-    expected.put(PROPERTY_MAPPING, PMF_ATTRIBUTE_MAPPING + "." + testVariant);
-    expected.put(PROPERTY_MULTITHREADED, PMF_ATTRIBUTE_MULTITHREADED + "." + testVariant);
+            JDOConstants.PROPERTY_CONNECTION_USER_NAME, JDOConstants.PMF_ATTRIBUTE_CONNECTION_USER_NAME + "." + testVariant);
+    expected.put(JDOConstants.PROPERTY_IGNORE_CACHE, JDOConstants.PMF_ATTRIBUTE_IGNORE_CACHE + "." + testVariant);
+    expected.put(JDOConstants.PROPERTY_MAPPING, JDOConstants.PMF_ATTRIBUTE_MAPPING + "." + testVariant);
+    expected.put(JDOConstants.PROPERTY_MULTITHREADED, JDOConstants.PMF_ATTRIBUTE_MULTITHREADED + "." + testVariant);
     expected.put(
-        PROPERTY_NONTRANSACTIONAL_READ, PMF_ATTRIBUTE_NONTRANSACTIONAL_READ + "." + testVariant);
+            JDOConstants.PROPERTY_NONTRANSACTIONAL_READ, JDOConstants.PMF_ATTRIBUTE_NONTRANSACTIONAL_READ + "." + testVariant);
     expected.put(
-        PROPERTY_NONTRANSACTIONAL_WRITE, PMF_ATTRIBUTE_NONTRANSACTIONAL_WRITE + "." + testVariant);
-    expected.put(PROPERTY_OPTIMISTIC, PMF_ATTRIBUTE_OPTIMISTIC + "." + testVariant);
-    expected.put(PROPERTY_RESTORE_VALUES, PMF_ATTRIBUTE_RESTORE_VALUES + "." + testVariant);
-    expected.put(PROPERTY_RETAIN_VALUES, PMF_ATTRIBUTE_RETAIN_VALUES + "." + testVariant);
+            JDOConstants.PROPERTY_NONTRANSACTIONAL_WRITE, JDOConstants.PMF_ATTRIBUTE_NONTRANSACTIONAL_WRITE + "." + testVariant);
+    expected.put(JDOConstants.PROPERTY_OPTIMISTIC, JDOConstants.PMF_ATTRIBUTE_OPTIMISTIC + "." + testVariant);
+    expected.put(JDOConstants.PROPERTY_RESTORE_VALUES, JDOConstants.PMF_ATTRIBUTE_RESTORE_VALUES + "." + testVariant);
+    expected.put(JDOConstants.PROPERTY_RETAIN_VALUES, JDOConstants.PMF_ATTRIBUTE_RETAIN_VALUES + "." + testVariant);
     expected.put(
-        PROPERTY_DETACH_ALL_ON_COMMIT, PMF_ATTRIBUTE_DETACH_ALL_ON_COMMIT + "." + testVariant);
+            JDOConstants.PROPERTY_DETACH_ALL_ON_COMMIT, JDOConstants.PMF_ATTRIBUTE_DETACH_ALL_ON_COMMIT + "." + testVariant);
     expected.put(
-        PROPERTY_SERVER_TIME_ZONE_ID, PMF_ATTRIBUTE_SERVER_TIME_ZONE_ID + "." + testVariant);
+            JDOConstants.PROPERTY_SERVER_TIME_ZONE_ID, JDOConstants.PMF_ATTRIBUTE_SERVER_TIME_ZONE_ID + "." + testVariant);
 
     // listeners
     for (int i = 0; i < listenerCount; i++) {
       expected.put(
-          PROPERTY_PREFIX_INSTANCE_LIFECYCLE_LISTENER + "listener." + testVariant + ".listener" + i,
+              JDOConstants.PROPERTY_PREFIX_INSTANCE_LIFECYCLE_LISTENER + "listener." + testVariant + ".listener" + i,
           "classes." + testVariant + ".classes" + i);
     }
 
@@ -127,8 +127,8 @@ public class JDOHelperConfigTest extends AbstractJDOConfigTest implements Consta
   /**
    * Performs a test specified by <tt>testVariantName</tt>, by building up a property map and
    * executing the test according to the property values. With this version of
-   * <tt>doPositiveTest</tt> the property name ( {@link javax.jdo.Constants.PROPERTY_NAME
-   * PROPERTY_NAME}) and the {@link javax.jdo.Constants.PERSISTENCE_UNIT_NAME
+   * <tt>doPositiveTest</tt> the property name ( {@link javax.jdo.JDOConstants#PROPERTY_NAME
+   * PROPERTY_NAME}) and the {@link javax.jdo.JDOConstants#PROPERTY_PERSISTENCE_UNIT_NAME
    * PERSISTENCE_UNIT_NAME}) are included in the property map that is used to run the test.
    *
    * @param classpaths class paths to add to the class loader that runs the test that specify where
@@ -162,8 +162,8 @@ public class JDOHelperConfigTest extends AbstractJDOConfigTest implements Consta
    * Performs a test specified by <tt>testVariantName</tt>, by building up a property map and
    * executing the test according to the property values. An assertion exeception is thrown if the
    * test being run has a negative (non-true) result. With this version of <tt>doPositiveTest</tt>
-   * the property name ({@link javax.jdo.Constants.PROPERTY_NAME PROPERTY_NAME}) and the {@link
-   * javax.jdo.Constants.PERSISTENCE_UNIT_NAME PERSISTENCE_UNIT_NAME}) are included in the property
+   * the property name ({@link javax.jdo.JDOConstants#PROPERTY_NAME PROPERTY_NAME}) and the {@link
+   * javax.jdo.JDOConstants#PROPERTY_PERSISTENCE_UNIT_NAME PROPERTY_PERSISTENCE_UNIT_NAME}) are included in the property
    * map that is used to run the test.
    *
    * @param classpaths class paths to add to the class loader that runs the test that specify where
@@ -172,10 +172,10 @@ public class JDOHelperConfigTest extends AbstractJDOConfigTest implements Consta
    * @param listenerCount number of listeners utilized in the test.
    * @param vendorSpecificPropertyCount number of vendor properties used in the test.
    * @param checkEqualProperties if true the test's properties are tested.
-   * @param excludeName if true the property specified by {@link javax.jdo.Constants.PROPERTY_NAME
+   * @param excludeName if true the property specified by {@link javax.jdo.JDOConstants#PROPERTY_NAME
    *     PROPERTY_NAME} is not added to the map.
    * @param excludePUName if true the property specified by {@link
-   *     javax.jdo.Constants.PROPERTY_PERSISTENCE_UNIT_NAME PROPERTY_PERSISTENCE_UNIT_NAME} is not
+   *     javax.jdo.JDOConstants#PROPERTY_PERSISTENCE_UNIT_NAME PROPERTY_PERSISTENCE_UNIT_NAME} is not
    *     added to the map.
    * @throws java.io.IOException if an {@java.io.IOException IOException} occurs during class
    *     loading or any part of the test.
@@ -198,7 +198,7 @@ public class JDOHelperConfigTest extends AbstractJDOConfigTest implements Consta
             vendorSpecificPropertyCount,
             excludeName,
             excludePUName);
-    String name = testVariantName == null ? null : expected.get(PROPERTY_NAME);
+    String name = testVariantName == null ? null : expected.get(JDOConstants.PROPERTY_NAME);
     Map<Object, Object> actual = JDOHelper.getPropertiesFromJdoconfig(name, loader);
 
     assertNotNull("No properties found", actual);
@@ -246,7 +246,7 @@ public class JDOHelperConfigTest extends AbstractJDOConfigTest implements Consta
         };
     URLClassLoader loader = new JDOConfigTestClassLoader(getClass().getClassLoader(), classpaths);
     Map<Object, Object> actual =
-        JDOHelper.getPropertiesFromJdoconfig(ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME, loader);
+        JDOHelper.getPropertiesFromJdoconfig(JDOConstants.ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME, loader);
   }
 
   public void testPositive02_GetAnonymousPMFWithNoProperties() throws IOException {
@@ -256,7 +256,7 @@ public class JDOHelperConfigTest extends AbstractJDOConfigTest implements Consta
             getClass().getClassLoader(), JDOCONFIG_CLASSPATH_PREFIX + "/Positive02/");
 
     Map<Object, Object> properties =
-        JDOHelper.getPropertiesFromJdoconfig(ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME, loader);
+        JDOHelper.getPropertiesFromJdoconfig(JDOConstants.ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME, loader);
     assertNotNull("Anonymous PMF with no properties returned null", properties);
     assertTrue("Anonymous PMF with no properties had properties", properties.size() == 0);
   }
@@ -307,7 +307,7 @@ public class JDOHelperConfigTest extends AbstractJDOConfigTest implements Consta
 
     Map<String, String> expected = prepareInitialExpectedMap("positive06.pmf0", 2, 0, true, true);
     Map<Object, Object> actual =
-        JDOHelper.getPropertiesFromJdoconfig(ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME, loader);
+        JDOHelper.getPropertiesFromJdoconfig(JDOConstants.ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME, loader);
 
     assertNotNull("No properties found", actual);
     assertEqualProperties(expected, actual);
@@ -321,7 +321,7 @@ public class JDOHelperConfigTest extends AbstractJDOConfigTest implements Consta
 
     Map<String, String> expected = prepareInitialExpectedMap("positive07.pmf0", 2, 0, true, false);
     Map<Object, Object> actual =
-        JDOHelper.getPropertiesFromJdoconfig(ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME, loader);
+        JDOHelper.getPropertiesFromJdoconfig(JDOConstants.ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME, loader);
 
     assertNotNull("No properties found", actual);
     assertEqualProperties(expected, actual);
diff --git a/api/src/test/java/javax/jdo/MockEnhancer.java b/api/src/test/java/javax/jdo/MockEnhancer.java
index b5967a9a..6b3d4f1a 100644
--- a/api/src/test/java/javax/jdo/MockEnhancer.java
+++ b/api/src/test/java/javax/jdo/MockEnhancer.java
@@ -17,8 +17,8 @@
 
 package javax.jdo;
 
-import static javax.jdo.Constants.PROPERTY_ENHANCER_VENDOR_NAME;
-import static javax.jdo.Constants.PROPERTY_ENHANCER_VERSION_NUMBER;
+import static javax.jdo.JDOConstants.PROPERTY_ENHANCER_VENDOR_NAME;
+import static javax.jdo.JDOConstants.PROPERTY_ENHANCER_VERSION_NUMBER;
 
 import java.lang.instrument.IllegalClassFormatException;
 import java.security.ProtectionDomain;
diff --git a/api/src/test/java/javax/jdo/PMFMapMapTest.java b/api/src/test/java/javax/jdo/PMFMapMapTest.java
index 5196483a..097a0b27 100644
--- a/api/src/test/java/javax/jdo/PMFMapMapTest.java
+++ b/api/src/test/java/javax/jdo/PMFMapMapTest.java
@@ -141,8 +141,8 @@ public class PMFMapMapTest extends AbstractJDOConfigTest {
    */
   public void testInputStream() throws IOException {
     Properties props = new Properties();
-    props.setProperty(Constants.PROPERTY_PERSISTENCE_MANAGER_FACTORY_CLASS, PMF_SERVICE_CLASS);
-    props.setProperty(Constants.PROPERTY_CONNECTION_FACTORY2_NAME, EXPECTED_FACTORY2_NAME);
+    props.setProperty(JDOConstants.PROPERTY_PERSISTENCE_MANAGER_FACTORY_CLASS, PMF_SERVICE_CLASS);
+    props.setProperty(JDOConstants.PROPERTY_CONNECTION_FACTORY2_NAME, EXPECTED_FACTORY2_NAME);
 
     ByteArrayOutputStream outstream = new ByteArrayOutputStream();
     try {
@@ -174,8 +174,8 @@ public class PMFMapMapTest extends AbstractJDOConfigTest {
    */
   public void testInputStreamWithLoader() throws IOException {
     Properties props = new Properties();
-    props.setProperty(Constants.PROPERTY_PERSISTENCE_MANAGER_FACTORY_CLASS, PMF_SERVICE_CLASS);
-    props.setProperty(Constants.PROPERTY_CONNECTION_FACTORY2_NAME, EXPECTED_FACTORY2_NAME);
+    props.setProperty(JDOConstants.PROPERTY_PERSISTENCE_MANAGER_FACTORY_CLASS, PMF_SERVICE_CLASS);
+    props.setProperty(JDOConstants.PROPERTY_CONNECTION_FACTORY2_NAME, EXPECTED_FACTORY2_NAME);
 
     ByteArrayOutputStream outstream = new ByteArrayOutputStream();
     try {
@@ -204,8 +204,8 @@ public class PMFMapMapTest extends AbstractJDOConfigTest {
    */
   public void testProperties() throws IOException {
     Properties props = new Properties();
-    props.setProperty(Constants.PROPERTY_PERSISTENCE_MANAGER_FACTORY_CLASS, PMF_SERVICE_CLASS);
-    props.setProperty(Constants.PROPERTY_CONNECTION_FACTORY2_NAME, EXPECTED_FACTORY2_NAME);
+    props.setProperty(JDOConstants.PROPERTY_PERSISTENCE_MANAGER_FACTORY_CLASS, PMF_SERVICE_CLASS);
+    props.setProperty(JDOConstants.PROPERTY_CONNECTION_FACTORY2_NAME, EXPECTED_FACTORY2_NAME);
 
     ClassLoader resourceClassLoader = createResourceClassLoader(RESOURCE_DIR);
     ClassLoader saveContextClassLoader = Thread.currentThread().getContextClassLoader();
@@ -227,8 +227,8 @@ public class PMFMapMapTest extends AbstractJDOConfigTest {
    */
   public void testPropertiesAndLoader() throws IOException {
     Properties props = new Properties();
-    props.setProperty(Constants.PROPERTY_PERSISTENCE_MANAGER_FACTORY_CLASS, PMF_SERVICE_CLASS);
-    props.setProperty(Constants.PROPERTY_CONNECTION_FACTORY2_NAME, EXPECTED_FACTORY2_NAME);
+    props.setProperty(JDOConstants.PROPERTY_PERSISTENCE_MANAGER_FACTORY_CLASS, PMF_SERVICE_CLASS);
+    props.setProperty(JDOConstants.PROPERTY_CONNECTION_FACTORY2_NAME, EXPECTED_FACTORY2_NAME);
 
     ClassLoader resourceClassLoader = createResourceClassLoader(RESOURCE_DIR);
     try {
@@ -248,7 +248,7 @@ public class PMFMapMapTest extends AbstractJDOConfigTest {
   public void testNamedPMFWithOverrides() throws IOException {
     Properties overrides = new Properties();
     overrides.setProperty(
-        Constants.PROPERTY_CONNECTION_FACTORY2_NAME, EXPECTED_FACTORY2_NAME_WITH_OVERRIDE);
+        JDOConstants.PROPERTY_CONNECTION_FACTORY2_NAME, EXPECTED_FACTORY2_NAME_WITH_OVERRIDE);
 
     ClassLoader resourceClassLoader = createResourceClassLoader(RESOURCE_DIR);
     ClassLoader saveContextClassLoader = Thread.currentThread().getContextClassLoader();
@@ -273,7 +273,7 @@ public class PMFMapMapTest extends AbstractJDOConfigTest {
   public void testNamedPMFWithOverridesAndLoader() throws IOException {
     Properties overrides = new Properties();
     overrides.setProperty(
-        Constants.PROPERTY_CONNECTION_FACTORY2_NAME, EXPECTED_FACTORY2_NAME_WITH_OVERRIDE);
+        JDOConstants.PROPERTY_CONNECTION_FACTORY2_NAME, EXPECTED_FACTORY2_NAME_WITH_OVERRIDE);
 
     ClassLoader resourceClassLoader = createResourceClassLoader(RESOURCE_DIR);
 
@@ -299,7 +299,7 @@ public class PMFMapMapTest extends AbstractJDOConfigTest {
   public void testNamedPMFWithOverridesAndTwoLoaders() throws IOException {
     Properties overrides = new Properties();
     overrides.setProperty(
-        Constants.PROPERTY_CONNECTION_FACTORY2_NAME, EXPECTED_FACTORY2_NAME_WITH_OVERRIDE);
+        JDOConstants.PROPERTY_CONNECTION_FACTORY2_NAME, EXPECTED_FACTORY2_NAME_WITH_OVERRIDE);
 
     ClassLoader resourceClassLoader = createResourceClassLoader(RESOURCE_DIR);
     ClassLoader pmfLoader = getClass().getClassLoader();
diff --git a/api/src/test/java/javax/jdo/PMFService.java b/api/src/test/java/javax/jdo/PMFService.java
index 4c62901d..9a149e20 100644
--- a/api/src/test/java/javax/jdo/PMFService.java
+++ b/api/src/test/java/javax/jdo/PMFService.java
@@ -19,7 +19,7 @@ package javax.jdo;
 import java.util.Map;
 
 /** */
-public class PMFService implements Constants {
+public class PMFService {
 
   public PMFService() {}
 
@@ -41,10 +41,10 @@ public class PMFService implements Constants {
   private static void setPMFProperties(
       PersistenceManagerFactory pmf, Map<?, ?> props, Map<?, ?> overrides) {
 
-    pmf.setConnectionDriverName((String) props.get(PROPERTY_CONNECTION_DRIVER_NAME));
+    pmf.setConnectionDriverName((String) props.get(JDOConstants.PROPERTY_CONNECTION_DRIVER_NAME));
 
     if (overrides != null) {
-      pmf.setConnectionDriverName((String) overrides.get(PROPERTY_CONNECTION_DRIVER_NAME));
+      pmf.setConnectionDriverName((String) overrides.get(JDOConstants.PROPERTY_CONNECTION_DRIVER_NAME));
     }
   }
 }
diff --git a/api/src/test/java/javax/jdo/spi/JDOImplHelperTest.java b/api/src/test/java/javax/jdo/spi/JDOImplHelperTest.java
index f300e473..cc9c92b0 100644
--- a/api/src/test/java/javax/jdo/spi/JDOImplHelperTest.java
+++ b/api/src/test/java/javax/jdo/spi/JDOImplHelperTest.java
@@ -19,7 +19,7 @@ package javax.jdo.spi;
 
 import java.util.Collection;
 import java.util.Properties;
-import javax.jdo.Constants;
+import javax.jdo.JDOConstants;
 import javax.jdo.JDOUserException;
 import javax.jdo.pc.PCPoint;
 import javax.jdo.util.AbstractTest;
@@ -244,7 +244,7 @@ public class JDOImplHelperTest extends AbstractTest {
     Properties p = new Properties();
     p.put("unknown.property", "value");
     p.put(new Object(), "value");
-    p.put(Constants.PROPERTY_PREFIX_INSTANCE_LIFECYCLE_LISTENER + "unknown.listener", "value");
+    p.put(JDOConstants.PROPERTY_PREFIX_INSTANCE_LIFECYCLE_LISTENER + "unknown.listener", "value");
     JDOImplHelper.assertOnlyKnownStandardProperties(p);
   }
 
diff --git a/api/src/test/java/javax/jdo/stub/StubPMF.java b/api/src/test/java/javax/jdo/stub/StubPMF.java
index ff74693b..07b4fd9c 100644
--- a/api/src/test/java/javax/jdo/stub/StubPMF.java
+++ b/api/src/test/java/javax/jdo/stub/StubPMF.java
@@ -21,7 +21,7 @@ import java.util.Collection;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
-import javax.jdo.Constants;
+import javax.jdo.JDOConstants;
 import javax.jdo.FetchGroup;
 import javax.jdo.PersistenceManager;
 import javax.jdo.PersistenceManagerFactory;
@@ -30,7 +30,7 @@ import javax.jdo.listener.InstanceLifecycleListener;
 import javax.jdo.metadata.JDOMetadata;
 import javax.jdo.metadata.TypeMetadata;
 
-public class StubPMF implements PersistenceManagerFactory, Constants {
+public class StubPMF implements PersistenceManagerFactory {
 
   private static final long serialVersionUID = 488698916248368422L;
 
@@ -421,107 +421,107 @@ public class StubPMF implements PersistenceManagerFactory, Constants {
   void setProperty(String name, Object value) {
     String val = value.toString();
 
-    if (name.equals(PROPERTY_PERSISTENCE_MANAGER_FACTORY_CLASS)) {
+    if (name.equals(JDOConstants.PROPERTY_PERSISTENCE_MANAGER_FACTORY_CLASS)) {
       setPersistenceManagerFactoryClass(val);
       return;
     }
-    if (name.equals(PROPERTY_CONNECTION_DRIVER_NAME)) {
+    if (name.equals(JDOConstants.PROPERTY_CONNECTION_DRIVER_NAME)) {
       setConnectionDriverName(val);
       return;
     }
-    if (name.equals(PROPERTY_CONNECTION_FACTORY_NAME)) {
+    if (name.equals(JDOConstants.PROPERTY_CONNECTION_FACTORY_NAME)) {
       setConnectionFactoryName(val);
       return;
     }
-    if (name.equals(PROPERTY_CONNECTION_FACTORY2_NAME)) {
+    if (name.equals(JDOConstants.PROPERTY_CONNECTION_FACTORY2_NAME)) {
       setConnectionFactory2Name(val);
       return;
     }
-    if (name.equals(PROPERTY_CONNECTION_PASSWORD)) {
+    if (name.equals(JDOConstants.PROPERTY_CONNECTION_PASSWORD)) {
       setConnectionPassword(val);
       return;
     }
-    if (name.equals(PROPERTY_CONNECTION_URL)) {
+    if (name.equals(JDOConstants.PROPERTY_CONNECTION_URL)) {
       setConnectionURL(val);
       return;
     }
-    if (name.equals(PROPERTY_CONNECTION_USER_NAME)) {
+    if (name.equals(JDOConstants.PROPERTY_CONNECTION_USER_NAME)) {
       setConnectionUserName(val);
       return;
     }
-    if (name.equals(PROPERTY_IGNORE_CACHE)) {
+    if (name.equals(JDOConstants.PROPERTY_IGNORE_CACHE)) {
       setCopyOnAttach(Boolean.parseBoolean(val));
       return;
     }
-    if (name.equals(PROPERTY_DATASTORE_READ_TIMEOUT_MILLIS)) {
+    if (name.equals(JDOConstants.PROPERTY_DATASTORE_READ_TIMEOUT_MILLIS)) {
       setDatastoreReadTimeoutMillis(Integer.parseInt(val));
       return;
     }
-    if (name.equals(PROPERTY_DATASTORE_WRITE_TIMEOUT_MILLIS)) {
+    if (name.equals(JDOConstants.PROPERTY_DATASTORE_WRITE_TIMEOUT_MILLIS)) {
       setDatastoreWriteTimeoutMillis(Integer.parseInt(val));
       return;
     }
-    if (name.equals(PROPERTY_DETACH_ALL_ON_COMMIT)) {
+    if (name.equals(JDOConstants.PROPERTY_DETACH_ALL_ON_COMMIT)) {
       setDetachAllOnCommit(Boolean.parseBoolean(val));
       return;
     }
-    if (name.equals(PROPERTY_IGNORE_CACHE)) {
+    if (name.equals(JDOConstants.PROPERTY_IGNORE_CACHE)) {
       setIgnoreCache(Boolean.parseBoolean(val));
       return;
     }
-    if (name.equals(PROPERTY_MAPPING)) {
+    if (name.equals(JDOConstants.PROPERTY_MAPPING)) {
       setMapping(val);
       return;
     }
-    if (name.equals(PROPERTY_MULTITHREADED)) {
+    if (name.equals(JDOConstants.PROPERTY_MULTITHREADED)) {
       setMultithreaded(Boolean.parseBoolean(val));
       return;
     }
-    if (name.equals(PROPERTY_NAME)) {
+    if (name.equals(JDOConstants.PROPERTY_NAME)) {
       setName(val);
       return;
     }
-    if (name.equals(PROPERTY_NONTRANSACTIONAL_READ)) {
+    if (name.equals(JDOConstants.PROPERTY_NONTRANSACTIONAL_READ)) {
       setNontransactionalRead(Boolean.parseBoolean(val));
       return;
     }
-    if (name.equals(PROPERTY_NONTRANSACTIONAL_WRITE)) {
+    if (name.equals(JDOConstants.PROPERTY_NONTRANSACTIONAL_WRITE)) {
       setNontransactionalWrite(Boolean.parseBoolean(val));
       return;
     }
-    if (name.equals(PROPERTY_OPTIMISTIC)) {
+    if (name.equals(JDOConstants.PROPERTY_OPTIMISTIC)) {
       setOptimistic(Boolean.parseBoolean(val));
       return;
     }
-    if (name.equals(PROPERTY_PERSISTENCE_UNIT_NAME)) {
+    if (name.equals(JDOConstants.PROPERTY_PERSISTENCE_UNIT_NAME)) {
       setPersistenceUnitName(val);
       return;
     }
-    if (name.equals(PROPERTY_READONLY)) {
+    if (name.equals(JDOConstants.PROPERTY_READONLY)) {
       setReadOnly(Boolean.parseBoolean(val));
       return;
     }
-    if (name.equals(PROPERTY_RESTORE_VALUES)) {
+    if (name.equals(JDOConstants.PROPERTY_RESTORE_VALUES)) {
       setRestoreValues(Boolean.parseBoolean(val));
       return;
     }
-    if (name.equals(PROPERTY_RETAIN_VALUES)) {
+    if (name.equals(JDOConstants.PROPERTY_RETAIN_VALUES)) {
       setRetainValues(Boolean.parseBoolean(val));
       return;
     }
-    if (name.equals(PROPERTY_SERVER_TIME_ZONE_ID)) {
+    if (name.equals(JDOConstants.PROPERTY_SERVER_TIME_ZONE_ID)) {
       setServerTimeZoneID(val);
       return;
     }
-    if (name.equals(PROPERTY_TRANSACTION_ISOLATION_LEVEL)) {
+    if (name.equals(JDOConstants.PROPERTY_TRANSACTION_ISOLATION_LEVEL)) {
       setTransactionIsolationLevel(val);
       return;
     }
-    if (name.equals(PROPERTY_TRANSACTION_TYPE)) {
+    if (name.equals(JDOConstants.PROPERTY_TRANSACTION_TYPE)) {
       setTransactionType(val);
       return;
     }
-    if (name.equals(PROPERTY_SPI_RESOURCE_NAME)) {
+    if (name.equals(JDOConstants.PROPERTY_SPI_RESOURCE_NAME)) {
       setSpiResourceName(val);
       return;
     }
diff --git a/api/src/test/java/javax/jdo/util/AbstractTest.java b/api/src/test/java/javax/jdo/util/AbstractTest.java
index 7ca9e7c2..32e38ee0 100644
--- a/api/src/test/java/javax/jdo/util/AbstractTest.java
+++ b/api/src/test/java/javax/jdo/util/AbstractTest.java
@@ -18,11 +18,10 @@
 package javax.jdo.util;
 
 import java.io.PrintStream;
-import javax.jdo.Constants;
 import junit.framework.TestCase;
 
 /** */
-public abstract class AbstractTest extends TestCase implements Constants {
+public abstract class AbstractTest extends TestCase {
 
   /** */
   protected static final PrintStream OUT = System.out;
diff --git a/tck/src/main/java/org/apache/jdo/tck/JDO_Test.java b/tck/src/main/java/org/apache/jdo/tck/JDO_Test.java
index e8705384..e8663fc3 100644
--- a/tck/src/main/java/org/apache/jdo/tck/JDO_Test.java
+++ b/tck/src/main/java/org/apache/jdo/tck/JDO_Test.java
@@ -38,7 +38,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 import java.util.StringTokenizer;
-import javax.jdo.Constants;
+import javax.jdo.JDOConstants;
 import javax.jdo.Extent;
 import javax.jdo.JDOException;
 import javax.jdo.JDOFatalException;
@@ -163,11 +163,11 @@ public abstract class JDO_Test extends TestCase {
   protected static final Map<String, Integer> levelValues = new HashMap<>();
 
   static {
-    levelValues.put(Constants.TX_READ_UNCOMMITTED, 0);
-    levelValues.put(Constants.TX_READ_COMMITTED, 1);
-    levelValues.put(Constants.TX_REPEATABLE_READ, 2);
-    levelValues.put(Constants.TX_SNAPSHOT, 3);
-    levelValues.put(Constants.TX_SERIALIZABLE, 4);
+    levelValues.put(JDOConstants.TX_READ_UNCOMMITTED, 0);
+    levelValues.put(JDOConstants.TX_READ_COMMITTED, 1);
+    levelValues.put(JDOConstants.TX_REPEATABLE_READ, 2);
+    levelValues.put(JDOConstants.TX_SNAPSHOT, 3);
+    levelValues.put(JDOConstants.TX_SERIALIZABLE, 4);
   }
 
   /**
@@ -982,7 +982,7 @@ public abstract class JDO_Test extends TestCase {
    * @return true if setting a Datastore timout is supported.
    */
   public boolean isDatastoreTimeoutSupported() {
-    return supportedOptions.contains(Constants.OPTION_DATASTORE_TIMEOUT);
+    return supportedOptions.contains(JDOConstants.OPTION_DATASTORE_TIMEOUT);
   }
 
   /**
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/GetProperties.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/GetProperties.java
index 7c56d0b3..b538561a 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/GetProperties.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/GetProperties.java
@@ -22,7 +22,7 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
-import javax.jdo.Constants;
+import javax.jdo.JDOConstants;
 import javax.jdo.PersistenceManager;
 import org.apache.jdo.tck.JDO_Test;
 import org.apache.jdo.tck.util.BatchTestRunner;
@@ -33,7 +33,7 @@ import org.apache.jdo.tck.util.BatchTestRunner;
  * <B>Assertion IDs:</B> <br>
  * <B>Assertion Description: </B>
  */
-public class GetProperties extends JDO_Test implements Constants {
+public class GetProperties extends JDO_Test {
 
   /** */
   private static final String ASSERTION_FAILED_12_19_1 =
@@ -212,7 +212,7 @@ public class GetProperties extends JDO_Test implements Constants {
   }
 
   private final TestProperty testCopyOnAttach =
-      new AbstractAPITestProperty(PROPERTY_COPY_ON_ATTACH, true, false) {
+      new AbstractAPITestProperty(JDOConstants.PROPERTY_COPY_ON_ATTACH, true, false) {
         public Object get(PersistenceManager pm) {
           return pm.getCopyOnAttach();
         }
@@ -223,7 +223,7 @@ public class GetProperties extends JDO_Test implements Constants {
       };
 
   private final TestProperty testDatastoreReadTimeoutMillis =
-      new AbstractAPITestProperty(PROPERTY_DATASTORE_READ_TIMEOUT_MILLIS, 20, 40) {
+      new AbstractAPITestProperty(JDOConstants.PROPERTY_DATASTORE_READ_TIMEOUT_MILLIS, 20, 40) {
         public Object get(PersistenceManager pm) {
           return pm.getDatastoreReadTimeoutMillis();
         }
@@ -234,7 +234,7 @@ public class GetProperties extends JDO_Test implements Constants {
       };
 
   private final TestProperty testDatastoreWriteTimeoutMillis =
-      new AbstractAPITestProperty(PROPERTY_DATASTORE_WRITE_TIMEOUT_MILLIS, 60, 80) {
+      new AbstractAPITestProperty(JDOConstants.PROPERTY_DATASTORE_WRITE_TIMEOUT_MILLIS, 60, 80) {
         public Object get(PersistenceManager pm) {
           return pm.getDatastoreWriteTimeoutMillis();
         }
@@ -245,7 +245,7 @@ public class GetProperties extends JDO_Test implements Constants {
       };
 
   private final TestProperty testMultithreaded =
-      new AbstractAPITestProperty(PROPERTY_MULTITHREADED, true, false) {
+      new AbstractAPITestProperty(JDOConstants.PROPERTY_MULTITHREADED, true, false) {
         public Object get(PersistenceManager pm) {
           return pm.getMultithreaded();
         }
@@ -256,7 +256,7 @@ public class GetProperties extends JDO_Test implements Constants {
       };
 
   private final TestProperty testLowerCaseMultithreaded =
-      new AbstractAPITestProperty(PROPERTY_MULTITHREADED, true, false) {
+      new AbstractAPITestProperty(JDOConstants.PROPERTY_MULTITHREADED, true, false) {
         public Object get(PersistenceManager pm) {
           return pm.getMultithreaded();
         }
@@ -267,7 +267,7 @@ public class GetProperties extends JDO_Test implements Constants {
       };
 
   private final TestProperty testUpperCaseMultithreaded =
-      new AbstractAPITestProperty(PROPERTY_MULTITHREADED, true, false) {
+      new AbstractAPITestProperty(JDOConstants.PROPERTY_MULTITHREADED, true, false) {
         public Object get(PersistenceManager pm) {
           return pm.getMultithreaded();
         }
@@ -278,7 +278,7 @@ public class GetProperties extends JDO_Test implements Constants {
       };
 
   private final TestProperty testDetachAllOnCommit =
-      new AbstractAPITestProperty(PROPERTY_DETACH_ALL_ON_COMMIT, true, false) {
+      new AbstractAPITestProperty(JDOConstants.PROPERTY_DETACH_ALL_ON_COMMIT, true, false) {
         public Object get(PersistenceManager pm) {
           return pm.getDetachAllOnCommit();
         }
@@ -289,7 +289,7 @@ public class GetProperties extends JDO_Test implements Constants {
       };
 
   private final TestProperty testIgnoreCache =
-      new AbstractAPITestProperty(PROPERTY_IGNORE_CACHE, true, false) {
+      new AbstractAPITestProperty(JDOConstants.PROPERTY_IGNORE_CACHE, true, false) {
         public Object get(PersistenceManager pm) {
           return pm.getIgnoreCache();
         }
@@ -300,7 +300,7 @@ public class GetProperties extends JDO_Test implements Constants {
       };
 
   private final TestProperty testOptimistic =
-      new AbstractAPITestProperty(PROPERTY_OPTIMISTIC, true, false) {
+      new AbstractAPITestProperty(JDOConstants.PROPERTY_OPTIMISTIC, true, false) {
         public Object get(PersistenceManager pm) {
           return pm.currentTransaction().getOptimistic();
         }
@@ -311,7 +311,7 @@ public class GetProperties extends JDO_Test implements Constants {
       };
 
   private final TestProperty testRetainValues =
-      new AbstractAPITestProperty(PROPERTY_RETAIN_VALUES, true, false) {
+      new AbstractAPITestProperty(JDOConstants.PROPERTY_RETAIN_VALUES, true, false) {
         public Object get(PersistenceManager pm) {
           return pm.currentTransaction().getRetainValues();
         }
@@ -322,7 +322,7 @@ public class GetProperties extends JDO_Test implements Constants {
       };
 
   private final TestProperty testRestoreValues =
-      new AbstractAPITestProperty(PROPERTY_RESTORE_VALUES, true, false) {
+      new AbstractAPITestProperty(JDOConstants.PROPERTY_RESTORE_VALUES, true, false) {
         public Object get(PersistenceManager pm) {
           return pm.currentTransaction().getRestoreValues();
         }
@@ -333,7 +333,7 @@ public class GetProperties extends JDO_Test implements Constants {
       };
 
   private final TestProperty testNontransactionalRead =
-      new AbstractAPITestProperty(PROPERTY_NONTRANSACTIONAL_READ, true, false) {
+      new AbstractAPITestProperty(JDOConstants.PROPERTY_NONTRANSACTIONAL_READ, true, false) {
         public Object get(PersistenceManager pm) {
           return pm.currentTransaction().getNontransactionalRead();
         }
@@ -344,7 +344,7 @@ public class GetProperties extends JDO_Test implements Constants {
       };
 
   private final TestProperty testNontransactionalWrite =
-      new AbstractAPITestProperty(PROPERTY_NONTRANSACTIONAL_WRITE, true, false) {
+      new AbstractAPITestProperty(JDOConstants.PROPERTY_NONTRANSACTIONAL_WRITE, true, false) {
         public Object get(PersistenceManager pm) {
           return pm.currentTransaction().getNontransactionalWrite();
         }
@@ -355,7 +355,7 @@ public class GetProperties extends JDO_Test implements Constants {
       };
 
   private final TestProperty testIllegalArgument =
-      new AbstractNonAPITestProperty(PROPERTY_IGNORE_CACHE, 1, false) {};
+      new AbstractNonAPITestProperty(JDOConstants.PROPERTY_IGNORE_CACHE, 1, false) {};
 
   private Set<TestProperty> setOf(TestProperty... testPropertys) {
     Set<TestProperty> result = new HashSet<>();
@@ -376,20 +376,20 @@ public class GetProperties extends JDO_Test implements Constants {
     testLowerCaseMultithreaded.setMessageForWrongResultAfterSet(ASSERTION_FAILED_12_19_3);
     testUpperCaseMultithreaded.setMessageForWrongResultAfterSet(ASSERTION_FAILED_12_19_3);
     testOptionalProperties.put(
-        PROPERTY_MULTITHREADED,
+            JDOConstants.PROPERTY_MULTITHREADED,
         setOf(testMultithreaded, testLowerCaseMultithreaded, testUpperCaseMultithreaded));
     testOptionalProperties.put(
-        OPTION_DATASTORE_TIMEOUT,
+            JDOConstants.OPTION_DATASTORE_TIMEOUT,
         setOf(testDatastoreReadTimeoutMillis, testDatastoreWriteTimeoutMillis));
 
     testOptimistic.setMessageForWrongResultAfterSet(ASSERTION_FAILED_12_19_4);
-    testOptionalProperties.put(PROPERTY_OPTIMISTIC, setOf(testOptimistic));
+    testOptionalProperties.put(JDOConstants.PROPERTY_OPTIMISTIC, setOf(testOptimistic));
     testRetainValues.setMessageForWrongResultAfterSet(ASSERTION_FAILED_12_19_4);
-    testOptionalProperties.put(PROPERTY_RETAIN_VALUES, setOf(testRetainValues));
+    testOptionalProperties.put(JDOConstants.PROPERTY_RETAIN_VALUES, setOf(testRetainValues));
     testNontransactionalRead.setMessageForWrongResultAfterSet(ASSERTION_FAILED_12_19_4);
-    testOptionalProperties.put(PROPERTY_NONTRANSACTIONAL_READ, setOf(testNontransactionalRead));
+    testOptionalProperties.put(JDOConstants.PROPERTY_NONTRANSACTIONAL_READ, setOf(testNontransactionalRead));
     testNontransactionalWrite.setMessageForWrongResultAfterSet(ASSERTION_FAILED_12_19_4);
-    testOptionalProperties.put(PROPERTY_NONTRANSACTIONAL_WRITE, setOf(testNontransactionalWrite));
+    testOptionalProperties.put(JDOConstants.PROPERTY_NONTRANSACTIONAL_WRITE, setOf(testNontransactionalWrite));
 
     supportedOptions = pmf.supportedOptions();
     for (String supportedOption : supportedOptions) {
@@ -442,9 +442,9 @@ public class GetProperties extends JDO_Test implements Constants {
 
     // changing a property of the returned set of property values must not change the underlying
     // property value
-    pm.setProperty(PROPERTY_COPY_ON_ATTACH, true);
+    pm.setProperty(JDOConstants.PROPERTY_COPY_ON_ATTACH, true);
     Map<String, Object> props = pm.getProperties();
-    props.put(PROPERTY_COPY_ON_ATTACH, false);
+    props.put(JDOConstants.PROPERTY_COPY_ON_ATTACH, false);
     errorIfNotEqual(ASSERTION_FAILED_12_19_6, true, pm.getCopyOnAttach());
 
     failOnError();
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanagerfactory/FlushThrowsIfReadOnly.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanagerfactory/FlushThrowsIfReadOnly.java
index 8b1839de..d640b2aa 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanagerfactory/FlushThrowsIfReadOnly.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanagerfactory/FlushThrowsIfReadOnly.java
@@ -19,7 +19,7 @@ package org.apache.jdo.tck.api.persistencemanagerfactory;
 
 import java.util.Date;
 import java.util.Properties;
-import javax.jdo.Constants;
+import javax.jdo.JDOConstants;
 import javax.jdo.JDOHelper;
 import javax.jdo.JDOReadOnlyException;
 import javax.jdo.PersistenceManagerFactory;
@@ -63,7 +63,7 @@ public class FlushThrowsIfReadOnly extends JDO_Test {
   protected void localSetUp() {
     addTearDownClass(Company.class);
     Properties properties = loadProperties(PMFProperties);
-    properties.put(Constants.PROPERTY_READONLY, "true");
+    properties.put(JDOConstants.PROPERTY_READONLY, "true");
     pmf2 = JDOHelper.getPersistenceManagerFactory(properties);
     // insert an instance to find
     getPM();
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanagerfactory/SetTransactionIsolationLevel.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanagerfactory/SetTransactionIsolationLevel.java
index 1aaf33b4..d4ad98d1 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanagerfactory/SetTransactionIsolationLevel.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanagerfactory/SetTransactionIsolationLevel.java
@@ -19,7 +19,7 @@ package org.apache.jdo.tck.api.persistencemanagerfactory;
 
 import java.util.HashMap;
 import java.util.Map;
-import javax.jdo.Constants;
+import javax.jdo.JDOConstants;
 import javax.jdo.JDOHelper;
 import javax.jdo.JDOUnsupportedOptionException;
 import javax.jdo.PersistenceManager;
@@ -36,7 +36,7 @@ import org.apache.jdo.tck.util.BatchTestRunner;
  * PersistenceManagerFactory.setTransactionIsolationLevel(String) sets the value of the transaction
  * isolation level.
  */
-public class SetTransactionIsolationLevel extends JDO_Test implements Constants {
+public class SetTransactionIsolationLevel extends JDO_Test {
 
   /** */
   private static final String ASSERTION_FAILED =
@@ -45,7 +45,8 @@ public class SetTransactionIsolationLevel extends JDO_Test implements Constants
   /** All specified transaction isolation levels */
   private static final String[] transactionIsolationLevels =
       new String[] {
-        TX_READ_UNCOMMITTED, TX_READ_COMMITTED, TX_REPEATABLE_READ, TX_SNAPSHOT, TX_SERIALIZABLE
+        JDOConstants.TX_READ_UNCOMMITTED, JDOConstants.TX_READ_COMMITTED, JDOConstants.TX_REPEATABLE_READ,
+              JDOConstants.TX_SNAPSHOT, JDOConstants.TX_SERIALIZABLE
       };
 
   private PersistenceManagerFactory pmf2;
@@ -87,7 +88,7 @@ public class SetTransactionIsolationLevel extends JDO_Test implements Constants
   /** Set TransactionIsolationLevel to all values. */
   public void testTransactionIsolationLevelReadCommittedSupported() {
     // this test depends on setUp initializing supportedOptions
-    String readCommitted = PROPERTY_TRANSACTION_ISOLATION_LEVEL_READ_COMMITTED;
+    String readCommitted = JDOConstants.PROPERTY_TRANSACTION_ISOLATION_LEVEL_READ_COMMITTED;
     // make sure read committed is supported
     if (!isSupported(readCommitted)) {
       appendMessage(
@@ -103,9 +104,9 @@ public class SetTransactionIsolationLevel extends JDO_Test implements Constants
     pmf.setConnectionURL(getPMFProperty(CONNECTION_URL_PROP));
     pmf.setConnectionUserName(getPMFProperty(CONNECTION_USERNAME_PROP));
     pmf.setConnectionPassword(getPMFProperty(CONNECTION_PASSWORD_PROP));
-    pmf.setConnectionDriverName(getPMFProperty(PROPERTY_CONNECTION_DRIVER_NAME));
+    pmf.setConnectionDriverName(getPMFProperty(JDOConstants.PROPERTY_CONNECTION_DRIVER_NAME));
 
-    String property = PROPERTY_TRANSACTION_ISOLATION_LEVEL + "." + level;
+    String property = JDOConstants.PROPERTY_TRANSACTION_ISOLATION_LEVEL + "." + level;
     try {
       pmf.setTransactionIsolationLevel(level);
 
@@ -142,9 +143,9 @@ public class SetTransactionIsolationLevel extends JDO_Test implements Constants
   }
   /** */
   private void getPMFsetTransactionIsolationLevelFromProperties(String level) {
-    String property = PROPERTY_TRANSACTION_ISOLATION_LEVEL + "." + level;
+    String property = JDOConstants.PROPERTY_TRANSACTION_ISOLATION_LEVEL + "." + level;
     Map<Object, Object> modifiedProps = new HashMap<>(PMFPropertiesObject);
-    modifiedProps.put(PROPERTY_TRANSACTION_ISOLATION_LEVEL, level);
+    modifiedProps.put(JDOConstants.PROPERTY_TRANSACTION_ISOLATION_LEVEL, level);
     if (isSupported(property)) {
       pmf2 = JDOHelper.getPersistenceManagerFactory(modifiedProps);
       String actual = pmf2.getTransactionIsolationLevel();
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanagerfactory/config/Persistence.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanagerfactory/config/Persistence.java
index 0de9b4f7..caee6928 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanagerfactory/config/Persistence.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanagerfactory/config/Persistence.java
@@ -19,7 +19,7 @@ package org.apache.jdo.tck.api.persistencemanagerfactory.config;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
-import javax.jdo.Constants;
+import javax.jdo.JDOConstants;
 import javax.jdo.JDOHelper;
 import javax.jdo.PersistenceManager;
 import javax.jdo.PersistenceManagerFactory;
@@ -84,7 +84,7 @@ public class Persistence extends JDO_Test {
   public void testGetPMFfromNamedPUWithOverrides() {
     String name = "PUNamed_" + IDENTITYTYPE + "0";
     Properties overrides = new Properties();
-    overrides.setProperty(Constants.PROPERTY_RESTORE_VALUES, "true");
+    overrides.setProperty(JDOConstants.PROPERTY_RESTORE_VALUES, "true");
     pmf = JDOHelper.getPersistenceManagerFactory(overrides, name);
     assertEquals("Incorrect value for RestoreValues", true, pmf.getRestoreValues());
     runTest(name);
diff --git a/tck/src/main/java/org/apache/jdo/tck/transactions/SetIsolationLevel.java b/tck/src/main/java/org/apache/jdo/tck/transactions/SetIsolationLevel.java
index 11c01af0..8d5c8acb 100644
--- a/tck/src/main/java/org/apache/jdo/tck/transactions/SetIsolationLevel.java
+++ b/tck/src/main/java/org/apache/jdo/tck/transactions/SetIsolationLevel.java
@@ -17,7 +17,7 @@
 
 package org.apache.jdo.tck.transactions;
 
-import javax.jdo.Constants;
+import javax.jdo.JDOConstants;
 import javax.jdo.JDOUnsupportedOptionException;
 import javax.jdo.Transaction;
 import org.apache.jdo.tck.JDO_Test;
@@ -30,7 +30,7 @@ import org.apache.jdo.tck.util.BatchTestRunner;
  * <B>Assertion Description: </B> Transaction.getIsolationLevel() returns the value of the isolation
  * level. Transaction.setIsolationLevel(String) sets the value of the isolation level.
  */
-public class SetIsolationLevel extends JDO_Test implements Constants {
+public class SetIsolationLevel extends JDO_Test {
 
   /** */
   private static final String ASSERTION_29_FAILED =
@@ -42,7 +42,8 @@ public class SetIsolationLevel extends JDO_Test implements Constants {
   /** All specified isolation levels */
   private static final String[] isolationLevels =
       new String[] {
-        TX_READ_UNCOMMITTED, TX_READ_COMMITTED, TX_REPEATABLE_READ, TX_SNAPSHOT, TX_SERIALIZABLE
+              JDOConstants.TX_READ_UNCOMMITTED, JDOConstants.TX_READ_COMMITTED, JDOConstants.TX_REPEATABLE_READ,
+              JDOConstants.TX_SNAPSHOT, JDOConstants.TX_SERIALIZABLE
       };
 
   /**
@@ -123,7 +124,7 @@ public class SetIsolationLevel extends JDO_Test implements Constants {
   /** */
   private void setIsolationLevel(String level) {
     Transaction tx = pm.currentTransaction();
-    String property = PROPERTY_TRANSACTION_ISOLATION_LEVEL + "." + level;
+    String property = JDOConstants.PROPERTY_TRANSACTION_ISOLATION_LEVEL + "." + level;
     if (isSupported(property)) {
       tx.setIsolationLevel(level);
       String actual = tx.getIsolationLevel();
diff --git a/tck/src/main/resources/conf/jdo-signatures.txt b/tck/src/main/resources/conf/jdo-signatures.txt
index 88aa9e3c..4dd4f39e 100644
--- a/tck/src/main/resources/conf/jdo-signatures.txt
+++ b/tck/src/main/resources/conf/jdo-signatures.txt
@@ -15,244 +15,244 @@
  * limitations under the License.
  */
 
-public interface javax.jdo.Constants {
-    static String JAVAX_JDO = "javax.jdo";
-    static String JAVAX_JDO_PREFIX = "javax.jdo.";
-    static String SERVICE_LOOKUP_PMF_RESOURCE_NAME
+public class javax.jdo.JDOConstants {
+    public static final String JAVAX_JDO = "javax.jdo";
+    public static final String JAVAX_JDO_PREFIX = "javax.jdo.";
+    public static final String SERVICE_LOOKUP_PMF_RESOURCE_NAME
         = "META-INF/services/javax.jdo.PersistenceManagerFactory";
-    static String SERVICE_LOOKUP_ENHANCER_RESOURCE_NAME
+    public static final String SERVICE_LOOKUP_ENHANCER_RESOURCE_NAME
         = "META-INF/services/javax.jdo.JDOEnhancer";
-    static String JDOCONFIG_RESOURCE_NAME
+    public static final String JDOCONFIG_RESOURCE_NAME
         = "META-INF/jdoconfig.xml";
-    static String JDOCONFIG_XSD_NS
+    public static final String JDOCONFIG_XSD_NS
         = "https://db.apache.org/jdo/xmlns/jdoconfig";
-    static String JDO_XSD_NS
+    public static final String JDO_XSD_NS
         = "https://db.apache.org/jdo/xmlns/jdo";
-    static String ORM_XSD_NS
+    public static final String ORM_XSD_NS
         = "https://db.apache.org/jdo/xmlns/orm";
-    static String JDOQUERY_XSD_NS
+    public static final String JDOQUERY_XSD_NS
         = "https://db.apache.org/jdo/xmlns/jdoquery";
-    static String ELEMENT_PERSISTENCE_MANAGER_FACTORY
+    public static final String ELEMENT_PERSISTENCE_MANAGER_FACTORY
         = "persistence-manager-factory";
-    static String PMF_ATTRIBUTE_CLASS
+    public static final String PMF_ATTRIBUTE_CLASS
         = "class";
-    static String PMF_ATTRIBUTE_NAME
+    public static final String PMF_ATTRIBUTE_NAME
         = "name";
-    static String PMF_ATTRIBUTE_PERSISTENCE_UNIT_NAME
+    public static final String PMF_ATTRIBUTE_PERSISTENCE_UNIT_NAME
         = "persistence-unit-name";
-    static String PMF_ATTRIBUTE_OPTIMISTIC
+    public static final String PMF_ATTRIBUTE_OPTIMISTIC
         = "optimistic";
-    static String PMF_ATTRIBUTE_READONLY
+    public static final String PMF_ATTRIBUTE_READONLY
         = "readonly";
-    static String PMF_ATTRIBUTE_RETAIN_VALUES
+    public static final String PMF_ATTRIBUTE_RETAIN_VALUES
         = "retain-values";
-    static String PMF_ATTRIBUTE_RESTORE_VALUES
+    public static final String PMF_ATTRIBUTE_RESTORE_VALUES
         = "restore-values";
-    static String PMF_ATTRIBUTE_IGNORE_CACHE
+    public static final String PMF_ATTRIBUTE_IGNORE_CACHE
         = "ignore-cache";
-    static String PMF_ATTRIBUTE_NONTRANSACTIONAL_READ
+    public static final String PMF_ATTRIBUTE_NONTRANSACTIONAL_READ
         = "nontransactional-read";
-    static String PMF_ATTRIBUTE_NONTRANSACTIONAL_WRITE
+    public static final String PMF_ATTRIBUTE_NONTRANSACTIONAL_WRITE
         = "nontransactional-write";
-    static String PMF_ATTRIBUTE_MULTITHREADED
+    public static final String PMF_ATTRIBUTE_MULTITHREADED
         = "multithreaded";
-    static String PMF_ATTRIBUTE_CONNECTION_DRIVER_NAME
+    public static final String PMF_ATTRIBUTE_CONNECTION_DRIVER_NAME
         = "connection-driver-name";
-    static String PMF_ATTRIBUTE_CONNECTION_USER_NAME
+    public static final String PMF_ATTRIBUTE_CONNECTION_USER_NAME
         = "connection-user-name";
-    static String PMF_ATTRIBUTE_CONNECTION_PASSWORD
+    public static final String PMF_ATTRIBUTE_CONNECTION_PASSWORD
         = "connection-password";
-    static String PMF_ATTRIBUTE_CONNECTION_URL
+    public static final String PMF_ATTRIBUTE_CONNECTION_URL
         = "connection-url";
-    static String PMF_ATTRIBUTE_CONNECTION_FACTORY_NAME
+    public static final String PMF_ATTRIBUTE_CONNECTION_FACTORY_NAME
         = "connection-factory-name";
-    static String PMF_ATTRIBUTE_CONNECTION_FACTORY2_NAME
+    public static final String PMF_ATTRIBUTE_CONNECTION_FACTORY2_NAME
         = "connection-factory2-name";
-    static String PMF_ATTRIBUTE_DETACH_ALL_ON_COMMIT
+    public static final String PMF_ATTRIBUTE_DETACH_ALL_ON_COMMIT
         = "detach-all-on-commit";
-    static String PMF_ATTRIBUTE_COPY_ON_ATTACH
+    public static final String PMF_ATTRIBUTE_COPY_ON_ATTACH
         = "copy-on-attach";
-    static String PMF_ATTRIBUTE_MAPPING
+    public static final String PMF_ATTRIBUTE_MAPPING
         = "mapping";
-    static String PMF_ATTRIBUTE_SERVER_TIME_ZONE_ID
+    public static final String PMF_ATTRIBUTE_SERVER_TIME_ZONE_ID
         = "server-time-zone-id";
-    static String PMF_ATTRIBUTE_DATASTORE_READ_TIMEOUT_MILLIS
+    public static final String PMF_ATTRIBUTE_DATASTORE_READ_TIMEOUT_MILLIS
         = "datastore-read-timeout-millis";
-    static String PMF_ATTRIBUTE_DATASTORE_WRITE_TIMEOUT_MILLIS
+    public static final String PMF_ATTRIBUTE_DATASTORE_WRITE_TIMEOUT_MILLIS
         = "datastore-write-timeout-millis";
-    static String ELEMENT_PROPERTY
+    public static final String ELEMENT_PROPERTY
         = "property";
-    static String PROPERTY_ATTRIBUTE_NAME
+    public static final String PROPERTY_ATTRIBUTE_NAME
         = "name";
-    static String PROPERTY_ATTRIBUTE_VALUE
+    public static final String PROPERTY_ATTRIBUTE_VALUE
         = "value";
-    static String ELEMENT_INSTANCE_LIFECYCLE_LISTENER
+    public static final String ELEMENT_INSTANCE_LIFECYCLE_LISTENER
         = "instance-lifecycle-listener";
-    static String INSTANCE_LIFECYCLE_LISTENER_ATTRIBUTE_LISTENER
+    public static final String INSTANCE_LIFECYCLE_LISTENER_ATTRIBUTE_LISTENER
         = "listener";
-    static String INSTANCE_LIFECYCLE_LISTENER_ATTRIBUTE_CLASSES
+    public static final String INSTANCE_LIFECYCLE_LISTENER_ATTRIBUTE_CLASSES
         = "classes";
-    static String OPTION_TRANSACTIONAL_TRANSIENT
+    public static final String OPTION_TRANSACTIONAL_TRANSIENT
         = "javax.jdo.option.TransientTransactional";
-    static String OPTION_NONTRANSACTIONAL_READ
+    public static final String OPTION_NONTRANSACTIONAL_READ
         = "javax.jdo.option.NontransactionalRead";
-    static String OPTION_NONTRANSACTIONAL_WRITE
+    public static final String OPTION_NONTRANSACTIONAL_WRITE
         = "javax.jdo.option.NontransactionalWrite";
-    static String OPTION_RETAIN_VALUES
+    public static final String OPTION_RETAIN_VALUES
         = "javax.jdo.option.RetainValues";
-    static String OPTION_OPTIMISTIC
+    public static final String OPTION_OPTIMISTIC
         = "javax.jdo.option.Optimistic";
-    static String OPTION_APPLICATION_IDENTITY
+    public static final String OPTION_APPLICATION_IDENTITY
         = "javax.jdo.option.ApplicationIdentity";
-    static String OPTION_DATASTORE_IDENTITY
+    public static final String OPTION_DATASTORE_IDENTITY
         = "javax.jdo.option.DatastoreIdentity";
-    static String OPTION_NONDURABLE_IDENTITY
+    public static final String OPTION_NONDURABLE_IDENTITY
         = "javax.jdo.option.NonDurableIdentity";
-    static String OPTION_ARRAYLIST
+    public static final String OPTION_ARRAYLIST
         = "javax.jdo.option.ArrayList";
-    static String OPTION_LINKEDLIST
+    public static final String OPTION_LINKEDLIST
         = "javax.jdo.option.LinkedList";
-    static String OPTION_TREEMAP
+    public static final String OPTION_TREEMAP
         = "javax.jdo.option.TreeMap";
-    static String OPTION_TREESET
+    public static final String OPTION_TREESET
         = "javax.jdo.option.TreeSet";
-    static String OPTION_VECTOR
+    public static final String OPTION_VECTOR
         = "javax.jdo.option.Vector";
-    static String OPTION_ARRAY
+    public static final String OPTION_ARRAY
         = "javax.jdo.option.Array";
-    static String OPTION_NULL_COLLECTION
+    public static final String OPTION_NULL_COLLECTION
         = "javax.jdo.option.NullCollection";
-    static String OPTION_CHANGE_APPLICATION_IDENTITY
+    public static final String OPTION_CHANGE_APPLICATION_IDENTITY
         = "javax.jdo.option.ChangeApplicationIdentity";
-    static String OPTION_BINARY_COMPATIBILITY
+    public static final String OPTION_BINARY_COMPATIBILITY
         = "javax.jdo.option.BinaryCompatibility";
-    static String OPTION_GET_DATASTORE_CONNECTION
+    public static final String OPTION_GET_DATASTORE_CONNECTION
         = "javax.jdo.option.GetDataStoreConnection";
-    static String OPTION_GET_JDBC_CONNECTION
+    public static final String OPTION_GET_JDBC_CONNECTION
         = "javax.jdo.option.GetJDBCConnection";
-    static String OPTION_DATASTORE_TIMEOUT
+    public static final String OPTION_DATASTORE_TIMEOUT
         = "javax.jdo.option.DatastoreTimeout";
-    static String OPTION_QUERY_SQL
+    public static final String OPTION_QUERY_SQL
         = "javax.jdo.query.SQL";
-    static String OPTION_QUERY_CANCEL
+    public static final String OPTION_QUERY_CANCEL
         = "javax.jdo.option.QueryCancel";
-    static String OPTION_UNCONSTRAINED_QUERY_VARIABLES
+    public static final String OPTION_UNCONSTRAINED_QUERY_VARIABLES
         = "javax.jdo.query.JDOQL.UnconstrainedQueryVariables";
-    static String OPTION_QUERY_JDOQL_BITWISE_OPERATIONS
+    public static final String OPTION_QUERY_JDOQL_BITWISE_OPERATIONS
         = "javax.jdo.query.JDOQL.BitwiseOperations";
-    static String OPTION_VERSION_DATETIME
+    public static final String OPTION_VERSION_DATETIME
         = "javax.jdo.option.version.DateTime";
-    static String OPTION_VERSION_STATE_IMAGE
+    public static final String OPTION_VERSION_STATE_IMAGE
         = "javax.jdo.option.version.StateImage";
-    static String OPTION_PREDIRTY_EVENT
+    public static final String OPTION_PREDIRTY_EVENT
         = "javax.jdo.option.PreDirtyEvent";
-    static String OPTION_MAPPING_HETEROGENEOUS_OBJECT_TYPE
+    public static final String OPTION_MAPPING_HETEROGENEOUS_OBJECT_TYPE
         = "javax.jdo.option.mapping.HeterogeneousObjectType";
-    static String OPTION_MAPPING_HETEROGENEOUS_INTERFACE_TYPE
+    public static final String OPTION_MAPPING_HETEROGENEOUS_INTERFACE_TYPE
         = "javax.jdo.option.mapping.HeterogeneousInterfaceType";
-    static String OPTION_MAPPING_JOINED_TABLE_PER_CLASS
+    public static final String OPTION_MAPPING_JOINED_TABLE_PER_CLASS
         = "javax.jdo.option.mapping.JoinedTablePerClass";
-    static String OPTION_MAPPING_JOINED_TABLE_PER_CONCRETE_CLASS
+    public static final String OPTION_MAPPING_JOINED_TABLE_PER_CONCRETE_CLASS
         = "javax.jdo.option.mapping.JoinedTablePerConcreteClass";
-    static String OPTION_MAPPING_NON_JOINED_TABLE_PER_CONCRETE_CLASS
+    public static final String OPTION_MAPPING_NON_JOINED_TABLE_PER_CONCRETE_CLASS
         = "javax.jdo.option.mapping.NonJoinedTablePerConcreteClass";
-    static String OPTION_MAPPING_RELATION_SUBCLASS_TABLE
+    public static final String OPTION_MAPPING_RELATION_SUBCLASS_TABLE
         = "javax.jdo.option.mapping.RelationSubclassTable";
-    static String PROPERTY_PERSISTENCE_MANAGER_FACTORY_CLASS
+    public static final String PROPERTY_PERSISTENCE_MANAGER_FACTORY_CLASS
         = "javax.jdo.PersistenceManagerFactoryClass";
-    static String PROPERTY_OPTIMISTIC
+    public static final String PROPERTY_OPTIMISTIC
         = "javax.jdo.option.Optimistic";
-    static String PROPERTY_READONLY
+    public static final String PROPERTY_READONLY
         = "javax.jdo.option.ReadOnly";
-    static String PROPERTY_RETAIN_VALUES
+    public static final String PROPERTY_RETAIN_VALUES
         = "javax.jdo.option.RetainValues";
-    static String PROPERTY_RESTORE_VALUES
+    public static final String PROPERTY_RESTORE_VALUES
         = "javax.jdo.option.RestoreValues";
-    static String PROPERTY_IGNORE_CACHE
+    public static final String PROPERTY_IGNORE_CACHE
         = "javax.jdo.option.IgnoreCache";
-    static String PROPERTY_NONTRANSACTIONAL_READ
+    public static final String PROPERTY_NONTRANSACTIONAL_READ
         = "javax.jdo.option.NontransactionalRead";
-    static String PROPERTY_NONTRANSACTIONAL_WRITE
+    public static final String PROPERTY_NONTRANSACTIONAL_WRITE
         = "javax.jdo.option.NontransactionalWrite";
-    static String PROPERTY_MULTITHREADED
+    public static final String PROPERTY_MULTITHREADED
         = "javax.jdo.option.Multithreaded";
-    static String PROPERTY_TRANSACTION_ISOLATION_LEVEL
+    public static final String PROPERTY_TRANSACTION_ISOLATION_LEVEL
         = "javax.jdo.option.TransactionIsolationLevel";
-    static String PROPERTY_TRANSACTION_ISOLATION_LEVEL_READ_UNCOMMITTED
+    public static final String PROPERTY_TRANSACTION_ISOLATION_LEVEL_READ_UNCOMMITTED
         = "javax.jdo.option.TransactionIsolationLevel.read-uncommitted";
-    static String PROPERTY_TRANSACTION_ISOLATION_LEVEL_READ_COMMITTED
+    public static final String PROPERTY_TRANSACTION_ISOLATION_LEVEL_READ_COMMITTED
         = "javax.jdo.option.TransactionIsolationLevel.read-committed";
-    static String PROPERTY_TRANSACTION_ISOLATION_LEVEL_REPEATABLE_READ
+    public static final String PROPERTY_TRANSACTION_ISOLATION_LEVEL_REPEATABLE_READ
         = "javax.jdo.option.TransactionIsolationLevel.repeatable-read";
-    static String PROPERTY_TRANSACTION_ISOLATION_LEVEL_SNAPSHOT
+    public static final String PROPERTY_TRANSACTION_ISOLATION_LEVEL_SNAPSHOT
         = "javax.jdo.option.TransactionIsolationLevel.snapshot";
-    static String PROPERTY_TRANSACTION_ISOLATION_LEVEL_SERIALIZABLE
+    public static final String PROPERTY_TRANSACTION_ISOLATION_LEVEL_SERIALIZABLE
         = "javax.jdo.option.TransactionIsolationLevel.serializable";
-    static String PROPERTY_DETACH_ALL_ON_COMMIT
+    public static final String PROPERTY_DETACH_ALL_ON_COMMIT
         = "javax.jdo.option.DetachAllOnCommit";
-    static String PROPERTY_COPY_ON_ATTACH
+    public static final String PROPERTY_COPY_ON_ATTACH
         = "javax.jdo.option.CopyOnAttach";
-    static String PROPERTY_CONNECTION_DRIVER_NAME
+    public static final String PROPERTY_CONNECTION_DRIVER_NAME
         = "javax.jdo.option.ConnectionDriverName";
-    static String PROPERTY_CONNECTION_USER_NAME
+    public static final String PROPERTY_CONNECTION_USER_NAME
         = "javax.jdo.option.ConnectionUserName";
-    static String PROPERTY_CONNECTION_PASSWORD
+    public static final String PROPERTY_CONNECTION_PASSWORD
         = "javax.jdo.option.ConnectionPassword";
-    static String PROPERTY_CONNECTION_URL
+    public static final String PROPERTY_CONNECTION_URL
         = "javax.jdo.option.ConnectionURL";
-    static String PROPERTY_CONNECTION_FACTORY_NAME
+    public static final String PROPERTY_CONNECTION_FACTORY_NAME
         = "javax.jdo.option.ConnectionFactoryName";
-    static String PROPERTY_CONNECTION_FACTORY2_NAME
+    public static final String PROPERTY_CONNECTION_FACTORY2_NAME
         = "javax.jdo.option.ConnectionFactory2Name";
-    static String PROPERTY_MAPPING
+    public static final String PROPERTY_MAPPING
         = "javax.jdo.option.Mapping";
-    static String PROPERTY_NAME
+    public static final String PROPERTY_NAME
         = "javax.jdo.option.Name";
-    static String PROPERTY_SPI_PROPERTIES_FILE_NAME
+    public static final String PROPERTY_SPI_PROPERTIES_FILE_NAME
         = "javax.jdo.spi.PropertiesFileName";
-    static String PROPERTY_SPI_RESOURCE_NAME
+    public static final String PROPERTY_SPI_RESOURCE_NAME
         = "javax.jdo.option.spi.ResourceName";
-    static String PROPERTY_PERSISTENCE_UNIT_NAME
+    public static final String PROPERTY_PERSISTENCE_UNIT_NAME
         = "javax.jdo.option.PersistenceUnitName";
-    static String PROPERTY_INSTANCE_LIFECYCLE_LISTENER
+    public static final String PROPERTY_INSTANCE_LIFECYCLE_LISTENER
         = "javax.jdo.listener.InstanceLifecycleListener";
-    static String PROPERTY_PREFIX_INSTANCE_LIFECYCLE_LISTENER
+    public static final String PROPERTY_PREFIX_INSTANCE_LIFECYCLE_LISTENER
         = "javax.jdo.listener.InstanceLifecycleListener.";
-    static String PROPERTY_MAPPING_CATALOG
+    public static final String PROPERTY_MAPPING_CATALOG
         = "javax.jdo.mapping.Catalog";
-    static String PROPERTY_MAPPING_SCHEMA
+    public static final String PROPERTY_MAPPING_SCHEMA
         = "javax.jdo.mapping.Schema";
-    static String PROPERTY_SERVER_TIME_ZONE_ID
+    public static final String PROPERTY_SERVER_TIME_ZONE_ID
         = "javax.jdo.option.ServerTimeZoneID";
-    static String PROPERTY_DATASTORE_READ_TIMEOUT_MILLIS
+    public static final String PROPERTY_DATASTORE_READ_TIMEOUT_MILLIS
         = "javax.jdo.option.DatastoreReadTimeoutMillis";
-    static String PROPERTY_DATASTORE_WRITE_TIMEOUT_MILLIS
+    public static final String PROPERTY_DATASTORE_WRITE_TIMEOUT_MILLIS
         = "javax.jdo.option.DatastoreWriteTimeoutMillis";
-    static String NONCONFIGURABLE_PROPERTY_VENDOR_NAME
+    public static final String NONCONFIGURABLE_PROPERTY_VENDOR_NAME
         = "VendorName";
-    static String NONCONFIGURABLE_PROPERTY_VERSION_NUMBER
+    public static final String NONCONFIGURABLE_PROPERTY_VERSION_NUMBER
         = "VersionNumber";
-    static String JTA
+    public static final String JTA
         = "JTA";
-    static String RESOURCE_LOCAL
+    public static final String RESOURCE_LOCAL
         = "RESOURCE_LOCAL";
-    static String JDOCONFIG_DTD_RESOURCE
+    public static final String JDOCONFIG_DTD_RESOURCE
         = "javax/jdo/jdoconfig_3_0.dtd";
-    static String JDOCONFIG_XSD_RESOURCE
+    public static final String JDOCONFIG_XSD_RESOURCE
         = "javax/jdo/jdoconfig_3_0.xsd";
-    static String JDO_DTD_RESOURCE
+    public static final String JDO_DTD_RESOURCE
         = "javax/jdo/jdo_3_0.dtd";
-    static String JDO_XSD_RESOURCE
+    public static final String JDO_XSD_RESOURCE
         = "javax/jdo/jdo_3_0.xsd";
-    static String ORM_DTD_RESOURCE
+    public static final String ORM_DTD_RESOURCE
         = "javax/jdo/orm_3_0.dtd";
-    static String ORM_XSD_RESOURCE
+    public static final String ORM_XSD_RESOURCE
         = "javax/jdo/orm_3_0.xsd";
-    static String JDOQUERY_DTD_RESOURCE
+    public static final String JDOQUERY_DTD_RESOURCE
         = "javax/jdo/jdoquery_3_0.dtd";
-    static String JDOQUERY_XSD_RESOURCE
+    public static final String JDOQUERY_XSD_RESOURCE
         = "javax/jdo/jdoquery_3_0.xsd";
-    static String ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME
+    public static final String ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME
         = "";
     public static final String TX_READ_UNCOMMITTED = "read-uncommitted"; 
     public static final String TX_READ_COMMITTED = "read-committed"; 
@@ -529,7 +529,7 @@ public class javax.jdo.JDOFatalUserException extends javax.jdo.JDOFatalException
     public JDOFatalUserException(String msg, Throwable nested, Object failed);
 }
 
-public class javax.jdo.JDOHelper implements javax.jdo.Constants {
+public class javax.jdo.JDOHelper {
     public JDOHelper();
     public static javax.jdo.JDOHelper getInstance();
     public static javax.jdo.PersistenceManager getPersistenceManager(Object pc);