org.objectweb.fractal.rmi.io
Class RmiObjectInputStream

java.lang.Object
  extended byjava.io.InputStream
      extended byjava.io.ObjectInputStream
          extended byorg.objectweb.fractal.rmi.io.RmiObjectInputStream
All Implemented Interfaces:
DataInput, ObjectInput, ObjectStreamConstants

public class RmiObjectInputStream
extends ObjectInputStream

An ObjectInputStream that replaces Ref objects with stubs.


Nested Class Summary
 
Nested classes inherited from class java.io.ObjectInputStream
ObjectInputStream.GetField
 
Field Summary
protected  String codeBase
          The code base to be used to load classes.
protected  ContextFactory contextFactory
          The context factory used to create hints for the bind method.
protected  NamingContext domain
          The naming context used to decode the identifiers contained in Ref objects.
 
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(InputStream is, NamingContext domain, ContextFactory contextFactory)
          Constructs a new RmiObjectInputStream.
 
Method Summary
protected  Class resolveClass(ObjectStreamClass desc)
           
protected  Object resolveObject(Object obj)
          Replaces Ref objects with corresponding stubs.
 
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, 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
 

Field Detail

domain

protected NamingContext domain
The naming context used to decode the identifiers contained in Ref objects.


contextFactory

protected ContextFactory contextFactory
The context factory used to create hints for the bind method.


codeBase

protected String codeBase
The code base to be used to load classes.

Constructor Detail

RmiObjectInputStream

public RmiObjectInputStream(InputStream is,
                            NamingContext domain,
                            ContextFactory contextFactory)
                     throws IOException
Constructs a new RmiObjectInputStream.

Parameters:
is - the underlying input stream.
domain - the naming context to be used to decode the identifiers contained in Ref objects.
contextFactory - the context factory to be used to create hints for the bind method.
Throws:
IOException - if the super constructor throws an exception.
Method Detail

resolveObject

protected Object resolveObject(Object obj)
                        throws IOException
Replaces Ref objects with corresponding stubs. This method uses the domain to decode the identifier encoded in a Ref object, and then uses the bind method of the decoded identifier to get a stub corresponding to this identifier. The type stored in the Ref object is passed as an hint to the bind method.

Parameters:
obj - an object.
Returns:
a stub if obj is a Ref object, or obj otherwise.
Throws:
IOException - if a Ref object cannot be replaced with a stub.

resolveClass

protected Class resolveClass(ObjectStreamClass desc)
                      throws IOException,
                             ClassNotFoundException
Throws:
IOException
ClassNotFoundException