com.caucho.hessian.io
Class AbstractHessianOutput

java.lang.Object
  extended by com.caucho.hessian.io.AbstractHessianOutput
Direct Known Subclasses:
HessianOutput

public abstract class AbstractHessianOutput
extends java.lang.Object

Abstract output stream for Hessian requests.

 OutputStream os = ...; // from http connection
 AbstractOutput out = new HessianSerializerOutput(os);
 String value;

 out.startCall("hello");  // start hello call
 out.writeString("arg1"); // write a string argument
 out.completeCall();      // complete the call
 


Field Summary
protected  SerializerFactory _serializerFactory
           
 
Constructor Summary
AbstractHessianOutput()
           
 
Method Summary
abstract  boolean addRef(java.lang.Object object)
          Adds an object to the reference list.
abstract  void completeCall()
          Writes the method call:
abstract  void init(java.io.OutputStream os)
          Initialize the output with a new underlying stream.
abstract  boolean removeRef(java.lang.Object obj)
          Removes a reference.
abstract  boolean replaceRef(java.lang.Object oldRef, java.lang.Object newRef)
          Replaces a reference from one object to another.
 void setSerializerFactory(SerializerFactory factory)
          Sets the serializer factory.
abstract  void startCall(java.lang.String method)
          Writes the method call:
abstract  void writeBoolean(boolean value)
          Writes a boolean value to the stream.
abstract  void writeByteBufferEnd(byte[] buffer, int offset, int length)
          Writes the last chunk of a byte buffer to the stream.
abstract  void writeByteBufferPart(byte[] buffer, int offset, int length)
          Writes a byte buffer to the stream.
abstract  void writeBytes(byte[] buffer)
          Writes a byte array to the stream.
abstract  void writeBytes(byte[] buffer, int offset, int length)
          Writes a byte array to the stream.
abstract  void writeDouble(double value)
          Writes a double value to the stream.
abstract  void writeInt(int value)
          Writes an integer value to the stream.
abstract  void writeListBegin(int length, java.lang.String type)
          Writes the list header to the stream.
abstract  void writeListEnd()
          Writes the tail of the list to the stream.
abstract  void writeLong(long value)
          Writes a long value to the stream.
abstract  void writeMapBegin(java.lang.String type)
          Writes the map header to the stream.
abstract  void writeMapEnd()
          Writes the tail of the map to the stream.
abstract  void writeNull()
          Writes a null value to the stream.
abstract  void writeObject(java.lang.Object object)
          Writes a generic object to the output stream.
abstract  void writeRef(int value)
          Writes a reference.
abstract  void writeRemote(java.lang.String type, java.lang.String url)
          Writes a remote object reference to the stream.
abstract  void writeString(char[] buffer, int offset, int length)
          Writes a string value to the stream using UTF-8 encoding.
abstract  void writeString(java.lang.String value)
          Writes a string value to the stream using UTF-8 encoding.
abstract  void writeUTCDate(long time)
          Writes a date to the stream.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_serializerFactory

protected SerializerFactory _serializerFactory
Constructor Detail

AbstractHessianOutput

public AbstractHessianOutput()
Method Detail

setSerializerFactory

public void setSerializerFactory(SerializerFactory factory)
Sets the serializer factory.


init

public abstract void init(java.io.OutputStream os)
Initialize the output with a new underlying stream.


startCall

public abstract void startCall(java.lang.String method)
                        throws java.io.IOException
Writes the method call:
 c major minor
 m b16 b8 method-namek
 

Parameters:
method - the method name to call.
Throws:
java.io.IOException

completeCall

public abstract void completeCall()
                           throws java.io.IOException
Writes the method call:
 z
 

Throws:
java.io.IOException

writeBoolean

public abstract void writeBoolean(boolean value)
                           throws java.io.IOException
Writes a boolean value to the stream. The boolean will be written with the following syntax:
 T
 F
 

Parameters:
value - the boolean value to write.
Throws:
java.io.IOException

writeInt

public abstract void writeInt(int value)
                       throws java.io.IOException
Writes an integer value to the stream. The integer will be written with the following syntax:
 I b32 b24 b16 b8
 

Parameters:
value - the integer value to write.
Throws:
java.io.IOException

writeLong

public abstract void writeLong(long value)
                        throws java.io.IOException
Writes a long value to the stream. The long will be written with the following syntax:
 L b64 b56 b48 b40 b32 b24 b16 b8
 

Parameters:
value - the long value to write.
Throws:
java.io.IOException

writeDouble

public abstract void writeDouble(double value)
                          throws java.io.IOException
Writes a double value to the stream. The double will be written with the following syntax:
 D b64 b56 b48 b40 b32 b24 b16 b8
 

Parameters:
value - the double value to write.
Throws:
java.io.IOException

writeUTCDate

