Package com.caucho.burlap.io
Class BurlapOutput
- java.lang.Object
-
- com.caucho.hessian.io.AbstractHessianOutput
-
- com.caucho.burlap.io.AbstractBurlapOutput
-
- com.caucho.burlap.io.BurlapOutput
-
public class BurlapOutput extends AbstractBurlapOutput
Output stream for Burlap requests, compatible with microedition Java. It only uses classes and types available in JDK.Since BurlapOutput does not depend on any classes other than in the JDK, it can be extracted independently into a smaller package.
BurlapOutput is unbuffered, so any client needs to provide its own buffering.
OutputStream os = ...; // from http connection BurlapOutput out = new BurlapOutput(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 java.io.OutputStream
os
-
Fields inherited from class com.caucho.hessian.io.AbstractHessianOutput
_serializerFactory
-
-
Constructor Summary
Constructors Constructor Description BurlapOutput()
Creates an uninitialized Burlap output stream.BurlapOutput(java.io.OutputStream os)
Creates a new Burlap output stream, initialized with an underlying output stream.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
addRef(java.lang.Object object)
If the object has already been written, just write its ref.void
call(java.lang.String method, java.lang.Object[] args)
Writes a complete method call.void
completeCall()
Completes.void
completeReply()
Completes reading the replyint
getRef(java.lang.Object obj)
void
init(java.io.OutputStream os)
Initializes the outputprotected void
print(char v)
Prints a char to the stream.protected void
print(double v)
Prints a double to the stream.protected void
print(int v)
Prints an integer to the stream.protected void
print(long v)
Prints a long to the stream.protected void
print(java.lang.String s)
Prints a string as ascii to the stream.void
printDate(java.util.Calendar calendar)
Prints a date.void
printString(char[] v, int offset, int length)
Prints a string to the stream, encoded as UTF-8void
printString(java.lang.String v)
Prints a string to the stream, encoded as UTF-8void
printString(java.lang.String v, int offset, int length)
Prints a string to the stream, encoded as UTF-8boolean
removeRef(java.lang.Object obj)
Removes a reference.boolean
replaceRef(java.lang.Object oldRef, java.lang.Object newRef)
Replaces a reference from one object to another.void
startCall()
Starts the method call.void
startCall(java.lang.String method)
Starts the method call.void
startReply()
Starts the replyvoid
writeBoolean(boolean value)
Writes a boolean value to the stream.void
writeByteBufferEnd(byte[] buffer, int offset, int length)
Writes a byte buffer to the stream.void
writeByteBufferPart(byte[] buffer, int offset, int length)
Writes a byte buffer to the stream.void
writeByteBufferStart()
Writes a byte buffer to the stream.void
writeBytes(byte[] buffer)
Writes a byte array to the stream.void
writeBytes(byte[] buffer, int offset, int length)
Writes a byte array to the stream.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)
Writes a fault.void
writeHeader(java.lang.String name)
Writes a header name.void
writeInt(int value)
Writes an integer value to the stream.boolean
writeListBegin(int length, java.lang.String type)
Writes the list header to the stream.void
writeListEnd()
Writes the tail of the list to the stream.void
writeLong(long value)
Writes a long value to the stream.void
writeMapBegin(java.lang.String type)
Writes the map header to the stream.void
writeMapEnd()
Writes the tail of the map to the stream.void
writeMethod(java.lang.String method)
Writes the method for a call.void
writeNull()
Writes a null value to the stream.void
writeObject(java.lang.Object object)
Writes any object to the output stream.void
writeRef(int value)
Writes a reference.void
writeRemote(java.lang.String type, java.lang.String url)
Writes a remote object reference to the stream.void
writeString(char[] buffer, int offset, int length)
Writes a string value to the stream using UTF-8 encoding.void
writeString(java.lang.String value)
Writes a string value to the stream using UTF-8 encoding.void
writeUTCDate(long time)
Writes a date to the stream.-
Methods inherited from class com.caucho.burlap.io.AbstractBurlapOutput
startCall
-
Methods inherited from class com.caucho.hessian.io.AbstractHessianOutput
close, findSerializerFactory, flush, getSerializerFactory, resetReferences, setSerializerFactory, setUnshared, writeByteStream, writeClassFieldLength, writeObjectBegin, writeObjectEnd, writeReply
-
-
-
-
Method Detail
-
init
public void init(java.io.OutputStream os)
Initializes the output- Overrides:
init
in classAbstractHessianOutput
-
call
public void call(java.lang.String method, java.lang.Object[] args) throws java.io.IOException
Writes a complete method call.- Overrides:
call
in classAbstractHessianOutput
- Throws:
java.io.IOException
-
startCall
public void startCall(java.lang.String method) throws java.io.IOException
Starts the method call. Clients would usestartCall
instead ofcall
if they wanted finer control over writing the arguments, or needed to write headers.<burlap:call> <method>method-name</method>
- Parameters:
method
- the method name to call.- Throws:
java.io.IOException
-
startCall
public void startCall() throws java.io.IOException
Starts the method call. Clients would usestartCall
instead ofcall
if they wanted finer control over writing the arguments, or needed to write headers.<method>method-name</method>
- Specified by:
startCall
in classAbstractHessianOutput
- Parameters:
method
- the method name to call.- Throws:
java.io.IOException
-
writeMethod
public void writeMethod(java.lang.String method) throws java.io.IOException
Writes the method for a call.<method>value</method>
- Specified by:
writeMethod
in classAbstractHessianOutput
- Parameters:
method
- the method name to call.- Throws:
java.io.IOException
-
completeCall
public void completeCall() throws java.io.IOException
Completes.</burlap:call>
- Specified by:
completeCall
in classAbstractHessianOutput
- Throws:
java.io.IOException
-
startReply
public void startReply() throws java.io.IOException
Starts the replyA successful completion will have a single value:
r
- Overrides:
startReply
in classAbstractHessianOutput
- Throws:
java.io.IOException
-
completeReply
public void completeReply() throws java.io.IOException
Completes reading the replyA successful completion will have a single value:
</burlap:reply>
- Overrides:
completeReply
in classAbstractHessianOutput
- Throws:
java.io.IOException
-
writeHeader
public void writeHeader(java.lang.String name) throws java.io.IOException
Writes a header name. The header value must immediately follow.<header>foo</header><int>value</int>
- Overrides:
writeHeader
in classAbstractHessianOutput
- Throws:
java.io.IOException
-
writeFault
public void writeFault(java.lang.String code, java.lang.String message, java.lang.Object detail) throws java.io.IOException
Writes a fault. The fault will be written as a descriptive string followed by an object:<fault> <string>code <string>the fault code <string>message <string>the fault mesage <string>detail <map>t\x00\xnnjavax.ejb.FinderException ... </map> </fault>
- Overrides:
writeFault
in classAbstractHessianOutput
- Parameters:
code
- the fault code, a three digit- Throws:
java.io.IOException
-
writeObject
public void writeObject(java.lang.Object object) throws java.io.IOException
Writes any object to the output stream.- Specified by:
writeObject
in classAbstractHessianOutput
- Throws:
java.io.IOException
-
writeListBegin
public 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
.<list> <type>java.util.ArrayList</type> <length>3</length> <int>1</int> <int>2</int> <int>3</int> </list>
- Specified by:
writeListBegin
in classAbstractHessianOutput
- Throws:
java.io.IOException
-
writeListEnd
public void writeListEnd() throws java.io.IOException
Writes the tail of the list to the stream.- Specified by:
writeListEnd
in classAbstractHessianOutput
- Throws:
java.io.IOException
-
writeMapBegin
public 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
.<map> <type>type</type> (<key> <value>)* </map>
- Specified by:
writeMapBegin
in classAbstractHessianOutput
- Throws:
java.io.IOException
-
writeMapEnd
public void writeMapEnd() throws java.io.IOException
Writes the tail of the map to the stream.- Specified by:
writeMapEnd
in classAbstractHessianOutput
- Throws:
java.io.IOException
-
writeRemote
public 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.<remote> <type>test.account.Account</type> <string>http://caucho.com/foo;ejbid=bar</string> </remote>
- Throws:
java.io.IOException
-
writeBoolean
public void writeBoolean(boolean value) throws java.io.IOException
Writes a boolean value to the stream. The boolean will be written with the following syntax:<boolean>0</boolean> <boolean>1</boolean>
- Specified by:
writeBoolean
in classAbstractHessianOutput
- Parameters:
value
- the boolean value to write.- Throws:
java.io.IOException
-
writeInt
public void writeInt(int value) throws java.io.IOException
Writes an integer value to the stream. The integer will be written with the following syntax:<int>int value</int>
- Specified by:
writeInt
in classAbstractHessianOutput
- Parameters:
value
- the integer value to write.- Throws:
java.io.IOException
-
writeLong
public void writeLong(long value) throws java.io.IOException
Writes a long value to the stream. The long will be written with the following syntax:<long>int value</long>
- Specified by:
writeLong
in classAbstractHessianOutput
- Parameters:
value
- the long value to write.- Throws:
java.io.IOException
-
writeDouble
public void writeDouble(double value) throws java.io.IOException
Writes a double value to the stream. The double will be written with the following syntax:<double>value</double>
- Specified by:
writeDouble
in classAbstractHessianOutput
- Parameters:
value
- the double value to write.- Throws:
java.io.IOException
-
writeUTCDate
public void writeUTCDate(long time) throws java.io.IOException
Writes a date to the stream.<date>iso8901</date>
- Specified by:
writeUTCDate
in classAbstractHessianOutput
- Parameters:
time
- the date in milliseconds from the epoch in UTC- Throws:
java.io.IOException
-
writeNull
public void writeNull() throws java.io.IOException
Writes a null value to the stream. The null will be written with the following syntax<null></null>
- Specified by:
writeNull
in classAbstractHessianOutput
- Parameters:
value
- the string value to write.- Throws:
java.io.IOException
-
writeString
public 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 as<string>string-value</string>
<null></null>
- Specified by:
writeString
in classAbstractHessianOutput
- Parameters:
value
- the string value to write.- Throws:
java.io.IOException
-
writeString
public 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
- Specified by:
writeString
in classAbstractHessianOutput
- Parameters:
value
- the string value to write.- Throws:
java.io.IOException
-
writeBytes
public 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 as<base64>bytes</base64>
<null></null>
- Specified by:
writeBytes
in classAbstractHessianOutput
- Parameters:
value
- the string value to write.- Throws:
java.io.IOException
-
writeBytes
public 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 as<base64>bytes</base64>
<null></null>
- Specified by:
writeBytes
in classAbstractHessianOutput
- Parameters:
value
- the string value to write.- Throws:
java.io.IOException
-
writeByteBufferStart
public void writeByteBufferStart() throws java.io.IOException
Writes a byte buffer to the stream.- Specified by:
writeByteBufferStart
in classAbstractHessianOutput
- Throws:
java.io.IOException
-
writeByteBufferPart
public void writeByteBufferPart(byte[] buffer, int offset, int length) throws java.io.IOException
Writes a byte buffer to the stream.b b16 b18 bytes
- Specified by:
writeByteBufferPart
in classAbstractHessianOutput
- Throws:
java.io.IOException
-
writeByteBufferEnd
public void writeByteBufferEnd(byte[] buffer, int offset, int length) throws java.io.IOException
Writes a byte buffer to the stream.b b16 b18 bytes
- Specified by:
writeByteBufferEnd
in classAbstractHessianOutput
- Throws:
java.io.IOException
-
writeRef
public void writeRef(int value) throws java.io.IOException
Writes a reference.<ref>int</ref>
- Specified by:
writeRef
in classAbstractHessianOutput
- Parameters:
value
- the integer value to write.- Throws:
java.io.IOException
-
addRef
public boolean addRef(java.lang.Object object) throws java.io.IOException
If the object has already been written, just write its ref.- Specified by:
addRef
in classAbstractHessianOutput
- Parameters:
object
- the object to add as a reference.- Returns:
- true if we're writing a ref.
- Throws:
java.io.IOException
-
getRef
public int getRef(java.lang.Object obj)
- Specified by:
getRef
in classAbstractHessianOutput
- Returns:
-
removeRef
public boolean removeRef(java.lang.Object obj) throws java.io.IOException
Removes a reference.- Overrides:
removeRef
in classAbstractHessianOutput
- Throws:
java.io.IOException
-
replaceRef
public boolean replaceRef(java.lang.Object oldRef, java.lang.Object newRef) throws java.io.IOException
Replaces a reference from one object to another.- Specified by:
replaceRef
in classAbstractHessianOutput
- Throws:
java.io.IOException
-
printString
public void printString(java.lang.String v) throws java.io.IOException
Prints a string to the stream, encoded as UTF-8- Parameters:
v
- the string to print.- Throws:
java.io.IOException
-
printString
public void printString(java.lang.String v, int offset, int length) throws java.io.IOException
Prints a string to the stream, encoded as UTF-8- Parameters:
v
- the string to print.- Throws:
java.io.IOException
-
printString
public void printString(char[] v, int offset, int length) throws java.io.IOException
Prints a string to the stream, encoded as UTF-8- Parameters:
v
- the string to print.- Throws:
java.io.IOException
-
printDate
public void printDate(java.util.Calendar calendar) throws java.io.IOException
Prints a date.- Parameters:
date
- the date to print.- Throws:
java.io.IOException
-
print
protected void print(char v) throws java.io.IOException
Prints a char to the stream.- Parameters:
v
- the char to print.- Throws:
java.io.IOException
-
print
protected void print(int v) throws java.io.IOException
Prints an integer to the stream.- Parameters:
v
- the integer to print.- Throws:
java.io.IOException
-
print
protected void print(long v) throws java.io.IOException
Prints a long to the stream.- Parameters:
v
- the long to print.- Throws:
java.io.IOException
-
print
protected void print(double v) throws java.io.IOException
Prints a double to the stream.- Parameters:
v
- the double to print.- Throws:
java.io.IOException
-
print
protected void print(java.lang.String s) throws java.io.IOException
Prints a string as ascii to the stream. Used for tags, etc. that are known to the ascii.- Parameters:
s
- the ascii string to print.- Throws:
java.io.IOException
-
-