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.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 |
|---|
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, writeUTFpublic 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 IOExceptionSecurityException - if the superclass's constructor throws a SecurityExceptionNullPointerException - if out or context is
nullprotected 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 ObjectOutputStreamcl - the class to annotateIOException - if writeAnnotation throws an IOExceptionNullPointerException - if cl is nullprotected 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 ObjectOutputStreamcl - the proxy class to annotateIOException - if writeAnnotation throws an IOExceptionNullPointerException - if cl is nullprotected 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.