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)
52 return OC::ServiceType::InProc;
54 return OC::ServiceType::OutOfProc;
56 ThrowOcException(OC_STACK_INVALID_PARAM, "Unexpected service type");
57 return OC::ServiceType::OutOfProc;
61 static OC::ModeType getModeType(JNIEnv *env, int type)
65 return OC::ModeType::Server;
67 return OC::ModeType::Client;
69 return OC::ModeType::Both;
71 ThrowOcException(OC_STACK_INVALID_PARAM, "Unexpected mode type");
72 return OC::ModeType::Both;
76 static OC::QualityOfService getQOS(JNIEnv *env, int type)
80 return OC::QualityOfService::LowQos;
82 return OC::QualityOfService::MidQos;
84 return OC::QualityOfService::HighQos;
86 return OC::QualityOfService::NaQos;
88 ThrowOcException(OC_STACK_INVALID_PARAM, "Unexpected quality of service");
89 return OC::QualityOfService::NaQos;
93 static OC::ObserveType getObserveType(JNIEnv *env, int type)
97 return OC::ObserveType::Observe;
99 return OC::ObserveType::ObserveAll;
101 ThrowOcException(OC_STACK_INVALID_PARAM, "Unexpected observe type");
102 return OC::ObserveType::ObserveAll;
106 static OCEntityHandlerResult getOCEntityHandlerResult(JNIEnv *env, int type)
110 return OCEntityHandlerResult::OC_EH_OK;
112 return OCEntityHandlerResult::OC_EH_ERROR;
114 return OCEntityHandlerResult::OC_EH_RESOURCE_CREATED;
116 return OCEntityHandlerResult::OC_EH_RESOURCE_DELETED;
118 return OCEntityHandlerResult::OC_EH_SLOW;
120 return OCEntityHandlerResult::OC_EH_FORBIDDEN;
122 ThrowOcException(OC_STACK_INVALID_PARAM, "Unexpected OCEntityHandlerResult");
123 return OCEntityHandlerResult::OC_EH_ERROR;
127 static OCConnectivityType getConnectivityType(JNIEnv *env, int type)
131 return OCConnectivityType::CT_DEFAULT;
133 return OCConnectivityType::CT_ADAPTER_IP;
135 return OCConnectivityType::CT_ADAPTER_RFCOMM_BTEDR;
137 return OCConnectivityType::CT_ADAPTER_GATT_BTLE;
139 ThrowOcException(OC_STACK_INVALID_PARAM, "Unexpected connectivity type");
140 return OCConnectivityType::CT_DEFAULT;
144 static std::string stackResultToStr(const int result)
150 case OC_STACK_RESOURCE_CREATED:
151 return "RESOURCE_CREATED";
152 case OC_STACK_RESOURCE_DELETED:
153 return "RESOURCE_DELETED";
154 case OC_STACK_CONTINUE:
156 /* Success status code - END HERE */
157 /* Error status code - START HERE */
158 case OC_STACK_INVALID_URI:
159 return "INVALID_URI";
160 case OC_STACK_INVALID_QUERY:
161 return "INVALID_QUERY";
162 case OC_STACK_INVALID_IP:
165 case OC_STACK_INVALID_PORT:
166 return "INVALID_PORT";
167 case OC_STACK_INVALID_CALLBACK:
168 return "INVALID_CALLBACK";
169 case OC_STACK_INVALID_METHOD:
170 return "INVALID_METHOD";
171 case OC_STACK_INVALID_PARAM:
172 return "INVALID_PARAM";
173 case OC_STACK_INVALID_OBSERVE_PARAM:
174 return "INVALID_OBSERVE_PARAM";
175 case OC_STACK_NO_MEMORY:
177 case OC_STACK_COMM_ERROR:
179 case OC_STACK_NOTIMPL:
181 case OC_STACK_NO_RESOURCE:
182 return "NO_RESOURCE";
183 case OC_STACK_RESOURCE_ERROR:
184 return "RESOURCE_ERROR";
185 case OC_STACK_SLOW_RESOURCE:
186 return "SLOW_RESOURCE";
187 //case OC_STACK_DUPLICATE_REQUEST:
188 // return "DUPLICATE_REQUEST";
189 case OC_STACK_NO_OBSERVERS:
190 return "NO_OBSERVERS";
191 case OC_STACK_OBSERVER_NOT_FOUND:
192 return "OBSERVER_NOT_FOUND";
193 case OC_STACK_VIRTUAL_DO_NOT_HANDLE:
194 return "VIRTUAL_DO_NOT_HANDLE";
195 case OC_STACK_INVALID_OPTION:
196 return "INVALID_OPTION";
197 case OC_STACK_MALFORMED_RESPONSE:
198 return "MALFORMED_RESPONSE";
199 case OC_STACK_PERSISTENT_BUFFER_REQUIRED:
200 return "PERSISTENT_BUFFER_REQUIRED";
201 case OC_STACK_INVALID_REQUEST_HANDLE:
202 return "INVALID_REQUEST_HANDLE";
203 case OC_STACK_INVALID_DEVICE_INFO:
204 return "INVALID_DEVICE_INFO";
205 //case OC_STACK_INVALID_JSON:
206 // return "INVALID_JSON";
208 case OC_STACK_PRESENCE_STOPPED:
209 return "PRESENCE_STOPPED";
210 case OC_STACK_PRESENCE_TIMEOUT:
211 return "PRESENCE_TIMEOUT";
212 case OC_STACK_PRESENCE_DO_NOT_HANDLE:
213 return "PRESENCE_DO_NOT_HANDLE";
219 return "JNI_EXCEPTION";
220 case JNI_NO_NATIVE_POINTER:
221 return "JNI_NO_NATIVE_POINTER";
222 case JNI_INVALID_VALUE:
223 return "JNI_INVALID_VALUE";