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 "JniOcResource.h"
24 #include "JniOcRepresentation.h"
27 JniOcResource::JniOcResource(std::shared_ptr<OCResource> resource)
28 : m_sharedResource(resource)
31 JniOcResource::~JniOcResource()
33 LOGD("~JniOcResource()");
35 m_sharedResource = nullptr;
38 JNIEnv *env = GetJNIEnv(envRet);
39 if (nullptr == env) return;
41 m_onGetManager.removeAllListeners(env);
42 m_onPutManager.removeAllListeners(env);
43 m_onPostManager.removeAllListeners(env);
44 m_onDeleteManager.removeAllListeners(env);
45 m_onObserveManager.removeAllListeners(env);
47 if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
50 OCStackResult JniOcResource::get(JNIEnv* env, const QueryParamsMap &queryParametersMap, jobject jListener)
52 JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
54 GetCallback getCallback = [onGetListener](
55 const HeaderOptions& opts,
56 const OCRepresentation& rep,
59 onGetListener->onGetCallback(opts, rep, eCode);
62 return m_sharedResource->get(queryParametersMap, getCallback);
65 OCStackResult JniOcResource::get(JNIEnv* env, const QueryParamsMap &queryParametersMap, jobject jListener,
68 JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
70 GetCallback getCallback = [onGetListener](const HeaderOptions& opts, const OCRepresentation& rep,
73 onGetListener->onGetCallback(opts, rep, eCode);
76 return m_sharedResource->get(queryParametersMap, getCallback, QoS);
79 OCStackResult JniOcResource::get(
81 const std::string &resourceType,
82 const std::string &resourceInterface,
83 const QueryParamsMap &queryParametersMap,
86 JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
88 GetCallback getCallback = [onGetListener](const HeaderOptions& opts,
89 const OCRepresentation& rep, const int eCode)
91 onGetListener->onGetCallback(opts, rep, eCode);
94 return m_sharedResource->get(resourceType, resourceInterface, queryParametersMap,
98 OCStackResult JniOcResource::get(JNIEnv* env, const std::string &resourceType,
99 const std::string &resourceInterface, const QueryParamsMap &queryParametersMap,
100 jobject jListener, QualityOfService QoS)
102 JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
104 GetCallback getCallback = [onGetListener](const HeaderOptions& opts,
105 const OCRepresentation& rep, const int eCode)
107 onGetListener->onGetCallback(opts, rep, eCode);
110 return m_sharedResource->get(resourceType, resourceInterface, queryParametersMap,
114 OCStackResult JniOcResource::put(JNIEnv* env, const OCRepresentation &representation,
115 const QueryParamsMap &queryParametersMap, jobject jListener)
117 JniOnPutListener *onPutListener = addOnPutListener(env, jListener);
119 PutCallback putCallback = [onPutListener](const HeaderOptions& opts,
120 const OCRepresentation& rep, const int eCode)
122 onPutListener->onPutCallback(opts, rep, eCode);
125 return m_sharedResource->put(representation, queryParametersMap, putCallback);
128 OCStackResult JniOcResource::put(JNIEnv* env, const OCRepresentation &representation,
129 const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
131 JniOnPutListener *onPutListener = addOnPutListener(env, jListener);
133 PutCallback putCallback = [onPutListener](const HeaderOptions& opts,
134 const OCRepresentation& rep, const int eCode)
136 onPutListener->onPutCallback(opts, rep, eCode);
139 return m_sharedResource->put(representation, queryParametersMap, putCallback, QoS);
142 OCStackResult JniOcResource::put(JNIEnv* env, const std::string &resourceType,
143 const std::string &resourceInterface, const OCRepresentation &representation,
144 const QueryParamsMap &queryParametersMap, jobject jListener)
146 JniOnPutListener *onPutListener = addOnPutListener(env, jListener);
148 PutCallback putCallback = [onPutListener](const HeaderOptions& opts,
149 const OCRepresentation& rep, const int eCode)
151 onPutListener->onPutCallback(opts, rep, eCode);
154 return m_sharedResource->put(resourceType, resourceInterface, representation,
155 queryParametersMap, putCallback);
158 OCStackResult JniOcResource::put(JNIEnv* env, const std::string &resourceType,
159 const std::string &resourceInterface, const OCRepresentation &representation,
160 const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
162 JniOnPutListener *onPutListener = addOnPutListener(env, jListener);
164 PutCallback putCallback = [onPutListener](const HeaderOptions& opts,
165 const OCRepresentation& rep, const int eCode)
167 onPutListener->onPutCallback(opts, rep, eCode);
170 return m_sharedResource->put(resourceType, resourceInterface, representation,
171 queryParametersMap, putCallback, QoS);
174 OCStackResult JniOcResource::post(JNIEnv* env, const OCRepresentation &representation,
175 const QueryParamsMap &queryParametersMap, jobject jListener)
177 JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
179 PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
180 const OCRepresentation& rep, const int eCode)
182 onPostListener->onPostCallback(opts, rep, eCode);
185 return m_sharedResource->post(representation, queryParametersMap, postCallback);
188 OCStackResult JniOcResource::post(JNIEnv* env, const OCRepresentation &representation,
189 const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
191 JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
193 PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
194 const OCRepresentation& rep, const int eCode)
196 onPostListener->onPostCallback(opts, rep, eCode);
199 return m_sharedResource->post(representation, queryParametersMap, postCallback, QoS);
202 OCStackResult JniOcResource::post(JNIEnv* env, const std::string &resourceType,
203 const std::string &resourceInterface, const OCRepresentation &representation,
204 const QueryParamsMap &queryParametersMap, jobject jListener)
206 JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
208 PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
209 const OCRepresentation& rep, const int eCode)
211 onPostListener->onPostCallback(opts, rep, eCode);
214 return m_sharedResource->post(resourceType, resourceInterface, representation,
215 queryParametersMap, postCallback);
218 OCStackResult JniOcResource::post(JNIEnv* env, const std::string &resourceType,
219 const std::string &resourceInterface, const OCRepresentation &representation,
220 const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
222 JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
224 PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
225 const OCRepresentation& rep, const int eCode)
227 onPostListener->onPostCallback(opts, rep, eCode);
230 return m_sharedResource->post(resourceType, resourceInterface, representation,
231 queryParametersMap, postCallback, QoS);
234 OCStackResult JniOcResource::deleteResource(JNIEnv* env, jobject jListener)
236 JniOnDeleteListener *onDeleteListener = addOnDeleteListener(env, jListener);
238 DeleteCallback deleteCallback = [onDeleteListener](const HeaderOptions& opts,
241 onDeleteListener->onDeleteCallback(opts, eCode);
244 return m_sharedResource->deleteResource(deleteCallback);
247 OCStackResult JniOcResource::deleteResource(JNIEnv* env, jobject jListener, QualityOfService QoS)
249 JniOnDeleteListener *onDeleteListener = addOnDeleteListener(env, jListener);
251 DeleteCallback deleteCallback = [onDeleteListener](const HeaderOptions& opts, const int eCode)
253 onDeleteListener->onDeleteCallback(opts, eCode);
256 return m_sharedResource->deleteResource(deleteCallback, QoS);
259 OCStackResult JniOcResource::observe(JNIEnv* env, ObserveType observeType,
260 const QueryParamsMap &queryParametersMap, jobject jListener)
262 JniOnObserveListener *onObserveListener = addOnObserveListener(env, jListener);
264 ObserveCallback observeCallback = [onObserveListener](const HeaderOptions& opts,
265 const OCRepresentation& rep, const int& eCode, const int& sequenceNumber)
267 onObserveListener->onObserveCallback(opts, rep, eCode, sequenceNumber);
270 return m_sharedResource->observe(observeType, queryParametersMap, observeCallback);
273 OCStackResult JniOcResource::observe(JNIEnv* env, ObserveType observeType,
274 const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
276 JniOnObserveListener *onObserveListener = addOnObserveListener(env, jListener);
278 ObserveCallback observeCallback = [onObserveListener](const HeaderOptions& opts,
279 const OCRepresentation& rep, const int& eCode, const int& sequenceNumber)
281 onObserveListener->onObserveCallback(opts, rep, eCode, sequenceNumber);
284 return m_sharedResource->observe(observeType, queryParametersMap, observeCallback, QoS);
287 OCStackResult JniOcResource::cancelObserve(JNIEnv* env)
289 this->m_onObserveManager.removeAllListeners(env);
290 return m_sharedResource->cancelObserve();
293 OCStackResult JniOcResource::cancelObserve(JNIEnv* env, QualityOfService qos)
295 //TODO confirm behavior
296 //add removal of java listeners by qos
297 this->m_onObserveManager.removeAllListeners(env);
298 return m_sharedResource->cancelObserve(qos);
301 void JniOcResource::setHeaderOptions(const HeaderOptions &headerOptions)
303 m_sharedResource->setHeaderOptions(headerOptions);
306 void JniOcResource::unsetHeaderOptions()
308 m_sharedResource->unsetHeaderOptions();
311 std::string JniOcResource::host()
313 return m_sharedResource->host();
316 std::string JniOcResource::uri()
318 return m_sharedResource->uri();
321 OCConnectivityType JniOcResource::connectivityType() const
323 return m_sharedResource->connectivityType();
326 bool JniOcResource::isObservable()
328 return m_sharedResource->isObservable();
331 std::vector< std::string > JniOcResource::getResourceTypes() const
333 return m_sharedResource->getResourceTypes();
336 std::vector< std::string > JniOcResource::getResourceInterfaces(void) const
338 return m_sharedResource->getResourceInterfaces();
341 OCResourceIdentifier JniOcResource::uniqueIdentifier() const
343 return m_sharedResource->uniqueIdentifier();
346 std::string JniOcResource::sid() const
348 return m_sharedResource->sid();
351 JniOnGetListener* JniOcResource::addOnGetListener(JNIEnv* env, jobject jListener)
353 return this->m_onGetManager.addListener(env, jListener, this);
356 JniOnPutListener* JniOcResource::addOnPutListener(JNIEnv* env, jobject jListener)
358 return this->m_onPutManager.addListener(env, jListener, this);
361 JniOnPostListener* JniOcResource::addOnPostListener(JNIEnv* env, jobject jListener)
363 return this->m_onPostManager.addListener(env, jListener, this);
366 JniOnDeleteListener* JniOcResource::addOnDeleteListener(JNIEnv* env, jobject jListener)
368 return this->m_onDeleteManager.addListener(env, jListener, this);
371 JniOnObserveListener* JniOcResource::addOnObserveListener(JNIEnv* env, jobject jListener)
373 return this->m_onObserveManager.addListener(env, jListener, this);
376 void JniOcResource::removeOnGetListener(JNIEnv* env, jobject jListener)
378 this->m_onGetManager.removeListener(env, jListener);
381 void JniOcResource::removeOnPutListener(JNIEnv* env, jobject jListener)
383 this->m_onPutManager.removeListener(env, jListener);
386 void JniOcResource::removeOnPostListener(JNIEnv* env, jobject jListener)
388 this->m_onPostManager.removeListener(env, jListener);
391 void JniOcResource::removeOnDeleteListener(JNIEnv* env, jobject jListener)
393 this->m_onDeleteManager.removeListener(env, jListener);
396 void JniOcResource::removeOnObserveListener(JNIEnv* env, jobject jListener)
398 this->m_onObserveManager.removeListener(env, jListener);
401 std::shared_ptr<OCResource> JniOcResource::getOCResource()
403 return this->m_sharedResource;
406 JniOcResource* JniOcResource::getJniOcResourcePtr(JNIEnv *env, jobject thiz)
408 JniOcResource *resource = GetHandle<JniOcResource>(env, thiz);
409 if (env->ExceptionCheck())
411 LOGE("Failed to get native handle from OcResource");
415 ThrowOcException(JNI_NO_NATIVE_POINTER, "");
421 * Class: org_iotivity_base_OcResource
423 * Signature: (Ljava/util/Map;Lorg/iotivity/base/OcResource/OnGetListener;)V
425 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get
426 (JNIEnv *env, jobject thiz, jobject jQueryParamsMap, jobject jListener)
428 LOGD("OcResource_get");
429 if (!jQueryParamsMap)
431 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
436 ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");
439 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
440 if (!resource) return;
443 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
447 OCStackResult result = resource->get(
452 if (OC_STACK_OK != result)
454 ThrowOcException(result, "OcResource_get");
457 catch (OCException& e)
459 LOGE("%s", e.reason().c_str());
460 ThrowOcException(e.code(), e.reason().c_str());
465 * Class: org_iotivity_base_OcResource
467 * Signature: (Ljava/util/Map;Lorg/iotivity/base/OcResource/OnGetListener;I)V
469 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get1
470 (JNIEnv *env, jobject thiz, jobject jQueryParamsMap, jobject jListener, jint jQoS)
472 LOGD("OcResource_get");
473 if (!jQueryParamsMap)
475 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
480 ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");
483 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
484 if (!resource) return;
487 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
491 OCStackResult result = resource->get(
495 JniUtils::getQOS(env, static_cast<int>(jQoS)));
497 if (OC_STACK_OK != result)
499 ThrowOcException(result, "OcResource_get");
502 catch (OCException& e)
504 LOGE("%s", e.reason().c_str());
505 ThrowOcException(e.code(), e.reason().c_str());
510 * Class: org_iotivity_base_OcResource
512 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;
513 Lorg/iotivity/base/OcResource/OnGetListener;)V
515 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get2
516 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
517 jobject jQueryParamsMap, jobject jListener)
519 LOGD("OcResource_get");
520 std::string resourceType;
523 resourceType = env->GetStringUTFChars(jResourceType, nullptr);
525 std::string resourceInterface;
526 if (jResourceInterface)
528 resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
530 if (!jQueryParamsMap)
532 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
537 ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");
540 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
541 if (!resource) return;
544 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
547 OCStackResult result = resource->get(
554 if (OC_STACK_OK != result)
556 ThrowOcException(result, "OcResource_get");
559 catch (OCException& e)
561 LOGE("%s", e.reason().c_str());
562 ThrowOcException(e.code(), e.reason().c_str());
567 * Class: org_iotivity_base_OcResource
569 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;
570 Lorg/iotivity/base/OcResource/OnGetListener;I)V
572 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get3
573 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
574 jobject jQueryParamsMap, jobject jListener, jint jQoS)
576 LOGD("OcResource_get");
577 if (!jQueryParamsMap)
579 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
584 ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");
587 std::string resourceType;
590 resourceType = env->GetStringUTFChars(jResourceType, nullptr);
592 std::string resourceInterface;
593 if (jResourceInterface)
595 resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
597 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
598 if (!resource) return;
601 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
605 OCStackResult result = resource->get(
611 JniUtils::getQOS(env, static_cast<int>(jQoS)));
613 if (OC_STACK_OK != result)
615 ThrowOcException(result, "OcResource_get");
618 catch (OCException& e)
620 LOGE("%s", e.reason().c_str());
621 ThrowOcException(e.code(), e.reason().c_str());
626 * Class: org_iotivity_base_OcResource
628 * Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;
629 Lorg/iotivity/base/OcResource/OnPutListener;)V
631 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put
632 (JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
634 LOGD("OcResource_put");
635 if (!jRepresentation)
637 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
640 if (!jQueryParamsMap)
642 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
647 ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");
650 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
651 if (!resource) return;
653 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
654 if (!representation) return;
657 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
661 OCStackResult result = resource->put(
667 if (OC_STACK_OK != result)
669 ThrowOcException(result, "OcResource_put");
672 catch (OCException& e)
674 LOGE("%s", e.reason().c_str());
675 ThrowOcException(e.code(), e.reason().c_str());
680 * Class: org_iotivity_base_OcResource
682 * Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;
683 Lorg/iotivity/base/OcResource/OnPutListener;I)V
685 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put1
686 (JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap,
687 jobject jListener, jint jQoS)
689 LOGD("OcResource_put");
690 if (!jRepresentation)
692 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
695 if (!jQueryParamsMap)
697 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
702 ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");
705 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
706 if (!resource) return;
708 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
709 if (!representation) return;
712 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
716 OCStackResult result = resource->put(
721 JniUtils::getQOS(env, static_cast<int>(jQoS)));
723 if (OC_STACK_OK != result)
725 ThrowOcException(result, "OcResource_put");
728 catch (OCException& e)
730 LOGE("%s", e.reason().c_str());
731 ThrowOcException(e.code(), e.reason().c_str());
736 * Class: org_iotivity_base_OcResource
738 * Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
739 Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPutListener;)V
741 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put2
742 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
743 jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
745 LOGD("OcResource_put");
746 std::string resourceType;
749 resourceType = env->GetStringUTFChars(jResourceType, nullptr);
751 std::string resourceInterface;
752 if (jResourceInterface)
754 resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
756 if (!jRepresentation)
758 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
761 if (!jQueryParamsMap)
763 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
768 ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");
771 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
772 if (!resource) return;
774 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
775 if (!representation) return;
778 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
782 OCStackResult result = resource->put(
790 if (OC_STACK_OK != result)
792 ThrowOcException(result, "OcResource_put");
795 catch (OCException& e)
797 LOGE("%s", e.reason().c_str());
798 ThrowOcException(e.code(), e.reason().c_str());
803 * Class: org_iotivity_base_OcResource
805 * Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
806 Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPutListener;I)V
808 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put3
809 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface, jobject jRepresentation,
810 jobject jQueryParamsMap, jobject jListener, jint jQoS)
812 LOGD("OcResource_put");
813 if (!jRepresentation)
815 ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
818 if (!jQueryParamsMap)
820 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
825 ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");
828 std::string resourceType;
831 resourceType = env->GetStringUTFChars(jResourceType, nullptr);
833 std::string resourceInterface;
834 if (jResourceInterface)
836 resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
839 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
840 if (!resource) return;
842 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
843 if (!representation) return;
846 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
850 OCStackResult result = resource->put(
857 JniUtils::getQOS(env, static_cast<int>(jQoS)));
859 if (OC_STACK_OK != result)
861 ThrowOcException(result, "OcResource_put");
864 catch (OCException& e)
866 LOGE("%s", e.reason().c_str());
867 ThrowOcException(e.code(), e.reason().c_str());
872 * Class: org_iotivity_base_OcResource
874 * Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;)V
876 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post
877 (JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
879 LOGD("OcResource_post");
880 if (!jRepresentation)
882 ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
885 if (!jQueryParamsMap)
887 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
892 ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");
895 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
896 if (!resource) return;
898 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
899 if (!representation) return;
902 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
906 OCStackResult result = resource->post(
912 if (OC_STACK_OK != result)
914 ThrowOcException(result, "OcResource_post");
917 catch (OCException& e)
919 LOGE("%s", e.reason().c_str());
920 ThrowOcException(e.code(), e.reason().c_str());
925 * Class: org_iotivity_base_OcResource
927 * Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;I)V
929 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post1
930 (JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap, jobject jListener, jint jQoS)
932 LOGD("OcResource_post");
933 if (!jRepresentation)
935 ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
938 if (!jQueryParamsMap)
940 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
945 ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");
948 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
949 if (!resource) return;
951 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
952 if (!representation) return;
955 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
959 OCStackResult result = resource->post(
964 JniUtils::getQOS(env, static_cast<int>(jQoS)));
966 if (OC_STACK_OK != result)
968 ThrowOcException(result, "OcResource_post");
971 catch (OCException& e)
973 LOGE("%s", e.reason().c_str());
974 ThrowOcException(e.code(), e.reason().c_str());
979 * Class: org_iotivity_base_OcResource
981 * Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
982 Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;)V
984 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post2
985 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
986 jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
988 LOGD("OcResource_post");
989 if (!jRepresentation)
991 ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
994 if (!jQueryParamsMap)
996 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
1001 ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");
1004 std::string resourceType;
1007 resourceType = env->GetStringUTFChars(jResourceType, nullptr);
1009 std::string resourceInterface;
1010 if (jResourceInterface)
1012 resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
1015 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1016 if (!resource) return;
1018 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
1019 if (!representation) return;
1022 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
1026 OCStackResult result = resource->post(
1034 if (OC_STACK_OK != result)
1036 ThrowOcException(result, "OcResource_post");
1039 catch (OCException& e)
1041 LOGE("%s", e.reason().c_str());
1042 ThrowOcException(e.code(), e.reason().c_str());
1047 * Class: org_iotivity_base_OcResource
1049 * Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
1050 Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;I)V
1052 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post3
1053 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
1054 jobject jRepresentation, jobject jQueryParamsMap, jobject jListener, jint jQoS)
1056 LOGD("OcResource_post");
1057 if (!jRepresentation)
1059 ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
1062 if (!jQueryParamsMap)
1064 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
1069 ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");
1072 std::string resourceType;
1075 resourceType = env->GetStringUTFChars(jResourceType, nullptr);
1077 std::string resourceInterface;
1078 if (jResourceInterface)
1080 resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
1083 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1084 if (!resource) return;
1086 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
1087 if (!representation) return;
1090 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
1094 OCStackResult result = resource->post(
1101 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1103 if (OC_STACK_OK != result)
1105 ThrowOcException(result, "OcResource_post");
1108 catch (OCException& e)
1110 LOGE("%s", e.reason().c_str());
1111 ThrowOcException(e.code(), e.reason().c_str());
1116 * Class: org_iotivity_base_OcResource
1117 * Method: deleteResource
1118 * Signature: (Lorg/iotivity/base/OcResource/OnDeleteListener;)V
1120 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_deleteResource
1121 (JNIEnv *env, jobject thiz, jobject jListener)
1123 LOGD("OcResource_deleteResource");
1126 ThrowOcException(OC_STACK_INVALID_PARAM, "onDeleteListener cannot be null");
1129 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1130 if (!resource) return;
1134 OCStackResult result = resource->deleteResource(
1138 if (OC_STACK_OK != result)
1140 ThrowOcException(result, "OcResource_deleteResource");
1143 catch (OCException& e)
1145 LOGE("%s", e.reason().c_str());
1146 ThrowOcException(e.code(), e.reason().c_str());
1151 * Class: org_iotivity_base_OcResource
1152 * Method: deleteResource1
1153 * Signature: (Lorg/iotivity/base/OcResource/OnDeleteListener;I)V
1155 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_deleteResource1
1156 (JNIEnv *env, jobject thiz, jobject jListener, jint jQoS)
1158 LOGD("OcResource_deleteResource");
1161 ThrowOcException(OC_STACK_INVALID_PARAM, "onDeleteListener cannot be null");
1164 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1165 if (!resource) return;
1169 OCStackResult result = resource->deleteResource(
1172 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1174 if (OC_STACK_OK != result)
1176 ThrowOcException(result, "OcResource_deleteResource");
1179 catch (OCException& e)
1181 LOGE("%s", e.reason().c_str());
1182 ThrowOcException(e.code(), e.reason().c_str());
1187 * Class: org_iotivity_base_OcResource
1189 * Signature: (Lorg/iotivity/base/ObserveType;Ljava/util/Map;
1190 Lorg/iotivity/base/OcResource/OnObserveListener;)V
1192 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_observe
1193 (JNIEnv *env, jobject thiz, jint observeType, jobject jQueryParamsMap, jobject jListener)
1195 LOGD("OcResource_observe");
1196 if (!jQueryParamsMap)
1198 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
1203 ThrowOcException(OC_STACK_INVALID_PARAM, "onObserveListener cannot be null");
1206 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1207 if (!resource) return;
1210 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
1214 OCStackResult result = resource->observe(
1216 JniUtils::getObserveType(env, static_cast<int>(observeType)),
1220 if (OC_STACK_OK != result)
1222 ThrowOcException(result, "OcResource_observe");
1225 catch (OCException& e)
1227 LOGE("%s", e.reason().c_str());
1228 ThrowOcException(e.code(), e.reason().c_str());
1233 * Class: org_iotivity_base_OcResource
1235 * Signature: (Lorg/iotivity/base/ObserveType;Ljava/util/Map;
1236 Lorg/iotivity/base/OcResource/OnObserveListener;I)V
1238 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_observe1
1239 (JNIEnv *env, jobject thiz, jint observeType, jobject jQueryParamsMap,
1240 jobject jListener, jint jQoS)
1242 LOGD("OcResource_observe");
1243 if (!jQueryParamsMap)
1245 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
1250 ThrowOcException(OC_STACK_INVALID_PARAM, "onObserveListener cannot be null");
1253 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1254 if (!resource) return;
1257 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
1261 OCStackResult result = resource->observe(
1263 JniUtils::getObserveType(env, static_cast<int>(observeType)),
1266 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1268 if (OC_STACK_OK != result)
1270 ThrowOcException(result, "OcResource_observe");
1273 catch (OCException& e)
1275 LOGE("%s", e.reason().c_str());
1276 ThrowOcException(e.code(), e.reason().c_str());
1281 * Class: org_iotivity_base_OcResource
1282 * Method: cancelObserve
1285 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_cancelObserve
1286 (JNIEnv *env, jobject thiz)
1288 LOGD("OcResource_cancelObserve");
1289 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1290 if (!resource) return;
1294 OCStackResult result = resource->cancelObserve(env);
1296 if (OC_STACK_OK != result)
1298 ThrowOcException(result, "OcResource_cancelObserve");
1301 catch (OCException& e)
1303 LOGE("%s", e.reason().c_str());
1304 ThrowOcException(e.code(), e.reason().c_str());
1309 * Class: org_iotivity_base_OcResource
1310 * Method: cancelObserve1
1313 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_cancelObserve1
1314 (JNIEnv *env, jobject thiz, jint jQoS)
1316 LOGD("OcResource_cancelObserve1");
1317 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1318 if (!resource) return;
1322 OCStackResult result = resource->cancelObserve(
1324 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1326 if (OC_STACK_OK != result)
1328 ThrowOcException(result, "OcResource_cancelObserve");
1331 catch (OCException& e)
1333 LOGE("%s", e.reason().c_str());
1334 ThrowOcException(e.code(), e.reason().c_str());
1339 * Class: org_iotivity_base_OcResource
1340 * Method: setHeaderOptions
1341 * Signature: ([Lorg/iotivity/OcHeaderOption;)V
1343 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_setHeaderOptions
1344 (JNIEnv *env, jobject thiz, jobjectArray jheaderOptionArr)
1346 LOGD("OcResource_setHeaderOptions");
1347 if (!jheaderOptionArr)
1349 ThrowOcException(OC_STACK_INVALID_PARAM, "headerOptionList cannot be null");
1352 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1353 if (!resource) return;
1355 HeaderOptions headerOptions;
1356 JniUtils::convertJavaHeaderOptionsArrToVector(env, jheaderOptionArr, headerOptions);
1358 resource->setHeaderOptions(headerOptions);
1362 * Class: org_iotivity_base_OcResource
1363 * Method: unsetHeaderOptions
1366 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_unsetHeaderOptions
1367 (JNIEnv *env, jobject thiz)
1369 LOGD("OcResource_unsetHeaderOptions");
1370 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1371 if (!resource) return;
1373 resource->unsetHeaderOptions();
1377 * Class: org_iotivity_base_OcResource
1379 * Signature: ()Ljava/lang/String;
1381 JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResource_getHost
1382 (JNIEnv *env, jobject thiz)
1384 LOGD("OcResource_getHost");
1385 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1386 if (!resource) return nullptr;
1388 return env->NewStringUTF(resource->host().c_str());
1392 * Class: org_iotivity_base_OcResource
1394 * Signature: ()Ljava/lang/String;
1396 JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResource_getUri
1397 (JNIEnv *env, jobject thiz)
1399 LOGD("OcResource_getUri");
1400 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1401 if (!resource) return nullptr;
1403 return env->NewStringUTF(resource->uri().c_str());
1407 * Class: org_iotivity_base_OcResource
1408 * Method: getConnectivityTypeN
1411 JNIEXPORT jint JNICALL Java_org_iotivity_base_OcResource_getConnectivityTypeN
1412 (JNIEnv *env, jobject thiz)
1414 LOGD("OcResource_getConnectivityType");
1415 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1416 if (!resource) return -1;
1418 OCConnectivityType connectivityType = resource->connectivityType();
1419 return static_cast<jint>(connectivityType);
1423 * Class: org_iotivity_base_OcResource
1424 * Method: isObservable
1427 JNIEXPORT jboolean JNICALL Java_org_iotivity_base_OcResource_isObservable
1428 (JNIEnv *env, jobject thiz)
1430 LOGD("OcResource_isObservable");
1431 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1432 return (jboolean)resource->isObservable();
1436 * Class: org_iotivity_base_OcResource
1437 * Method: getResourceTypes
1438 * Signature: ()Ljava/util/List;
1440 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResource_getResourceTypes
1441 (JNIEnv *env, jobject thiz)
1443 LOGD("OcResource_getResourceTypes");
1444 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1445 if (!resource) return nullptr;
1447 std::vector<std::string> resourceTypes = resource->getResourceTypes();
1449 return JniUtils::convertStrVectorToJavaStrList(env, resourceTypes);
1453 * Class: org_iotivity_base_OcResource
1454 * Method: getResourceInterfaces
1455 * Signature: ()Ljava/util/List;
1457 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResource_getResourceInterfaces
1458 (JNIEnv *env, jobject thiz)
1460 LOGD("OcResource_getResourceInterfaces");
1461 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1462 if (!resource) return nullptr;
1464 std::vector<std::string> resourceInterfaces = resource->getResourceInterfaces();
1466 return JniUtils::convertStrVectorToJavaStrList(env, resourceInterfaces);
1470 * Class: org_iotivity_base_OcResource
1471 * Method: getUniqueIdentifier
1472 * Signature: ()Lorg/iotivity/base/OcResourceIdentifier;
1474 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResource_getUniqueIdentifier
1475 (JNIEnv *env, jobject thiz)
1477 LOGD("OcResource_getUniqueIdentifier");
1478 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1479 if (!resource) return nullptr;
1481 JniOcResourceIdentifier *jniResourceIdentifier =
1482 new JniOcResourceIdentifier(resource->uniqueIdentifier());
1483 if (!jniResourceIdentifier) return nullptr;
1485 jlong handle = reinterpret_cast<jlong>(jniResourceIdentifier);
1486 jobject jResourceIdentifier = env->NewObject(g_cls_OcResourceIdentifier,
1487 g_mid_OcResourceIdentifier_N_ctor, handle);
1488 if (!jResourceIdentifier)
1490 delete jniResourceIdentifier;
1492 return jResourceIdentifier;
1496 * Class: org_iotivity_base_OcResource
1497 * Method: getServerId
1498 * Signature: ()Ljava/lang/String;
1500 JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResource_getServerId
1501 (JNIEnv *env, jobject thiz)
1503 LOGD("OcResource_getServerId");
1504 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1505 if (!resource) return nullptr;
1507 return env->NewStringUTF(resource->sid().c_str());
1511 * Class: org_iotivity_base_OcResource
1515 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_dispose
1516 (JNIEnv *env, jobject thiz)
1518 LOGD("OcResource_dispose");
1519 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);