org.openbp.common.classloader
Class ClassLoaderObjectInputStream

java.lang.Object
  extended by java.io.InputStream
      extended by java.io.ObjectInputStream
          extended by org.openbp.common.classloader.ClassLoaderObjectInputStream
All Implemented Interfaces:
java.io.Closeable, java.io.DataInput, java.io.ObjectInput, java.io.ObjectStreamConstants

public class ClassLoaderObjectInputStream
extends java.io.ObjectInputStream

Object input stream for deserialization of objects that require a custom class loader. Subclasses the regular object input stream, but uses a partilcar class loader for object construction.

Author:
Heiko Erhardt

Nested Class Summary
 
Nested classes/interfaces inherited from class java.io.ObjectInputStream
java.io.ObjectInputStream.GetField
 
Field Summary
 
Fields inherited from interface java.io.ObjectStreamConstants
baseWireHandle, PROTOCOL_VERSION_1, PROTOCOL_VERSION_2, SC_BLOCK_DATA, SC_ENUM, SC_EXTERNALIZABLE, SC_SERIALIZABLE, SC_WRITE_METHOD, STREAM_MAGIC, STREAM_VERSION, SUBCLASS_IMPLEMENTATION_PERMISSION, SUBSTITUTION_PERMISSION, TC_ARRAY, TC_BASE, TC_BLOCKDATA, TC_BLOCKDATALONG, TC_CLASS, TC_CLASSDESC, TC_ENDBLOCKDATA, TC_ENUM, TC_EXCEPTION, TC_LONGSTRING, TC_MAX, TC_NULL, TC_OBJECT, TC_PROXYCLASSDESC, TC_REFERENCE, TC_RESET, TC_STRING
 
Constructor Summary
ClassLoaderObjectInputStream(java.io.InputStream in)
          Creates an object input stream that reads from the specified input stream.
 
Method Summary
 java.lang.ClassLoader getClassLoader()
          Gets the class loader for this stream.
protected  java.lang.Class resolveClass(java.io.ObjectStreamClass v)
          Load the local class equivalent of the specified stream class description.
protected  java.lang.Class resolveProxyClass(java.lang.String[] interfaces)
          Returns a proxy class that implements the interfaces named in a proxy class descriptor; subclasses may implement this method to read custom data from the stream along with the descriptors for dynamic proxy classes, allowing them to use an alternate loading mechanism for the interfaces and the proxy class.
 void setClassLoader(java.lang.ClassLoader classLoader)
          Sets the class loader for this stream.
 
Methods inherited from class java.io.ObjectInputStream
available, close, defaultReadObject, enableResolveObject, read, read, readBoolean, readByte, readChar, readClassDescriptor, readDouble, readFields, readFloat, readFully, readFully, readInt, readLine, readLong, readObject, readObjectOverride, readShort, readStreamHeader, readUnshared, readUnsignedByte, readUnsignedShort, readUTF, registerValidation, resolveObject, skipBytes
 
Methods inherited from class java.io.InputStream
mark, markSupported, read, reset, skip
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.io.ObjectInput
read, skip
 

Constructor Detail

ClassLoaderObjectInputStream

public ClassLoaderObjectInputStream(java.io.InputStream in)
                             throws java.io.IOException
Creates an object input stream that reads from the specified input stream.

Parameters:
in - The underlying input stream from which to read
Throws:
StreamCorruptedException - The version or magic number are incorrect.
java.io.IOException - An exception occurred in the underlying stream.
Method Detail

getClassLoader

public java.lang.ClassLoader getClassLoader()
Gets the class loader for this stream.


setClassLoader

public void setClassLoader(java.lang.ClassLoader classLoader)
Sets the class loader for this stream.


resolveClass

protected java.lang.Class resolveClass(java.io.ObjectStreamClass v)
                                throws java.io.IOException,
                                       java.lang.ClassNotFoundException
Load the local class equivalent of the specified stream class description. Uses the class loader for this stream.

Overrides:
resolveClass in class java.io.ObjectInputStream
Parameters:
v - an instance of class ObjectStreamClass
Returns:
a Class object corresponding to v
Throws:
java.io.IOException - Any of the usual Input/Output exceptions.
java.lang.ClassNotFoundException - If class of a serialized object cannot be found.

resolveProxyClass

protected java.lang.Class resolveProxyClass(java.lang.String[] interfaces)
                                     throws java.io.IOException,
                                            java.lang.ClassNotFoundException
Returns a proxy class that implements the interfaces named in a proxy class descriptor; subclasses may implement this method to read custom data from the stream along with the descriptors for dynamic proxy classes, allowing them to use an alternate loading mechanism for the interfaces and the proxy class.

Overrides:
resolveProxyClass in class java.io.ObjectInputStream
Parameters:
interfaces - the list of interface names that were deserialized in the proxy class descriptor
Returns:
a proxy class for the specified interfaces
Throws:
java.io.IOException - any exception thrown by the underlying InputStream
java.lang.ClassNotFoundException - if the proxy class or any of the named interfaces could not be found


Copyright © 2011. All Rights Reserved.