csheets.io
Class DynamicObjectInputStream

java.lang.Object
  extended by java.io.InputStream
      extended by java.io.ObjectInputStream
          extended by csheets.io.DynamicObjectInputStream
All Implemented Interfaces:
Closeable, DataInput, ObjectInput, ObjectStreamConstants

public class DynamicObjectInputStream
extends ObjectInputStream

An object input stream that resolves class descriptors through a given class loader, and thereby allowing dynamic deserialization.

Author:
Einar Pehrson

Nested Class Summary
 
Nested classes/interfaces inherited from class java.io.ObjectInputStream
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
DynamicObjectInputStream(InputStream stream, ClassLoader loader)
          Creates a new dynamic object input stream.
 
Method Summary
protected  Class<?> resolveClass(ObjectStreamClass desc)
          Load the local class equivalent of the specified stream class descriptor, by first querying the given class loader.
 
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, resolveProxyClass, 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

DynamicObjectInputStream

public DynamicObjectInputStream(InputStream stream,
                                ClassLoader loader)
                         throws IOException
Creates a new dynamic object input stream.

Parameters:
stream - the input stream to read from
loader - the class loader queried for class descriptor resolution
Throws:
IOException - if an I/O error occurs while reading stream header
Method Detail

resolveClass

protected Class<?> resolveClass(ObjectStreamClass desc)
                         throws IOException,
                                ClassNotFoundException
Load the local class equivalent of the specified stream class descriptor, by first querying the given class loader.

Overrides:
resolveClass in class ObjectInputStream
Parameters:
desc - the class descriptor
Throws:
IOException - if an I/O error occurs while resolving
ClassNotFoundException - if the class of a serialized object cannot be found