org.datanucleus
Interface ClassLoaderResolver

All Known Implementing Classes:
JDOClassLoaderResolver

public interface ClassLoaderResolver

Class to allow resolution and loading of classes in a persistence framework. Implementations are to define the rules for resolving the classes. For example JDO (used outside a J2EE container) would likely differ from EJB3 (used within a J2EE container). The search class path order is:

Version:
$Revision: 1.10 $

Method Summary
 java.lang.Class classForName(java.lang.String name)
          Class loading method.
 java.lang.Class classForName(java.lang.String name, boolean initialize)
          Class loading method, allowing for initialisation of the class.
 java.lang.Class classForName(java.lang.String name, java.lang.ClassLoader primary)
          Class loading method, allowing specification of a primary loader.
 java.lang.Class classForName(java.lang.String name, java.lang.ClassLoader primary, boolean initialize)
          Class loading method, allowing specification of a primary loader and whether the class should be initialised or not.
 java.net.URL getResource(java.lang.String resourceName, java.lang.ClassLoader primary)
          Finds the resource with the given name.
 java.util.Enumeration<java.net.URL> getResources(java.lang.String resourceName, java.lang.ClassLoader primary)
          Finds all the resources with the given name.
 boolean isAssignableFrom(java.lang.Class class_1, java.lang.String class_name_2)
          Method to test whether the type represented by the specified class_name_2 parameter can be converted to the type represented by class_1 parameter.
 boolean isAssignableFrom(java.lang.String class_name_1, java.lang.Class class_2)
          Method to test whether the type represented by the specified class_2 parameter can be converted to the type represented by class_name_1 parameter.
 boolean isAssignableFrom(java.lang.String class_name_1, java.lang.String class_name_2)
          Method to test whether the type represented by the specified class_name_2 parameter can be converted to the type represented by class_name_1 parameter.
 void registerUserClassLoader(java.lang.ClassLoader loader)
          ClassLoader registered by users to load classes.
 void setPrimary(java.lang.ClassLoader primary)
          Sets the primary classloader for the current thread.
 void setRuntimeClassLoader(java.lang.ClassLoader loader)
          ClassLoader registered to load classes created at runtime.
 void unsetPrimary()
          Unsets the primary classloader for the current thread
 

Method Detail

classForName

java.lang.Class classForName(java.lang.String name,
                             java.lang.ClassLoader primary)
Class loading method, allowing specification of a primary loader. This method does not initialize the class

Parameters:
name - Name of the Class to be loaded
primary - the primary ClassLoader to use (or null)
Returns:
The Class given the name, using the specified ClassLoader
Throws:
ClassNotResolvedException - if the class can't be found in the classpath

classForName

java.lang.Class classForName(java.lang.String name,
                             java.lang.ClassLoader primary,
                             boolean initialize)
Class loading method, allowing specification of a primary loader and whether the class should be initialised or not.

Parameters:
name - Name of the Class to be loaded
primary - the primary ClassLoader to use (or null)
initialize - whether to initialize the class or not.
Returns:
The Class given the name, using the specified ClassLoader
Throws:
ClassNotResolvedException - if the class can't be found in the classpath

classForName

java.lang.Class classForName(java.lang.String name)
Class loading method. This method does not initialize the class

Parameters:
name - Name of the Class to be loaded
Returns:
The Class given the name, using the specified ClassLoader

classForName

java.lang.Class classForName(java.lang.String name,
                             boolean initialize)
Class loading method, allowing for initialisation of the class.

Parameters:
name - Name of the Class to be loaded
initialize - whether to initialize the class or not.
Returns:
The Class given the name, using the specified ClassLoader

isAssignableFrom

boolean isAssignableFrom(java.lang.String class_name_1,
                         java.lang.Class class_2)
Method to test whether the type represented by the specified class_2 parameter can be converted to the type represented by class_name_1 parameter.

Parameters:
class_name_1 - Class name
class_2 - Class to compare against
Returns:
Whether they are assignable

isAssignableFrom

boolean isAssignableFrom(java.lang.Class class_1,
                         java.lang.String class_name_2)
Method to test whether the type represented by the specified class_name_2 parameter can be converted to the type represented by class_1 parameter.

Parameters:
class_1 - First class
class_name_2 - Class name to compare against
Returns:
Whether they are assignable

isAssignableFrom

boolean isAssignableFrom(java.lang.String class_name_1,
                         java.lang.String class_name_2)
Method to test whether the type represented by the specified class_name_2 parameter can be converted to the type represented by class_name_1 parameter.

Parameters:
class_name_1 - Class name
class_name_2 - Class name to compare against
Returns:
Whether they are assignable

setRuntimeClassLoader

void setRuntimeClassLoader(java.lang.ClassLoader loader)
ClassLoader registered to load classes created at runtime. 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 defined

registerUserClassLoader

void registerUserClassLoader(java.lang.ClassLoader loader)
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

getResources

java.util.Enumeration<java.net.URL> getResources(java.lang.String resourceName,
                                                 java.lang.ClassLoader primary)
                                                 throws java.io.IOException
Finds all the resources with the given name.

Parameters:
resourceName - the resource name. If resourceName starts with "/", remove it before searching.
primary - the primary ClassLoader to use (or null)
Returns:
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:
java.io.IOException - If I/O errors occur
See Also:
ClassLoader.getResources(java.lang.String)

getResource

java.net.URL getResource(java.lang.String resourceName,
                         java.lang.ClassLoader primary)
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.
primary - the primary ClassLoader to use (or null)
Returns:
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:
java.io.IOException - If I/O errors occur
See Also:
ClassLoader.getResource(java.lang.String)

setPrimary

void setPrimary(java.lang.ClassLoader primary)
Sets the primary classloader for the current thread. The primary should be kept in a ThreadLocal variable.

Parameters:
primary - the primary classloader

unsetPrimary

void unsetPrimary()
Unsets the primary classloader for the current thread



Copyright © 2010. All Rights Reserved.