Class MicroBurlapOutput

java.lang.Object
com.caucho.burlap.client.MicroBurlapOutput

public class MicroBurlapOutput extends Object
Output stream for Burlap requests, compatible with microedition Java. It only uses classes and types available to J2ME. In particular, it does not have any support for the <double> type.

MicroBurlapOutput does not depend on any classes other than in J2ME, so it can be extracted independently into a smaller package.

MicroBurlapOutput is unbuffered, so any client needs to provide its own buffering.

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

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

    • MicroBurlapOutput

      public MicroBurlapOutput(OutputStream os)
      Creates a new Burlap output stream, initialized with an underlying output stream.
      Parameters:
      os - the underlying output stream.
    • MicroBurlapOutput

      public MicroBurlapOutput()
      Creates an uninitialized Burlap output stream.
  • Method Details

    • init

      public void init(OutputStream os)
    • call

      public void call(String method, Object[] args) throws IOException
      Writes a complete method call.
      Throws:
      IOException
    • startCall

      public void startCall(String method) throws IOException
      Writes the method call:
       <burlap:request>
         <method>add</method>
       
      Parameters:
      method - the method name to call.
      Throws:
      IOException
    • completeCall

      public void completeCall() throws IOException
      Writes the method call:
       </burlap:request>
       
      Throws:
      IOException
    • writeBoolean

      public void writeBoolean(boolean value) throws IOException
      Writes a boolean value to the stream. The boolean will be written with the following syntax:
       <boolean>1</boolean>
       
      Parameters:
      value - the boolean value to write.
      Throws:
      IOException
    • writeInt

      public void writeInt(int value) throws IOException
      Writes an integer value to the stream. The integer will be written with the following syntax:
       <int>123</int>
       
      Parameters:
      value - the integer value to write.
      Throws:
      IOException
    • writeLong

      public void writeLong(long value) throws IOException
      Writes a long value to the stream. The long will be written with the following syntax:
       <long>123</long>
       
      Parameters:
      value - the long value to write.
      Throws:
      IOException
    • writeNull

      public void writeNull() throws IOException
      Writes a null value to the stream. The null will be written with the following syntax
       <null></null>
       
      Parameters:
      value - the string value to write.
      Throws:
      IOException
    • writeString

      public void writeString(String value) throws IOException
      Writes a string value to the stream using UTF-8 encoding. The string will be written with the following syntax:
       <string>12.3e10</string>
       
      If the value is null, it will be written as
       <null></null>
       
      Parameters:
      value - the string value to write.
      Throws:
      IOException
    • writeBytes

      public void writeBytes(byte[] buffer, int offset, int length) throws IOException
      Writes a byte array to the stream using base64 encoding. The array will be written with the following syntax:
       <base64>dJmO==</base64>
       
      If the value is null, it will be written as
       <null></null>
       
      Parameters:
      value - the string value to write.
      Throws:
      IOException
    • writeUTCDate

      public void writeUTCDate(long time) throws IOException
      Writes a date to the stream using ISO8609.
       <date>19980508T095131Z</date>
       
      Parameters:
      value - the date in milliseconds from the epoch in UTC
      Throws:
      IOException
    • writeLocalDate

      public void writeLocalDate(long time) throws IOException
      Writes a date to the stream using ISO8609.
       <date>19980508T095131Z</date>
       
      Parameters:
      value - the date in milliseconds from the epoch in local timezone
      Throws:
      IOException
    • writeRef

      public void writeRef(int value) throws IOException
      Writes a reference.
       <ref>123</ref>
       
      Parameters:
      value - the integer value to write.
      Throws:
      IOException
    • writeObject

      public void writeObject(Object object) throws IOException
      Writes a generic object. writeObject understands the following types:
      • null
      • java.lang.String
      • java.lang.Boolean
      • java.lang.Integer
      • java.lang.Long
      • java.util.Date
      • byte[]
      • java.util.Vector
      • java.util.Hashtable
      Unknown objects will call writeCustomObject.
      Throws:
      IOException
    • writeCustomObject

      public void writeCustomObject(Object object) throws IOException
      Applications which override this can do custom serialization.
      Parameters:
      object - the object to write.
      Throws:
      IOException
    • writeListBegin

      public void writeListBegin(int length, String type) throws 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:
      IOException
    • writeListEnd

      public void writeListEnd() throws IOException
      Writes the tail of the list to the stream.
      Throws:
      IOException
    • writeMapBegin

      public void writeMapBegin(String type) throws IOException
      Writes the map header to the stream. Map writers will call writeMapBegin followed by the map contents and then call writeMapEnd.
       <map>
         <type>java.util.Hashtable</type>
         <string>a</string;<int>1</int>
         <string>b</string;<int>2</int>
         <string>c</string;<int>3</int>
       </map>
       
      Throws:
      IOException
    • writeMapEnd

      public void writeMapEnd() throws IOException
      Writes the tail of the map to the stream.
      Throws:
      IOException
    • writeRemote

      public void writeRemote(String type, String url) throws 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:
      IOException
    • printInt

      public void printInt(int v) throws IOException
      Prints an integer to the stream.
      Parameters:
      v - the integer to print.
      Throws:
      IOException
    • printLong

      public void printLong(long v) throws IOException
      Prints a long to the stream.
      Parameters:
      v - the long to print.
      Throws:
      IOException
    • printString

      public void printString(String v) throws IOException
      Prints a string to the stream, properly encoded.
      Parameters:
      v - the string to print.
      Throws:
      IOException
    • printBytes

      public void printBytes(byte[] data, int offset, int length) throws IOException
      Prints a byte array to the stream, properly encoded in base64.
      Parameters:
      data - the bytes to print.
      Throws:
      IOException
    • base64encode

      public static char base64encode(int d)
      Converts the digit to its base64 encoding.
    • printDate

      public void printDate(Calendar calendar) throws IOException
      Prints a date.
      Parameters:
      date - the date to print.
      Throws:
      IOException
    • print

      public void print(String s) throws 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:
      IOException