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.PutField
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 and Description |
---|
MarshalOutputStream(OutputStream out,
Collection context)
Creates a new
MarshalOutputStream that writes marshalled data to the specified
underlying OutputStream . |
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
corresponding MarshalInputStream implementation. |
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
public 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 IOException
SecurityException
- if the superclass's constructor throws a SecurityException
NullPointerException
- if out
or context
is
null
public Collection getObjectStreamContext()
getObjectStreamContext
in interface ObjectStreamContext
protected 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 ObjectOutputStream
cl
- the class to annotateIOException
- if writeAnnotation
throws an IOException
NullPointerException
- if cl
is null
protected 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 ObjectOutputStream
cl
- the proxy class to annotateIOException
- if writeAnnotation
throws an IOException
NullPointerException
- if cl
is null
protected 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.