Package org.datanucleus
Interface ClassLoaderResolver
-
- All Known Implementing Classes:
ClassLoaderResolverImpl
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 within JavaSE would likely differ from JDO used within a JavaEE container. The search class path order is:- the primary classloader argument passed in for the specific call
- the primary classloader (set using setPrimary and kept in ThreadLocal variable)
- the current thread context classloader (Thread.currentThread().getContextClassLoader())
- the ExecutionContext classloader
- the runtime classloader (for creating implementation of persistent interfaces)
- the user registered classloader (if one was provided by persistence property datanucleus.primaryClassLoader, or the classLoader for the enhancer)
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description Class
classForName(String name)
Class loading method.Class
classForName(String name, boolean initialize)
Class loading method, allowing for initialisation of the class.Class
classForName(String name, ClassLoader primary)
Class loading method, allowing specification of a primary loader.Class
classForName(String name, ClassLoader primary, boolean initialize)
Class loading method, allowing specification of a primary loader and whether the class should be initialised or not.URL
getResource(String resourceName, ClassLoader primary)
Finds the resource with the given name.Enumeration<URL>
getResources(String resourceName, ClassLoader primary)
Finds all the resources with the given name.boolean
isAssignableFrom(Class class_1, 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(String class_name_1, 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(String class_name_1, 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(ClassLoader loader)
ClassLoader registered by users to load classes.void
setPrimary(ClassLoader primary)
Sets the primary classloader for the current thread.void
setRuntimeClassLoader(ClassLoader loader)
ClassLoader registered to load classes created at runtime.void
unsetPrimary()
Unsets the primary classloader for the current thread
-
-
-
Method Detail
-
classForName
Class classForName(String name, ClassLoader primary)
Class loading method, allowing specification of a primary loader. This method does not initialize the class. Will throw ClassNotResolvedException if the class can't be found in the classpath.- Parameters:
name
- Name of the Class to be loadedprimary
- the primary ClassLoader to use (or null)- Returns:
- The Class given the name, using the specified ClassLoader
-
classForName
Class classForName(String name, ClassLoader primary, boolean initialize)
Class loading method, allowing specification of a primary loader and whether the class should be initialised or not. Will throw ClassNotResolvedException if the class can't be found in the classpath.- Parameters:
name
- Name of the Class to be loadedprimary
- 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
-
classForName
Class classForName(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
Class classForName(String name, boolean initialize)
Class loading method, allowing for initialisation of the class.- Parameters:
name
- Name of the Class to be loadedinitialize
- whether to initialize the class or not.- Returns:
- The Class given the name, using the specified ClassLoader
-
isAssignableFrom
boolean isAssignableFrom(String class_name_1, 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 nameclass_2
- Class to compare against- Returns:
- Whether they are assignable
-
isAssignableFrom
boolean isAssignableFrom(Class class_1, 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 classclass_name_2
- Class name to compare against- Returns:
- Whether they are assignable
-
isAssignableFrom
boolean isAssignableFrom(String class_name_1, 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 nameclass_name_2
- Class name to compare against- Returns:
- Whether they are assignable
-
getResources
Enumeration<URL> getResources(String resourceName, ClassLoader primary) throws IOException
Finds all the resources with the given name.- Parameters:
resourceName
- the resource name. IfresourceName
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:
IOException
- If I/O errors occur- See Also:
ClassLoader.getResources(java.lang.String)
-
getResource
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. IfresourceName
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.
- See Also:
ClassLoader.getResource(java.lang.String)
-
setRuntimeClassLoader
void setRuntimeClassLoader(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 byloader
.- Parameters:
loader
- The ClassLoader in which classes are defined
-
registerUserClassLoader
void registerUserClassLoader(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 byloader
.- Parameters:
loader
- The ClassLoader in which classes are loaded
-
setPrimary
void setPrimary(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
-
-