org.objectweb.carol.irmi
Class RMIObjectInputStream

java.lang.Object
  extended byjava.io.InputStream
      extended byjava.io.ObjectInputStream
          extended byorg.objectweb.carol.irmi.RMIObjectInputStream
All Implemented Interfaces:
java.io.DataInput, java.io.ObjectInput, java.io.ObjectStreamConstants

public class RMIObjectInputStream
extends java.io.ObjectInputStream

RMIObjectInputStream is a specialized subclass of ObjectInputStream used by this RMI implementation. It must be used in concert with RMIObjectOutputStream. Specialized behavior includes class resolution using RMIClassLoader, and caching of class descriptors.

Author:
Rafael H. Schloming <rhs@mit.edu>

Nested Class Summary
 
Nested classes 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_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_EXCEPTION, TC_LONGSTRING, TC_MAX, TC_NULL, TC_OBJECT, TC_PROXYCLASSDESC, TC_REFERENCE, TC_RESET, TC_STRING
 
Constructor Summary
RMIObjectInputStream(java.io.InputStream in)
          Constructs a new RMIObjectInputStream that ready from the specified InputStream.
 
Method Summary
protected  java.io.ObjectStreamClass readClassDescriptor()
          Implementation of the ObjectInputStream.readClassDescriptor() callback.
protected  void readStreamHeader()
          Implementation of the ObjectInputStream.readStreamHeader() callback.
protected  java.lang.Class resolveClass(java.io.ObjectStreamClass desc)
          Implementation of the ObjectInputStream.resolveClass(ObjectStreamClass) callback.
protected  java.lang.Class resolveProxyClass(java.lang.String[] interfaces)
          Implementation of the ObjectInputStream.resolveProxyClass(String[]) callback.
 
Methods inherited from class java.io.ObjectInputStream
available, close, defaultReadObject, enableResolveObject, read, read, readBoolean, readByte, readChar, readDouble, readFields, readFloat, readFully, readFully, readInt, readLine, readLong, readObject, readObjectOverride, readShort, 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

RMIObjectInputStream

public RMIObjectInputStream(java.io.InputStream in)
                     throws java.io.IOException
Constructs a new RMIObjectInputStream that ready from the specified InputStream.

Parameters:
in - the InputStream to use for input
Method Detail

resolveClass

protected java.lang.Class resolveClass(java.io.ObjectStreamClass desc)
                                throws java.io.IOException,
                                       java.lang.ClassNotFoundException
Implementation of the ObjectInputStream.resolveClass(ObjectStreamClass) callback. This implementation delegates to RMIClassLoader.

Parameters:
desc - the ObjectStreamClass serialized representation of the class object
Returns:
the resolved Class object corresponding to the serialized class object
Throws:
java.io.IOException - if there is an error with the underlying stream
java.lang.ClassNotFoundException - if the serialized class cannot be located

resolveProxyClass

protected java.lang.Class resolveProxyClass(java.lang.String[] interfaces)
                                     throws java.io.IOException,
                                            java.lang.ClassNotFoundException
Implementation of the ObjectInputStream.resolveProxyClass(String[]) callback. This implementation delegates to RMIClassLoader.

Parameters:
interfaces - the interfaces implemented by the serialized proxy class
Returns:
the resolved Class object corresponding to the serialized class object
Throws:
java.io.IOException - if there is an error with the underlying stream
java.lang.ClassNotFoundException - if any of the serialized interfaces cannot be located

readClassDescriptor

protected java.io.ObjectStreamClass readClassDescriptor()
                                                 throws java.io.IOException,
                                                        java.lang.ClassNotFoundException
Implementation of the ObjectInputStream.readClassDescriptor() callback. This implementation reads a class id from the underlying input stream and either delegates to its superclass to read in a full class descriptor or uses the id to return a previosuly read class descriptor.

Returns:
the serialized ObjectStreamClass
Throws:
java.io.IOException
java.lang.ClassNotFoundException

readStreamHeader

protected void readStreamHeader()
Implementation of the ObjectInputStream.readStreamHeader() callback. This implementation is specifically overridden to do nothing. See ObjectOutputStream.writeStreamHeader() for details.