com.caucho.hessian.io
Class AbstractHessianOutput

java.lang.Object
  extended by com.caucho.hessian.io.AbstractHessianOutput
Direct Known Subclasses:
AbstractBurlapOutput, Hessian2Output, 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.
 void call(java.lang.String method, java.lang.Object[] args)
          Writes a complete method call.
 void close()
           
abstract  void completeCall()
          Completes the method call:
 void completeReply()
           
protected  SerializerFactory findSerializerFactory()
          Gets the serializer factory.
 void flush()
           
abstract  int getRef(java.lang.Object obj)
           
 SerializerFactory getSerializerFactory()
          Gets the serializer factory.
 void init(java.io.OutputStream os)
          Initialize the output with a new underlying stream.
 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 resetReferences()
          Resets the references for streaming.
 void setSerializerFactory(SerializerFactory factory)
          Sets the serializer factory.
 boolean setUnshared(boolean isUnshared)
           
abstract  void startCall()
          Starts the method call:
abstract  void startCall(java.lang.String method, int length)
          Starts the method call:
 void startReply()
           
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 writeByteBufferStart()
          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.
 void writeByteStream(java.io.InputStream is)
          Writes a full output stream.
 void writeClassFieldLength(int len)
          Writes the end of the class.
abstract  void writeDouble(double value)
          Writes a double value to the stream.
 void writeFault(java.lang.String code, java.lang.String message, java.lang.Object detail)
           
 void writeHeader(java.lang.String name)
          Deprecated.  
abstract  void writeInt(int value)
          Writes an integer value to the stream.
abstract  boolean 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 writeMethod(java.lang.String method)
          Writes the method tag.
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.
 int writeObjectBegin(java.lang.String type)
          Writes the object header to the stream (for Hessian 2.0), or a Map for Hessian 1.0.
 void writeObjectEnd()
          Writes the tail of the object to the stream.
protected abstract  void writeRef(int value)
          Writes a reference.
 void writeReply(java.lang.Object o)
           
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.


getSerializerFactory

public SerializerFactory getSerializerFactory()
Gets the serializer factory.


findSerializerFactory

protected final SerializerFactory findSerializerFactory()
Gets the serializer factory.


init

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


setUnshared

public boolean setUnshared(boolean isUnshared)

call

public void call(java.lang.String method,
                 java.lang.Object[] args)
          throws java.io.IOException
Writes a complete method call.

Throws:
java.io.IOException

startCall

public abstract void startCall()
                        throws java.io.IOException
Starts the method call:
 C
 

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

startCall

public abstract void startCall(java.lang.String method,
                               int length)
                        throws java.io.IOException
Starts the method call:
 C string int
 

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

writeHeader

public void writeHeader(java.lang.String name)
                 throws java.io.IOException
Deprecated. 

For Hessian 2.0, use the Header envelope instead

Throws:
java.io.IOException

writeMethod

public abstract void writeMethod(java.lang.String method)
                          throws java.io.IOException
Writes the method tag.
 string
 

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

completeCall

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

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

writeByteBufferStart

public abstract void writeByteBufferStart()
                                   throws java.io.IOException
Writes a byte buffer to the stream.

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

writeByteStream

public void writeByteStream(java.io.InputStream is)
                     throws java.io.IOException
Writes a full output stream.

Throws:
java.io.IOException

writeRef

protected abstract void writeRef(int value)
                          throws java.io.IOException
Writes a reference.
 Q int
 

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

removeRef

public 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

getRef

public abstract int getRef(java.lang.Object obj)
Parameters:
obj -
Returns:

resetReferences

public void resetReferences()
Resets the references for streaming.


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 boolean 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.
 V
   x13 java.util.ArrayList   # type
   x93                       # length=3
   x91                       # 1
   x92                       # 2
   x93                       # 3
 </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.
 M 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

writeObjectBegin

public int writeObjectBegin(java.lang.String type)
                     throws java.io.IOException
Writes the object header to the stream (for Hessian 2.0), or a Map for Hessian 1.0. Object writers will call writeObjectBegin followed by the map contents and then call writeObjectEnd.
 C type int *
 C int *
 

Returns:
true if the object has already been defined.
Throws:
java.io.IOException

writeClassFieldLength

public void writeClassFieldLength(int len)
                           throws java.io.IOException
Writes the end of the class.

Throws:
java.io.IOException

writeObjectEnd

public void writeObjectEnd()
                    throws java.io.IOException
Writes the tail of the object to the stream.

Throws:
java.io.IOException

writeReply

public void writeReply(java.lang.Object o)
                throws java.io.IOException
Throws:
java.io.IOException

startReply

public void startReply()
                throws java.io.IOException
Throws:
java.io.IOException

completeReply

public void completeReply()
                   throws java.io.IOException
Throws:
java.io.IOException

writeFault

public void writeFault(java.lang.String code,
                       java.lang.String message,
                       java.lang.Object detail)
                throws java.io.IOException
Throws:
java.io.IOException

flush

public void flush()
           throws java.io.IOException
Throws:
java.io.IOException

close

public void close()
           throws java.io.IOException
Throws:
java.io.IOException