public abstract void writeUTCDate(long time)
                           throws java.io.IOException
Writes a date to the stream.
 T  b64 b56 b48 b40 b32 b24 b16 b8
 

Parameters:
time - the date in milliseconds from the epoch in UTC
Throws:
java.io.IOException

writeNull

public abstract void writeNull()
                        throws java.io.IOException
Writes a null value to the stream. The null will be written with the following syntax
 N
 

Parameters:
value - the string value to write.
Throws:
java.io.IOException

writeString

public abstract void writeString(java.lang.String value)
                          throws java.io.IOException
Writes a string value to the stream using UTF-8 encoding. The string will be written with the following syntax:
 S b16 b8 string-value
 
If the value is null, it will be written as
 N
 

Parameters:
value - the string value to write.
Throws:
java.io.IOException

writeString

public abstract void writeString(char[] buffer,
                                 int offset,
                                 int length)
                          throws java.io.IOException
Writes a string value to the stream using UTF-8 encoding. The string will be written with the following syntax:
 S b16 b8 string-value
 
If the value is null, it will be written as
 N
 

Parameters:
value - the string value to write.
Throws:
java.io.IOException

writeBytes

public abstract void writeBytes(byte[] buffer)
                         throws java.io.IOException
Writes a byte array to the stream. The array will be written with the following syntax:
 B b16 b18 bytes
 
If the value is null, it will be written as
 N
 

Parameters:
value - the string value to write.
Throws:
java.io.IOException

writeBytes

public abstract void writeBytes(byte[] buffer,
                                int offset,
                                int length)
                         throws java.io.IOException
Writes a byte array to the stream. The array will be written with the following syntax:
 B b16 b18 bytes
 
If the value is null, it will be written as
 N
 

Parameters:
value - the string value to write.
Throws:
java.io.IOException

writeByteBufferPart

public abstract void writeByteBufferPart(byte[] buffer,
                                         int offset,
                                         int length)
                                  throws java.io.IOException
Writes a byte buffer to the stream.
 b b16 b18 bytes
 

Parameters:
value - the string value to write.
Throws:
java.io.IOException

writeByteBufferEnd

public abstract void writeByteBufferEnd(byte[] buffer,
                                        int offset,
                                        int length)
                                 throws java.io.IOException
Writes the last chunk of a byte buffer to the stream.
 b b16 b18 bytes
 

Parameters:
value - the string value to write.
Throws:
java.io.IOException

writeRef

public abstract void writeRef(int value)
                       throws java.io.IOException
Writes a reference.
 R b32 b24 b16 b8
 

Parameters:
value - the integer value to write.
Throws:
java.io.IOException

removeRef

public abstract boolean removeRef(java.lang.Object obj)
                           throws java.io.IOException
Removes a reference.

Throws:
java.io.IOException

replaceRef

public abstract boolean replaceRef(java.lang.Object oldRef,
                                   java.lang.Object newRef)
                            throws java.io.IOException
Replaces a reference from one object to another.

Throws:
java.io.IOException

addRef

public abstract boolean addRef(java.lang.Object object)
                        throws java.io.IOException
Adds an object to the reference list. If the object already exists, writes the reference, otherwise, the caller is responsible for the serialization.
 R b32 b24 b16 b8
 

Parameters:
object - the object to add as a reference.
Returns:
true if the object has already been written.
Throws:
java.io.IOException

writeObject

public abstract void writeObject(java.lang.Object object)
                          throws java.io.IOException
Writes a generic object to the output stream.

Throws:
java.io.IOException

writeListBegin

public abstract void writeListBegin(int length,
                                    java.lang.String type)
                             throws java.io.IOException
Writes the list header to the stream. List writers will call writeListBegin followed by the list contents and then call writeListEnd.
 <list>
   <type>java.util.ArrayList</type>
   <length>3</length>
   <int>1</int>
   <int>2</int>
   <int>3</int>
 </list>
 

Throws:
java.io.IOException

writeListEnd

public abstract void writeListEnd()
                           throws java.io.IOException
Writes the tail of the list to the stream.

Throws:
java.io.IOException

writeMapBegin

public abstract void writeMapBegin(java.lang.String type)
                            throws java.io.IOException
Writes the map header to the stream. Map writers will call writeMapBegin followed by the map contents and then call writeMapEnd.
 Mt b16 b8 type ( )z
 

Throws:
java.io.IOException

writeMapEnd

public abstract void writeMapEnd()
                          throws java.io.IOException
Writes the tail of the map to the stream.

Throws:
java.io.IOException

writeRemote

public abstract void writeRemote(java.lang.String type,
                                 java.lang.String url)
                          throws java.io.IOException
Writes a remote object reference to the stream. The type is the type of the remote interface.
 'r' 't' b16 b8 type url
 

Throws:
java.io.IOException