com.caucho.burlap.client
Class MicroBurlapInput

java.lang.Object
  extended by com.caucho.burlap.client.MicroBurlapInput

public class MicroBurlapInput
extends java.lang.Object

Input 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.

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

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

 InputStream is = ...; // from http connection
 MicroBurlapInput in = new MicroBurlapInput(is);
 String value;

 in.startReply();         // read reply header
 value = in.readString(); // read string value
 in.completeReply();      // read reply footer
 


Field Summary
protected  java.util.Date date
           
protected  java.lang.StringBuffer entity
           
protected  java.lang.String method
           
protected  int peek
           
protected  boolean peekTag
           
protected  java.util.Vector refs
           
protected  java.lang.StringBuffer sbuf
           
protected  java.util.Calendar utcCalendar
           
 
Constructor Summary
MicroBurlapInput()
          Creates an uninitialized Burlap input stream.
MicroBurlapInput(java.io.InputStream is)
          Creates a new Burlap input stream, initialized with an underlying input stream.
 
Method Summary
 void completeCall()
          Completes reading the call.
 void completeReply()
          Completes reading the reply.
protected  java.io.IOException expectBeginTag(java.lang.String expect, java.lang.String tag)
           
protected  java.io.IOException expectedChar(java.lang.String expect, int actualChar)
           
protected  void expectEndTag(java.lang.String tag)
           
protected  void expectStartTag(java.lang.String tag)
           
 java.lang.String getMethod()
          Returns a call's method.
 void init(java.io.InputStream is)
          Initialize the Burlap input stream with a new underlying stream.
protected  boolean isWhitespace(int ch)
           
protected  byte[] parseBytes()
          Parses a byte array.
protected  java.io.ByteArrayOutputStream parseBytes(java.io.ByteArrayOutputStream bos)
          Parses a byte array.
protected  long parseDate(java.util.Calendar calendar)
          Parses a date value from the stream.
protected  int parseInt()
          Parses an integer value from the stream.
protected  long parseLong()
          Parses a long value from the stream.
protected  java.lang.String parseString()
          Parses a string value from the stream.
protected  java.lang.StringBuffer parseString(java.lang.StringBuffer sbuf)
          Parses a string value from the stream.
protected  boolean parseTag()
          Parses a tag.
protected  int read()
           
 boolean readBoolean()
          Reads a boolean value from the input stream.
 byte[] readBytes()
          Reads a byte array from the input stream.
protected  java.lang.Object readExtensionObject(java.lang.Class expectedClass, java.lang.String tag)
          Reads object unknown to MicroBurlapInput.
 java.util.Hashtable readFault()
          Reads a fault.
 int readInt()
          Reads an integer value from the input stream.
 int readLength()
          Reads a length value from the input stream.
 java.lang.Object readList(java.lang.Class expectedClass, java.lang.String type, int length)
          Reads a list object from the input stream.
 long readLocalDate()
          Reads a date value from the input stream.
 long readLong()
          Reads a long value from the input stream.
 java.lang.Object readMap(java.lang.Class expectedClass, java.lang.String type)
          Reads an object from the input stream.
 java.lang.Object readObject(java.lang.Class expectedClass)
          Reads an arbitrary object the input stream.
 BurlapRemote readRemote()
          Reads a remote value from the input stream.
 java.lang.Object readReply(java.lang.Class expectedClass)
          Reads a reply as an object.
 java.lang.String readString()
          Reads a string value from the input stream.
 java.lang.String readType()
          Reads a type value from the input stream.
 long readUTCDate()
          Reads a date value from the input stream.
 java.lang.Object resolveRemote(java.lang.String type, java.lang.String url)
          Resolves a remote object.
protected  int skipWhitespace()
           
 void startCall()
          Starts reading the call
 boolean startReply()
          Starts reading the reply.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

peek

protected int peek

peekTag

protected boolean peekTag

date

protected java.util.Date date

utcCalendar

protected java.util.Calendar utcCalendar

refs

protected java.util.Vector refs

method

protected java.lang.String method

sbuf

protected java.lang.StringBuffer sbuf

entity

protected java.lang.StringBuffer entity
Constructor Detail

MicroBurlapInput

public MicroBurlapInput(java.io.InputStream is)
Creates a new Burlap input stream, initialized with an underlying input stream.

Parameters:
is - the underlying input stream.

MicroBurlapInput

public MicroBurlapInput()
Creates an uninitialized Burlap input stream.

Method Detail

getMethod

public java.lang.String getMethod()
Returns a call's method.


init

public void init(java.io.InputStream is)
Initialize the Burlap input stream with a new underlying stream. Applications can use init(InputStream) to reuse MicroBurlapInput to save garbage collection.


startCall

public void startCall()
               throws java.io.IOException
Starts reading the call

A successful completion will have a single value:

 <burlap:call>
 <method>method</method>
 

Throws:
java.io.IOException

completeCall

public void completeCall()
                  throws java.io.IOException
Completes reading the call.
 </burlap:call>
 

Throws:
java.io.IOException

readReply

public java.lang.Object readReply(java.lang.Class expectedClass)
                           throws java.lang.Exception
Reads a reply as an object. If the reply has a fault, throws the exception.

Throws:
java.lang.Exception

startReply

public boolean startReply()
                   throws java.io.IOException
