test.contrib.classloader
Class UniversalClassLoader

java.lang.Object
  extended by java.lang.ClassLoader
      extended by java.security.SecureClassLoader
          extended by test.contrib.classloader.UniversalClassLoader

public class UniversalClassLoader
extends java.security.SecureClassLoader


Constructor Summary
UniversalClassLoader(Classpath path, java.lang.ClassLoader parent)
          Constructs a new UniversalClassLoader for the given Classpath.
 
Method Summary
 boolean addPath(Classpath path)
          Adds a new Classpath to this Classloader
protected  java.lang.Package definePackage(java.lang.String name, java.util.jar.Manifest man, java.net.URL url)
          Defines a new package by name in this ClassLoader.
protected  java.lang.Class<?> findClass(java.lang.String name)
           
protected  java.lang.String findLibrary(java.lang.String libname)
           
 java.net.URL findResource(java.lang.String name)
           
 
Methods inherited from class java.security.SecureClassLoader
defineClass, defineClass, getPermissions
 
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLoadedClass, findResources, findSystemClass, getPackage, getPackages, getParent, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, loadClass, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

UniversalClassLoader

public UniversalClassLoader(Classpath path,
                            java.lang.ClassLoader parent)
Constructs a new UniversalClassLoader for the given Classpath. The Classpaths will be searched in the order specified for classes and resources after first searching in the specified parent class loader.

If there is a security manager, this method first calls the security manager's checkCreateClassLoader method to ensure creation of a class loader is allowed.

Parameters:
path - the main classpath
parent - the parent classloader
Method Detail

findLibrary

protected java.lang.String findLibrary(java.lang.String libname)
Overrides:
findLibrary in class java.lang.ClassLoader
See Also:
ClassLoader.findLibrary(java.lang.String)

addPath

public boolean addPath(Classpath path)
Adds a new Classpath to this Classloader

Parameters:
path - the new classpath
Returns:
TRUE if added successfuly and FALSE if the classpath already exist or NULL

findResource

public java.net.URL findResource(java.lang.String name)
Overrides:
findResource in class java.lang.ClassLoader
See Also:
ClassLoader.findResource(java.lang.String)

findClass

protected java.lang.Class<?> findClass(java.lang.String name)
                                throws java.lang.ClassNotFoundException
Overrides:
findClass in class java.lang.ClassLoader
Throws:
java.lang.ClassNotFoundException
See Also:
ClassLoader.findClass(java.lang.String)

definePackage

protected java.lang.Package definePackage(java.lang.String name,
                                          java.util.jar.Manifest man,
                                          java.net.URL url)
                                   throws java.lang.IllegalArgumentException
Defines a new package by name in this ClassLoader. The attributes contained in the specified Manifest will be used to obtain package version and sealing information. For sealed packages, the additional URL specifies the code source URL from which the package was loaded.

Parameters:
name - the package name
man - the Manifest containing package version and sealing information
url - the code source url for the package, or null if none
Returns:
the newly defined Package object
Throws:
java.lang.IllegalArgumentException - if the package name duplicates an existing package either in this class loader or one of its ancestors