/*
* RpcError.java
*
* Copyright (C) 2009-12 by RStudio, Inc.
*
* Unless you have received this program directly from RStudio pursuant
* to the terms of a commercial license agreement with RStudio, then
* this program is licensed to you under the terms of version 3 of the
* GNU Affero General Public License. This program is distributed WITHOUT
* ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT,
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the
* AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details.
*
*/
package org.rstudio.core.client.jsonrpc;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONValue;
public class RpcError extends JavaScriptObject
{
public static final native RpcError create(int code, String message) /*-{
var error = new Object();
error.code = code ;
error.message = message ;
return error ;
}-*/;
protected RpcError()
{
}
// no error
public final static int SUCCESS = 0 ;
// couldn't connect to service (method not executed)
public final static int CONNECTION_ERROR = 1 ;
// service is currently unavailable
public final static int UNAVAILABLE = 2;
// not authorized to access service or method (method not executed)
public final static int UNAUTHORIZED = 3 ;
// provided client id is invalid (method not executed)
public final static int INVALID_CLIENT_ID = 4;
// protocol errors (method not executed)
public final static int PARSE_ERROR = 5 ;
public final static int INVALID_REQUEST = 6 ;
public final static int METHOD_NOT_FOUND = 7 ;
public final static int PARAM_MISSING = 8 ;
public final static int PARAM_TYPE_MISMATCH = 9;
public final static int PARAM_INVALID = 10;
public final static int METHOD_UNEXEPECTED = 11 ;
public final static int INVALID_CLIENT_VERSION = 12;
public final static int SERVER_OFFLINE = 13;
public final static int INVALID_SESSION = 14;
// execution error (method was executed and returned known error state)
public final static int EXECUTION_ERROR = 100;
// transmission error (application state indeterminate)
public final static int TRANSMISSION_ERROR = 200;
public final native int getCode() /*-{
return this.code;
}-*/;
public final native String getMessage() /*-{
return this.message;
}-*/;
public final native RpcUnderlyingError getError() /*-{
return this.error;
}-*/;
public final JSONValue getClientInfo()
{
return new JSONObject(this).get("client_info");
}
public final String getEndUserMessage()
{
RpcUnderlyingError underlyingError = getError();
if (underlyingError != null)
return underlyingError.getMessage();
else
return getMessage();
}
}