Class JDOHelper
- All Implemented Interfaces:
Constants
PersistenceCapable instances without declaring them to be
PersistenceCapable.
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
FieldsModifier and TypeFieldDescription(package private) static final MapA mapping from jdoconfig.xsd element attributes to PMF properties.(package private) static JDOImplHelper.StateInterrogationObjectReturnThe stateless instance used for handling non-binary-compatible implementations of getObjectId.(package private) static JDOImplHelper.StateInterrogationObjectReturnThe stateless instance used for handling non-binary-compatible implementations of getPersistenceManager.(package private) static JDOImplHelper.StateInterrogationObjectReturnThe stateless instance used for handling non-binary-compatible implementations of getTransactionalObjectId.(package private) static JDOImplHelper.StateInterrogationObjectReturnThe stateless instance used for handling non-binary-compatible implementations of getVersion.private static JDOImplHelperThe JDOImplHelper instance used for handling non-binary-compatible implementations.private static JDOHelperThe singleton instance of JDOHelper.(package private) static JDOImplHelper.StateInterrogationBooleanReturnThe stateless instance used for handling non-binary-compatible implementations of isDeleted.(package private) static JDOImplHelper.StateInterrogationBooleanReturnThe stateless instance used for handling non-binary-compatible implementations of isDetached.(package private) static JDOImplHelper.StateInterrogationBooleanReturnThe stateless instance used for handling non-binary-compatible implementations of isDirty.(package private) static JDOImplHelper.StateInterrogationBooleanReturnThe stateless instance used for handling non-binary-compatible implementations of isNew.(package private) static JDOImplHelper.StateInterrogationBooleanReturnThe stateless instance used for handling non-binary-compatible implementations of isPersistent.(package private) static JDOImplHelper.StateInterrogationBooleanReturnThe stateless instance used for handling non-binary-compatible implementations of isTransactional.private static final I18NHelperThe Internationalization message helper.Fields inherited from interface Constants
ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME, ELEMENT_INSTANCE_LIFECYCLE_LISTENER, ELEMENT_PERSISTENCE_MANAGER_FACTORY, ELEMENT_PROPERTY, INSTANCE_LIFECYCLE_LISTENER_ATTRIBUTE_CLASSES, INSTANCE_LIFECYCLE_LISTENER_ATTRIBUTE_LISTENER, 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_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_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_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_DETACH_ALL_ON_COMMIT, 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_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, RESOURCE_LOCAL, SERVICE_LOOKUP_PMF_RESOURCE_NAME, TX_READ_COMMITTED, TX_READ_UNCOMMITTED, TX_REPEATABLE_READ, TX_SERIALIZABLE, TX_SNAPSHOT -
Constructor Summary
ConstructorsConstructorDescriptionSome applications might prefer to use instance methods instead of static methods. -
Method Summary
Modifier and TypeMethodDescription(package private) static MapCreates a map from jdoconfig.xsd element attributes to PMF properties.private static ClassforName(String name, boolean init, ClassLoader loader) Get the named class.protected static StringgetClassNameFromURL(URL url) Get a class name from a URL.private static ClassLoaderGet the context class loader associated with the current thread.protected static DocumentBuilderFactoryprotected static ErrorHandlerprotected static DocumentBuilderFactoryprotected static ErrorHandlerstatic JDOHelperReturn the singleton instance of JDOHelper.private static MethodGet the named Method from the named class.protected static MapgetNamedPMFProperties(String name, ClassLoader resourceLoader, String jdoconfigResourceName) Find and return the namedPersistenceManagerFactory's properties, or null if not found.static ObjectgetObjectId(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 CollectiongetObjectIds(Collection pcs) Get object ids for a collection of instances.static ObjectStategetObjectState(Object pc) Accessor for the state of the passed object.static PersistenceManagerReturn the associatedPersistenceManagerif there is one.static PersistenceManagerFactoryGet the anonymousPersistenceManagerFactoryconfigured 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 PersistenceManagerFactorygetPersistenceManagerFactory(File propsFile) Returns aPersistenceManagerFactoryconfigured based on the properties stored in the file atpropsFile.static PersistenceManagerFactorygetPersistenceManagerFactory(File propsFile, ClassLoader loader) Returns aPersistenceManagerFactoryconfigured based on the properties stored in the file atpropsFile.static PersistenceManagerFactoryReturns aPersistenceManagerFactoryconfigured based on the Properties stored in the input stream atstream.static PersistenceManagerFactorygetPersistenceManagerFactory(InputStream stream, ClassLoader loader) Returns aPersistenceManagerFactoryconfigured based on the Properties stored in the input stream atstream.static PersistenceManagerFactorygetPersistenceManagerFactory(ClassLoader pmfClassLoader) Get the anonymousPersistenceManagerFactoryconfigured via the standard configuration file resource "META-INF/jdoconfig.xml", using the given class loader.static PersistenceManagerFactoryReturns a namedPersistenceManagerFactoryor persistence unit.static PersistenceManagerFactorygetPersistenceManagerFactory(String name, ClassLoader loader) Returns a namedPersistenceManagerFactoryor persistence unit.static PersistenceManagerFactorygetPersistenceManagerFactory(String name, ClassLoader resourceLoader, ClassLoader pmfLoader) Returns a namedPersistenceManagerFactoryor persistence unit.static PersistenceManagerFactorygetPersistenceManagerFactory(String jndiLocation, Context context) Returns aPersistenceManagerFactoryat the JNDI location specified byjndiLocationin the contextcontext.static PersistenceManagerFactorygetPersistenceManagerFactory(String jndiLocation, Context context, ClassLoader loader) Returns aPersistenceManagerFactoryat the JNDI location specified byjndiLocationin the contextcontext.static PersistenceManagerFactorygetPersistenceManagerFactory(Map props) Get aPersistenceManagerFactorybased on aPropertiesinstance, using the current thread's context class loader to locate thePersistenceManagerFactoryclass.static PersistenceManagerFactorygetPersistenceManagerFactory(Map props, ClassLoader pmfClassLoader) Get aPersistenceManagerFactorybased on aMapand a class loader.static PersistenceManagerFactorygetPersistenceManagerFactory(Map overrides, String name) Returns a namedPersistenceManagerFactoryor persistence unit.static PersistenceManagerFactorygetPersistenceManagerFactory(Map overrides, String name, ClassLoader resourceLoader) Returns a namedPersistenceManagerFactoryor persistence unit.static PersistenceManagerFactorygetPersistenceManagerFactory(Map overrides, String name, ClassLoader resourceLoader, ClassLoader pmfLoader) Returns aPersistenceManagerFactoryconfigured based on the properties stored in the resource atname, or, if not found, returns aPersistenceManagerFactorywith the given name or, if not found, returns ajavax.persistence.EntityManagerFactorycast to aPersistenceManagerFactory.protected static PersistenceManagerFactorygetPersistenceManagerFactory(Map overrides, Map props, ClassLoader pmfClassLoader) Get aPersistenceManagerFactorybased on aMapof overrides, aMapof properties, and a class loader.protected static MapgetPropertiesFromJdoconfig(String name, ClassLoader resourceLoader) private static InputStreamgetResourceAsStream(ClassLoader resourceLoader, String name) Get the named resource as a stream from the resource loader.protected static EnumerationgetResources(ClassLoader resourceLoader, String resourceName) Get resources of the resource loader.static ObjectReturn a copy of the JDO identity associated with the parameter instance.static ObjectgetVersion(Object pc) Return the version of the instance.private static ObjectInvoke the method.protected static PersistenceManagerFactoryinvokeGetPersistenceManagerFactoryOnImplementation(String pmfClassName, Map overrides, Map properties, ClassLoader cl) Invoke the getPersistenceManagerFactory method on the implementation.static booleanTests whether the parameter instance has been deleted.static booleanisDetached(Object pc) Tests whether the parameter instance has been detached.static booleanTests whether the parameter instance is dirty.static booleanTests whether the parameter instance has been newly made persistent.protected static booleanstatic booleanisPersistent(Object pc) Tests whether the parameter instance is persistent.static booleanTests whether the parameter instance is transactional.protected static MaploadPropertiesFromResource(ClassLoader resourceLoader, String name) Load a Properties instance by name from the class loader.static voidExplicitly mark the parameter instance and field dirty.private static InputStreamopenStream(URL url) Open an input stream on the url.protected static MapreadNamedPMFProperties(URL url, String requestedPMFName, DocumentBuilderFactory factory) Reads JDO configuration file, creates a Map for each persistence-manager-factory, then returns the map.protected static PropertiesreadPropertiesFromPMFElementAttributes(Node pmfElement) protected static PropertiesreadPropertiesFromPMFSubelements(Node pmfElement, URL url)
-
Field Details
-
ATTRIBUTE_PROPERTY_XREF
A mapping from jdoconfig.xsd element attributes to PMF properties. -
msg
The Internationalization message helper. -
implHelper
The JDOImplHelper instance used for handling non-binary-compatible implementations. -
instance
-
getPersistenceManager
The stateless instance used for handling non-binary-compatible implementations of getPersistenceManager. -
getObjectId
The stateless instance used for handling non-binary-compatible implementations of getObjectId. -
getTransactionalObjectId
The stateless instance used for handling non-binary-compatible implementations of getTransactionalObjectId. -
getVersion
The stateless instance used for handling non-binary-compatible implementations of getVersion. -
isPersistent
The stateless instance used for handling non-binary-compatible implementations of isPersistent. -
isTransactional
The stateless instance used for handling non-binary-compatible implementations of isTransactional. -
isDirty
The stateless instance used for handling non-binary-compatible implementations of isDirty. -
isNew
The stateless instance used for handling non-binary-compatible implementations of isNew. -
isDeleted
The stateless instance used for handling non-binary-compatible implementations of isDeleted. -
isDetached
The stateless instance used for handling non-binary-compatible implementations of isDetached.
-
-
Constructor Details
-
JDOHelper
public JDOHelper()Some applications might prefer to use instance methods instead of static methods.- Since:
- 2.1
-
-
Method Details
-
createAttributePropertyXref
Creates a map from jdoconfig.xsd element attributes to PMF properties.- Returns:
- An unmodifiable Map of jdoconfig.xsd element attributes to PMF properties.
-
getInstance
Return the singleton instance of JDOHelper. This instance is thread-safe.- Returns:
- the thread-safe singleton JDOHelper
- Since:
- 2.1
-
getPersistenceManager
Return the associatedPersistenceManagerif there is one. Transactional and persistent instances return the associatedPersistenceManager.Transient non-transactional instances and instances of classes that do not implement
PersistenceCapablereturnnull.- Parameters:
pc- thePersistenceCapableinstance.- Returns:
- the
PersistenceManagerassociated with the parameter instance. - See Also:
-
makeDirty
Explicitly mark the parameter instance and field dirty. Normally,PersistenceCapableclasses 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
PersistenceCapableignore this method.- Parameters:
pc- thePersistenceCapableinstance.fieldName- the name of the field to be marked dirty.- See Also:
-
getObjectId
Return a copy of the JDO identity associated with the parameter instance.Persistent instances of
PersistenceCapableclasses 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
PersistenceCapablereturnnull.The ObjectId may be serialized and later restored, and used with a
PersistenceManagerfrom 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
PersistenceManagerfrom any JDO implementation that supports thePersistenceCapableclass.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:
-
getObjectIds
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:
-
getObjectIds
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:
-
getTransactionalObjectId
-
getVersion
-
isDirty
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
PersistenceCapablereturnfalse.- Parameters:
pc- thePersistenceCapableinstance.- Returns:
trueif the parameter instance has been modified in the current transaction.- See Also:
-
isTransactional
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
PersistenceCapablereturnfalse.- Parameters:
pc- thePersistenceCapableinstance.- Returns:
trueif the parameter instance is transactional.- See Also:
-
isPersistent
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
PersistenceCapablereturnfalse.- Parameters:
pc- thePersistenceCapableinstance.- Returns:
trueif the parameter instance is persistent.- See Also:
-
isNew
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
PersistenceCapablereturnfalse.- Parameters:
pc- thePersistenceCapableinstance.- Returns:
trueif the parameter instance was made persistent in the current transaction.- See Also:
-
isDeleted
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
PersistenceCapablereturnfalse.- Parameters:
pc- thePersistenceCapableinstance.- Returns:
trueif the parameter instance was deleted in the current transaction.- See Also:
-
isDetached
Tests whether the parameter instance has been detached. Instances that have been detached return true.Transient instances return false.
- Parameters:
pc- the instance- Returns:
trueif this instance is detached.- Since:
- 2.0
- See Also:
-
getObjectState
Accessor for the state of the passed object.- Parameters:
pc- The object- Returns:
- The object state
- Since:
- 2.1
-
getPersistenceManagerFactory
Get the anonymousPersistenceManagerFactoryconfigured 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
Get the anonymousPersistenceManagerFactoryconfigured 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
Get aPersistenceManagerFactorybased on aPropertiesinstance, using the current thread's context class loader to locate thePersistenceManagerFactoryclass.- Parameters:
props- aPropertiesinstance with properties of thePersistenceManagerFactory.- Returns:
- the
PersistenceManagerFactory. - See Also:
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory(Map props, ClassLoader pmfClassLoader) Get aPersistenceManagerFactorybased on aMapand 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- aMapwith properties of thePersistenceManagerFactory.pmfClassLoader- the class loader used to load thePersistenceManagerFactoryclass- Returns:
- the
PersistenceManagerFactory. - Since:
- 1.0
- See Also:
-
getPersistenceManagerFactory
protected static PersistenceManagerFactory getPersistenceManagerFactory(Map overrides, Map props, ClassLoader pmfClassLoader) Get aPersistenceManagerFactorybased on aMapof overrides, aMapof 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.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
JDOFatalUserExceptionthrown by the method.The returned
PersistenceManagerFactoryis not configurable (thesetXXXmethods will throw an exception).JDO implementations might manage a map of instantiated
PersistenceManagerFactoryinstances based on specified property key values, and return a previously instantiatedPersistenceManagerFactoryinstance. In this case, the properties of the returned instance must exactly match the requested properties.- Parameters:
props- aPropertiesinstance with properties of thePersistenceManagerFactory.pmfClassLoader- the class loader to use to load thePersistenceManagerFactoryclass- Returns:
- the
PersistenceManagerFactory. - Throws:
JDOFatalUserException- if- the pmfClassLoader passed is invalid; or
- a valid class name cannot be obtained from
either
propsor system resources (an entry in META-INF/services/javax.jdo.PersistenceManagerFactory); or - all implementations throw an exception.
- Since:
- 2.1
-
getClassNameFromURL
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- Since:
- 2.1
-
getPersistenceManagerFactory
Returns a namedPersistenceManagerFactoryor persistence unit.- Since:
- 2.1
- See Also:
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory(String name, ClassLoader loader) Returns a namedPersistenceManagerFactoryor persistence unit.- Since:
- 1.0
- See Also:
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory(String name, ClassLoader resourceLoader, ClassLoader pmfLoader) Returns a namedPersistenceManagerFactoryor persistence unit.- Since:
- 2.0
- See Also:
-
getPersistenceManagerFactory
Returns a namedPersistenceManagerFactoryor persistence unit.- Since:
- 2.1
- See Also:
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory(Map overrides, String name, ClassLoader resourceLoader) Returns a namedPersistenceManagerFactoryor persistence unit.- Since:
- 2.1
- See Also:
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory(Map overrides, String name, ClassLoader resourceLoader, ClassLoader pmfLoader) Returns aPersistenceManagerFactoryconfigured based on the properties stored in the resource atname, or, if not found, returns aPersistenceManagerFactorywith the given name or, if not found, returns ajavax.persistence.EntityManagerFactorycast 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.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
JDOFatalUserExceptionthrown by the method.The returned
PersistenceManagerFactoryis not configurable (thesetXXXmethods will throw an exception). This method loads the properties found atname, if any, viaresourceLoader, and creates aPersistenceManagerFactorywithpmfLoader. Any exceptions thrown during resource loading will be wrapped in aJDOFatalUserException. If multiple PMFs with the requested name are found, aJDOFatalUserExceptionis 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 ifnameis non-null or blankpmfLoader- the class loader to use to load thePersistenceManagerFactoryorjavax.persistence.EntityManagerFactoryclasses- Returns:
- the
PersistenceManagerFactorywith properties in the given resource, with the given name, or with the given persitence unit name - Since:
- 2.1
- See Also:
-
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
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
- Since:
- 2.1
- See Also:
-
getNamedPMFProperties
protected static Map 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
PersistenceManagerFactoryproperties 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
-
getDefaultDocumentBuilderFactory
-
getErrorHandler
-
getDefaultErrorHandler
-
readNamedPMFProperties
protected static Map 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- TheDocumentBuilderFactoryto use for XML parsing.- Returns:
- a Mapinvalid input: '<'String,Map> holding persistence unit configurations; for the anonymous persistence unit, the value of the String key is the empty string, "".
-
readPropertiesFromPMFElementAttributes
-
readPropertiesFromPMFSubelements
-
isNullOrBlank
-
getPersistenceManagerFactory
Returns aPersistenceManagerFactoryconfigured based on the properties stored in the file atpropsFile. This method is equivalent to invokinggetPersistenceManagerFactory(File,ClassLoader)withThread.currentThread().getContextClassLoader()as theloaderargument.- Parameters:
propsFile- the file containing the Properties- Returns:
- the PersistenceManagerFactory
- Since:
- 2.0
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory(File propsFile, ClassLoader loader) Returns aPersistenceManagerFactoryconfigured based on the properties stored in the file atpropsFile. Creates aPersistenceManagerFactorywithloader. AnyIOExceptions orFileNotFoundExceptions thrown during resource loading will be wrapped in aJDOFatalUserException.- Parameters:
propsFile- the file containing the Propertiesloader- the class loader to use to load thePersistenceManagerFactoryclass- Returns:
- the PersistenceManagerFactory
- Since:
- 2.0
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory(String jndiLocation, Context context) Returns aPersistenceManagerFactoryat the JNDI location specified byjndiLocationin the contextcontext. Ifcontextisnull,new InitialContext()will be used. This method is equivalent to invokinggetPersistenceManagerFactory(String,Context,ClassLoader)withThread.currentThread().getContextClassLoader()as theloaderargument.- 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 aPersistenceManagerFactoryat the JNDI location specified byjndiLocationin the contextcontext. Ifcontextisnull,new InitialContext()will be used. Creates aPersistenceManagerFactorywithloader. AnyNamingExceptions 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 thePersistenceManagerFactoryclass- Returns:
- the PersistenceManagerFactory
- Since:
- 2.0
-
getPersistenceManagerFactory
Returns aPersistenceManagerFactoryconfigured based on the Properties stored in the input stream atstream. This method is equivalent to invokinggetPersistenceManagerFactory(InputStream,ClassLoader)withThread.currentThread().getContextClassLoader()as theloaderargument.- Parameters:
stream- the stream containing the Properties- Returns:
- the PersistenceManagerFactory
- Since:
- 2.0
-
getPersistenceManagerFactory
public static PersistenceManagerFactory getPersistenceManagerFactory(InputStream stream, ClassLoader loader) Returns aPersistenceManagerFactoryconfigured based on the Properties stored in the input stream atstream. Creates aPersistenceManagerFactorywithloader. AnyIOExceptions thrown during resource loading will be wrapped in aJDOFatalUserException.- Parameters:
stream- the stream containing the Propertiesloader- the class loader to use to load thePersistenceManagerFactoryclass- Returns:
- the PersistenceManagerFactory
- Since:
- 2.0
-
getContextClassLoader
Get the context class loader associated with the current thread. This is done in a doPrivileged block because it is a secure method.- Returns:
- the current thread's context class loader.
- Since:
- 2.0
-
getResourceAsStream
Get the named resource as a stream from the resource loader. Perform this operation in a doPrivileged block. -
getMethod
private static Method getMethod(Class implClass, String methodName, Class[] parameterTypes) throws NoSuchMethodException Get the named Method from the named class. Perform this operation in a doPrivileged block.- Parameters:
implClass- the classmethodName- the name of the methodparameterTypes- the parameter types of the method- Returns:
- the Method instance
- Throws:
NoSuchMethodException
-
invoke
private static Object invoke(Method method, Object instance, Object[] parameters) throws IllegalAccessException, InvocationTargetException Invoke the method. Perform this operation in a doPrivileged block. -
getResources
protected static Enumeration getResources(ClassLoader resourceLoader, String resourceName) throws IOException Get resources of the resource loader. Perform this operation in a doPrivileged block.- Parameters:
resourceLoader-resourceName-- Returns:
- the resources
- Throws:
IOException
-
forName
private static Class forName(String name, boolean init, ClassLoader loader) throws ClassNotFoundException Get the named class. Perform this operation in a doPrivileged block.- Parameters:
name- the name of the classinit- whether to initialize the classloader- which class loader to use- Returns:
- the class
- Throws:
ClassNotFoundException
-
openStream
Open an input stream on the url. Perform this operation in a doPrivileged block.- Parameters:
url-- Returns:
- the input stream
- Throws:
IOException
-