public class AnnotatedObjectOutputStream extends ObjectOutputStream
ObjectOutputStream
that implements the dynamic class loading
semantics of RMI argument and result marshalling (using RMIClassLoader
). A
AnnotatedObjectOutputStream
writes data that is intended to be written by a
corresponding AnnotatedObjectInputStream
.
AnnotatedObjectOutputStream
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
.
AnnotatedObjectOutputStream
writes class annotations to its own stream; a
subclass may override the writeAnnotation
method to write the class
annotations to a different location.
AnnotatedObjectOutputStream
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 |
---|
AnnotatedObjectOutputStream(OutputStream out)
Creates a new
AnnotatedObjectOutputStream that writes marshaled 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 . |
protected void |
writeAnnotation(Class cl)
First checks that this class wasn't written already, if it does do nothing.
|
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 AnnotatedObjectOutputStream(OutputStream out) throws IOException
AnnotatedObjectOutputStream
that writes marshaled 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 marshaled 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
protected void annotateClass(Class cl) throws IOException
cl
.
AnnotatedObjectOutputStream
implements this method as follows:
This method invokes this stream's writeAnnotation
method with the
given cl.
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
.
AnnotatedObjectOutputStream
implements this method as follows:
This method invokes this stream's writeAnnotation
method with the
given cl.
annotateProxyClass
in class ObjectOutputStream
cl
- the proxy class to annotateIOException
- if writeAnnotation
throws an IOException
NullPointerException
- if cl
is null
protected void writeAnnotation(Class cl) throws IOException
Else invokes RMIClassLoader.getClassAnnotation
with cl
to get the appropriate class annotation string value (possibly
null
) and then writes a class annotation string value (possibly
null
) to be read by a corresponding AnnotatedObjectInputStream
implementation.
AnnotatedObjectOutputStream
implements this method to just write the
annotation value to this stream using writeUnshared
.
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.