Android Base API merge to master
[platform/upstream/iotivity.git] / android / android_api / base / jni / JniOcResource.cpp
1 /*\r
2 * //******************************************************************\r
3 * //\r
4 * // Copyright 2015 Intel Corporation.\r
5 * //\r
6 * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
7 * //\r
8 * // Licensed under the Apache License, Version 2.0 (the "License");\r
9 * // you may not use this file except in compliance with the License.\r
10 * // You may obtain a copy of the License at\r
11 * //\r
12 * //      http://www.apache.org/licenses/LICENSE-2.0\r
13 * //\r
14 * // Unless required by applicable law or agreed to in writing, software\r
15 * // distributed under the License is distributed on an "AS IS" BASIS,\r
16 * // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
17 * // See the License for the specific language governing permissions and\r
18 * // limitations under the License.\r
19 * //\r
20 * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
21 */\r
22 \r
23 #include "JniOcResource.h"\r
24 #include "JniOcRepresentation.h"\r
25 #include "JniUtils.h"\r
26 \r
27 JniOcResource::JniOcResource(std::shared_ptr<OCResource> resource)\r
28     : m_sharedResource(resource)\r
29 {}\r
30 \r
31 JniOcResource::~JniOcResource()\r
32 {\r
33     LOGD("~JniOcResource()");\r
34     m_sharedResource = NULL;\r
35 \r
36     jint envRet;\r
37     JNIEnv *env = GetJNIEnv(envRet);\r
38     if (NULL == env) return;\r
39 \r
40     m_onGetManager.removeAllListeners(env);\r
41     m_onPutManager.removeAllListeners(env);\r
42     m_onPostManager.removeAllListeners(env);\r
43     m_onDeleteManager.removeAllListeners(env);\r
44     m_onObserveManager.removeAllListeners(env);\r
45 \r
46     if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
47 }\r
48 \r
49 OCStackResult JniOcResource::get(JNIEnv* env, const QueryParamsMap &queryParametersMap, jobject jListener)\r
50 {\r
51     JniOnGetListener *onGetListener = addOnGetListener(env, jListener);\r
52 \r
53     GetCallback getCallback = [onGetListener](\r
54         const HeaderOptions& opts,\r
55         const OCRepresentation& rep,\r
56         const int eCode)\r
57     {\r
58         onGetListener->onGetCallback(opts, rep, eCode);\r
59     };\r
60 \r
61     return m_sharedResource->get(queryParametersMap, getCallback);\r
62 }\r
63 \r
64 OCStackResult JniOcResource::get(JNIEnv* env, const QueryParamsMap &queryParametersMap, jobject jListener,\r
65     QualityOfService QoS)\r
66 {\r
67     JniOnGetListener *onGetListener = addOnGetListener(env, jListener);\r
68 \r
69     GetCallback getCallback = [onGetListener](const HeaderOptions& opts, const OCRepresentation& rep,\r
70         const int eCode)\r
71     {\r
72         onGetListener->onGetCallback(opts, rep, eCode);\r
73     };\r
74 \r
75     return m_sharedResource->get(queryParametersMap, getCallback, QoS);\r
76 }\r
77 \r
78 OCStackResult JniOcResource::get(\r
79     JNIEnv* env,\r
80     const std::string &resourceType,\r
81     const std::string &resourceInterface,\r
82     const QueryParamsMap &queryParametersMap,\r
83     jobject jListener)\r
84 {\r
85     JniOnGetListener *onGetListener = addOnGetListener(env, jListener);\r
86 \r
87     GetCallback getCallback = [onGetListener](const HeaderOptions& opts,\r
88         const OCRepresentation& rep, const int eCode)\r
89     {\r
90         onGetListener->onGetCallback(opts, rep, eCode);\r
91     };\r
92 \r
93     return m_sharedResource->get(resourceType, resourceInterface, queryParametersMap,\r
94         getCallback);\r
95 }\r
96 \r
97 OCStackResult JniOcResource::get(JNIEnv* env, const std::string &resourceType,\r
98     const std::string &resourceInterface, const QueryParamsMap &queryParametersMap,\r
99     jobject jListener, QualityOfService QoS)\r
100 {\r
101     JniOnGetListener *onGetListener = addOnGetListener(env, jListener);\r
102 \r
103     GetCallback getCallback = [onGetListener](const HeaderOptions& opts,\r
104         const OCRepresentation& rep, const int eCode)\r
105     {\r
106         onGetListener->onGetCallback(opts, rep, eCode);\r
107     };\r
108 \r
109     return m_sharedResource->get(resourceType, resourceInterface, queryParametersMap,\r
110         getCallback, QoS);\r
111 }\r
112 \r
113 OCStackResult JniOcResource::put(JNIEnv* env, const OCRepresentation &representation,\r
114     const QueryParamsMap &queryParametersMap, jobject jListener)\r
115 {\r
116     JniOnPutListener *onPutListener = addOnPutListener(env, jListener);\r
117 \r
118     PutCallback putCallback = [onPutListener](const HeaderOptions& opts,\r
119         const OCRepresentation& rep, const int eCode)\r
120     {\r
121         onPutListener->onPutCallback(opts, rep, eCode);\r
122     };\r
123 \r
124     return m_sharedResource->put(representation, queryParametersMap, putCallback);\r
125 }\r
126 \r
127 OCStackResult JniOcResource::put(JNIEnv* env, const OCRepresentation &representation,\r
128     const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)\r
129 {\r
130     JniOnPutListener *onPutListener = addOnPutListener(env, jListener);\r
131 \r
132     PutCallback putCallback = [onPutListener](const HeaderOptions& opts,\r
133         const OCRepresentation& rep, const int eCode)\r
134     {\r
135         onPutListener->onPutCallback(opts, rep, eCode);\r
136     };\r
137 \r
138     return m_sharedResource->put(representation, queryParametersMap, putCallback, QoS);\r
139 }\r
140 \r
141 OCStackResult JniOcResource::put(JNIEnv* env, const std::string &resourceType,\r
142     const std::string &resourceInterface, const OCRepresentation &representation,\r
143     const QueryParamsMap &queryParametersMap, jobject jListener)\r
144 {\r
145     JniOnPutListener *onPutListener = addOnPutListener(env, jListener);\r
146 \r
147     PutCallback putCallback = [onPutListener](const HeaderOptions& opts,\r
148         const OCRepresentation& rep, const int eCode)\r
149     {\r
150         onPutListener->onPutCallback(opts, rep, eCode);\r
151     };\r
152 \r
153     return m_sharedResource->put(resourceType, resourceInterface, representation,\r
154         queryParametersMap, putCallback);\r
155 }\r
156 \r
157 OCStackResult JniOcResource::put(JNIEnv* env, const std::string &resourceType,\r
158     const std::string &resourceInterface, const OCRepresentation &representation,\r
159     const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)\r
160 {\r
161     JniOnPutListener *onPutListener = addOnPutListener(env, jListener);\r
162 \r
163     PutCallback putCallback = [onPutListener](const HeaderOptions& opts,\r
164         const OCRepresentation& rep, const int eCode)\r
165     {\r
166         onPutListener->onPutCallback(opts, rep, eCode);\r
167     };\r
168 \r
169     return m_sharedResource->put(resourceType, resourceInterface, representation,\r
170         queryParametersMap, putCallback, QoS);\r
171 }\r
172 \r
173 OCStackResult JniOcResource::post(JNIEnv* env, const OCRepresentation &representation,\r
174     const QueryParamsMap &queryParametersMap, jobject jListener)\r
175 {\r
176     JniOnPostListener *onPostListener = addOnPostListener(env, jListener);\r
177 \r
178     PostCallback postCallback = [onPostListener](const HeaderOptions& opts,\r
179         const OCRepresentation& rep, const int eCode)\r
180     {\r
181         onPostListener->onPostCallback(opts, rep, eCode);\r
182     };\r
183 \r
184     return m_sharedResource->post(representation, queryParametersMap, postCallback);\r
185 }\r
186 \r
187 OCStackResult JniOcResource::post(JNIEnv* env, const OCRepresentation &representation,\r
188     const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)\r
189 {\r
190     JniOnPostListener *onPostListener = addOnPostListener(env, jListener);\r
191 \r
192     PostCallback postCallback = [onPostListener](const HeaderOptions& opts,\r
193         const OCRepresentation& rep, const int eCode)\r
194     {\r
195         onPostListener->onPostCallback(opts, rep, eCode);\r
196     };\r
197 \r
198     return m_sharedResource->post(representation, queryParametersMap, postCallback, QoS);\r
199 }\r
200 \r
201 OCStackResult JniOcResource::post(JNIEnv* env, const std::string &resourceType,\r
202     const std::string &resourceInterface, const OCRepresentation &representation,\r
203     const QueryParamsMap &queryParametersMap, jobject jListener)\r
204 {\r
205     JniOnPostListener *onPostListener = addOnPostListener(env, jListener);\r
206 \r
207     PostCallback postCallback = [onPostListener](const HeaderOptions& opts,\r
208         const OCRepresentation& rep, const int eCode)\r
209     {\r
210         onPostListener->onPostCallback(opts, rep, eCode);\r
211     };\r
212 \r
213     return m_sharedResource->post(resourceType, resourceInterface, representation,\r
214         queryParametersMap, postCallback);\r
215 }\r
216 \r
217 OCStackResult JniOcResource::post(JNIEnv* env, const std::string &resourceType,\r
218     const std::string &resourceInterface, const OCRepresentation &representation,\r
219     const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)\r
220 {\r
221     JniOnPostListener *onPostListener = addOnPostListener(env, jListener);\r
222 \r
223     PostCallback postCallback = [onPostListener](const HeaderOptions& opts,\r
224         const OCRepresentation& rep, const int eCode)\r
225     {\r
226         onPostListener->onPostCallback(opts, rep, eCode);\r
227     };\r
228 \r
229     return m_sharedResource->post(resourceType, resourceInterface, representation,\r
230         queryParametersMap, postCallback, QoS);\r
231 }\r
232 \r
233 OCStackResult JniOcResource::deleteResource(JNIEnv* env, jobject jListener)\r
234 {\r
235     JniOnDeleteListener *onDeleteListener = addOnDeleteListener(env, jListener);\r
236 \r
237     DeleteCallback deleteCallback = [onDeleteListener](const HeaderOptions& opts,\r
238         const int eCode)\r
239     {\r
240         onDeleteListener->onDeleteCallback(opts, eCode);\r
241     };\r
242 \r
243     return m_sharedResource->deleteResource(deleteCallback);\r
244 }\r
245 \r
246 OCStackResult JniOcResource::deleteResource(JNIEnv* env, jobject jListener, QualityOfService QoS)\r
247 {\r
248     JniOnDeleteListener *onDeleteListener = addOnDeleteListener(env, jListener);\r
249 \r
250     DeleteCallback deleteCallback = [onDeleteListener](const HeaderOptions& opts, const int eCode)\r
251     {\r
252         onDeleteListener->onDeleteCallback(opts, eCode);\r
253     };\r
254 \r
255     return m_sharedResource->deleteResource(deleteCallback, QoS);\r
256 }\r
257 \r
258 OCStackResult JniOcResource::observe(JNIEnv* env, ObserveType observeType,\r
259     const QueryParamsMap &queryParametersMap, jobject jListener)\r
260 {\r
261     JniOnObserveListener *onObserveListener = addOnObserveListener(env, jListener);\r
262 \r
263     ObserveCallback observeCallback = [onObserveListener](const HeaderOptions& opts,\r
264         const OCRepresentation& rep, const int& eCode, const int& sequenceNumber)\r
265     {\r
266         onObserveListener->onObserveCallback(opts, rep, eCode, sequenceNumber);\r
267     };\r
268 \r
269     return m_sharedResource->observe(observeType, queryParametersMap, observeCallback);\r
270 }\r
271 \r
272 OCStackResult JniOcResource::observe(JNIEnv* env, ObserveType observeType,\r
273     const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)\r
274 {\r
275     JniOnObserveListener *onObserveListener = addOnObserveListener(env, jListener);\r
276 \r
277     ObserveCallback observeCallback = [onObserveListener](const HeaderOptions& opts,\r
278         const OCRepresentation& rep, const int& eCode, const int& sequenceNumber)\r
279     {\r
280         onObserveListener->onObserveCallback(opts, rep, eCode, sequenceNumber);\r
281     };\r
282 \r
283     return m_sharedResource->observe(observeType, queryParametersMap, observeCallback, QoS);\r
284 }\r
285 \r
286 OCStackResult JniOcResource::cancelObserve(JNIEnv* env)\r
287 {\r
288     this->m_onObserveManager.removeAllListeners(env);\r
289     return m_sharedResource->cancelObserve();\r
290 }\r
291 \r
292 OCStackResult JniOcResource::cancelObserve(JNIEnv* env, QualityOfService qos)\r
293 {\r
294     //TODO confirm behavior\r
295     //add removal of java listeners by qos\r
296     this->m_onObserveManager.removeAllListeners(env);\r
297     return m_sharedResource->cancelObserve(qos);\r
298 }\r
299 \r
300 void JniOcResource::setHeaderOptions(const HeaderOptions &headerOptions)\r
301 {\r
302     m_sharedResource->setHeaderOptions(headerOptions);\r
303 }\r
304 \r
305 void JniOcResource::unsetHeaderOptions()\r
306 {\r
307     m_sharedResource->unsetHeaderOptions();\r
308 }\r
309 \r
310 std::string JniOcResource::host()\r
311 {\r
312     return m_sharedResource->host();\r
313 }\r
314 \r
315 std::string JniOcResource::uri()\r
316 {\r
317     return m_sharedResource->uri();\r
318 }\r
319 \r
320 OCConnectivityType JniOcResource::connectivityType() const\r
321 {\r
322     return m_sharedResource->connectivityType();\r
323 }\r
324 \r
325 bool JniOcResource::isObservable()\r
326 {\r
327     return m_sharedResource->isObservable();\r
328 }\r
329 \r
330 std::vector< std::string > JniOcResource::getResourceTypes() const\r
331 {\r
332     return m_sharedResource->getResourceTypes();\r
333 }\r
334 \r
335 std::vector< std::string > JniOcResource::getResourceInterfaces(void) const\r
336 {\r
337     return m_sharedResource->getResourceInterfaces();\r
338 }\r
339 \r
340 OCResourceIdentifier JniOcResource::uniqueIdentifier() const\r
341 {\r
342     return m_sharedResource->uniqueIdentifier();\r
343 }\r
344 \r
345 std::string JniOcResource::sid() const\r
346 {\r
347     return m_sharedResource->sid();\r
348 }\r
349 \r
350 JniOnGetListener* JniOcResource::addOnGetListener(JNIEnv* env, jobject jListener)\r
351 {\r
352     return this->m_onGetManager.addListener(env, jListener, this);\r
353 }\r
354 \r
355 JniOnPutListener* JniOcResource::addOnPutListener(JNIEnv* env, jobject jListener)\r
356 {\r
357     return this->m_onPutManager.addListener(env, jListener, this);\r
358 }\r
359 \r
360 JniOnPostListener* JniOcResource::addOnPostListener(JNIEnv* env, jobject jListener)\r
361 {\r
362     return this->m_onPostManager.addListener(env, jListener, this);\r
363 }\r
364 \r
365 JniOnDeleteListener* JniOcResource::addOnDeleteListener(JNIEnv* env, jobject jListener)\r
366 {\r
367     return this->m_onDeleteManager.addListener(env, jListener, this);\r
368 }\r
369 \r
370 JniOnObserveListener* JniOcResource::addOnObserveListener(JNIEnv* env, jobject jListener)\r
371 {\r
372     return this->m_onObserveManager.addListener(env, jListener, this);\r
373 }\r
374 \r
375 void JniOcResource::removeOnGetListener(JNIEnv* env, jobject jListener)\r
376 {\r
377     this->m_onGetManager.removeListener(env, jListener);\r
378 }\r
379 \r
380 void JniOcResource::removeOnPutListener(JNIEnv* env, jobject jListener)\r
381 {\r
382     this->m_onPutManager.removeListener(env, jListener);\r
383 }\r
384 \r
385 void JniOcResource::removeOnPostListener(JNIEnv* env, jobject jListener)\r
386 {\r
387     this->m_onPostManager.removeListener(env, jListener);\r
388 }\r
389 \r
390 void JniOcResource::removeOnDeleteListener(JNIEnv* env, jobject jListener)\r
391 {\r
392     this->m_onDeleteManager.removeListener(env, jListener);\r
393 }\r
394 \r
395 void JniOcResource::removeOnObserveListener(JNIEnv* env, jobject jListener)\r
396 {\r
397     this->m_onObserveManager.removeListener(env, jListener);\r
398 }\r
399 \r
400 std::shared_ptr<OCResource> JniOcResource::getOCResource()\r
401 {\r
402     return this->m_sharedResource;\r
403 }\r
404 \r
405 JniOcResource* JniOcResource::getJniOcResourcePtr(JNIEnv *env, jobject thiz)\r
406 {\r
407     JniOcResource *resource = GetHandle<JniOcResource>(env, thiz);\r
408     if (env->ExceptionCheck())\r
409     {\r
410         LOGE("Failed to get native handle from OcResource");\r
411     }\r
412     if (!resource)\r
413     {\r
414         ThrowOcException(JNI_NO_NATIVE_POINTER, "");\r
415     }\r
416     return resource;\r
417 }\r
418 \r
419 /*\r
420 * Class:     org_iotivity_base_OcResource\r
421 * Method:    get\r
422 * Signature: (Ljava/util/Map;Lorg/iotivity/base/OcResource/OnGetListener;)V\r
423 */\r
424 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get\r
425 (JNIEnv *env, jobject thiz, jobject jQueryParamsMap, jobject jListener)\r
426 {\r
427     LOGD("OcResource_get");\r
428     if (!jQueryParamsMap)\r
429     {\r
430         ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");\r
431         return;\r
432     }\r
433     if (!jListener)\r
434     {\r
435         ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");\r
436         return;\r
437     }\r
438     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
439     if (!resource) return;\r
440 \r
441     QueryParamsMap qpm;\r
442     JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);\r
443 \r
444     try\r
445     {\r
446         OCStackResult result = resource->get(\r
447             env,\r
448             qpm,\r
449             jListener);\r
450 \r
451         if (OC_STACK_OK != result)\r
452         {\r
453             ThrowOcException(result, "OcResource_get");\r
454         }\r
455     }\r
456     catch (OCException& e)\r
457     {\r
458         LOGE("%s", e.reason().c_str());\r
459         ThrowOcException(e.code(), e.reason().c_str());\r
460     }\r
461 }\r
462 \r
463 /*\r
464 * Class:     org_iotivity_base_OcResource\r
465 * Method:    get1\r
466 * Signature: (Ljava/util/Map;Lorg/iotivity/base/OcResource/OnGetListener;I)V\r
467 */\r
468 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get1\r
469 (JNIEnv *env, jobject thiz, jobject jQueryParamsMap, jobject jListener, jint jQoS)\r
470 {\r
471     LOGD("OcResource_get");\r
472     if (!jQueryParamsMap)\r
473     {\r
474         ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");\r
475         return;\r
476     }\r
477     if (!jListener)\r
478     {\r
479         ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");\r
480         return;\r
481     }\r
482     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
483     if (!resource) return;\r
484 \r
485     QueryParamsMap qpm;\r
486     JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);\r
487 \r
488     try\r
489     {\r
490         OCStackResult result = resource->get(\r
491             env,\r
492             qpm,\r
493             jListener,\r
494             JniUtils::getQOS(env, static_cast<int>(jQoS)));\r
495 \r
496         if (OC_STACK_OK != result)\r
497         {\r
498             ThrowOcException(result, "OcResource_get");\r
499         }\r
500     }\r
501     catch (OCException& e)\r
502     {\r
503         LOGE("%s", e.reason().c_str());\r
504         ThrowOcException(e.code(), e.reason().c_str());\r
505     }\r
506 }\r
507 \r
508 /*\r
509 * Class:     org_iotivity_base_OcResource\r
510 * Method:    get2\r
511 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;\r
512 Lorg/iotivity/base/OcResource/OnGetListener;)V\r
513 */\r
514 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get2\r
515 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,\r
516 jobject jQueryParamsMap, jobject jListener)\r
517 {\r
518     LOGD("OcResource_get");\r
519     std::string resourceType;\r
520     if (jResourceType)\r
521     {\r
522         resourceType = env->GetStringUTFChars(jResourceType, NULL);\r
523     }\r
524     std::string resourceInterface;\r
525     if (jResourceInterface)\r
526     {\r
527         resourceInterface = env->GetStringUTFChars(jResourceInterface, NULL);\r
528     }\r
529     if (!jQueryParamsMap)\r
530     {\r
531         ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");\r
532         return;\r
533     }\r
534     if (!jListener)\r
535     {\r
536         ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");\r
537         return;\r
538     }\r
539     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
540     if (!resource) return;\r
541 \r
542     QueryParamsMap qpm;\r
543     JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);\r
544     try\r
545     {\r
546         OCStackResult result = resource->get(\r
547             env,\r
548             resourceType,\r
549             resourceInterface,\r
550             qpm,\r
551             jListener);\r
552 \r
553         if (OC_STACK_OK != result)\r
554         {\r
555             ThrowOcException(result, "OcResource_get");\r
556         }\r
557     }\r
558     catch (OCException& e)\r
559     {\r
560         LOGE("%s", e.reason().c_str());\r
561         ThrowOcException(e.code(), e.reason().c_str());\r
562     }\r
563 }\r
564 \r
565 /*\r
566 * Class:     org_iotivity_base_OcResource\r
567 * Method:    get3\r
568 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;\r
569 Lorg/iotivity/base/OcResource/OnGetListener;I)V\r
570 */\r
571 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get3\r
572 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,\r
573 jobject jQueryParamsMap, jobject jListener, jint jQoS)\r
574 {\r
575     LOGD("OcResource_get");\r
576     if (!jQueryParamsMap)\r
577     {\r
578         ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");\r
579         return;\r
580     }\r
581     if (!jListener)\r
582     {\r
583         ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");\r
584         return;\r
585     }\r
586     std::string resourceType;\r
587     if (jResourceType)\r
588     {\r
589         resourceType = env->GetStringUTFChars(jResourceType, NULL);\r
590     }\r
591     std::string resourceInterface;\r
592     if (jResourceInterface)\r
593     {\r
594         resourceInterface = env->GetStringUTFChars(jResourceInterface, NULL);\r
595     }\r
596     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
597     if (!resource) return;\r
598 \r
599     QueryParamsMap qpm;\r
600     JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);\r
601 \r
602     try\r
603     {\r
604         OCStackResult result = resource->get(\r
605             env,\r
606             resourceType,\r
607             resourceInterface,\r
608             qpm,\r
609             jListener,\r
610             JniUtils::getQOS(env, static_cast<int>(jQoS)));\r
611 \r
612         if (OC_STACK_OK != result)\r
613         {\r
614             ThrowOcException(result, "OcResource_get");\r
615         }\r
616     }\r
617     catch (OCException& e)\r
618     {\r
619         LOGE("%s", e.reason().c_str());\r
620         ThrowOcException(e.code(), e.reason().c_str());\r
621     }\r
622 }\r
623 \r
624 /*\r
625 * Class:     org_iotivity_base_OcResource\r
626 * Method:    put\r
627 * Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;\r
628 Lorg/iotivity/base/OcResource/OnPutListener;)V\r
629 */\r
630 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put\r
631 (JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)\r
632 {\r
633     LOGD("OcResource_put");\r
634     if (!jRepresentation)\r
635     {\r
636         ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");\r
637         return;\r
638     }\r
639     if (!jQueryParamsMap)\r
640     {\r
641         ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");\r
642         return;\r
643     }\r
644     if (!jListener)\r
645     {\r
646         ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");\r
647         return;\r
648     }\r
649     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
650     if (!resource) return;\r
651 \r
652     OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);\r
653     if (!representation) return;\r
654 \r
655     QueryParamsMap qpm;\r
656     JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);\r
657 \r
658     try\r
659     {\r
660         OCStackResult result = resource->put(\r
661             env,\r
662             *representation,\r
663             qpm,\r
664             jListener);\r
665 \r
666         if (OC_STACK_OK != result)\r
667         {\r
668             ThrowOcException(result, "OcResource_put");\r
669         }\r
670     }\r
671     catch (OCException& e)\r
672     {\r
673         LOGE("%s", e.reason().c_str());\r
674         ThrowOcException(e.code(), e.reason().c_str());\r
675     }\r
676 }\r
677 \r
678 /*\r
679 * Class:     org_iotivity_base_OcResource\r
680 * Method:    put1\r
681 * Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;\r
682 Lorg/iotivity/base/OcResource/OnPutListener;I)V\r
683 */\r
684 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put1\r
685 (JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap,\r
686 jobject jListener, jint jQoS)\r
687 {\r
688     LOGD("OcResource_put");\r
689     if (!jRepresentation)\r
690     {\r
691         ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");\r
692         return;\r
693     }\r
694     if (!jQueryParamsMap)\r
695     {\r
696         ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");\r
697         return;\r
698     }\r
699     if (!jListener)\r
700     {\r
701         ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");\r
702         return;\r
703     }\r
704     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
705     if (!resource) return;\r
706 \r
707     OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);\r
708     if (!representation) return;\r
709 \r
710     QueryParamsMap qpm;\r
711     JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);\r
712 \r
713     try\r
714     {\r
715         OCStackResult result = resource->put(\r
716             env,\r
717             *representation,\r
718             qpm,\r
719             jListener,\r
720             JniUtils::getQOS(env, static_cast<int>(jQoS)));\r
721 \r
722         if (OC_STACK_OK != result)\r
723         {\r
724             ThrowOcException(result, "OcResource_put");\r
725         }\r
726     }\r
727     catch (OCException& e)\r
728     {\r
729         LOGE("%s", e.reason().c_str());\r
730         ThrowOcException(e.code(), e.reason().c_str());\r
731     }\r
732 }\r
733 \r
734 /*\r
735 * Class:     org_iotivity_base_OcResource\r
736 * Method:    put2\r
737 * Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;\r
738 Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPutListener;)V\r
739 */\r
740 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put2\r
741 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,\r
742 jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)\r
743 {\r
744     LOGD("OcResource_put");\r
745     std::string resourceType;\r
746     if (jResourceType)\r
747     {\r
748         resourceType = env->GetStringUTFChars(jResourceType, NULL);\r
749     }\r
750     std::string resourceInterface;\r
751     if (jResourceInterface)\r
752     {\r
753         resourceInterface = env->GetStringUTFChars(jResourceInterface, NULL);\r
754     }\r
755     if (!jRepresentation)\r
756     {\r
757         ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");\r
758         return;\r
759     }\r
760     if (!jQueryParamsMap)\r
761     {\r
762         ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");\r
763         return;\r
764     }\r
765     if (!jListener)\r
766     {\r
767         ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");\r
768         return;\r
769     }\r
770     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
771     if (!resource) return;\r
772 \r
773     OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);\r
774     if (!representation) return;\r
775 \r
776     QueryParamsMap qpm;\r
777     JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);\r
778 \r
779     try\r
780     {\r
781         OCStackResult result = resource->put(\r
782             env,\r
783             resourceType,\r
784             resourceInterface,\r
785             *representation,\r
786             qpm,\r
787             jListener);\r
788 \r
789         if (OC_STACK_OK != result)\r
790         {\r
791             ThrowOcException(result, "OcResource_put");\r
792         }\r
793     }\r
794     catch (OCException& e)\r
795     {\r
796         LOGE("%s", e.reason().c_str());\r
797         ThrowOcException(e.code(), e.reason().c_str());\r
798     }\r
799 }\r
800 \r
801 /*\r
802 * Class:     org_iotivity_base_OcResource\r
803 * Method:    put3\r
804 * Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;\r
805 Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPutListener;I)V\r
806 */\r
807 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put3\r
808 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface, jobject jRepresentation,\r
809 jobject jQueryParamsMap, jobject jListener, jint jQoS)\r
810 {\r
811     LOGD("OcResource_put");\r
812     if (!jRepresentation)\r
813     {\r
814         ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");\r
815         return;\r
816     }\r
817     if (!jQueryParamsMap)\r
818     {\r
819         ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");\r
820         return;\r
821     }\r
822     if (!jListener)\r
823     {\r
824         ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");\r
825         return;\r
826     }\r
827     std::string resourceType;\r
828     if (jResourceType)\r
829     {\r
830         resourceType = env->GetStringUTFChars(jResourceType, NULL);\r
831     }\r
832     std::string resourceInterface;\r
833     if (jResourceInterface)\r
834     {\r
835         resourceInterface = env->GetStringUTFChars(jResourceInterface, NULL);\r
836     }\r
837 \r
838     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
839     if (!resource) return;\r
840 \r
841     OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);\r
842     if (!representation) return;\r
843 \r
844     QueryParamsMap qpm;\r
845     JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);\r
846 \r
847     try\r
848     {\r
849         OCStackResult result = resource->put(\r
850             env,\r
851             resourceType,\r
852             resourceInterface,\r
853             *representation,\r
854             qpm,\r
855             jListener,\r
856             JniUtils::getQOS(env, static_cast<int>(jQoS)));\r
857 \r
858         if (OC_STACK_OK != result)\r
859         {\r
860             ThrowOcException(result, "OcResource_put");\r
861         }\r
862     }\r
863     catch (OCException& e)\r
864     {\r
865         LOGE("%s", e.reason().c_str());\r
866         ThrowOcException(e.code(), e.reason().c_str());\r
867     }\r
868 }\r
869 \r
870 /*\r
871 * Class:     org_iotivity_base_OcResource\r
872 * Method:    post\r
873 * Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;)V\r
874 */\r
875 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post\r
876 (JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)\r
877 {\r
878     LOGD("OcResource_post");\r
879     if (!jRepresentation)\r
880     {\r
881         ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");\r
882         return;\r
883     }\r
884     if (!jQueryParamsMap)\r
885     {\r
886         ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");\r
887         return;\r
888     }\r
889     if (!jListener)\r
890     {\r
891         ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");\r
892         return;\r
893     }\r
894     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
895     if (!resource) return;\r
896 \r
897     OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);\r
898     if (!representation) return;\r
899 \r
900     QueryParamsMap qpm;\r
901     JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);\r
902 \r
903     try\r
904     {\r
905         OCStackResult result = resource->post(\r
906             env,\r
907             *representation,\r
908             qpm,\r
909             jListener);\r
910 \r
911         if (OC_STACK_OK != result)\r
912         {\r
913             ThrowOcException(result, "OcResource_post");\r
914         }\r
915     }\r
916     catch (OCException& e)\r
917     {\r
918         LOGE("%s", e.reason().c_str());\r
919         ThrowOcException(e.code(), e.reason().c_str());\r
920     }\r
921 }\r
922 \r
923 /*\r
924 * Class:     org_iotivity_base_OcResource\r
925 * Method:    post1\r
926 * Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;I)V\r
927 */\r
928 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post1\r
929 (JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap, jobject jListener, jint jQoS)\r
930 {\r
931     LOGD("OcResource_post");\r
932     if (!jRepresentation)\r
933     {\r
934         ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");\r
935         return;\r
936     }\r
937     if (!jQueryParamsMap)\r
938     {\r
939         ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");\r
940         return;\r
941     }\r
942     if (!jListener)\r
943     {\r
944         ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");\r
945         return;\r
946     }\r
947     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
948     if (!resource) return;\r
949 \r
950     OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);\r
951     if (!representation) return;\r
952 \r
953     QueryParamsMap qpm;\r
954     JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);\r
955 \r
956     try\r
957     {\r
958         OCStackResult result = resource->post(\r
959             env,\r
960             *representation,\r
961             qpm,\r
962             jListener,\r
963             JniUtils::getQOS(env, static_cast<int>(jQoS)));\r
964 \r
965         if (OC_STACK_OK != result)\r
966         {\r
967             ThrowOcException(result, "OcResource_post");\r
968         }\r
969     }\r
970     catch (OCException& e)\r
971     {\r
972         LOGE("%s", e.reason().c_str());\r
973         ThrowOcException(e.code(), e.reason().c_str());\r
974     }\r
975 }\r
976 \r
977 /*\r
978 * Class:     org_iotivity_base_OcResource\r
979 * Method:    post2\r
980 * Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;\r
981 Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;)V\r
982 */\r
983 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post2\r
984 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,\r
985 jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)\r
986 {\r
987     LOGD("OcResource_post");\r
988     if (!jRepresentation)\r
989     {\r
990         ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");\r
991         return;\r
992     }\r
993     if (!jQueryParamsMap)\r
994     {\r
995         ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");\r
996         return;\r
997     }\r
998     if (!jListener)\r
999     {\r
1000         ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");\r
1001         return;\r
1002     }\r
1003     std::string resourceType;\r
1004     if (jResourceType)\r
1005     {\r
1006         resourceType = env->GetStringUTFChars(jResourceType, NULL);\r
1007     }\r
1008     std::string resourceInterface;\r
1009     if (jResourceInterface)\r
1010     {\r
1011         resourceInterface = env->GetStringUTFChars(jResourceInterface, NULL);\r
1012     }\r
1013 \r
1014     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
1015     if (!resource) return;\r
1016 \r
1017     OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);\r
1018     if (!representation) return;\r
1019 \r
1020     QueryParamsMap qpm;\r
1021     JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);\r
1022 \r
1023     try\r
1024     {\r
1025         OCStackResult result = resource->post(\r
1026             env,\r
1027             resourceType,\r
1028             resourceInterface,\r
1029             *representation,\r
1030             qpm,\r
1031             jListener);\r
1032 \r
1033         if (OC_STACK_OK != result)\r
1034         {\r
1035             ThrowOcException(result, "OcResource_post");\r
1036         }\r
1037     }\r
1038     catch (OCException& e)\r
1039     {\r
1040         LOGE("%s", e.reason().c_str());\r
1041         ThrowOcException(e.code(), e.reason().c_str());\r
1042     }\r
1043 }\r
1044 \r
1045 /*\r
1046 * Class:     org_iotivity_base_OcResource\r
1047 * Method:    post3\r
1048 * Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;\r
1049 Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;I)V\r
1050 */\r
1051 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post3\r
1052 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,\r
1053 jobject jRepresentation, jobject jQueryParamsMap, jobject jListener, jint jQoS)\r
1054 {\r
1055     LOGD("OcResource_post");\r
1056     if (!jRepresentation)\r
1057     {\r
1058         ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");\r
1059         return;\r
1060     }\r
1061     if (!jQueryParamsMap)\r
1062     {\r
1063         ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");\r
1064         return;\r
1065     }\r
1066     if (!jListener)\r
1067     {\r
1068         ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");\r
1069         return;\r
1070     }\r
1071     std::string resourceType;\r
1072     if (jResourceType)\r
1073     {\r
1074         resourceType = env->GetStringUTFChars(jResourceType, NULL);\r
1075     }\r
1076     std::string resourceInterface;\r
1077     if (jResourceInterface)\r
1078     {\r
1079         resourceInterface = env->GetStringUTFChars(jResourceInterface, NULL);\r
1080     }\r
1081 \r
1082     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
1083     if (!resource) return;\r
1084 \r
1085     OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);\r
1086     if (!representation) return;\r
1087 \r
1088     QueryParamsMap qpm;\r
1089     JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);\r
1090 \r
1091     try\r
1092     {\r
1093         OCStackResult result = resource->post(\r
1094             env,\r
1095             resourceType,\r
1096             resourceInterface,\r
1097             *representation,\r
1098             qpm,\r
1099             jListener,\r
1100             JniUtils::getQOS(env, static_cast<int>(jQoS)));\r
1101 \r
1102         if (OC_STACK_OK != result)\r
1103         {\r
1104             ThrowOcException(result, "OcResource_post");\r
1105         }\r
1106     }\r
1107     catch (OCException& e)\r
1108     {\r
1109         LOGE("%s", e.reason().c_str());\r
1110         ThrowOcException(e.code(), e.reason().c_str());\r
1111     }\r
1112 }\r
1113 \r
1114 /*\r
1115 * Class:     org_iotivity_base_OcResource\r
1116 * Method:    deleteResource\r
1117 * Signature: (Lorg/iotivity/base/OcResource/OnDeleteListener;)V\r
1118 */\r
1119 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_deleteResource\r
1120 (JNIEnv *env, jobject thiz, jobject jListener)\r
1121 {\r
1122     LOGD("OcResource_deleteResource");\r
1123     if (!jListener)\r
1124     {\r
1125         ThrowOcException(OC_STACK_INVALID_PARAM, "onDeleteListener cannot be null");\r
1126         return;\r
1127     }\r
1128     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
1129     if (!resource) return;\r
1130 \r
1131     try\r
1132     {\r
1133         OCStackResult result = resource->deleteResource(\r
1134             env,\r
1135             jListener);\r
1136 \r
1137         if (OC_STACK_OK != result)\r
1138         {\r
1139             ThrowOcException(result, "OcResource_deleteResource");\r
1140         }\r
1141     }\r
1142     catch (OCException& e)\r
1143     {\r
1144         LOGE("%s", e.reason().c_str());\r
1145         ThrowOcException(e.code(), e.reason().c_str());\r
1146     }\r
1147 }\r
1148 \r
1149 /*\r
1150 * Class:     org_iotivity_base_OcResource\r
1151 * Method:    deleteResource1\r
1152 * Signature: (Lorg/iotivity/base/OcResource/OnDeleteListener;I)V\r
1153 */\r
1154 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_deleteResource1\r
1155 (JNIEnv *env, jobject thiz, jobject jListener, jint jQoS)\r
1156 {\r
1157     LOGD("OcResource_deleteResource");\r
1158     if (!jListener)\r
1159     {\r
1160         ThrowOcException(OC_STACK_INVALID_PARAM, "onDeleteListener cannot be null");\r
1161         return;\r
1162     }\r
1163     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
1164     if (!resource) return;\r
1165 \r
1166     try\r
1167     {\r
1168         OCStackResult result = resource->deleteResource(\r
1169             env,\r
1170             jListener,\r
1171             JniUtils::getQOS(env, static_cast<int>(jQoS)));\r
1172 \r
1173         if (OC_STACK_OK != result)\r
1174         {\r
1175             ThrowOcException(result, "OcResource_deleteResource");\r
1176         }\r
1177     }\r
1178     catch (OCException& e)\r
1179     {\r
1180         LOGE("%s", e.reason().c_str());\r
1181         ThrowOcException(e.code(), e.reason().c_str());\r
1182     }\r
1183 }\r
1184 \r
1185 /*\r
1186 * Class:     org_iotivity_base_OcResource\r
1187 * Method:    observe\r
1188 * Signature: (Lorg/iotivity/base/ObserveType;Ljava/util/Map;\r
1189 Lorg/iotivity/base/OcResource/OnObserveListener;)V\r
1190 */\r
1191 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_observe\r
1192 (JNIEnv *env, jobject thiz, jint observeType, jobject jQueryParamsMap, jobject jListener)\r
1193 {\r
1194     LOGD("OcResource_observe");\r
1195     if (!jQueryParamsMap)\r
1196     {\r
1197         ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");\r
1198         return;\r
1199     }\r
1200     if (!jListener)\r
1201     {\r
1202         ThrowOcException(OC_STACK_INVALID_PARAM, "onObserveListener cannot be null");\r
1203         return;\r
1204     }\r
1205     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
1206     if (!resource) return;\r
1207 \r
1208     QueryParamsMap qpm;\r
1209     JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);\r
1210 \r
1211     try\r
1212     {\r
1213         OCStackResult result = resource->observe(\r
1214             env,\r
1215             JniUtils::getObserveType(env, static_cast<int>(observeType)),\r
1216             qpm,\r
1217             jListener);\r
1218 \r
1219         if (OC_STACK_OK != result)\r
1220         {\r
1221             ThrowOcException(result, "OcResource_observe");\r
1222         }\r
1223     }\r
1224     catch (OCException& e)\r
1225     {\r
1226         LOGE("%s", e.reason().c_str());\r
1227         ThrowOcException(e.code(), e.reason().c_str());\r
1228     }\r
1229 }\r
1230 \r
1231 /*\r
1232 * Class:     org_iotivity_base_OcResource\r
1233 * Method:    observe1\r
1234 * Signature: (Lorg/iotivity/base/ObserveType;Ljava/util/Map;\r
1235 Lorg/iotivity/base/OcResource/OnObserveListener;I)V\r
1236 */\r
1237 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_observe1\r
1238 (JNIEnv *env, jobject thiz, jint observeType, jobject jQueryParamsMap,\r
1239 jobject jListener, jint jQoS)\r
1240 {\r
1241     LOGD("OcResource_observe");\r
1242     if (!jQueryParamsMap)\r
1243     {\r
1244         ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");\r
1245         return;\r
1246     }\r
1247     if (!jListener)\r
1248     {\r
1249         ThrowOcException(OC_STACK_INVALID_PARAM, "onObserveListener cannot be null");\r
1250         return;\r
1251     }\r
1252     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
1253     if (!resource) return;\r
1254 \r
1255     QueryParamsMap qpm;\r
1256     JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);\r
1257 \r
1258     try\r
1259     {\r
1260         OCStackResult result = resource->observe(\r
1261             env,\r
1262             JniUtils::getObserveType(env, static_cast<int>(observeType)),\r
1263             qpm,\r
1264             jListener,\r
1265             JniUtils::getQOS(env, static_cast<int>(jQoS)));\r
1266 \r
1267         if (OC_STACK_OK != result)\r
1268         {\r
1269             ThrowOcException(result, "OcResource_observe");\r
1270         }\r
1271     }\r
1272     catch (OCException& e)\r
1273     {\r
1274         LOGE("%s", e.reason().c_str());\r
1275         ThrowOcException(e.code(), e.reason().c_str());\r
1276     }\r
1277 }\r
1278 \r
1279 /*\r
1280 * Class:     org_iotivity_base_OcResource\r
1281 * Method:    cancelObserve\r
1282 * Signature: ()V\r
1283 */\r
1284 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_cancelObserve\r
1285 (JNIEnv *env, jobject thiz)\r
1286 {\r
1287     LOGD("OcResource_cancelObserve");\r
1288     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
1289     if (!resource) return;\r
1290 \r
1291     try\r
1292     {\r
1293         OCStackResult result = resource->cancelObserve(env);\r
1294 \r
1295         if (OC_STACK_OK != result)\r
1296         {\r
1297             ThrowOcException(result, "OcResource_cancelObserve");\r
1298         }\r
1299     }\r
1300     catch (OCException& e)\r
1301     {\r
1302         LOGE("%s", e.reason().c_str());\r
1303         ThrowOcException(e.code(), e.reason().c_str());\r
1304     }\r
1305 }\r
1306 \r
1307 /*\r
1308 * Class:     org_iotivity_base_OcResource\r
1309 * Method:    cancelObserve1\r
1310 * Signature: I)V\r
1311 */\r
1312 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_cancelObserve1\r
1313 (JNIEnv *env, jobject thiz, jint jQoS)\r
1314 {\r
1315     LOGD("OcResource_cancelObserve1");\r
1316     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
1317     if (!resource) return;\r
1318 \r
1319     try\r
1320     {\r
1321         OCStackResult result = resource->cancelObserve(\r
1322             env,\r
1323             JniUtils::getQOS(env, static_cast<int>(jQoS)));\r
1324 \r
1325         if (OC_STACK_OK != result)\r
1326         {\r
1327             ThrowOcException(result, "OcResource_cancelObserve");\r
1328         }\r
1329     }\r
1330     catch (OCException& e)\r
1331     {\r
1332         LOGE("%s", e.reason().c_str());\r
1333         ThrowOcException(e.code(), e.reason().c_str());\r
1334     }\r
1335 }\r
1336 \r
1337 /*\r
1338 * Class:     org_iotivity_base_OcResource\r
1339 * Method:    setHeaderOptions\r
1340 * Signature: ([Lorg/iotivity/OcHeaderOption;)V\r
1341 */\r
1342 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_setHeaderOptions\r
1343 (JNIEnv *env, jobject thiz, jobjectArray jheaderOptionArr)\r
1344 {\r
1345     LOGD("OcResource_setHeaderOptions");\r
1346     if (!jheaderOptionArr)\r
1347     {\r
1348         ThrowOcException(OC_STACK_INVALID_PARAM, "headerOptionList cannot be null");\r
1349         return;\r
1350     }\r
1351     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
1352     if (!resource) return;\r
1353 \r
1354     HeaderOptions headerOptions;\r
1355     JniUtils::convertJavaHeaderOptionsArrToVector(env, jheaderOptionArr, headerOptions);\r
1356 \r
1357     resource->setHeaderOptions(headerOptions);\r
1358 }\r
1359 \r
1360 /*\r
1361 * Class:     org_iotivity_base_OcResource\r
1362 * Method:    unsetHeaderOptions\r
1363 * Signature: ()V\r
1364 */\r
1365 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_unsetHeaderOptions\r
1366 (JNIEnv *env, jobject thiz)\r
1367 {\r
1368     LOGD("OcResource_unsetHeaderOptions");\r
1369     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
1370     if (!resource) return;\r
1371 \r
1372     resource->unsetHeaderOptions();\r
1373 }\r
1374 \r
1375 /*\r
1376 * Class:     org_iotivity_base_OcResource\r
1377 * Method:    getHost\r
1378 * Signature: ()Ljava/lang/String;\r
1379 */\r
1380 JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResource_getHost\r
1381 (JNIEnv *env, jobject thiz)\r
1382 {\r
1383     LOGD("OcResource_getHost");\r
1384     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
1385     if (!resource) return nullptr;\r
1386 \r
1387     return env->NewStringUTF(resource->host().c_str());\r
1388 }\r
1389 \r
1390 /*\r
1391 * Class:     org_iotivity_base_OcResource\r
1392 * Method:    getUri\r
1393 * Signature: ()Ljava/lang/String;\r
1394 */\r
1395 JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResource_getUri\r
1396 (JNIEnv *env, jobject thiz)\r
1397 {\r
1398     LOGD("OcResource_getUri");\r
1399     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
1400     if (!resource) return nullptr;\r
1401 \r
1402     return env->NewStringUTF(resource->uri().c_str());\r
1403 }\r
1404 \r
1405 /*\r
1406 * Class:     org_iotivity_base_OcResource\r
1407 * Method:    getConnectivityTypeN\r
1408 * Signature: ()I\r
1409 */\r
1410 JNIEXPORT jint JNICALL Java_org_iotivity_base_OcResource_getConnectivityTypeN\r
1411 (JNIEnv *env, jobject thiz)\r
1412 {\r
1413     LOGD("OcResource_getConnectivityType");\r
1414     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
1415     if (!resource) return -1;\r
1416 \r
1417     OCConnectivityType connectivityType = resource->connectivityType();\r
1418     return static_cast<jint>(connectivityType);\r
1419 }\r
1420 \r
1421 /*\r
1422 * Class:     org_iotivity_base_OcResource\r
1423 * Method:    isObservable\r
1424 * Signature: ()Z\r
1425 */\r
1426 JNIEXPORT jboolean JNICALL Java_org_iotivity_base_OcResource_isObservable\r
1427 (JNIEnv *env, jobject thiz)\r
1428 {\r
1429     LOGD("OcResource_isObservable");\r
1430     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
1431     return (jboolean)resource->isObservable();\r
1432 }\r
1433 \r
1434 /*\r
1435 * Class:     org_iotivity_base_OcResource\r
1436 * Method:    getResourceTypes\r
1437 * Signature: ()Ljava/util/List;\r
1438 */\r
1439 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResource_getResourceTypes\r
1440 (JNIEnv *env, jobject thiz)\r
1441 {\r
1442     LOGD("OcResource_getResourceTypes");\r
1443     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
1444     if (!resource) return nullptr;\r
1445 \r
1446     std::vector<std::string> resourceTypes = resource->getResourceTypes();\r
1447 \r
1448     return JniUtils::convertStrVectorToJavaStrList(env, resourceTypes);\r
1449 }\r
1450 \r
1451 /*\r
1452 * Class:     org_iotivity_base_OcResource\r
1453 * Method:    getResourceInterfaces\r
1454 * Signature: ()Ljava/util/List;\r
1455 */\r
1456 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResource_getResourceInterfaces\r
1457 (JNIEnv *env, jobject thiz)\r
1458 {\r
1459     LOGD("OcResource_getResourceInterfaces");\r
1460     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
1461     if (!resource) return nullptr;\r
1462 \r
1463     std::vector<std::string> resourceInterfaces = resource->getResourceInterfaces();\r
1464 \r
1465     return JniUtils::convertStrVectorToJavaStrList(env, resourceInterfaces);\r
1466 }\r
1467 \r
1468 /*\r
1469 * Class:     org_iotivity_base_OcResource\r
1470 * Method:    getUniqueIdentifier\r
1471 * Signature: ()Lorg/iotivity/base/OcResourceIdentifier;\r
1472 */\r
1473 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResource_getUniqueIdentifier\r
1474 (JNIEnv *env, jobject thiz)\r
1475 {\r
1476     LOGD("OcResource_getUniqueIdentifier");\r
1477     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
1478     if (!resource) return nullptr;\r
1479 \r
1480     JniOcResourceIdentifier *jniResourceIdentifier =\r
1481         new JniOcResourceIdentifier(resource->uniqueIdentifier());\r
1482     if (!jniResourceIdentifier) return nullptr;\r
1483 \r
1484     jlong handle = reinterpret_cast<jlong>(jniResourceIdentifier);\r
1485     jobject jResourceIdentifier = env->NewObject(g_cls_OcResourceIdentifier,\r
1486         g_mid_OcResourceIdentifier_N_ctor, handle);\r
1487     if (!jResourceIdentifier)\r
1488     {\r
1489         delete jniResourceIdentifier;\r
1490     }\r
1491     return jResourceIdentifier;\r
1492 }\r
1493 \r
1494 /*\r
1495 * Class:     org_iotivity_base_OcResource\r
1496 * Method:    getServerId\r
1497 * Signature: ()Ljava/lang/String;\r
1498 */\r
1499 JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResource_getServerId\r
1500 (JNIEnv *env, jobject thiz)\r
1501 {\r
1502     LOGD("OcResource_getServerId");\r
1503     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
1504     if (!resource) return nullptr;\r
1505 \r
1506     return env->NewStringUTF(resource->sid().c_str());\r
1507 }\r
1508 \r
1509 /*\r
1510 * Class:     org_iotivity_base_OcResource\r
1511 * Method:    dispose\r
1512 * Signature: ()V\r
1513 */\r
1514 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_dispose\r
1515 (JNIEnv *env, jobject thiz)\r
1516 {\r
1517     LOGD("OcResource_dispose");\r
1518     JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);\r
1519     delete resource;\r
1520 }