/* DConnectMessage.java Copyright (c) 2014 NTT DOCOMO,INC. Released under the MIT license http://opensource.org/licenses/mit-license.php */ package org.deviceconnect.message; import java.util.List; import java.util.Map; /** * Device Connect Managerで使用するメッセージ. * @author NTT DOCOMO, INC. */ public interface DConnectMessage extends Map<String, Object> { /** * GETメソッド. */ String METHOD_GET = "GET"; /** * POSTメソッド. */ String METHOD_POST = "POST"; /** * PUTメソッド. */ String METHOD_PUT = "PUT"; /** * DELETEメソッド. */ String METHOD_DELETE = "DELETE"; /** * WebSocketメソッド. */ String METHOD_WS = "WS"; /** * エクストラ:method. */ String EXTRA_METHOD = "method"; /** * エクストラ:requestCode. */ String EXTRA_REQUEST_CODE = "requestCode"; /** * エクストラ:serviceId. */ String EXTRA_SERVICE_ID = "serviceId"; /** * エクストラ:receiver. */ String EXTRA_RECEIVER = "receiver"; /** * パラメータ: {@value} . */ String EXTRA_PRODUCT = "product"; /** * パラメータ: {@value} . */ String EXTRA_VERSION = "version"; /** * エクストラ:{@value}. */ String EXTRA_API = "api"; /** * エクストラ:profile. */ String EXTRA_PROFILE = "profile"; /** * エクストラ:interface. */ String EXTRA_INTERFACE = "interface"; /** * エクストラ:attribute. */ String EXTRA_ATTRIBUTE = "attribute"; /** * エクストラ:value. */ String EXTRA_VALUE = "value"; /** * エクストラ:result. */ String EXTRA_RESULT = "result"; /** * エクストラ:errorCode. */ String EXTRA_ERROR_CODE = "errorCode"; /** * エクストラ:errorMessage. */ String EXTRA_ERROR_MESSAGE = "errorMessage"; /** * エクストラ:sessionKey. * @deprecated */ String EXTRA_SESSION_KEY = "sessionKey"; /** * エクストラ:clientId. */ String EXTRA_CLIENT_ID = "clientId"; /** * エクストラ:accessToken. */ String EXTRA_ACCESS_TOKEN = "accessToken"; /** * エクストラ:websocket. */ String EXTRA_WEBSOCKET = "websocket"; /** * エクストラ:scheme. */ String EXTRA_SCHEME = "_scheme"; /** * エクストラ:host. */ String EXTRA_HOST = "_host"; /** * エクストラ:port. */ String EXTRA_PORT = "_port"; /** * デフォルトAPI. */ String DEFAULT_API = "gotapi"; /** * 結果:OK. */ int RESULT_OK = 0; /** * 結果:エラー. */ int RESULT_ERROR = 1; /** * Androidネイティブアプリのオリジンを示すHTTPリクエストヘッダ名. */ String HEADER_GOTAPI_ORIGIN = "X-GotAPI-Origin"; /** * Stringを取得する. * * @param key キー * @return 値 */ String getString(String key); /** * intを取得する. * * @param key キー * @return 値 */ int getInt(String key); /** * longを取得する. * @param key キー * @return 値 */ long getLong(String key); /** * booleanを取得する. * * @param key キー * @return 値 */ boolean getBoolean(String key); /** * floatを取得する. * * @param key キー * @return 値 */ float getFloat(String key); /** * doubleを取得する. * * @param key キー * @return 値 */ double getDouble(String key); /** * {@code List<Object>}を取得する. * * @param key キー * @return 値 */ List<Object> getList(String key); /** * {@code DConnectMessage}を取得する. * * @param key キー * @return 値 */ DConnectMessage getMessage(String key); /** * メッセージを文字列にして返却する. * * @param indent インデント * @return メッセージを表す文字列 */ String toString(int indent); /** * Device Connectに定義されているエラーコード、メッセージ定数群. */ enum ErrorCode { /** * Device Connect Managerへのアクセスに失敗した. */ ACCESS_FAILED(-1, "Failed to connect to the Device Connect Manager."), /** * 不正なサーバからのレスポンスを受信した. */ INVALID_SERVER(-2, "Received a response from an invalid server."), /** * 原因不明のエラー. */ UNKNOWN(1, "Unknown error was encountered."), /** * サポートされていないプロファイルにアクセスされた. */ NOT_SUPPORT_PROFILE(2, "Non-supported Profile was accessed."), /** * サポートされていないアクションが指定された. */ NOT_SUPPORT_ACTION(3, "Non-supported HTTP method was used."), /** * サポートされていない属性・インターフェースが指定された. */ NOT_SUPPORT_ATTRIBUTE(4, "Non-supported attribute was used."), /** * serviceIdが設定されていない. */ EMPTY_SERVICE_ID(5, "Service ID is required."), /** * サービスが発見できなかった. */ NOT_FOUND_SERVICE(6, "Service was not found."), /** * タイムアウトが発生した. */ TIMEOUT(7, "Response timeout."), /** * 未知のインターフェース・属性にアクセスされた. */ UNKNOWN_ATTRIBUTE(8, "Illegal or nonexistent attribute or interface was accessed."), /** * バッテリー低下で操作不能. */ LOW_BATTERY(9, "No enough battery to control the device."), /** * 不正なパラメータを受信した. */ INVALID_REQUEST_PARAMETER(10, "Request parameters are invalid."), /** * 認証エラー. */ AUTHORIZATION(11, "Authorization error."), /** * アクセストークンの有効期限切れ. */ EXPIRED_ACCESS_TOKEN(12, "Access token expired."), /** * アクセストークンが設定されていない. */ EMPTY_ACCESS_TOKEN(13, "Access token was required."), /** * スコープ外にアクセス要求がなされた. */ SCOPE(14, "Request is out of scope."), /** * 認証時にclientIdが発見できなかった. */ NOT_FOUND_CLIENT_ID(15, "clientId was not found."), /** * デバイスの状態異常エラー. */ ILLEGAL_DEVICE_STATE(16, "State of device is illegality."), /** * サーバーの状態異常エラー. */ ILLEGAL_SERVER_STATE(17, "State of server is illegality."), /** * リクエストの発行元が不正. */ INVALID_ORIGIN(18, "Origin of request is invalid."), /** * リクエストURLが不正. */ INVALID_URL(19, "Request url is invalid."), /** * Profile名が不正. */ INVALID_PROFILE(20, "Profile name is invalid."); /** * エラーコード. */ int mCode; /** * デフォルトエラーメッセージ. */ String mMessage; /** * エラーコードとデフォルトエラーメッセージを設定する. * * @param code エラーコード * @param message エラーメッセージ */ ErrorCode(final int code, final String message) { this.mCode = code; this.mMessage = message; } @Override public String toString() { return mMessage; } /** * エラーコードを取得する. * * @return エラーコード */ public int getCode() { return mCode; } /** * 指定されたエラーコードからErrorCodeオブジェクトを取得する. * * @param code エラーコード * @return ErrorCodeのインスタンス */ public static ErrorCode getInstance(final int code) { for (ErrorCode eCode : values()) { if (eCode.mCode == code) { return eCode; } } return UNKNOWN; } } }