Package com.caucho.hessian.io
Class Hessian2Input
- java.lang.Object
-
- com.caucho.hessian.io.AbstractHessianInput
-
- com.caucho.hessian.io.Hessian2Input
-
- All Implemented Interfaces:
Hessian2Constants
- Direct Known Subclasses:
HessianSerializerInput
public class Hessian2Input extends AbstractHessianInput implements Hessian2Constants
Input stream for Hessian requests.HessianInput is unbuffered, so any client needs to provide its own buffering.
InputStream is = ...; // from http connection HessianInput in = new HessianInput(is); String value; in.startReply(); // read reply header value = in.readString(); // read string value in.completeReply(); // read reply footer
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.ArrayList<com.caucho.hessian.io.Hessian2Input.ObjectDefinition>
_classDefs
protected SerializerFactory
_defaultSerializerFactory
protected java.util.ArrayList<java.lang.Object>
_refs
protected SerializerFactory
_serializerFactory
protected java.util.ArrayList<java.lang.String>
_types
-
Fields inherited from interface com.caucho.hessian.io.Hessian2Constants
BC_BINARY, BC_BINARY_CHUNK, BC_BINARY_DIRECT, BC_BINARY_SHORT, BC_CLASS_DEF, BC_DATE, BC_DATE_MINUTE, BC_DOUBLE, BC_DOUBLE_BYTE, BC_DOUBLE_MILL, BC_DOUBLE_ONE, BC_DOUBLE_SHORT, BC_DOUBLE_ZERO, BC_END, BC_FALSE, BC_INT, BC_INT_BYTE_ZERO, BC_INT_SHORT_ZERO, BC_INT_ZERO, BC_LIST_DIRECT, BC_LIST_DIRECT_UNTYPED, BC_LIST_FIXED, BC_LIST_FIXED_UNTYPED, BC_LIST_VARIABLE, BC_LIST_VARIABLE_UNTYPED, BC_LONG, BC_LONG_BYTE_ZERO, BC_LONG_INT, BC_LONG_SHORT_ZERO, BC_LONG_ZERO, BC_MAP, BC_MAP_UNTYPED, BC_NULL, BC_OBJECT, BC_OBJECT_DEF, BC_OBJECT_DIRECT, BC_REF, BC_STRING, BC_STRING_CHUNK, BC_STRING_DIRECT, BC_STRING_SHORT, BC_TRUE, BINARY_DIRECT_MAX, BINARY_SHORT_MAX, INT_BYTE_MAX, INT_BYTE_MIN, INT_DIRECT_MAX, INT_DIRECT_MIN, INT_SHORT_MAX, INT_SHORT_MIN, LIST_DIRECT_MAX, LONG_BYTE_MAX, LONG_BYTE_MIN, LONG_DIRECT_MAX, LONG_DIRECT_MIN, LONG_SHORT_MAX, LONG_SHORT_MIN, OBJECT_DIRECT_MAX, P_PACKET, P_PACKET_CHUNK, P_PACKET_DIRECT, P_PACKET_SHORT, PACKET_DIRECT_MAX, PACKET_SHORT_MAX, STRING_DIRECT_MAX, STRING_SHORT_MAX
-
-
Constructor Summary
Constructors Constructor Description Hessian2Input()
Hessian2Input(java.io.InputStream is)
Creates a new Hessian input stream, initialized with an underlying input stream.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
addRef(java.lang.Object ref)
Adds a list/map reference.void
close()
protected java.lang.String
codeName(int ch)
void
completeCall()
Completes reading the callvoid
completeEnvelope()
Completes reading the envelopevoid
completeMessage()
Completes reading the messagevoid
completeReply()
Completes reading the callvoid
completeValueReply()
Completes reading the callprotected java.io.IOException
error(java.lang.String message)
protected java.io.IOException
expect(java.lang.String expect, int ch)
protected SerializerFactory
findSerializerFactory()
Gets the serializer factory.void
free()
java.lang.String
getMethod()
Returns the calls methodjava.io.Reader
getReader()
Starts reading a string.java.lang.Throwable
getReplyFault()
Returns any reply fault.SerializerFactory
getSerializerFactory()
Gets the serializer factory.void
init(java.io.InputStream is)
Initialize the Hessian stream with the underlying input stream.void
initPacket(java.io.InputStream is)
boolean
isCloseStreamOnClose()
boolean
isEnd()
Returns true if this is the end of a list or a map.int
read()
Normally, shouldn't be called externally, but needed for QA, e.g.java.lang.Object[]
readArguments()
boolean
readBoolean()
Reads a booleanint
readByte()
Reads a byte from the stream.byte[]
readBytes()
Reads a byte arrayint
readBytes(byte[] buffer, int offset, int length)
Reads a byte array from the stream.int
readCall()
Starts reading the callint
readChar()
Reads a byte from the stream.double
readDouble()
Reads a doublevoid
readEnd()
Reads the end byte.int
readEnvelope()
Starts reading the envelopefloat
readFloat()
Reads a floatjava.lang.String
readHeader()
Reads a header, returning null if there are no headers.java.io.InputStream
readInputStream()
Reads bytes based on an input stream.int
readInt()
Reads an integerint
readLength()
Parses the length for an arrayvoid
readListEnd()
Reads the end byte.int
readListStart()
Reads the start of a list.long
readLong()
Reads a longvoid
readMapEnd()
Reads the end byte.int
readMapStart()
Reads the start of a list.java.lang.String
readMethod()
Starts reading the callint
readMethodArgLength()
Returns the number of method argumentsvoid
readNull()
Reads a nulljava.lang.Object
readObject()
Reads an arbitrary object from the input stream when the type is unknown.java.lang.Object
readObject(java.lang.Class cl)
Reads an object from the input stream with an expected type.java.lang.Object
readRef()
Reads a reference.java.lang.Object
readRemote()
Reads a remote object.java.lang.Object
readReply(java.lang.Class expectedClass)
Reads a reply as an object.short
readShort()
Reads a shortjava.lang.Object
readStreamingObject()
java.lang.String
readString()
Reads a stringint
readString(char[] buffer, int offset, int length)
Reads a byte array from the stream.java.lang.String
readType()
Parses a type from the stream.long
readUTCDate()
Reads a date.void
reset()
void
resetBuffer()
void
resetReferences()
Resets the references for streaming.java.lang.Object
resolveRemote(java.lang.String type, java.lang.String url)
Resolves a remote object.void
setCloseStreamOnClose(boolean isClose)
void
setRef(int i, java.lang.Object ref)
Adds a list/map reference.void
setSerializerFactory(SerializerFactory factory)
Sets the serializer factory.void
startCall()
Starts reading the call, including the headers.int
startMessage()
Starts reading a packetvoid
startReply()
Starts reading the replyprotected void
unread()
-
Methods inherited from class com.caucho.hessian.io.AbstractHessianInput
getRemoteResolver, readNode, readToOutputStream, setRemoteResolver, skipOptionalCall, startReplyBody
-
-
-
-
Field Detail
-
_defaultSerializerFactory
protected SerializerFactory _defaultSerializerFactory
-
_serializerFactory
protected SerializerFactory _serializerFactory
-
_refs
protected java.util.ArrayList<java.lang.Object> _refs
-
_classDefs
protected java.util.ArrayList<com.caucho.hessian.io.Hessian2Input.ObjectDefinition> _classDefs
-
_types
protected java.util.ArrayList<java.lang.String> _types
-
-
Method Detail
-
setSerializerFactory
public void setSerializerFactory(SerializerFactory factory)
Sets the serializer factory.- Overrides:
setSerializerFactory
in classAbstractHessianInput
-
getSerializerFactory
public SerializerFactory getSerializerFactory()
Gets the serializer factory.
-
findSerializerFactory
protected final SerializerFactory findSerializerFactory()
Gets the serializer factory.
-
setCloseStreamOnClose
public void setCloseStreamOnClose(boolean isClose)
-
isCloseStreamOnClose
public boolean isCloseStreamOnClose()
-
getMethod
public java.lang.String getMethod()
Returns the calls method- Specified by:
getMethod
in classAbstractHessianInput
-
getReplyFault
public java.lang.Throwable getReplyFault()
Returns any reply fault.
-
init
public void init(java.io.InputStream is)
Description copied from class:AbstractHessianInput
Initialize the Hessian stream with the underlying input stream.- Overrides:
init
in classAbstractHessianInput
-
initPacket
public void initPacket(java.io.InputStream is)
-
readCall
public int readCall() throws java.io.IOException
Starts reading the callc major minor
- Specified by:
readCall
in classAbstractHessianInput
- Throws:
java.io.IOException
-
readEnvelope
public int readEnvelope() throws java.io.IOException
Starts reading the envelopeE major minor
- Throws:
java.io.IOException
-
completeEnvelope
public void completeEnvelope() throws java.io.IOException
Completes reading the envelopeA successful completion will have a single value:
Z
- Throws:
java.io.IOException
-
readMethod
public java.lang.String readMethod() throws java.io.IOException
Starts reading the callA successful completion will have a single value:
string
- Specified by:
readMethod
in classAbstractHessianInput
- Throws:
java.io.IOException
-
readMethodArgLength
public int readMethodArgLength() throws java.io.IOException
Returns the number of method argumentsint
- Overrides:
readMethodArgLength
in classAbstractHessianInput
- Returns:
- -1 for a variable length (hessian 1.0)
- Throws:
java.io.IOException
-
startCall
public void startCall() throws java.io.IOException
Starts reading the call, including the headers.The call expects the following protocol data
c major minor m b16 b8 method
- Specified by:
startCall
in classAbstractHessianInput
- Throws:
java.io.IOException
-
readArguments
public java.lang.Object[] readArguments() throws java.io.IOException
- Throws:
java.io.IOException
-
completeCall
public void completeCall() throws java.io.IOException
Completes reading the callA successful completion will have a single value:
- Specified by:
completeCall
in classAbstractHessianInput
- Throws:
java.io.IOException
-
readReply
public java.lang.Object readReply(java.lang.Class expectedClass) throws java.lang.Throwable
Reads a reply as an object. If the reply has a fault, throws the exception.- Specified by:
readReply
in classAbstractHessianInput
- Throws:
java.lang.Throwable
-
startReply
public void startReply() throws java.lang.Throwable
Starts reading the replyA successful completion will have a single value:
r
- Specified by:
startReply
in classAbstractHessianInput
- Throws:
java.lang.Throwable
-
completeReply
public void completeReply() throws java.io.IOException
Completes reading the callA successful completion will have a single value:
z
- Specified by:
completeReply
in classAbstractHessianInput
- Throws:
java.io.IOException
-
completeValueReply
public void completeValueReply() throws java.io.IOException
Completes reading the callA successful completion will have a single value:
z
- Throws:
java.io.IOException
-
readHeader
public java.lang.String readHeader() throws java.io.IOException
Reads a header, returning null if there are no headers.H b16 b8 value
- Specified by:
readHeader
in classAbstractHessianInput
- Throws:
java.io.IOException
-
startMessage
public int startMessage() throws java.io.IOException
Starts reading a packetp major minor
- Throws:
java.io.IOException
-
completeMessage
public void completeMessage() throws java.io.IOException
Completes reading the messageA successful completion will have a single value:
z
- Throws:
java.io.IOException
-
readNull
public void readNull() throws java.io.IOException
Reads a nullN
- Specified by:
readNull
in classAbstractHessianInput
- Throws:
java.io.IOException
-
readBoolean
public boolean readBoolean() throws java.io.IOException
Reads a booleanT F
- Specified by:
readBoolean
in classAbstractHessianInput
- Throws:
java.io.IOException
-
readShort
public short readShort() throws java.io.IOException
Reads a shortI b32 b24 b16 b8
- Throws:
java.io.IOException
-
readInt
public final int readInt() throws java.io.IOException
Reads an integerI b32 b24 b16 b8
- Specified by:
readInt
in classAbstractHessianInput
- Throws:
java.io.IOException
-
readLong
public long readLong() throws java.io.IOException
Reads a longL b64 b56 b48 b40 b32 b24 b16 b8
- Specified by:
readLong
in classAbstractHessianInput
- Throws:
java.io.IOException
-
readFloat
public float readFloat() throws java.io.IOException
Reads a floatD b64 b56 b48 b40 b32 b24 b16 b8
- Throws:
java.io.IOException
-
readDouble
public double readDouble() throws java.io.IOException
Reads a doubleD b64 b56 b48 b40 b32 b24 b16 b8
- Specified by:
readDouble
in classAbstractHessianInput
- Throws:
java.io.IOException
-
readUTCDate
public long readUTCDate() throws java.io.IOException
Reads a date.T b64 b56 b48 b40 b32 b24 b16 b8
- Specified by:
readUTCDate
in classAbstractHessianInput
- Throws:
java.io.IOException
-
readChar
public int readChar() throws java.io.IOException
Reads a byte from the stream.- Throws:
java.io.IOException
-
readString
public int readString(char[] buffer, int offset, int length) throws java.io.IOException
Reads a byte array from the stream.- Throws:
java.io.IOException
-
readString
public java.lang.String readString() throws java.io.IOException
Reads a stringS b16 b8 string value
- Specified by:
readString
in classAbstractHessianInput
- Throws:
java.io.IOException
-
readBytes
public byte[] readBytes() throws java.io.IOException
Reads a byte arrayB b16 b8 data value
- Specified by:
readBytes
in classAbstractHessianInput
- Throws:
java.io.IOException
-
readByte
public int readByte() throws java.io.IOException
Reads a byte from the stream.- Throws:
java.io.IOException
-
readBytes
public int readBytes(byte[] buffer, int offset, int length) throws java.io.IOException
Reads a byte array from the stream.- Throws:
java.io.IOException
-
readObject
public java.lang.Object readObject(java.lang.Class cl) throws java.io.IOException
Reads an object from the input stream with an expected type.- Specified by:
readObject
in classAbstractHessianInput
- Parameters:
cl
- the expected class if the protocol doesn't supply it.- Throws:
java.io.IOException
-
readObject
public java.lang.Object readObject() throws java.io.IOException
Reads an arbitrary object from the input stream when the type is unknown.- Specified by:
readObject
in classAbstractHessianInput
- Throws:
java.io.IOException
-
readRemote
public java.lang.Object readRemote() throws java.io.IOException
Reads a remote object.- Specified by:
readRemote
in classAbstractHessianInput
- Throws:
java.io.IOException
-
readRef
public java.lang.Object readRef() throws java.io.IOException
Reads a reference.- Specified by:
readRef
in classAbstractHessianInput
- Throws:
java.io.IOException
-
readListStart
public int readListStart() throws java.io.IOException
Reads the start of a list.- Specified by:
readListStart
in classAbstractHessianInput
- Throws:
java.io.IOException
-
readMapStart
public int readMapStart() throws java.io.IOException
Reads the start of a list.- Specified by:
readMapStart
in classAbstractHessianInput
- Throws:
java.io.IOException
-
isEnd
public boolean isEnd() throws java.io.IOException
Returns true if this is the end of a list or a map.- Specified by:
isEnd
in classAbstractHessianInput
- Throws:
java.io.IOException
-
readEnd
public void readEnd() throws java.io.IOException
Reads the end byte.- Specified by:
readEnd
in classAbstractHessianInput
- Throws:
java.io.IOException
-
readMapEnd
public void readMapEnd() throws java.io.IOException
Reads the end byte.- Specified by:
readMapEnd
in classAbstractHessianInput
- Throws:
java.io.IOException
-
readListEnd
public void readListEnd() throws java.io.IOException
Reads the end byte.- Specified by:
readListEnd
in classAbstractHessianInput
- Throws:
java.io.IOException
-
addRef
public int addRef(java.lang.Object ref)
Adds a list/map reference.- Specified by:
addRef
in classAbstractHessianInput
-
setRef
public void setRef(int i, java.lang.Object ref)
Adds a list/map reference.- Specified by:
setRef
in classAbstractHessianInput
-
resetReferences
public void resetReferences()
Resets the references for streaming.- Overrides:
resetReferences
in classAbstractHessianInput
-
reset
public void reset()
-
resetBuffer
public void resetBuffer()
-
readStreamingObject
public java.lang.Object readStreamingObject() throws java.io.IOException
- Throws:
java.io.IOException
-
resolveRemote
public java.lang.Object resolveRemote(java.lang.String type, java.lang.String url) throws java.io.IOException
Resolves a remote object.- Throws:
java.io.IOException
-
readType
public java.lang.String readType() throws java.io.IOException
Parses a type from the stream.type ::= string type ::= int
- Specified by:
readType
in classAbstractHessianInput
- Throws:
java.io.IOException
-
readLength
public int readLength() throws java.io.IOException
Parses the length for an arrayl b32 b24 b16 b8
- Specified by:
readLength
in classAbstractHessianInput
- Throws:
java.io.IOException
-
readInputStream
public java.io.InputStream readInputStream() throws java.io.IOException
Reads bytes based on an input stream.- Specified by:
readInputStream
in classAbstractHessianInput
- Throws:
java.io.IOException
-
read
public final int read() throws java.io.IOException
Normally, shouldn't be called externally, but needed for QA, e.g. ejb/3b01.- Throws:
java.io.IOException
-
unread
protected void unread()
-
getReader
public java.io.Reader getReader()
Description copied from class:AbstractHessianInput
Starts reading a string. All the characters must be read before calling the next method. The actual characters will be read with the reader's read() or read(char [], int, int).s b16 b8 non-final string chunk S b16 b8 final string chunk
- Specified by:
getReader
in classAbstractHessianInput
-
expect
protected java.io.IOException expect(java.lang.String expect, int ch) throws java.io.IOException
- Throws:
java.io.IOException
-
codeName
protected java.lang.String codeName(int ch)
-
error
protected java.io.IOException error(java.lang.String message)
-
free
public void free()
-
close
public void close() throws java.io.IOException
- Overrides:
close
in classAbstractHessianInput
- Throws:
java.io.IOException
-
-