/* * Copyright 2005 Joe Walker * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.directwebremoting.jsonrpc.io; /** * A Container for a JSON-RPC request * @author Joe Walker [joe at getahead dot ltd dot uk] */ public class JsonRpcError { /** * Create an Error from a request and an exception/error code */ public JsonRpcError(JsonRpcCalls calls, String message, int code, Object data) { if (calls != null) { this.jsonrpc = calls.getVersion(); this.id = calls.getBatchId(); } else { this.jsonrpc = "2.0"; this.id = ""; } this.data = data; this.message = message; this.code = code; } /** * @param version * @param id * @param message * @param code * @param data */ public JsonRpcError(String version, String id, String message, int code, Object data) { this.jsonrpc = version; this.id = id; this.data = data; this.message = message; this.code = code; } /** * @param ex */ public JsonRpcError(JsonRpcCallException ex) { this.jsonrpc = ex.getVersion(); this.id = ex.getId(); this.code = ex.getJsonRpcErrorCode(); this.message = ex.getMessage(); this.data = ex.getData(); } /** * @return A String specifying the version of the JSON-RPC protocol. */ public String getJsonrpc() { return jsonrpc; } /** * @see #getJsonrpc() */ private final String jsonrpc; /** * A Request identifier that SHOULD be a JSON scalar (String, Number, True, * False), but SHOULD normally not be Null [1]. * If omitted, the Request is a Notification. */ public String getId() { return id; } /** * @see #getId() */ private final String id; /** * Additional information, may be omitted. Its contents is entirely defined * by the application (e.g. detailed error information, nested errors etc.). */ public Object getData() { return data; } /** * @see #getData() */ private final Object data; /** * A Number that indicates the actual error that occurred. * This MUST be an integer. */ public int getCode() { return code; } /** * @see #getCode() */ private final int code; /** * A String providing a short description of the error. * The message SHOULD be limited to a concise single sentence. */ public String getMessage() { return message; } /** * @see #getMessage() */ private final String message; }