/* * 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(); } }