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 ClassLoading). 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 RMIClassLoaderSpi.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
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, 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 RMIClassLoaderSpi.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 RMIClassLoaderSpi.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 2007-2013, multiple authors.
Licensed under the Apache License, Version 2.0, see the NOTICE file for attributions.