public class MarshalOutputStream extends ObjectOutputStream implements ObjectStreamContext
ObjectOutputStream that implements the dynamic class loading
 semantics of Java(TM) Remote Method Invocation (Java RMI) argument and result marshalling (using
 RMIClassLoader).  A MarshalOutputStream writes data that is intended to be
 written by a corresponding MarshalInputStream.
 MarshalOutputStream implements the output side of the dynamic class loading
 semantics by overriding annotateClass and annotateProxyClass to annotate class descriptors in the
 stream with codebase strings obtained using RMIClassLoader.getClassAnnotation.
 
MarshalOutputStream writes class annotations to its own stream; a subclass may
 override the writeAnnotation method to write the class annotations to a
 different location.
 
MarshalOutputStream does not modify the stream protocol version of its instances'
 superclass state (see ObjectOutputStream.useProtocolVersion).
ObjectOutputStream.PutFieldbaseWireHandle, 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 and Description | 
|---|
| MarshalOutputStream(OutputStream out,
                   Collection context)Creates a new  MarshalOutputStreamthat writes marshalled data to the specified
 underlyingOutputStream. | 
| Modifier and Type | Method and Description | 
|---|---|
| protected void | annotateClass(Class cl)Annotates the stream descriptor for the class  cl. | 
| protected void | annotateProxyClass(Class cl)Annotates the stream descriptor for the proxy class  cl. | 
| Collection | getObjectStreamContext()Returns the collection of context information objects that was passed to this stream's
 constructor. | 
| protected void | writeAnnotation(String annotation)Writes a class annotation string value (possibly  null) to be read by a
 correspondingMarshalInputStreamimplementation. | 
close, defaultWriteObject, drain, enableReplaceObject, flush, putFields, replaceObject, reset, useProtocolVersion, write, write, write, writeBoolean, writeByte, writeBytes, writeChar, writeChars, writeClassDescriptor, writeDouble, writeFields, writeFloat, writeInt, writeLong, writeObject, writeObjectOverride, writeShort, writeStreamHeader, writeUnshared, writeUTFpublic MarshalOutputStream(OutputStream out, Collection context) throws IOException
MarshalOutputStream that writes marshalled data to the specified
 underlying OutputStream.
 This constructor passes out to the superclass constructor that has an
 OutputStream parameter.
 
context will be used as the return value of the created stream's getObjectStreamContext method.
out - the output stream to write marshalled data tocontext - the collection of context information objects to be returned by this stream's
                getObjectStreamContext methodIOException - if the superclass's constructor throws an IOExceptionSecurityException - if the superclass's constructor throws a SecurityExceptionNullPointerException - if out or context is
                              nullpublic Collection getObjectStreamContext()
getObjectStreamContext in interface ObjectStreamContextprotected void annotateClass(Class cl) throws IOException
cl.
 MarshalOutputStream implements this method as follows:
 
This method invokes RMIClassLoader.getClassAnnotation with cl to get the appropriate class
 annotation string value (possibly null), and then it invokes this stream's
 writeAnnotation method with that string to record the annotation.
annotateClass in class ObjectOutputStreamcl - the class to annotateIOException - if writeAnnotation throws an IOExceptionNullPointerException - if cl is nullprotected void annotateProxyClass(Class cl) throws IOException
cl.
 MarshalOutputStream implements this method as follows:
 
This method invokes RMIClassLoader.getClassAnnotation with cl to get the appropriate class
 annotation string value (possibly null), and then it invokes this stream's
 writeAnnotation method with that string to record the annotation.
annotateProxyClass in class ObjectOutputStreamcl - the proxy class to annotateIOException - if writeAnnotation throws an IOExceptionNullPointerException - if cl is nullprotected void writeAnnotation(String annotation) throws IOException
null) to be read by a
 corresponding MarshalInputStream implementation.
 MarshalOutputStream implements this method to just write the annotation value
 to this stream using writeObject.
 
A subclass can override this method to write the annotation to a different location.
annotation - the class annotation string value (possibly null) to writeIOException - if I/O exception occurs writing the annotationCopyright © GigaSpaces.