net.ffxml.gwt.json.client
Class JsonRpc

java.lang.Object
  extended by net.ffxml.gwt.json.client.JsonRpc

public class JsonRpc
extends java.lang.Object

A simple JSON de- and encoder. And a json-rpc client.

Author:
Flo

Constructor Summary
JsonRpc()
           
 
Method Summary
 void addFailureListener(JsonRpcFailureListener listener)
           
 void addReqestStateListener(JsonRpcRequestStateListener listener)
          Add a listener when you are interested if a request is currently running.
 java.lang.Object decode(java.lang.String json)
          Decodes a json string.
protected  void decreaseRequestCounter()
           
 java.lang.String encode(java.lang.Object object)
          Encodes a java object.
protected  void encodeDate(java.lang.StringBuffer buffer, java.util.Date date)
          Dates get encoded as number of milliseconds since January 1, 1970, 00:00:00 GMT (Unix Timestamp).
protected  void encodeList(java.lang.StringBuffer buffer, java.util.List list)
          Lists get encoded as arrays.
protected  void encodeSet(java.lang.StringBuffer buffer, java.util.Set set)
           
protected  void encodeValue(java.lang.StringBuffer buffer, java.lang.Object object)
          To add new serializable type override this method, add your serializing code and than call super.
protected  void fireFailure(java.lang.Throwable caught)
           
protected  void fireRequestStateChanged(boolean requestRunning)
           
protected  void increaseRequestCounter()
           
 void removeActivityListener(JsonRpcRequestStateListener listener)
           
 void request(java.lang.String url, java.lang.String method, java.lang.Object[] params, com.google.gwt.user.client.rpc.AsyncCallback callback)
          Executes a json-rpc request.
 void request(java.lang.String url, java.lang.String username, java.lang.String password, java.lang.String method, java.lang.Object[] params, com.google.gwt.user.client.rpc.AsyncCallback callback)
          Executes a json-rpc request.
 void setCookieToReplicate(java.lang.String cookieName)
          Optional name of a cookie that gets replicated in the request as X-Cookie header.
 void setPassword(java.lang.String password)
          Set the password for the request.
 void setTimeout(int millis)
          Set timeout for json-rpc request.
 void setUsername(java.lang.String username)
          Set the username for the request.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JsonRpc

public JsonRpc()
Method Detail

decode

public java.lang.Object decode(java.lang.String json)
Decodes a json string. Primitives are decoded to their object wrappers, json-objects are decoded to HashMaps and json-arrays are decoded to a java array of objects.

Parameters:
json - string
Returns:
decoded object

encode

public java.lang.String encode(java.lang.Object object)
Encodes a java object. Supported are primitive types in their object wrappers, arrays of primitives, arrays of objects, arrays of arrays, Lists, Maps, Sets, Vectors and Dates. You can nest objects without limit. Arrays, Lists, Sets and Vectors are encodet to json-arrays. Maps are encoded to json-objects. Dates are encoded with their getTime() method, which results in an unix-timestamp.

Parameters:
object - java object to encode
Returns:
json string

encodeValue

protected void encodeValue(java.lang.StringBuffer buffer,
                           java.lang.Object object)
To add new serializable type override this method, add your serializing code and than call super.

Parameters:
buffer -
object -

encodeSet

protected void encodeSet(java.lang.StringBuffer buffer,
                         java.util.Set set)

encodeDate

protected void encodeDate(java.lang.StringBuffer buffer,
                          java.util.Date date)
Dates get encoded as number of milliseconds since January 1, 1970, 00:00:00 GMT (Unix Timestamp). Thats because JSON has no date type and most languages can handle these unix timestamps easily. Override it if you prefer another encoding for dates.

Parameters:
buffer -
date -

encodeList

protected void encodeList(java.lang.StringBuffer buffer,
                          java.util.List list)
Lists get encoded as arrays. Override it if you prefer another encoding for lists.

Parameters:
buffer -
list -

increaseRequestCounter

protected void increaseRequestCounter()

decreaseRequestCounter

protected void decreaseRequestCounter()

fireRequestStateChanged

protected void fireRequestStateChanged(boolean requestRunning)

addReqestStateListener

public void addReqestStateListener(JsonRpcRequestStateListener listener)
Add a listener when you are interested if a request is currently running. You can use this to easily show an hide an ajax-activity-indicator-image.

Parameters:
listener -

removeActivityListener

public void removeActivityListener(JsonRpcRequestStateListener listener)

setTimeout

public void setTimeout(int millis)
Set timeout for json-rpc request.

Parameters:
millis - Timeout in milliseconds for request to complete. Specify 0 for no timeout.

setCookieToReplicate

public void setCookieToReplicate(java.lang.String cookieName)
Optional name of a cookie that gets replicated in the request as X-Cookie header. Can be useful for authentication purposes.

Parameters:
cookieName - The name of the cookie to replicate.

setUsername

public void setUsername(java.lang.String username)
Set the username for the request.

Parameters:
username - User name

setPassword

public void setPassword(java.lang.String password)
Set the password for the request.

Parameters:
password - Password

request

public void request(java.lang.String url,
                    java.lang.String method,
                    java.lang.Object[] params,
                    com.google.gwt.user.client.rpc.AsyncCallback callback)
Executes a json-rpc request.

Parameters:
url - The location of the service
method - The method name
params - An array of objects containing the parameters
callback - A callbackhandler like in gwt's rpc.

request

public void request(java.lang.String url,
                    java.lang.String username,
                    java.lang.String password,
                    java.lang.String method,
                    java.lang.Object[] params,
                    com.google.gwt.user.client.rpc.AsyncCallback callback)
Executes a json-rpc request.

Parameters:
url - The location of the service
username - The username for basic authentification
password - The password for basic authentification
method - The method name
params - An array of objects containing the parameters
callback - A callbackhandler like in gwt's rpc.

addFailureListener

public void addFailureListener(JsonRpcFailureListener listener)

fireFailure

protected void fireFailure(java.lang.Throwable caught)