blob: 7effabe41b77e4ec5f43136fe587965c67bae492 [file] [log] [blame]
/*
* Copyright (C) 2018 The Android Open Source Project
*
* 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 com.googlecode.android_scripting;
import com.googlecode.android_scripting.jsonrpc.JsonRpcResult;
import org.json.JSONException;
import org.json.JSONObject;
/**
* A enum of Sl4aException objects. This enum holds all of the innate systematic
* errors that can be sent to the client. Errors that come from Facades should
* not use these Sl4aErrors, unless the Facades themselves are designed to
* modify the state of SL4A's connection
*/
public enum Sl4aErrors {
// Process-Level Errors 0-99
// JSON RPC Errors 100 - 199
JSON_RPC_UNKNOWN_EXCEPTION(100,
"Something went horribly wrong when parsing or returning your request."),
JSON_RPC_REQUEST_NOT_JSON(101, "The request sent was not a valid JSONObject."),
JSON_RPC_MISSING_ID(102, "The \"id\" field is missing."),
JSON_RPC_MISSING_METHOD(103, "The \"method\" field is missing."),
JSON_RPC_METHOD_NOT_STRING(104, "The \"method\" field must be a string."),
JSON_RPC_PARAMS_NOT_AN_ARRAY(105, "The \"params\" field must be an array."),
JSON_RPC_UNKNOWN_RPC_METHOD(106, "No known RPC for the given \"method\"."),
JSON_RPC_RESULT_NOT_JSON_VALID(107,
"The JsonBuilder was unable to convert the result to valid JSON."),
JSON_RPC_FAILED_TO_BUILD_RESULT(108, "The JsonBuilder failed to build the result."),
JSON_RPC_FACADE_EXCEPTION_OCCURRED(109, "An exception occurred while handling this RPC. "
+ "Check the \"data\" field for the error received."),
JSON_RPC_INVALID_PARAMETERS(110, "The \"params\" given are not valid for this \"method\"."),
// Session Errors 200 - 299
SESSION_UNKNOWN_EXCEPTION(200, "Something went horribly wrong when handling your session."),
SESSION_INVALID(201, "This session no longer exists or is invalid."),
;
private final Sl4aException mSl4aException;
Sl4aErrors(int errorCode, String errorMessage) {
mSl4aException = new Sl4aException(errorCode, errorMessage);
}
/**
* Returns the underlying {@see Sl4aException}.
*/
public Sl4aException getError() {
return mSl4aException;
}
/**
* Converts this Sl4aError to a JSON-RPC 2.0 compliant JSONObject.
* @param id the id given by the request
* @return a JSON-RPC 2.0 error response as a JSONObject
* @throws JSONException
*/
public JSONObject toJson(Object id) throws JSONException {
return JsonRpcResult.error(id, mSl4aException);
}
/**
* Converts this Sl4aError to a JSON-RPC 2.0 compliant JSONObject.
* @param id the id given by the request
* @param details additional details to pass along with the error
* @return a JSON-RPC 2.0 error response as a JSONObject
* @throws JSONException
*/
public JSONObject toJson(Object id, Object details) throws JSONException {
return JsonRpcResult.error(id, mSl4aException, details);
}
}