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