Home | History | Annotate | Download | only in common
      1 package autotest.common;
      2 
      3 import autotest.common.ui.NotifyManager;
      4 
      5 import com.google.gwt.json.client.JSONObject;
      6 import com.google.gwt.json.client.JSONString;
      7 import com.google.gwt.json.client.JSONValue;
      8 
      9 /**
     10  * One of onSuccess() and onError() is guaranteed to be called for every RPC request.
     11  */
     12 public abstract class JsonRpcCallback {
     13     /**
     14      * Called when a request completes successfully.
     15      * @param result the value returned by the server.
     16      */
     17     public abstract void onSuccess(JSONValue result);
     18 
     19     /**
     20      * Called when any request error occurs
     21      * @param errorObject the error object returned by the server, containing keys "name",
     22      * "message", and "traceback".  This argument may be null in the case where no server response
     23      * was received at all.
     24      */
     25     public void onError(JSONObject errorObject) {
     26         if (errorObject == null) {
     27             return;
     28         }
     29 
     30         String errorString =  getErrorString(errorObject);
     31         JSONString tracebackString = errorObject.get("traceback").isString();
     32         String traceback = null;
     33         if (tracebackString != null) {
     34             traceback = tracebackString.stringValue();
     35         }
     36 
     37         NotifyManager.getInstance().showError(errorString, traceback);
     38     }
     39 
     40     protected String getErrorString(JSONObject errorObject) {
     41         if (errorObject == null) {
     42             return "";
     43         }
     44 
     45         String name = Utils.jsonToString(errorObject.get("name"));
     46         String message = Utils.jsonToString(errorObject.get("message"));
     47         return name + ": " + message;
     48     }
     49 }
     50