GigaSpaces XAP 9.5 API

net.jini.io
Class MarshalOutputStream

java.lang.Object
  extended by java.io.OutputStream
      extended by java.io.ObjectOutputStream
          extended by net.jini.io.MarshalOutputStream
All Implemented Interfaces:
Closeable, DataOutput, Flushable, ObjectOutput, ObjectStreamConstants, ObjectStreamContext

public class MarshalOutputStream
extends ObjectOutputStream
implements ObjectStreamContext

An extension of 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).

Since:
2.0
Author:
Sun Microsystems, Inc.

Nested Class Summary
 
Nested classes/interfaces inherited from class java.io.ObjectOutputStream
ObjectOutputStream.PutField
 
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
MarshalOutputStream(OutputStream out, Collection context)
          Creates a new MarshalOutputStream that writes marshalled data to the specified underlying OutputStream.
 
Method Summary
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 corresponding MarshalInputStream implementation.
 
Methods inherited from class java.io.ObjectOutputStream
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, writeUTF
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MarshalOutputStream

public MarshalOutputStream(OutputStream out,
                           Collection context)
                    throws IOException
Creates a new 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.

Parameters:
out - the output stream to write marshalled data to
context - the collection of context information objects to be returned by this stream's getObjectStreamContext method
Throws:
IOException - if the superclass's constructor throws an IOException
SecurityException - if the superclass's constructor throws a SecurityException
NullPointerException - if out or context is null
Method Detail

getObjectStreamContext

public Collection getObjectStreamContext()
Returns the collection of context information objects that was passed to this stream's constructor.

Specified by:
getObjectStreamContext in interface ObjectStreamContext
Returns:
a collection of this stream's context objects

annotateClass

protected void annotateClass(Class cl)
                      throws IOException
Annotates the stream descriptor for the class 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.

Overrides:
annotateClass in class ObjectOutputStream
Parameters:
cl - the class to annotate
Throws:
IOException - if writeAnnotation throws an IOException
NullPointerException - if cl is null

annotateProxyClass

protected void annotateProxyClass(Class cl)
                           throws IOException
Annotates the stream descriptor for the proxy class 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.

Overrides:
annotateProxyClass in class ObjectOutputStream
Parameters:
cl - the proxy class to annotate
Throws:
IOException - if writeAnnotation throws an IOException
NullPointerException - if cl is null

writeAnnotation

protected void writeAnnotation(String annotation)
                        throws IOException
Writes a class annotation string value (possibly 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.

Parameters:
annotation - the class annotation string value (possibly null) to write
Throws:
IOException - if I/O exception occurs writing the annotation

GigaSpaces XAP 9.5 API

Copyright © GigaSpaces.