2 * //******************************************************************
4 * // Copyright 2015 Intel Corporation.
6 * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
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
12 * // http://www.apache.org/licenses/LICENSE-2.0
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.
20 * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
23 #include "JniOcStack.h"
24 #include "OCRepresentation.h"
29 static void convertJavaMapToQueryParamsMap(JNIEnv *env, jobject hashMap,
30 OC::QueryParamsMap &map);
31 static jobject convertQueryParamsMapToJavaMap(JNIEnv *env, const OC::QueryParamsMap &map);
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);
37 static void convertJavaHeaderOptionsArrToVector(JNIEnv *env, jobjectArray jHeaderOptions,
38 OC::HeaderOptions& headerOptions);
39 static jobject convertHeaderOptionsVectorToJavaList(JNIEnv *env,
40 const OC::HeaderOptions& headerOptions);
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);
48 static OC::ServiceType getServiceType(JNIEnv *env, int type)
53 return OC::ServiceType::InProc;
55 return OC::ServiceType::OutOfProc;
57 ThrowOcException(OC_STACK_INVALID_PARAM, "Unexpected service type");
58 return OC::ServiceType::OutOfProc;
62 static OC::ModeType getModeType(JNIEnv *env, int type)
67 return OC::ModeType::Server;
69 return OC::ModeType::Client;
71 return OC::ModeType::Both;
73 return OC::ModeType::Gateway;
75 ThrowOcException(OC_STACK_INVALID_PARAM, "Unexpected mode type");
76 return OC::ModeType::Both;
80 static OC::QualityOfService getQOS(JNIEnv *env, int type)
85 return OC::QualityOfService::LowQos;
87 return OC::QualityOfService::MidQos;
89 return OC::QualityOfService::HighQos;
91 return OC::QualityOfService::NaQos;
93 ThrowOcException(OC_STACK_INVALID_PARAM, "Unexpected quality of service");
94 return OC::QualityOfService::NaQos;
98 static OC::ObserveType getObserveType(JNIEnv *env, int type)
103 return OC::ObserveType::Observe;
105 return OC::ObserveType::ObserveAll;
107 ThrowOcException(OC_STACK_INVALID_PARAM, "Unexpected observe type");
108 return OC::ObserveType::ObserveAll;
112 static OC::AclGroupType getAclGroupType(JNIEnv *env, int type)
117 return OC::AclGroupType::PUBLIC;
119 return OC::AclGroupType::PRIVATE;
121 ThrowOcException(OC_STACK_INVALID_PARAM, "Unexpected acl group type");
122 return OC::AclGroupType::PUBLIC;
126 static OCEntityHandlerResult getOCEntityHandlerResult(JNIEnv *env, int type)
131 return OCEntityHandlerResult::OC_EH_OK;
133 return OCEntityHandlerResult::OC_EH_ERROR;
135 return OCEntityHandlerResult::OC_EH_RESOURCE_CREATED;
137 return OCEntityHandlerResult::OC_EH_RESOURCE_DELETED;
139 return OCEntityHandlerResult::OC_EH_SLOW;
141 return OCEntityHandlerResult::OC_EH_FORBIDDEN;
143 return OCEntityHandlerResult::OC_EH_RESOURCE_NOT_FOUND;
145 ThrowOcException(OC_STACK_INVALID_PARAM, "Unexpected OCEntityHandlerResult");
146 return OCEntityHandlerResult::OC_EH_ERROR;
150 static std::string stackResultToStr(const int result)
154 /** Success status code - START HERE.*/
157 case OC_STACK_RESOURCE_CREATED:
158 return "RESOURCE_CREATED";
159 case OC_STACK_RESOURCE_DELETED:
160 return "RESOURCE_DELETED";
161 case OC_STACK_RESOURCE_CHANGED:
162 return "RESOURCE_CHANGED";
163 case OC_STACK_CONTINUE:
165 /* Error status code - START HERE */
166 case OC_STACK_INVALID_URI:
167 return "INVALID_URI";
168 case OC_STACK_INVALID_QUERY:
169 return "INVALID_QUERY";
170 case OC_STACK_INVALID_IP:
172 case OC_STACK_INVALID_PORT:
173 return "INVALID_PORT";
174 case OC_STACK_INVALID_CALLBACK:
175 return "INVALID_CALLBACK";
176 case OC_STACK_INVALID_METHOD:
177 return "INVALID_METHOD";
178 /** Invalid parameter.*/
179 case OC_STACK_INVALID_PARAM:
180 return "INVALID_PARAM";
181 case OC_STACK_INVALID_OBSERVE_PARAM:
182 return "INVALID_OBSERVE_PARAM";
183 case OC_STACK_NO_MEMORY:
185 case OC_STACK_COMM_ERROR:
187 case OC_STACK_TIMEOUT:
189 case OC_STACK_ADAPTER_NOT_ENABLED:
190 return "ADAPTER_NOT_ENABLED";
191 case OC_STACK_NOTIMPL:
193 /** Resource not found.*/
194 case OC_STACK_NO_RESOURCE:
195 return "NO_RESOURCE";
196 /** e.g: not supported method or interface.*/
197 case OC_STACK_RESOURCE_ERROR:
198 return "RESOURCE_ERROR";
199 case OC_STACK_SLOW_RESOURCE:
200 return "SLOW_RESOURCE";
201 case OC_STACK_DUPLICATE_REQUEST:
202 return "DUPLICATE_REQUEST";
203 /** Resource has no registered observers.*/
204 case OC_STACK_NO_OBSERVERS:
205 return "NO_OBSERVERS";
206 case OC_STACK_OBSERVER_NOT_FOUND:
207 return "OBSERVER_NOT_FOUND";
208 case OC_STACK_VIRTUAL_DO_NOT_HANDLE:
209 return "VIRTUAL_DO_NOT_HANDLE";
210 case OC_STACK_INVALID_OPTION:
211 return "INVALID_OPTION";
212 /** The remote reply contained malformed data.*/
213 case OC_STACK_MALFORMED_RESPONSE:
214 return "MALFORMED_RESPONSE";
215 case OC_STACK_PERSISTENT_BUFFER_REQUIRED:
216 return "PERSISTENT_BUFFER_REQUIRED";
217 case OC_STACK_INVALID_REQUEST_HANDLE:
218 return "INVALID_REQUEST_HANDLE";
219 case OC_STACK_INVALID_DEVICE_INFO:
220 return "INVALID_DEVICE_INFO";
221 case OC_STACK_INVALID_JSON:
222 return "INVALID_JSON";
223 /** Request is not authorized by Resource Server. */
224 case OC_STACK_UNAUTHORIZED_REQ:
225 return "UNAUTHORIZED_REQ";
226 /** Error code from PDM */
227 case OC_STACK_PDM_IS_NOT_INITIALIZED:
228 return "PDM_IS_NOT_INITIALIZED";
229 case OC_STACK_DUPLICATE_UUID:
230 return "DUPLICATE_UUID";
231 case OC_STACK_INCONSISTENT_DB:
232 return "INCONSISTENT_DB";
233 /** Error code from OTM */
234 case OC_STACK_AUTHENTICATION_FAILURE:
235 return "AUTHENTICATION_FAILURE";
236 /** Insert all new error codes here!.*/
238 case OC_STACK_PRESENCE_STOPPED:
239 return "PRESENCE_STOPPED";
240 case OC_STACK_PRESENCE_TIMEOUT:
241 return "PRESENCE_TIMEOUT";
242 case OC_STACK_PRESENCE_DO_NOT_HANDLE:
243 return "PRESENCE_DO_NOT_HANDLE";
249 return "JNI_EXCEPTION";
250 case JNI_NO_NATIVE_POINTER:
251 return "JNI_NO_NATIVE_POINTER";
252 case JNI_INVALID_VALUE:
253 return "JNI_INVALID_VALUE";