Merge branch 'master' into easysetup
[platform/upstream/iotivity.git] / android / android_api / base / jni / JniUtils.h
1 /*
2 * //******************************************************************
3 * //
4 * // Copyright 2015 Intel Corporation.
5 * //
6 * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 * //
8 * // Licensed under the Apache License, Version 2.0 (the "License");
9 * // you may not use this file except in compliance with the License.
10 * // You may obtain a copy of the License at
11 * //
12 * //      http://www.apache.org/licenses/LICENSE-2.0
13 * //
14 * // Unless required by applicable law or agreed to in writing, software
15 * // distributed under the License is distributed on an "AS IS" BASIS,
16 * // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * // See the License for the specific language governing permissions and
18 * // limitations under the License.
19 * //
20 * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21 */
22
23 #include "JniOcStack.h"
24 #include "OCRepresentation.h"
25
26 class JniUtils
27 {
28 public:
29     static void convertJavaMapToQueryParamsMap(JNIEnv *env, jobject hashMap,
30         OC::QueryParamsMap &map);
31     static jobject convertQueryParamsMapToJavaMap(JNIEnv *env, const OC::QueryParamsMap &map);
32
33     static jobject convertStrVectorToJavaStrList(JNIEnv *env, std::vector<std::string> &vector);
34     static void convertJavaStrArrToStrVector(JNIEnv *env, jobjectArray jStrArr,
35         std::vector<std::string> &vector);
36
37     static void convertJavaHeaderOptionsArrToVector(JNIEnv *env, jobjectArray jHeaderOptions,
38         OC::HeaderOptions& headerOptions);
39     static jobject convertHeaderOptionsVectorToJavaList(JNIEnv *env,
40         const OC::HeaderOptions& headerOptions);
41
42     static void convertJavaRepresentationArrToVector(JNIEnv *env,
43         jobjectArray jRepresentationArray,
44         std::vector<OC::OCRepresentation>& representationVector);
45     static jobjectArray convertRepresentationVectorToJavaArray(JNIEnv *env,
46         const std::vector<OC::OCRepresentation>& representationVector);
47
48     static OC::ServiceType getServiceType(JNIEnv *env, int type)
49     {
50         switch (type) {
51         case 0:
52             return OC::ServiceType::InProc;
53         case 1:
54             return OC::ServiceType::OutOfProc;
55         default:
56             ThrowOcException(OC_STACK_INVALID_PARAM, "Unexpected service type");
57             return OC::ServiceType::OutOfProc;
58         };
59     }
60
61     static OC::ModeType getModeType(JNIEnv *env, int type)
62     {
63         switch (type) {
64         case 0:
65             return OC::ModeType::Server;
66         case 1:
67             return OC::ModeType::Client;
68         case 2:
69             return OC::ModeType::Both;
70         case 3:
71             return OC::ModeType::Gateway;
72         default:
73             ThrowOcException(OC_STACK_INVALID_PARAM, "Unexpected mode type");
74             return OC::ModeType::Both;
75         };
76     }
77
78     static OC::QualityOfService getQOS(JNIEnv *env, int type)
79     {
80         switch (type) {
81         case 0:
82             return OC::QualityOfService::LowQos;
83         case 1:
84             return OC::QualityOfService::MidQos;
85         case 2:
86             return OC::QualityOfService::HighQos;
87         case 3:
88             return OC::QualityOfService::NaQos;
89         default:
90             ThrowOcException(OC_STACK_INVALID_PARAM, "Unexpected quality of service");
91             return OC::QualityOfService::NaQos;
92         };
93     }
94
95     static OC::ObserveType getObserveType(JNIEnv *env, int type)
96     {
97         switch (type) {
98         case 0:
99             return OC::ObserveType::Observe;
100         case 1:
101             return OC::ObserveType::ObserveAll;
102         default:
103             ThrowOcException(OC_STACK_INVALID_PARAM, "Unexpected observe type");
104             return OC::ObserveType::ObserveAll;
105         };
106     }
107
108     static OCEntityHandlerResult getOCEntityHandlerResult(JNIEnv *env, int type)
109     {
110         switch (type) {
111         case 0:
112             return OCEntityHandlerResult::OC_EH_OK;
113         case 1:
114             return OCEntityHandlerResult::OC_EH_ERROR;
115         case 2:
116             return OCEntityHandlerResult::OC_EH_RESOURCE_CREATED;
117         case 3:
118             return OCEntityHandlerResult::OC_EH_RESOURCE_DELETED;
119         case 4:
120             return OCEntityHandlerResult::OC_EH_SLOW;
121         case 5:
122             return OCEntityHandlerResult::OC_EH_FORBIDDEN;
123         case 6:
124             return OCEntityHandlerResult::OC_EH_RESOURCE_NOT_FOUND;
125         default:
126             ThrowOcException(OC_STACK_INVALID_PARAM, "Unexpected OCEntityHandlerResult");
127             return OCEntityHandlerResult::OC_EH_ERROR;
128         };
129     }
130
131     static std::string stackResultToStr(const int result)
132     {
133         switch (result)
134         {
135         /** Success status code - START HERE.*/
136         case OC_STACK_OK:
137             return "OK";
138         case OC_STACK_RESOURCE_CREATED:
139             return "RESOURCE_CREATED";
140         case OC_STACK_RESOURCE_DELETED:
141             return "RESOURCE_DELETED";
142         case OC_STACK_CONTINUE:
143             return "CONTINUE";
144         /* Error status code - START HERE */
145         case OC_STACK_INVALID_URI:
146             return "INVALID_URI";
147         case OC_STACK_INVALID_QUERY:
148             return "INVALID_QUERY";
149         case OC_STACK_INVALID_IP:
150             return "INVALID_IP";
151         case OC_STACK_INVALID_PORT:
152             return "INVALID_PORT";
153         case OC_STACK_INVALID_CALLBACK:
154             return "INVALID_CALLBACK";
155         case OC_STACK_INVALID_METHOD:
156             return "INVALID_METHOD";
157         /** Invalid parameter.*/
158         case OC_STACK_INVALID_PARAM:
159             return "INVALID_PARAM";
160         case OC_STACK_INVALID_OBSERVE_PARAM:
161             return "INVALID_OBSERVE_PARAM";
162         case OC_STACK_NO_MEMORY:
163             return "NO_MEMORY";
164         case OC_STACK_COMM_ERROR:
165             return "COMM_ERROR";
166         case OC_STACK_TIMEOUT:
167             return "TIMEOUT";
168         case OC_STACK_ADAPTER_NOT_ENABLED:
169             return "ADAPTER_NOT_ENABLED";
170         case OC_STACK_NOTIMPL:
171             return "NOTIMPL";
172         /** Resource not found.*/
173         case OC_STACK_NO_RESOURCE:
174             return "NO_RESOURCE";
175         /** e.g: not supported method or interface.*/
176         case  OC_STACK_RESOURCE_ERROR:
177             return "RESOURCE_ERROR";
178         case OC_STACK_SLOW_RESOURCE:
179             return "SLOW_RESOURCE";
180         case OC_STACK_DUPLICATE_REQUEST:
181             return "DUPLICATE_REQUEST";
182         /** Resource has no registered observers.*/
183         case OC_STACK_NO_OBSERVERS:
184             return "NO_OBSERVERS";
185         case OC_STACK_OBSERVER_NOT_FOUND:
186             return "OBSERVER_NOT_FOUND";
187         case OC_STACK_VIRTUAL_DO_NOT_HANDLE:
188             return "VIRTUAL_DO_NOT_HANDLE";
189         case OC_STACK_INVALID_OPTION:
190             return "INVALID_OPTION";
191         /** The remote reply contained malformed data.*/
192         case OC_STACK_MALFORMED_RESPONSE:
193             return "MALFORMED_RESPONSE";
194         case OC_STACK_PERSISTENT_BUFFER_REQUIRED:
195             return "PERSISTENT_BUFFER_REQUIRED";
196         case OC_STACK_INVALID_REQUEST_HANDLE:
197             return "INVALID_REQUEST_HANDLE";
198         case OC_STACK_INVALID_DEVICE_INFO:
199             return "INVALID_DEVICE_INFO";
200         case OC_STACK_INVALID_JSON:
201             return "INVALID_JSON";
202         /** Request is not authorized by Resource Server. */
203         case OC_STACK_UNAUTHORIZED_REQ:
204             return "UNAUTHORIZED_REQ";
205         /** Error code from PDM */
206         case OC_STACK_PDM_IS_NOT_INITIALIZED:
207             return "PDM_IS_NOT_INITIALIZED";
208         case OC_STACK_DUPLICATE_UUID:
209             return "DUPLICATE_UUID";
210         case OC_STACK_INCONSISTENT_DB:
211             return "INCONSISTENT_DB";
212         /** Insert all new error codes here!.*/
213 #ifdef WITH_PRESENCE
214         case OC_STACK_PRESENCE_STOPPED:
215             return "PRESENCE_STOPPED";
216         case OC_STACK_PRESENCE_TIMEOUT:
217             return "PRESENCE_TIMEOUT";
218         case OC_STACK_PRESENCE_DO_NOT_HANDLE:
219             return "PRESENCE_DO_NOT_HANDLE";
220 #endif
221         case OC_STACK_ERROR:
222             return "ERROR";
223
224         case JNI_EXCEPTION:
225             return "JNI_EXCEPTION";
226         case JNI_NO_NATIVE_POINTER:
227             return "JNI_NO_NATIVE_POINTER";
228         case JNI_INVALID_VALUE:
229             return "JNI_INVALID_VALUE";
230         default:
231             return "";
232         }
233     }
234 };