Starts reading the reply.

A successful completion will have a single value. An unsuccessful one will have a fault:

 <burlap:reply>
 

Returns:
true if success, false for fault.
Throws:
java.io.IOException

completeReply

public void completeReply()
                   throws java.io.IOException
Completes reading the reply.
 </burlap:reply>
 

Throws:
java.io.IOException

readBoolean

public boolean readBoolean()
                    throws java.io.IOException
Reads a boolean value from the input stream.

Throws:
java.io.IOException

readInt

public int readInt()
            throws java.io.IOException
Reads an integer value from the input stream.

Throws:
java.io.IOException

readLong

public long readLong()
              throws java.io.IOException
Reads a long value from the input stream.

Throws:
java.io.IOException

readUTCDate

public long readUTCDate()
                 throws java.io.IOException
Reads a date value from the input stream.

Throws:
java.io.IOException

readLocalDate

public long readLocalDate()
                   throws java.io.IOException
Reads a date value from the input stream.

Throws:
java.io.IOException

readRemote

public BurlapRemote readRemote()
                        throws java.io.IOException
Reads a remote value from the input stream.

Throws:
java.io.IOException

readString

public java.lang.String readString()
                            throws java.io.IOException
Reads a string value from the input stream.

The two valid possibilities are either a <null> or a <string>. The string value is encoded in utf-8, and understands the basic XML escapes: "&123;", "<", ">", "'", """.

 <null></null>
 <string>a utf-8 encoded string</string>
 

Throws:
java.io.IOException

readBytes

public byte[] readBytes()
                 throws java.io.IOException
Reads a byte array from the input stream.

The two valid possibilities are either a <null> or a <base64>.

Throws:
java.io.IOException

readObject

public java.lang.Object readObject(java.lang.Class expectedClass)
                            throws java.io.IOException
Reads an arbitrary object the input stream.

Throws:
java.io.IOException

readType

public java.lang.String readType()
                          throws java.io.IOException
Reads a type value from the input stream.
 <type>a utf-8 encoded string</type>
 

Throws:
java.io.IOException

readLength

public int readLength()
               throws java.io.IOException
Reads a length value from the input stream. If the length isn't specified, returns -1.
 <length>integer</length>
 

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

readFault

public java.util.Hashtable readFault()
                              throws java.io.IOException
Reads a fault.

Throws:
java.io.IOException

readMap

public java.lang.Object readMap(java.lang.Class expectedClass,
                                java.lang.String type)
                         throws java.io.IOException
Reads an object from the input stream.

Parameters:
expectedClass - the calling routine's expected class
type - the type from the stream
Throws:
java.io.IOException

readExtensionObject

protected java.lang.Object readExtensionObject(java.lang.Class expectedClass,
                                               java.lang.String tag)
                                        throws java.io.IOException
Reads object unknown to MicroBurlapInput.

Throws:
java.io.IOException

readList

public java.lang.Object readList(java.lang.Class expectedClass,
                                 java.lang.String type,
                                 int length)
                          throws java.io.IOException
Reads a list object from the input stream.

Parameters:
expectedClass - the calling routine's expected class
type - the type from the stream
length - the expected length, -1 for unspecified length
Throws:
java.io.IOException

parseInt

protected int parseInt()
                throws java.io.IOException
Parses an integer value from the stream.

Throws:
java.io.IOException

parseLong

protected long parseLong()
                  throws java.io.IOException
Parses a long value from the stream.

Throws:
java.io.IOException

parseDate

protected long parseDate(java.util.Calendar calendar)
                  throws java.io.IOException
Parses a date value from the stream.

Throws:
java.io.IOException

parseString

protected java.lang.String parseString()
                                throws java.io.IOException
Parses a string value from the stream. string buffer is used for the result.

Throws:
java.io.IOException

parseString

protected java.lang.StringBuffer parseString(java.lang.StringBuffer sbuf)
                                      throws java.io.IOException
Parses a string value from the stream. The burlap object's string buffer is used for the result.

Throws:
java.io.IOException

parseBytes

protected byte[] parseBytes()
                     throws java.io.IOException
Parses a byte array.

Throws:
java.io.IOException

parseBytes

protected java.io.ByteArrayOutputStream parseBytes(java.io.ByteArrayOutputStream bos)
                                            throws java.io.IOException
Parses a byte array.

Throws:
java.io.IOException

expectStartTag

protected void expectStartTag(java.lang.String tag)
                       throws java.io.IOException
Throws:
java.io.IOException

expectEndTag

protected void expectEndTag(java.lang.String tag)
                     throws java.io.IOException
Throws:
java.io.IOException

parseTag

protected boolean parseTag()
                    throws java.io.IOException
Parses a tag. Returns true if it's a start tag.

Throws:
java.io.IOException

expectedChar

protected java.io.IOException expectedChar(java.lang.String expect,
                                           int actualChar)

expectBeginTag

protected java.io.IOException expectBeginTag(java.lang.String expect,
                                             java.lang.String tag)

skipWhitespace

protected int skipWhitespace()
                      throws java.io.IOException
Throws:
java.io.IOException

isWhitespace

protected boolean isWhitespace(int ch)
                        throws java.io.IOException
Throws:
java.io.IOException

read

protected int read()
            throws java.io.IOException
Throws:
java.io.IOException