| java.lang.Object org.jpox.JDOClassLoaderResolver
JDOClassLoaderResolver | public class JDOClassLoaderResolver implements ClassLoaderResolver(Code) | | A basic implementation of a ClassLoaderResolver for JDO. A ClassLoaderResolver
provides a series of methods for resolving classes from their names.
It supports up to 3 class loaders.
JDO2 Spec section 12.5
The class loaders will be used in this order:
- The loader that loaded the class or instance referred to in the API that caused this class to be loaded.
- In case of query, this is the loader of the candidate class, or the loader of the object passed to the newQuery
- In case of navigation from a persistent instance, this is the loader of the class of the instance.
- In the case of getExtent with subclasses, this is the loader of the candidate class.
- In the case of getObjectById, this is the loader of the object id instance.
- Other cases do not have an explicit loader.
- The loader returned in the current context by Thread.getContextClassLoader().
- The loader returned by Thread.getContextClassLoader() at the time of PersistenceManagerFactory.getPersistenceManager().
- The loader registered for dynamically creating and loading classes at runtime.
version: $Revision: 1.38 $ |
Method Summary | |
public Class | classForName(String name, ClassLoader primary) JDO's Class Loading mechanism (Spec 1.0.1 Chapter 12.5).
Try 3 loaders, starting with user-supplied loader, then try
the current thread's loader, and finally try the PM context
loader. | public Class | classForName(String name, ClassLoader primary, boolean initialize) JDO's Class Loading mechanism (Spec 1.0.1 Chapter 12.5)
Parameters: name - Name of the Class to be loaded Parameters: primary - the primary ClassLoader to use (or null) Parameters: initialize - whether to initialize the class or not. | public Class | classForName(String name) JDO's Class Loading mechanism (Spec 1.0.1 Chapter 12.5). | public Class | classForName(String name, boolean initialize) JDO's Class Loading mechanism (Spec 1.0.1 Chapter 12.5)
Parameters: name - Name of the Class to be loaded Parameters: initialize - whether to initialize the class or not. | public URL | getResource(String resourceName, ClassLoader primary) Finds the resource with the given name.
Parameters: resourceName - the path to resource name relative to the classloader root path. | public Enumeration | getResources(String resourceName, ClassLoader primary) Finds all the resources with the given name.
Parameters: resourceName - the resource name. | public boolean | isAssignableFrom(String class_name_1, String class_name_2) Utility to check the assignability of 2 classes in accordance with JDO's
Class Loading mechanism. | public boolean | isAssignableFrom(String class_name_1, Class class_2) Utility to check the assignability of 2 classes in accordance with JDO's
Class Loading mechanism. | public boolean | isAssignableFrom(Class class_1, String class_name_2) Utility to check the assignability of 2 classes in accordance with JDO's
Class Loading mechanism. | public void | registerClassLoader(ClassLoader loader) | public void | registerUserClassLoader(ClassLoader loader) ClassLoader registered by users to load classes. | public void | setPrimary(ClassLoader primary) | public void | unsetPrimary() |
LOCALISER | final protected static Localiser LOCALISER(Code) | | Localisation utility for output messages
|
loadedClasses | protected Map loadedClasses(Code) | | Cache for loaded classes
|
pmContextLoader | final protected ClassLoader pmContextLoader(Code) | | ClassLoader initialised by the PM creation.
|
pmContextLoaderHashCode | protected int pmContextLoaderHashCode(Code) | | Hash code cache for performance improvement
|
registeredLoader | protected ClassLoader registeredLoader(Code) | | ClassLoader registered to load runtime created classes.
|
registeredLoaderHashCode | protected int registeredLoaderHashCode(Code) | | Hash code cache for performance improvement
|
resources | protected Map resources(Code) | | Cache for resources
|
unloadedClasses | protected Map unloadedClasses(Code) | | Cache for loaded classes
|
userRegisteredLoader | protected ClassLoader userRegisteredLoader(Code) | | ClassLoader registered to load classes.
|
userRegisteredLoaderHashCode | protected int userRegisteredLoaderHashCode(Code) | | Hash code cache for performance improvement
|
JDOClassLoaderResolver | public JDOClassLoaderResolver(ClassLoader pmLoader)(Code) | | Constructor for PersistenceManager cases.
Parameters: pmLoader - Loader from PM initialisation time. |
JDOClassLoaderResolver | public JDOClassLoaderResolver()(Code) | | Constructor for non-PersistenceManager cases so there is no
PM context loader.
|
classForName | public Class classForName(String name, ClassLoader primary)(Code) | | JDO's Class Loading mechanism (Spec 1.0.1 Chapter 12.5).
Try 3 loaders, starting with user-supplied loader, then try
the current thread's loader, and finally try the PM context
loader. This method does not initialize the class
Parameters: name - Name of the Class to be loaded Parameters: primary - primary ClassLoader to use (or null) The class given the name, using the required loader. throws: ClassNotResolvedException - if the class can't be found in the classpath |
classForName | public Class classForName(String name, ClassLoader primary, boolean initialize)(Code) | | JDO's Class Loading mechanism (Spec 1.0.1 Chapter 12.5)
Parameters: name - Name of the Class to be loaded Parameters: primary - the primary ClassLoader to use (or null) Parameters: initialize - whether to initialize the class or not. The Class given the name, using the specified ClassLoader throws: ClassNotResolvedException - if the class can't be found in the classpath |
classForName | public Class classForName(String name)(Code) | | JDO's Class Loading mechanism (Spec 1.0.1 Chapter 12.5). This method does not initialize the class
Parameters: name - Name of the Class to be loaded The class given the name, using the required loader. |
classForName | public Class classForName(String name, boolean initialize)(Code) | | JDO's Class Loading mechanism (Spec 1.0.1 Chapter 12.5)
Parameters: name - Name of the Class to be loaded Parameters: initialize - whether to initialize the class or not. The Class given the name, using the specified ClassLoader throws: ClassNotResolvedException - if the class can't be found in the classpath |
getResource | public URL getResource(String resourceName, ClassLoader primary)(Code) | | Finds the resource with the given name.
Parameters: resourceName - the path to resource name relative to the classloader root path. If resourceName starts with "/", remove it before searching. Parameters: primary - the primary ClassLoader to use (or null) A URL object for reading the resource, or null if the resource could not be found or the invoker doesn't have adequate privileges to get the resource. throws: IOException - If I/O errors occur See Also: ClassLoader.getResource(java.lang.String) |
getResources | public Enumeration getResources(String resourceName, ClassLoader primary) throws IOException(Code) | | Finds all the resources with the given name.
Parameters: resourceName - the resource name. If resourceName starts with "/", remove it before searching. Parameters: primary - the primary ClassLoader to use (or null) An enumeration of URL objects for the resource. If no resources could be found, the enumeration will be empty. Resources that the class loader doesn't have access to will not be in the enumeration. throws: IOException - If I/O errors occur See Also: ClassLoader.getResources(java.lang.String) |
isAssignableFrom | public boolean isAssignableFrom(String class_name_1, String class_name_2)(Code) | | Utility to check the assignability of 2 classes in accordance with JDO's
Class Loading mechanism. This will check
class_1.isAssignableFrom(class_2);
Parameters: class_name_1 - Name of first class Parameters: class_name_2 - Name of second class Whether Class 2 is assignable from Class 1 |
isAssignableFrom | public boolean isAssignableFrom(String class_name_1, Class class_2)(Code) | | Utility to check the assignability of 2 classes in accordance with JDO's
Class Loading mechanism. This will check
class_1.isAssignableFrom(class_2);
Parameters: class_name_1 - Name of first class Parameters: class_2 - Second class Whether Class 2 is assignable from Class 1 |
isAssignableFrom | public boolean isAssignableFrom(Class class_1, String class_name_2)(Code) | | Utility to check the assignability of 2 classes in accordance with JDO's
Class Loading mechanism. This will check
class_1.isAssignableFrom(class_2);
Parameters: class_1 - First class Parameters: class_name_2 - Name of second class Whether Class 2 is assignable from Class 1 |
registerClassLoader | public void registerClassLoader(ClassLoader loader)(Code) | | ClassLoader registered to load classes created at runtime
Parameters: loader - The ClassLoader in which classes are defined |
registerUserClassLoader | public void registerUserClassLoader(ClassLoader loader)(Code) | | ClassLoader registered by users to load classes. One ClassLoader can
be registered, and if one ClassLoader is already registered, the registered ClassLoader
is replaced by loader .
Parameters: loader - The ClassLoader in which classes are loaded |
setPrimary | public void setPrimary(ClassLoader primary)(Code) | | Sets the primary classloader for the current thread
Parameters: primary - the primary classloader |
unsetPrimary | public void unsetPrimary()(Code) | | Unsets the primary classloader for the current thread
|
|
|