kiwi.util
Class ReplacementClassLoader

java.lang.Object
  extended byjava.lang.ClassLoader
      extended bykiwi.util.ReplacementClassLoader

public class ReplacementClassLoader
extends java.lang.ClassLoader

A custom class loader that can be used to selectively replace core classes.

Author:
Mark Lindner, PING Software Grou

Nested Class Summary
 
Nested classes inherited from class java.lang.ClassLoader
 
Field Summary
private  java.util.Hashtable classes
           
private  java.lang.Class clazz
           
static java.lang.String codebase
          The path (relative to the anchor) relative to which classes will be loaded.
private  java.util.Hashtable replacements
           
 
Fields inherited from class java.lang.ClassLoader
 
Constructor Summary
ReplacementClassLoader(java.lang.String[] replacementList, java.lang.Class clazz)
          Construct a new ReplacementClassLoader.
 
Method Summary
protected  java.lang.Class loadClass(java.lang.String name, boolean resolve)
          Load a class.
private  java.lang.String translateName(java.lang.String name)
           
 
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findResources, findSystemClass, getPackage, getPackages, getParent, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

codebase

public static final java.lang.String codebase
The path (relative to the anchor) relative to which classes will be loaded.

See Also:
Constant Field Values

replacements

private java.util.Hashtable replacements

classes

private java.util.Hashtable classes

clazz

private java.lang.Class clazz
Constructor Detail

ReplacementClassLoader

public ReplacementClassLoader(java.lang.String[] replacementList,
                              java.lang.Class clazz)
Construct a new ReplacementClassLoader. The class loader will become active once a class is loaded explicitly via its loadClass() method. All classes loaded by that class will, in turn, be loaded by this class loader.

Parameters:
replacementList - A list of full-qualified names of classes that will be loaded from a local source.
clazz - The class relative to which the patches resource directory is located. This resource directory contains the class hierarchy of replacement classes.
Method Detail

loadClass

protected java.lang.Class loadClass(java.lang.String name,
                                    boolean resolve)
                             throws java.lang.ClassNotFoundException
Load a class.

Parameters:
name - The fully-qualified name of the class to load.
resolve - A flag specifying whether the class should be resolved.
Throws:
java.lang.ClassNotFoundException - If the named class could not be found.

translateName

private java.lang.String translateName(java.lang.String name)