FileDocCategorySizeDatePackage
ClassLoaderObjectInputStream.javaAPI DocAndroid 1.5 API3016Wed May 06 22:42:46 BST 2009org.apache.commons.io.input

ClassLoaderObjectInputStream

public class ClassLoaderObjectInputStream extends ObjectInputStream
A special ObjectInputStream that loads a class based on a specified ClassLoader rather than the system default.

This is useful in dynamic container environments.

author
Paul Hammant
version
$Id: ClassLoaderObjectInputStream.java 437567 2006-08-28 06:39:07Z bayard $
since
Commons IO 1.1

Fields Summary
private ClassLoader
classLoader
The class loader to use.
Constructors Summary
public ClassLoaderObjectInputStream(ClassLoader classLoader, InputStream inputStream)
Constructs a new ClassLoaderObjectInputStream.

param
classLoader the ClassLoader from which classes should be loaded
param
inputStream the InputStream to work on
throws
IOException in case of an I/O error
throws
StreamCorruptedException if the stream is corrupted

        super(inputStream);
        this.classLoader = classLoader;
    
Methods Summary
protected java.lang.ClassresolveClass(java.io.ObjectStreamClass objectStreamClass)
Resolve a class specified by the descriptor using the specified ClassLoader or the super ClassLoader.

param
objectStreamClass descriptor of the class
return
the Class object described by the ObjectStreamClass
throws
IOException in case of an I/O error
throws
ClassNotFoundException if the Class cannot be found

        
        Class clazz = Class.forName(objectStreamClass.getName(), false, classLoader);

        if (clazz != null) {
            // the classloader knows of the class
            return clazz;
        } else {
            // classloader knows not of class, let the super classloader do it
            return super.resolveClass(objectStreamClass);
        }