Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## net.jini.io
Class MarshalOutputStream

    java.lang.Object
      java.io.OutputStream
          java.io.ObjectOutputStream
              net.jini.io.MarshalOutputStream

All Implemented Interfaces:
  DataOutput, ObjectOutput, ObjectStreamConstants, ObjectStreamContext

public class MarshalOutputStream
extends ObjectOutputStream
implements ObjectStreamContext

An extension of `ObjectOutputStream` that implements the dynamic class loading semantics of 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

Nested Class Summary

Nested classes 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_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_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.

  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.

  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

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2004 Sun Microsystems, Inc. All rights reserved