Class JDOHelper
- java.lang.Object
-
- javax.jdo.JDOHelper
-
- All Implemented Interfaces:
Constants
public class JDOHelper extends Object implements Constants
This class can be used by a JDO-aware application to call the JDO behavior ofPersistenceCapable
instances without declaring them to bePersistenceCapable
.It is also used to acquire a
PersistenceManagerFactory
via various methods.This helper class defines static methods that allow a JDO-aware application to examine the runtime state of instances. For example, an application can discover whether the instance is persistent, transactional, dirty, new, deleted, or detached; and to get its associated
PersistenceManager
if it has one.- Version:
- 2.1
-
-
Field Summary
-
Fields inherited from interface javax.jdo.Constants
ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME, ELEMENT_INSTANCE_LIFECYCLE_LISTENER, ELEMENT_PERSISTENCE_MANAGER_FACTORY, ELEMENT_PROPERTY, ENHANCER_EXCEPTION, ENHANCER_NO_JDO_ENHANCER_FOUND, ENHANCER_USAGE_ERROR, INSTANCE_LIFECYCLE_LISTENER_ATTRIBUTE_CLASSES, INSTANCE_LIFECYCLE_LISTENER_ATTRIBUTE_LISTENER, JAVAX_JDO, JAVAX_JDO_PREFIX, JDO_DTD_RESOURCE, JDO_XSD_NS, JDO_XSD_RESOURCE, JDOCONFIG_DTD_RESOURCE, JDOCONFIG_RESOURCE_NAME, JDOCONFIG_XSD_NS, JDOCONFIG_XSD_RESOURCE, JDOQUERY_DTD_RESOURCE, JDOQUERY_XSD_NS, JDOQUERY_XSD_RESOURCE, JTA, NONCONFIGURABLE_PROPERTY_VENDOR_NAME, NONCONFIGURABLE_PROPERTY_VERSION_NUMBER, OPTION_APPLICATION_IDENTITY, OPTION_ARRAY, OPTION_ARRAYLIST, OPTION_BINARY_COMPATIBILITY, OPTION_CHANGE_APPLICATION_IDENTITY, OPTION_DATASTORE_IDENTITY, OPTION_DATASTORE_TIMEOUT, OPTION_GET_DATASTORE_CONNECTION, OPTION_GET_JDBC_CONNECTION, OPTION_LINKEDLIST, OPTION_MAPPING_HETEROGENEOUS_INTERFACE_TYPE, OPTION_MAPPING_HETEROGENEOUS_OBJECT_TYPE, OPTION_MAPPING_JOINED_TABLE_PER_CLASS, OPTION_MAPPING_JOINED_TABLE_PER_CONCRETE_CLASS, OPTION_MAPPING_NON_JOINED_TABLE_PER_CONCRETE_CLASS, OPTION_MAPPING_RELATION_SUBCLASS_TABLE, OPTION_NONDURABLE_IDENTITY, OPTION_NONTRANSACTIONAL_READ, OPTION_NONTRANSACTIONAL_WRITE, OPTION_NULL_COLLECTION, OPTION_OPTIMISTIC, OPTION_PREDIRTY_EVENT, OPTION_QUERY_CANCEL, OPTION_QUERY_JDOQL_BITWISE_OPERATIONS, OPTION_QUERY_SQL, OPTION_RETAIN_VALUES, OPTION_TRANSACTIONAL_TRANSIENT, OPTION_TREEMAP, OPTION_TREESET, OPTION_UNCONSTRAINED_QUERY_VARIABLES, OPTION_VECTOR, OPTION_VERSION_DATETIME, OPTION_VERSION_STATE_IMAGE, ORM_DTD_RESOURCE, ORM_XSD_NS, ORM_XSD_RESOURCE, PMF_ATTRIBUTE_CLASS, PMF_ATTRIBUTE_CONNECTION_DRIVER_NAME, PMF_ATTRIBUTE_CONNECTION_FACTORY_NAME, PMF_ATTRIBUTE_CONNECTION_FACTORY2_NAME, PMF_ATTRIBUTE_CONNECTION_PASSWORD, PMF_ATTRIBUTE_CONNECTION_URL, PMF_ATTRIBUTE_CONNECTION_USER_NAME, PMF_ATTRIBUTE_COPY_ON_ATTACH, PMF_ATTRIBUTE_DATASTORE_READ_TIMEOUT_MILLIS, PMF_ATTRIBUTE_DATASTORE_WRITE_TIMEOUT_MILLIS, PMF_ATTRIBUTE_DETACH_ALL_ON_COMMIT, PMF_ATTRIBUTE_IGNORE_CACHE, PMF_ATTRIBUTE_MAPPING, PMF_ATTRIBUTE_MULTITHREADED, PMF_ATTRIBUTE_NAME, PMF_ATTRIBUTE_NONTRANSACTIONAL_READ, PMF_ATTRIBUTE_NONTRANSACTIONAL_WRITE, PMF_ATTRIBUTE_OPTIMISTIC, PMF_ATTRIBUTE_PERSISTENCE_UNIT_NAME, PMF_ATTRIBUTE_READONLY, PMF_ATTRIBUTE_RESTORE_VALUES, PMF_ATTRIBUTE_RETAIN_VALUES, PMF_ATTRIBUTE_SERVER_TIME_ZONE_ID, PROPERTY_ATTRIBUTE_NAME, PROPERTY_ATTRIBUTE_VALUE, PROPERTY_CONNECTION_DRIVER_NAME, PROPERTY_CONNECTION_FACTORY_NAME, PROPERTY_CONNECTION_FACTORY2_NAME, PROPERTY_CONNECTION_PASSWORD, PROPERTY_CONNECTION_URL, PROPERTY_CONNECTION_USER_NAME, PROPERTY_COPY_ON_ATTACH, PROPERTY_DATASTORE_READ_TIMEOUT_MILLIS, PROPERTY_DATASTORE_WRITE_TIMEOUT_MILLIS, PROPERTY_DETACH_ALL_ON_COMMIT, PROPERTY_ENHANCER_VENDOR_NAME, PROPERTY_ENHANCER_VERSION_NUMBER, PROPERTY_IGNORE_CACHE, PROPERTY_INSTANCE_LIFECYCLE_LISTENER, PROPERTY_MAPPING, PROPERTY_MAPPING_CATALOG, PROPERTY_MAPPING_SCHEMA, PROPERTY_MULTITHREADED, PROPERTY_NAME, PROPERTY_NONTRANSACTIONAL_READ, PROPERTY_NONTRANSACTIONAL_WRITE, PROPERTY_OPTIMISTIC, PROPERTY_PERSISTENCE_MANAGER_FACTORY_CLASS, PROPERTY_PERSISTENCE_UNIT_NAME, PROPERTY_PREFIX_INSTANCE_LIFECYCLE_LISTENER, PROPERTY_READONLY, PROPERTY_RESTORE_VALUES, PROPERTY_RETAIN_VALUES, PROPERTY_SERVER_TIME_ZONE_ID, PROPERTY_SPI_PROPERTIES_FILE_NAME, PROPERTY_SPI_RESOURCE_NAME, PROPERTY_TRANSACTION_ISOLATION_LEVEL, PROPERTY_TRANSACTION_ISOLATION_LEVEL_READ_COMMITTED, PROPERTY_TRANSACTION_ISOLATION_LEVEL_READ_UNCOMMITTED, PROPERTY_TRANSACTION_ISOLATION_LEVEL_REPEATABLE_READ, PROPERTY_TRANSACTION_ISOLATION_LEVEL_SERIALIZABLE, PROPERTY_TRANSACTION_ISOLATION_LEVEL_SNAPSHOT, PROPERTY_TRANSACTION_TYPE, RESOURCE_LOCAL, SERVICE_LOOKUP_ENHANCER_RESOURCE_NAME, SERVICE_LOOKUP_PMF_RESOURCE_NAME, TX_READ_COMMITTED, TX_READ_UNCOMMITTED, TX_REPEATABLE_READ, TX_SERIALIZABLE, TX_SNAPSHOT
-
-
Constructor Summary
Constructors Constructor Description JDOHelper()
Some applications might prefer to use instance methods instead of static methods.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description protected static String
getClassNameFromURL(URL url)
Get a class name from a URL.protected static DocumentBuilderFactory
getDefaultDocumentBuilderFactory()
protected static ErrorHandler
getDefaultErrorHandler()
protected static DocumentBuilderFactory
getDocumentBuilderFactory()
static JDOEnhancer
getEnhancer()
Get aJDOEnhancer
using the available enhancer(s) specified in "META-INF/services/JDOEnhancer" using the context class loader.static JDOEnhancer
getEnhancer(ClassLoader loader)
Get aJDOEnhancer
using the available enhancer(s) specified in "META-INF/services/JDOEnhancer"protected static ErrorHandler
getErrorHandler()
static JDOHelper
getInstance()
Return the singleton instance of JDOHelper.protected static Map<Object,Object>
getNamedPMFProperties(String name, ClassLoader resourceLoader, String jdoconfigResourceName)
Find and return the namedPersistenceManagerFactory
's properties, or null if not found.static Object
getObjectId(Object pc)
Return a copy of the JDO identity associated with the parameter instance.static Object[]
getObjectIds(Object[] pcs)
Get object ids for an array of instances.static Collection<Object>
getObjectIds(Collection<?> pcs)
Get object ids for a collection of instances.static ObjectState
getObjectState(Object pc)
Accessor for the state of the passed object.static PersistenceManager
getPersistenceManager(Object pc)
Return the associatedPersistenceManager
if there is one.static PersistenceManagerFactory
getPersistenceManagerFactory()
Get the anonymousPersistenceManagerFactory
configured via the standard configuration file resource "META-INF/jdoconfig.xml", using the current thread's context class loader to locate the configuration file resource(s).static PersistenceManagerFactory
getPersistenceManagerFactory(File propsFile)
Returns aPersistenceManagerFactory
configured based on the properties stored in the file atpropsFile
.static PersistenceManagerFactory
getPersistenceManagerFactory(File propsFile, ClassLoader loader)
Returns aPersistenceManagerFactory
configured based on the properties stored in the file atpropsFile
.static PersistenceManagerFactory
getPersistenceManagerFactory(InputStream stream)
Returns aPersistenceManagerFactory
configured based on the Properties stored in the input stream atstream
.static PersistenceManagerFactory
getPersistenceManagerFactory(InputStream stream, ClassLoader loader)
Returns aPersistenceManagerFactory
configured based on the Properties stored in the input stream atstream
.static PersistenceManagerFactory
getPersistenceManagerFactory(ClassLoader pmfClassLoader)
Get the anonymousPersistenceManagerFactory
configured via the standard configuration file resource "META-INF/jdoconfig.xml", using the given class loader.static PersistenceManagerFactory
getPersistenceManagerFactory(String name)
Returns a namedPersistenceManagerFactory
or persistence unit.static PersistenceManagerFactory
getPersistenceManagerFactory(String name, ClassLoader loader)
Returns a namedPersistenceManagerFactory
or persistence unit.static PersistenceManagerFactory
getPersistenceManagerFactory(String name, ClassLoader resourceLoader, ClassLoader pmfLoader)
Returns a namedPersistenceManagerFactory
or persistence unit.static PersistenceManagerFactory
getPersistenceManagerFactory(String jndiLocation, Context context)
Returns aPersistenceManagerFactory
at the JNDI location specified byjndiLocation
in the contextcontext
.static PersistenceManagerFactory
getPersistenceManagerFactory(String jndiLocation, Context context, ClassLoader loader)
Returns aPersistenceManagerFactory
at the JNDI location specified byjndiLocation
in the contextcontext
.static PersistenceManagerFactory
getPersistenceManagerFactory(Map<?,?> props)
Get aPersistenceManagerFactory
based on aProperties
instance, using the current thread's context class loader to locate thePersistenceManagerFactory
class.static PersistenceManagerFactory
getPersistenceManagerFactory(Map<?,?> props, ClassLoader pmfClassLoader)
Get aPersistenceManagerFactory
based on aMap
and a class loader.static PersistenceManagerFactory
getPersistenceManagerFactory(Map<?,?> overrides, String name)
Returns a namedPersistenceManagerFactory
or persistence unit.static PersistenceManagerFactory
getPersistenceManagerFactory(Map<?,?> overrides, String name, ClassLoader resourceLoader)
Returns a namedPersistenceManagerFactory
or persistence unit.static PersistenceManagerFactory
getPersistenceManagerFactory(Map<?,?> overrides, String name, ClassLoader resourceLoader, ClassLoader pmfLoader)
Returns aPersistenceManagerFactory
configured based on the properties stored in the resource atname
, or, if not found, returns aPersistenceManagerFactory
with the given name or, if not found, returns ajavax.persistence.EntityManagerFactory
cast to aPersistenceManagerFactory
.protected static PersistenceManagerFactory
getPersistenceManagerFactory(Map<?,?> overrides, Map<?,?> props, ClassLoader pmfClassLoader)
Get aPersistenceManagerFactory
based on aMap
of overrides, aMap
of properties, and a class loader.protected static Map<Object,Object>
getPropertiesFromJdoconfig(String name, ClassLoader resourceLoader)
protected static Enumeration<URL>
getResources(ClassLoader resourceLoader, String resourceName)
Get resources of the resource loader.static Object
getTransactionalObjectId(Object pc)
Return a copy of the JDO identity associated with the parameter instance.static Object
getVersion(Object pc)
Return the version of the instance.protected static PersistenceManagerFactory
invokeGetPersistenceManagerFactoryOnImplementation(String pmfClassName, Map<?,?> overrides, Map<?,?> properties, ClassLoader cl)
Invoke the getPersistenceManagerFactory method on the implementation.static boolean
isDeleted(Object pc)
Tests whether the parameter instance has been deleted.static boolean
isDetached(Object pc)
Tests whether the parameter instance has been detached.static boolean
isDirty(Object pc)
Tests whether the parameter instance is dirty.static boolean
isNew(Object pc)
Tests whether the parameter instance has been newly made persistent.protected static boolean
isNullOrBlank(String s)
static boolean
isPersistent(Object pc)
Tests whether the parameter instance is persistent.static boolean
isTransactional(Object pc)
Tests whether the parameter instance is transactional.protected static Map<Object,Object>
loadPropertiesFromResource(ClassLoader resourceLoader, String name)
Load a Properties instance by name from the class loader.static void
makeDirty(Object pc, String fieldName)
Explicitly mark the parameter instance and field dirty.protected static Map<String,Map<Object,Object>>
readNamedPMFProperties(URL url, String requestedPMFName, DocumentBuilderFactory factory)
Reads JDO configuration file, creates a Map for each persistence-manager-factory, then returns the map.protected static Properties
readPropertiesFromPMFElementAttributes(Node pmfElement)
protected static Properties
readPropertiesFromPMFSubelements(Node pmfElement, URL url)
-
-
-
Method Detail
-
getInstance
public static JDOHelper getInstance()
Return the singleton instance of JDOHelper. This instance is thread-safe.- Returns:
- the thread-safe singleton JDOHelper
- Since:
- 2.1
-
getPersistenceManager
public static PersistenceManager getPersistenceManager(Object pc)
Return the associatedPersistenceManager
if there is one. Transactional and persistent instances return the associatedPersistenceManager
.Transient non-transactional instances and instances of classes that do not implement
PersistenceCapable
returnnull
.- Parameters:
pc
- thePersistenceCapable
instance.- Returns:
- the
PersistenceManager
associated with the parameter instance. - See Also:
PersistenceCapable.jdoGetPersistenceManager()
-
makeDirty
public static void makeDirty(Object pc, String fieldName)
Explicitly mark the parameter instance and field dirty. Normally,PersistenceCapable
classes are able to detect changes made to their fields. However, if a reference to an array is given to a method outside the class, and the array is modified, then the persistent instance is not aware of the change. This API allows the application to notify the instance that a change was made to a field.Transient instances and instances of classes that do not implement
PersistenceCapable
ignore this method.- Parameters:
pc
- thePersistenceCapable
instance.fieldName
- the name of the field to be marked dirty.- See Also:
PersistenceCapable.jdoMakeDirty(String fieldName)
-
getObjectId
public static Object getObjectId(Object pc)
Return a copy of the JDO identity associated with the parameter instance.Persistent instances of
PersistenceCapable
classes have a JDO identity managed by thePersistenceManager
. This method returns a copy of the ObjectId that represents the JDO identity.Transient instances and instances of classes that do not implement
PersistenceCapable
returnnull
.The ObjectId may be serialized and later restored, and used with a
PersistenceManager
from the same JDO implementation to locate a persistent instance with the same data store identity.If the JDO identity is managed by the application, then the ObjectId may be used with a
PersistenceManager
from any JDO implementation that supports thePersistenceCapable
class.If the JDO identity is not managed by the application or the data store, then the ObjectId returned is only valid within the current transaction.
- Parameters:
pc
- the PersistenceCapable instance.- Returns:
- a copy of the ObjectId of the parameter instance as of the beginning of the transaction.
- See Also:
PersistenceManager.getObjectId(Object pc)
,PersistenceCapable.jdoGetObjectId()
,PersistenceManager.getObjectById(Object oid, boolean validate)
-
getObjectIds
public static Collection<Object> getObjectIds(Collection<?> pcs)
Get object ids for a collection of instances. For each instance in the parameter, the getObjectId method is called. This method returns one identity instance for each element in the parameter. The order of iteration of the returned Collection exactly matches the order of iteration of the parameter Collection.- Parameters:
pcs
- the persistence-capable instances- Returns:
- the object ids of the parameters
- Since:
- 2.0
- See Also:
getObjectId(Object pc)
,getObjectIds(Object[] pcs)
-
getObjectIds
public static Object[] getObjectIds(Object[] pcs)
Get object ids for an array of instances. For each instance in the parameter, the getObjectId method is called. This method returns one identity instance for each element in the parameter. The order of instances of the returned array exactly matches the order of instances of the parameter array.- Parameters:
pcs
- the persistence-capable instances- Returns:
- the object ids of the parameters
- Since:
- 2.0
- See Also:
getObjectId(Object pc)
,getObjectIds(Collection pcs)
-
getTransactionalObjectId
public static Object getTransactionalObjectId(Object pc)
Return a copy of the JDO identity associated with the parameter instance.- Parameters:
pc
- thePersistenceCapable
instance.- Returns:
- a copy of the ObjectId of the parameter instance as modified in this transaction.
- See Also:
PersistenceCapable.jdoGetTransactionalObjectId()
,PersistenceManager.getObjectById(Object oid, boolean validate)
-
getVersion
public static Object getVersion(Object pc)
Return the version of the instance.- Parameters:
pc
- the instance- Returns:
- the version of the instance
- Since:
- 2.0
-
isDirty
public static boolean isDirty(Object pc)
Tests whether the parameter instance is dirty. Instances that have been modified, deleted, or newly made persistent in the current transaction returntrue
.Transient instances and instances of classes that do not implement
PersistenceCapable
returnfalse
.- Parameters:
pc
- thePersistenceCapable
instance.- Returns:
true
if the parameter instance has been modified in the current transaction.- See Also:
StateManager.makeDirty(PersistenceCapable pc, String fieldName)
,PersistenceCapable.jdoIsDirty()
-
isTransactional
public static boolean isTransactional(Object pc)
Tests whether the parameter instance is transactional. Instances whose state is associated with the current transaction return true.Transient instances and instances of classes that do not implement
PersistenceCapable
returnfalse
.- Parameters:
pc
- thePersistenceCapable
instance.- Returns:
true
if the parameter instance is transactional.- See Also:
PersistenceCapable.jdoIsTransactional()
-
isPersistent
public static boolean isPersistent(Object pc)
Tests whether the parameter instance is persistent. Instances that represent persistent objects in the data store returntrue
.Transient instances and instances of classes that do not implement
PersistenceCapable
returnfalse
.- Parameters:
pc
- thePersistenceCapable
instance.- Returns:
true
if the parameter instance is persistent.- See Also:
PersistenceManager.makePersistent(Object pc)
,PersistenceCapable.jdoIsPersistent()
-
isNew
public static boolean isNew(Object pc)
Tests whether the parameter instance has been newly made persistent. Instances that have been made persistent in the current transaction returntrue
.Transient instances and instances of classes that do not implement
PersistenceCapable
returnfalse
.- Parameters:
pc
- thePersistenceCapable
instance.- Returns:
true
if the parameter instance was made persistent in the current transaction.- See Also:
PersistenceManager.makePersistent(Object pc)
,PersistenceCapable.jdoIsNew()
-
isDeleted
public static boolean isDeleted(Object pc)
Tests whether the parameter instance has been deleted. Instances that have been deleted in the current transaction returntrue
.Transient instances and instances of classes that do not implement
PersistenceCapable
returnfalse
.- Parameters:
pc
- thePersistenceCapable
instance.- Returns:
true
if the parameter instance was deleted in the current transaction.- See Also:
PersistenceManager.deletePersistent(Object pc)
,PersistenceCapable.jdoIsDeleted()
-
isDetached
public static boolean isDetached(Object pc)
Tests whether the parameter instance has been detached. Instances that have been detached return true.Transient instances return false.
- Parameters:
pc
- the instance- Returns:
true
if this instance is detached.- Since:
- 2.0
- See Also:
PersistenceCapable.jdoIsDetached()
-
getObjectState
public static ObjectState getObjectState(Object pc)
Accessor for the state of the passed object.- Parameters:
pc
- The object- Returns:
- The object state
- Since:
- 2.1
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory()
Get the anonymousPersistenceManagerFactory
configured via the standard configuration file resource "META-INF/jdoconfig.xml", using the current thread's context class loader to locate the configuration file resource(s).- Returns:
- the anonymous
PersistenceManagerFactory
. - Since:
- 2.1
- See Also:
getPersistenceManagerFactory(Map,String,ClassLoader,ClassLoader)
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory(ClassLoader pmfClassLoader)
Get the anonymousPersistenceManagerFactory
configured via the standard configuration file resource "META-INF/jdoconfig.xml", using the given class loader.- Parameters:
pmfClassLoader
- the ClassLoader used to load resources and classes- Returns:
- the anonymous
PersistenceManagerFactory
. - Since:
- 2.1
- See Also:
getPersistenceManagerFactory(Map,String,ClassLoader,ClassLoader)
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory(Map<?,?> props)
Get aPersistenceManagerFactory
based on aProperties
instance, using the current thread's context class loader to locate thePersistenceManagerFactory
class.- Parameters:
props
- aProperties
instance with properties of thePersistenceManagerFactory
.- Returns:
- the
PersistenceManagerFactory
. - See Also:
getPersistenceManagerFactory(java.util.Map,ClassLoader)
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory(Map<?,?> props, ClassLoader pmfClassLoader)
Get aPersistenceManagerFactory
based on aMap
and a class loader. This method delegates to the getPersistenceManagerFactory method that takes a Map of overrides and a Map of properties, passing null as the overrides parameter.- Parameters:
props
- aMap
with properties of thePersistenceManagerFactory
.pmfClassLoader
- the class loader used to load thePersistenceManagerFactory
class- Returns:
- the
PersistenceManagerFactory
. - Since:
- 1.0
- See Also:
getPersistenceManagerFactory(java.util.Map, java.util.Map, ClassLoader)
-
getPersistenceManagerFactory
protected static PersistenceManagerFactory getPersistenceManagerFactory(Map<?,?> overrides, Map<?,?> props, ClassLoader pmfClassLoader)
Get aPersistenceManagerFactory
based on aMap
of overrides, aMap
of properties, and a class loader. The following are standard key names:"javax.jdo.PersistenceManagerFactoryClass"
and properties of the form
"javax.jdo.option.Optimistic",
"javax.jdo.option.RetainValues",
"javax.jdo.option.RestoreValues",
"javax.jdo.option.IgnoreCache",
"javax.jdo.option.NontransactionalRead",
"javax.jdo.option.NontransactionalWrite",
"javax.jdo.option.Multithreaded",
"javax.jdo.option.ConnectionUserName",
"javax.jdo.option.ConnectionPassword",
"javax.jdo.option.ConnectionURL",
"javax.jdo.option.ConnectionFactoryName",
"javax.jdo.option.ConnectionFactory2Name",
"javax.jdo.option.Mapping",
"javax.jdo.mapping.Catalog",
"javax.jdo.mapping.Schema",
"javax.jdo.option.PersistenceUnitName",
"javax.jdo.option.DetachAllOnCommit",
"javax.jdo.option.CopyOnAttach",
"javax.jdo.option.ReadOnly",
"javax.jdo.option.TransactionIsolationLevel",
"javax.jdo.option.TransactionType",
"javax.jdo.option.ServerTimeZoneID",
"javax.jdo.option.DatastoreReadTimeoutMillis",
"javax.jdo.option.DatastoreWriteTimeoutMillis",
"javax.jdo.option.Name".javax.jdo.option.InstanceLifecycleListener.{listenerClass}[=[{pcClasses}]]
where{listenerClass}
is the fully qualified name of a class that implementsInstanceLifecycleListener
, and{pcClasses}
is an optional comma- or whitespace-delimited list of persistence-capable classes to be observed; the absence of a value for a property of this form means that instances of all persistence-capable classes will be observed by an instance of the given listener class.JDO implementations are permitted to define key values of their own. Any key values not recognized by the implementation must be ignored. Key values that are recognized but not supported by an implementation must result in a
JDOFatalUserException
thrown by the method.The returned
PersistenceManagerFactory
is not configurable (thesetXXX
methods will throw an exception).JDO implementations might manage a map of instantiated
PersistenceManagerFactory
instances based on specified property key values, and return a previously instantiatedPersistenceManagerFactory
instance. In this case, the properties of the returned instance must exactly match the requested properties.- Parameters:
overrides
- Overrides of propertiesprops
- aProperties
instance with properties of thePersistenceManagerFactory
.pmfClassLoader
- the class loader to use to load thePersistenceManagerFactory
class- Returns:
- the
PersistenceManagerFactory
. - Throws:
JDOFatalUserException
- if- the pmfClassLoader passed is invalid; or
- a valid class name cannot be obtained from
either
props
or system resources (an entry in META-INF/services/javax.jdo.PersistenceManagerFactory); or - all implementations throw an exception.
- Since:
- 2.1
-
getClassNameFromURL
protected static String getClassNameFromURL(URL url) throws IOException
Get a class name from a URL. The URL is from getResources with e.g. META-INF/services/javax.jdo.PersistenceManagerFactory as the parameter. Parse the file, removing blank lines, comment lines, and comments.- Parameters:
url
- the URL of the services file- Returns:
- the name of the class contained in the file
- Throws:
IOException
- Throw if an error occurs on accessing this URL- Since:
- 2.1
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory(String name)
Returns a namedPersistenceManagerFactory
or persistence unit.- Parameters:
name
- Name of the PMF- Returns:
- PersistenceManagerFactory
- Since:
- 2.1
- See Also:
getPersistenceManagerFactory(Map,String,ClassLoader,ClassLoader)
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory(String name, ClassLoader loader)
Returns a namedPersistenceManagerFactory
or persistence unit.- Parameters:
name
- Name of the PMFloader
- ClassLoader to use- Returns:
- PersistenceManagerFactory
- Since:
- 1.0
- See Also:
getPersistenceManagerFactory(Map,String,ClassLoader,ClassLoader)
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory(String name, ClassLoader resourceLoader, ClassLoader pmfLoader)
Returns a namedPersistenceManagerFactory
or persistence unit.- Parameters:
name
- Name of the PMFresourceLoader
- ClassLoader to use for loading resourcespmfLoader
- ClassLoader to use for loading the PMF- Returns:
- PersistenceManagerFactory
- Since:
- 2.0
- See Also:
getPersistenceManagerFactory(Map,String,ClassLoader,ClassLoader)
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory(Map<?,?> overrides, String name)
Returns a namedPersistenceManagerFactory
or persistence unit.- Parameters:
name
- Name of the PMFoverrides
- Property overrides- Returns:
- PersistenceManagerFactory
- Since:
- 2.1
- See Also:
getPersistenceManagerFactory(Map,String,ClassLoader,ClassLoader)
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory(Map<?,?> overrides, String name, ClassLoader resourceLoader)
Returns a namedPersistenceManagerFactory
or persistence unit.- Parameters:
overrides
- Property overridesname
- Name of the PMFresourceLoader
- ClassLoader to use for loading resources- Returns:
- The PMF
- Since:
- 2.1
- See Also:
getPersistenceManagerFactory(Map,String,ClassLoader,ClassLoader)
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory(Map<?,?> overrides, String name, ClassLoader resourceLoader, ClassLoader pmfLoader)
Returns aPersistenceManagerFactory
configured based on the properties stored in the resource atname
, or, if not found, returns aPersistenceManagerFactory
with the given name or, if not found, returns ajavax.persistence.EntityManagerFactory
cast to aPersistenceManagerFactory
. If the name given is null or consists only of whitespace, it is interpreted asConstants.ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME
. The following are standard key names:"javax.jdo.PersistenceManagerFactoryClass"
and properties of the form
"javax.jdo.option.Optimistic",
"javax.jdo.option.RetainValues",
"javax.jdo.option.RestoreValues",
"javax.jdo.option.IgnoreCache",
"javax.jdo.option.NontransactionalRead",
"javax.jdo.option.NontransactionalWrite",
"javax.jdo.option.Multithreaded",
"javax.jdo.option.ConnectionUserName",
"javax.jdo.option.ConnectionPassword",
"javax.jdo.option.ConnectionURL",
"javax.jdo.option.ConnectionFactoryName",
"javax.jdo.option.ConnectionFactory2Name",
"javax.jdo.option.Mapping",
"javax.jdo.mapping.Catalog",
"javax.jdo.mapping.Schema",
"javax.jdo.option.PersistenceUnitName".
"javax.jdo.option.DetachAllOnCommit".
"javax.jdo.option.CopyOnAttach".
"javax.jdo.option.TransactionType".
"javax.jdo.option.ServerTimeZoneID".
"javax.jdo.option.DatastoreReadTimeoutMillis",
"javax.jdo.option.DatastoreWriteTimeoutMillis",
"javax.jdo.option.Name".javax.jdo.option.InstanceLifecycleListener.{listenerClass}[=[{pcClasses}]]
where{listenerClass}
is the fully qualified name of a class that implementsInstanceLifecycleListener
, and{pcClasses}
is an optional comma- or whitespace-delimited list of persistence-capable classes to be observed; the absence of a value for a property of this form means that instances of all persistence-capable classes will be observed by an instance of the given listener class.JDO implementations are permitted to define key values of their own. Any key values not recognized by the implementation must be ignored. Key values that are recognized but not supported by an implementation must result in a
JDOFatalUserException
thrown by the method.The returned
PersistenceManagerFactory
is not configurable (thesetXXX
methods will throw an exception). This method loads the properties found atname
, if any, viaresourceLoader
, and creates aPersistenceManagerFactory
withpmfLoader
. Any exceptions thrown during resource loading will be wrapped in aJDOFatalUserException
. If multiple PMFs with the requested name are found, aJDOFatalUserException
is thrown.- Parameters:
overrides
- a Map containing properties that override properties defined in any resources loaded according to the "name" parametername
- interpreted as the name of the resource containing the PMF properties, the name of the PMF, or the persistence unit name, in that order; if name is null, blank or whitespace, it is interpreted as indicating the anonymousPersistenceManagerFactory
.resourceLoader
- the class loader to use to load properties file resources; must be non-null ifname
is non-null or blankpmfLoader
- the class loader to use to load thePersistenceManagerFactory
orjavax.persistence.EntityManagerFactory
classes- Returns:
- the
PersistenceManagerFactory
with properties in the given resource, with the given name, or with the given persitence unit name - Since:
- 2.1
- See Also:
Constants.ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME
-
invokeGetPersistenceManagerFactoryOnImplementation
protected static PersistenceManagerFactory invokeGetPersistenceManagerFactoryOnImplementation(String pmfClassName, Map<?,?> overrides, Map<?,?> properties, ClassLoader cl)
Invoke the getPersistenceManagerFactory method on the implementation. If the overrides parameter to this method is not null, the static method with Map overrides, Map properties parameters will be invoked. If the overrides parameter to this method is null, the static method with Map properties parameter will be invoked.- Parameters:
pmfClassName
- the name of the implementation factory classoverrides
- a Map of overridesproperties
- a Map of propertiescl
- the class loader to use to load the implementation class- Returns:
- the PersistenceManagerFactory
-
loadPropertiesFromResource
protected static Map<Object,Object> loadPropertiesFromResource(ClassLoader resourceLoader, String name)
Load a Properties instance by name from the class loader.- Parameters:
resourceLoader
- the class loader from which to load the propertiesname
- the name of the resource- Returns:
- a Properties instance or null if no resource is found
-
getPropertiesFromJdoconfig
protected static Map<Object,Object> getPropertiesFromJdoconfig(String name, ClassLoader resourceLoader)
- Parameters:
name
- Name of the PMFresourceLoader
- ClassLoader to use for loading resources- Returns:
- The properties for this PMF
- Since:
- 2.1
- See Also:
getNamedPMFProperties(String,ClassLoader,String)
-
getNamedPMFProperties
protected static Map<Object,Object> getNamedPMFProperties(String name, ClassLoader resourceLoader, String jdoconfigResourceName)
Find and return the namedPersistenceManagerFactory
's properties, or null if not found. If multiple named PMF property sets with the given name are found (including anonymous ones), throwJDOFatalUserException
. This method is here only to facilitate testing; the parameter "jdoconfigResourceName" in public usage should always have the value given in the constantConstants.JDOCONFIG_RESOURCE_NAME
.- Parameters:
name
- The persistence unit name; null is disallowed.resourceLoader
- The ClassLoader used to load the standard JDO configuration file.jdoconfigResourceName
- The name of the configuration file to read. In public usage, this should always be the value ofConstants.JDOCONFIG_RESOURCE_NAME
.- Returns:
- The named
PersistenceManagerFactory
properties if found, null if not. - Throws:
JDOFatalUserException
- if multiple named PMF property sets are found with the given name, or any other exception is encountered.- Since:
- 2.1
-
getDocumentBuilderFactory
protected static DocumentBuilderFactory getDocumentBuilderFactory()
-
getDefaultDocumentBuilderFactory
protected static DocumentBuilderFactory getDefaultDocumentBuilderFactory()
-
getErrorHandler
protected static ErrorHandler getErrorHandler()
-
getDefaultErrorHandler
protected static ErrorHandler getDefaultErrorHandler()
-
readNamedPMFProperties
protected static Map<String,Map<Object,Object>> readNamedPMFProperties(URL url, String requestedPMFName, DocumentBuilderFactory factory)
Reads JDO configuration file, creates a Map for each persistence-manager-factory, then returns the map.- Parameters:
url
- URL of a JDO configuration file compliant with javax/jdo/jdoconfig.xsd.requestedPMFName
- The name of the requested persistence unit (allows for fail-fast).factory
- TheDocumentBuilderFactory
to use for XML parsing.- Returns:
- a Map<String,Map> holding persistence unit configurations; for the anonymous persistence unit, the value of the String key is the empty string, "".
-
readPropertiesFromPMFElementAttributes
protected static Properties readPropertiesFromPMFElementAttributes(Node pmfElement)
-
readPropertiesFromPMFSubelements
protected static Properties readPropertiesFromPMFSubelements(Node pmfElement, URL url)
-
isNullOrBlank
protected static boolean isNullOrBlank(String s)
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory(File propsFile)
Returns aPersistenceManagerFactory
configured based on the properties stored in the file atpropsFile
. This method is equivalent to invokinggetPersistenceManagerFactory(File,ClassLoader)
withThread.currentThread().getContextClassLoader()
as theloader
argument.- Parameters:
propsFile
- the file containing the Properties- Returns:
- the PersistenceManagerFactory
- Since:
- 2.0
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory(File propsFile, ClassLoader loader)
Returns aPersistenceManagerFactory
configured based on the properties stored in the file atpropsFile
. Creates aPersistenceManagerFactory
withloader
. AnyIOException
s orFileNotFoundException
s thrown during resource loading will be wrapped in aJDOFatalUserException
.- Parameters:
propsFile
- the file containing the Propertiesloader
- the class loader to use to load thePersistenceManagerFactory
class- Returns:
- the PersistenceManagerFactory
- Since:
- 2.0
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory(String jndiLocation, Context context)
Returns aPersistenceManagerFactory
at the JNDI location specified byjndiLocation
in the contextcontext
. Ifcontext
isnull
,new InitialContext()
will be used. This method is equivalent to invokinggetPersistenceManagerFactory(String,Context,ClassLoader)
withThread.currentThread().getContextClassLoader()
as theloader
argument.- Parameters:
jndiLocation
- the JNDI location containing the PersistenceManagerFactorycontext
- the context in which to find the named PersistenceManagerFactory- Returns:
- the PersistenceManagerFactory
- Since:
- 2.0
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory(String jndiLocation, Context context, ClassLoader loader)
Returns aPersistenceManagerFactory
at the JNDI location specified byjndiLocation
in the contextcontext
. Ifcontext
isnull
,new InitialContext()
will be used. Creates aPersistenceManagerFactory
withloader
. AnyNamingException
s thrown will be wrapped in aJDOFatalUserException
.- Parameters:
jndiLocation
- the JNDI location containing the PersistenceManagerFactorycontext
- the context in which to find the named PersistenceManagerFactoryloader
- the class loader to use to load thePersistenceManagerFactory
class- Returns:
- the PersistenceManagerFactory
- Since:
- 2.0
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory(InputStream stream)
Returns aPersistenceManagerFactory
configured based on the Properties stored in the input stream atstream
. This method is equivalent to invokinggetPersistenceManagerFactory(InputStream,ClassLoader)
withThread.currentThread().getContextClassLoader()
as theloader
argument.- Parameters:
stream
- the stream containing the Properties- Returns:
- the PersistenceManagerFactory
- Since:
- 2.0
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory(InputStream stream, ClassLoader loader)
Returns aPersistenceManagerFactory
configured based on the Properties stored in the input stream atstream
. Creates aPersistenceManagerFactory
withloader
. AnyIOException
s thrown during resource loading will be wrapped in aJDOFatalUserException
.- Parameters:
stream
- the stream containing the Propertiesloader
- the class loader to use to load thePersistenceManagerFactory
class- Returns:
- the PersistenceManagerFactory
- Since:
- 2.0
-
getEnhancer
public static JDOEnhancer getEnhancer()
Get aJDOEnhancer
using the available enhancer(s) specified in "META-INF/services/JDOEnhancer" using the context class loader.- Returns:
- the
JDOEnhancer
. - Throws:
JDOFatalUserException
- if no available enhancer- Since:
- 3.0
-
getEnhancer
public static JDOEnhancer getEnhancer(ClassLoader loader)
Get aJDOEnhancer
using the available enhancer(s) specified in "META-INF/services/JDOEnhancer"- Parameters:
loader
- the loader to use for loading the JDOEnhancer class (if any)- Returns:
- the
JDOEnhancer
. - Throws:
JDOFatalUserException
- if no available enhancer- Since:
- 3.0
-
getResources
protected static Enumeration<URL> getResources(ClassLoader resourceLoader, String resourceName) throws IOException
Get resources of the resource loader. Perform this operation in a doPrivileged block.- Parameters:
resourceLoader
- ClassLoader to use for loading resourcesresourceName
- Name of the resource- Returns:
- the resources
- Throws:
IOException
- if an error occurs accessing the resources
-
-