Package com.caucho.hessian.io
Class AbstractHessianOutput
- java.lang.Object
-
- 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
Fields Modifier and Type Field Description protected SerializerFactory
_serializerFactory
-
Constructor Summary
Constructors Constructor Description AbstractHessianOutput()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description 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.
-
-
-
Field Detail
-
_serializerFactory
protected SerializerFactory _serializerFactory
-
-
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 syntaxN
- 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:
If the value is null, it will be written asS b16 b8 string-value
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:
If the value is null, it will be written asS b16 b8 string-value
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:
If the value is null, it will be written asB b16 b18 bytes
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:
If the value is null, it will be written asB b16 b18 bytes
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 callwriteListBegin
followed by the list contents and then callwriteListEnd
.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 callwriteMapBegin
followed by the map contents and then callwriteMapEnd
.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 callwriteObjectBegin
followed by the map contents and then callwriteObjectEnd
.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
-
-