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, QualityOfService qos)
289 if (QualityOfService::HighQos != qos)
291 this->m_onObserveManager.removeAllListeners(env);
293 return m_sharedResource->cancelObserve(qos);
296 void JniOcResource::setHeaderOptions(const HeaderOptions &headerOptions)
298 m_sharedResource->setHeaderOptions(headerOptions);
301 void JniOcResource::unsetHeaderOptions()
303 m_sharedResource->unsetHeaderOptions();
306 std::string JniOcResource::host()
308 return m_sharedResource->host();
311 std::string JniOcResource::uri()
313 return m_sharedResource->uri();
316 OCConnectivityType JniOcResource::connectivityType() const
318 return m_sharedResource->connectivityType();
321 bool JniOcResource::isObservable()
323 return m_sharedResource->isObservable();
326 std::vector< std::string > JniOcResource::getResourceTypes() const
328 return m_sharedResource->getResourceTypes();
331 std::vector< std::string > JniOcResource::getResourceInterfaces(void) const
333 return m_sharedResource->getResourceInterfaces();
336 OCResourceIdentifier JniOcResource::uniqueIdentifier() const
338 return m_sharedResource->uniqueIdentifier();
341 std::string JniOcResource::sid() const
343 return m_sharedResource->sid();
346 JniOnGetListener* JniOcResource::addOnGetListener(JNIEnv* env, jobject jListener)
348 return this->m_onGetManager.addListener(env, jListener, this);
351 JniOnPutListener* JniOcResource::addOnPutListener(JNIEnv* env, jobject jListener)
353 return this->m_onPutManager.addListener(env, jListener, this);
356 JniOnPostListener* JniOcResource::addOnPostListener(JNIEnv* env, jobject jListener)
358 return this->m_onPostManager.addListener(env, jListener, this);
361 JniOnDeleteListener* JniOcResource::addOnDeleteListener(JNIEnv* env, jobject jListener)
363 return this->m_onDeleteManager.addListener(env, jListener, this);
366 JniOnObserveListener* JniOcResource::addOnObserveListener(JNIEnv* env, jobject jListener)
368 return this->m_onObserveManager.addListener(env, jListener, this);
371 void JniOcResource::removeOnGetListener(JNIEnv* env, jobject jListener)
373 this->m_onGetManager.removeListener(env, jListener);
376 void JniOcResource::removeOnPutListener(JNIEnv* env, jobject jListener)
378 this->m_onPutManager.removeListener(env, jListener);
381 void JniOcResource::removeOnPostListener(JNIEnv* env, jobject jListener)
383 this->m_onPostManager.removeListener(env, jListener);
386 void JniOcResource::removeOnDeleteListener(JNIEnv* env, jobject jListener)
388 this->m_onDeleteManager.removeListener(env, jListener);
391 void JniOcResource::removeOnObserveListener(JNIEnv* env, jobject jListener)
393 this->m_onObserveManager.removeListener(env, jListener);
396 std::shared_ptr<OCResource> JniOcResource::getOCResource()
398 return this->m_sharedResource;
401 JniOcResource* JniOcResource::getJniOcResourcePtr(JNIEnv *env, jobject thiz)
403 JniOcResource *resource = GetHandle<JniOcResource>(env, thiz);
404 if (env->ExceptionCheck())
406 LOGE("Failed to get native handle from OcResource");
410 ThrowOcException(JNI_NO_NATIVE_POINTER, "");
416 * Class: org_iotivity_base_OcResource
418 * Signature: (Ljava/util/Map;Lorg/iotivity/base/OcResource/OnGetListener;)V
420 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get
421 (JNIEnv *env, jobject thiz, jobject jQueryParamsMap, jobject jListener)
423 LOGD("OcResource_get");
424 if (!jQueryParamsMap)
426 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
431 ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");
434 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
435 if (!resource) return;
438 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
442 OCStackResult result = resource->get(
447 if (OC_STACK_OK != result)
449 ThrowOcException(result, "OcResource_get");
452 catch (OCException& e)
454 LOGE("%s", e.reason().c_str());
455 ThrowOcException(e.code(), e.reason().c_str());
460 * Class: org_iotivity_base_OcResource
462 * Signature: (Ljava/util/Map;Lorg/iotivity/base/OcResource/OnGetListener;I)V
464 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get1
465 (JNIEnv *env, jobject thiz, jobject jQueryParamsMap, jobject jListener, jint jQoS)
467 LOGD("OcResource_get");
468 if (!jQueryParamsMap)
470 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
475 ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");
478 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
479 if (!resource) return;
482 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
486 OCStackResult result = resource->get(
490 JniUtils::getQOS(env, static_cast<int>(jQoS)));
492 if (OC_STACK_OK != result)
494 ThrowOcException(result, "OcResource_get");
497 catch (OCException& e)
499 LOGE("%s", e.reason().c_str());
500 ThrowOcException(e.code(), e.reason().c_str());
505 * Class: org_iotivity_base_OcResource
507 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;
508 Lorg/iotivity/base/OcResource/OnGetListener;)V
510 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get2
511 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
512 jobject jQueryParamsMap, jobject jListener)
514 LOGD("OcResource_get");
515 std::string resourceType;
518 resourceType = env->GetStringUTFChars(jResourceType, nullptr);
520 std::string resourceInterface;
521 if (jResourceInterface)
523 resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
525 if (!jQueryParamsMap)
527 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
532 ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");
535 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
536 if (!resource) return;
539 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
542 OCStackResult result = resource->get(
549 if (OC_STACK_OK != result)
551 ThrowOcException(result, "OcResource_get");
554 catch (OCException& e)
556 LOGE("%s", e.reason().c_str());
557 ThrowOcException(e.code(), e.reason().c_str());
562 * Class: org_iotivity_base_OcResource
564 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;
565 Lorg/iotivity/base/OcResource/OnGetListener;I)V
567 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get3
568 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
569 jobject jQueryParamsMap, jobject jListener, jint jQoS)
571 LOGD("OcResource_get");
572 if (!jQueryParamsMap)
574 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
579 ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");
582 std::string resourceType;
585 resourceType = env->GetStringUTFChars(jResourceType, nullptr);
587 std::string resourceInterface;
588 if (jResourceInterface)
590 resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
592 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
593 if (!resource) return;
596 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
600 OCStackResult result = resource->get(
606 JniUtils::getQOS(env, static_cast<int>(jQoS)));
608 if (OC_STACK_OK != result)
610 ThrowOcException(result, "OcResource_get");
613 catch (OCException& e)
615 LOGE("%s", e.reason().c_str());
616 ThrowOcException(e.code(), e.reason().c_str());
621 * Class: org_iotivity_base_OcResource
623 * Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;
624 Lorg/iotivity/base/OcResource/OnPutListener;)V
626 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put
627 (JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
629 LOGD("OcResource_put");
630 if (!jRepresentation)
632 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
635 if (!jQueryParamsMap)
637 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
642 ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");
645 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
646 if (!resource) return;
648 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
649 if (!representation) return;
652 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
656 OCStackResult result = resource->put(
662 if (OC_STACK_OK != result)
664 ThrowOcException(result, "OcResource_put");
667 catch (OCException& e)
669 LOGE("%s", e.reason().c_str());
670 ThrowOcException(e.code(), e.reason().c_str());
675 * Class: org_iotivity_base_OcResource
677 * Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;
678 Lorg/iotivity/base/OcResource/OnPutListener;I)V
680 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put1
681 (JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap,
682 jobject jListener, jint jQoS)
684 LOGD("OcResource_put");
685 if (!jRepresentation)
687 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
690 if (!jQueryParamsMap)
692 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
697 ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");
700 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
701 if (!resource) return;
703 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
704 if (!representation) return;
707 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
711 OCStackResult result = resource->put(
716 JniUtils::getQOS(env, static_cast<int>(jQoS)));
718 if (OC_STACK_OK != result)
720 ThrowOcException(result, "OcResource_put");
723 catch (OCException& e)
725 LOGE("%s", e.reason().c_str());
726 ThrowOcException(e.code(), e.reason().c_str());
731 * Class: org_iotivity_base_OcResource
733 * Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
734 Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPutListener;)V
736 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put2
737 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
738 jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
740 LOGD("OcResource_put");
741 std::string resourceType;
744 resourceType = env->GetStringUTFChars(jResourceType, nullptr);
746 std::string resourceInterface;
747 if (jResourceInterface)
749 resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
751 if (!jRepresentation)
753 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
756 if (!jQueryParamsMap)
758 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
763 ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");
766 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
767 if (!resource) return;
769 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
770 if (!representation) return;
773 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
777 OCStackResult result = resource->put(
785 if (OC_STACK_OK != result)
787 ThrowOcException(result, "OcResource_put");
790 catch (OCException& e)
792 LOGE("%s", e.reason().c_str());
793 ThrowOcException(e.code(), e.reason().c_str());
798 * Class: org_iotivity_base_OcResource
800 * Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
801 Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPutListener;I)V
803 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put3
804 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface, jobject jRepresentation,
805 jobject jQueryParamsMap, jobject jListener, jint jQoS)
807 LOGD("OcResource_put");
808 if (!jRepresentation)
810 ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
813 if (!jQueryParamsMap)
815 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
820 ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");
823 std::string resourceType;
826 resourceType = env->GetStringUTFChars(jResourceType, nullptr);
828 std::string resourceInterface;
829 if (jResourceInterface)
831 resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
834 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
835 if (!resource) return;
837 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
838 if (!representation) return;
841 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
845 OCStackResult result = resource->put(
852 JniUtils::getQOS(env, static_cast<int>(jQoS)));
854 if (OC_STACK_OK != result)
856 ThrowOcException(result, "OcResource_put");
859 catch (OCException& e)
861 LOGE("%s", e.reason().c_str());
862 ThrowOcException(e.code(), e.reason().c_str());
867 * Class: org_iotivity_base_OcResource
869 * Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;)V
871 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post
872 (JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
874 LOGD("OcResource_post");
875 if (!jRepresentation)
877 ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
880 if (!jQueryParamsMap)
882 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
887 ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");
890 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
891 if (!resource) return;
893 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
894 if (!representation) return;
897 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
901 OCStackResult result = resource->post(
907 if (OC_STACK_OK != result)
909 ThrowOcException(result, "OcResource_post");
912 catch (OCException& e)
914 LOGE("%s", e.reason().c_str());
915 ThrowOcException(e.code(), e.reason().c_str());
920 * Class: org_iotivity_base_OcResource
922 * Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;I)V
924 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post1
925 (JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap, jobject jListener, jint jQoS)
927 LOGD("OcResource_post");
928 if (!jRepresentation)
930 ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
933 if (!jQueryParamsMap)
935 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
940 ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");
943 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
944 if (!resource) return;
946 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
947 if (!representation) return;
950 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
954 OCStackResult result = resource->post(
959 JniUtils::getQOS(env, static_cast<int>(jQoS)));
961 if (OC_STACK_OK != result)
963 ThrowOcException(result, "OcResource_post");
966 catch (OCException& e)
968 LOGE("%s", e.reason().c_str());
969 ThrowOcException(e.code(), e.reason().c_str());
974 * Class: org_iotivity_base_OcResource
976 * Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
977 Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;)V
979 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post2
980 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
981 jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
983 LOGD("OcResource_post");
984 if (!jRepresentation)
986 ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
989 if (!jQueryParamsMap)
991 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
996 ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");
999 std::string resourceType;
1002 resourceType = env->GetStringUTFChars(jResourceType, nullptr);
1004 std::string resourceInterface;
1005 if (jResourceInterface)
1007 resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
1010 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1011 if (!resource) return;
1013 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
1014 if (!representation) return;
1017 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
1021 OCStackResult result = resource->post(
1029 if (OC_STACK_OK != result)
1031 ThrowOcException(result, "OcResource_post");
1034 catch (OCException& e)
1036 LOGE("%s", e.reason().c_str());
1037 ThrowOcException(e.code(), e.reason().c_str());
1042 * Class: org_iotivity_base_OcResource
1044 * Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
1045 Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;I)V
1047 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post3
1048 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
1049 jobject jRepresentation, jobject jQueryParamsMap, jobject jListener, jint jQoS)
1051 LOGD("OcResource_post");
1052 if (!jRepresentation)
1054 ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
1057 if (!jQueryParamsMap)
1059 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
1064 ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");
1067 std::string resourceType;
1070 resourceType = env->GetStringUTFChars(jResourceType, nullptr);
1072 std::string resourceInterface;
1073 if (jResourceInterface)
1075 resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
1078 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1079 if (!resource) return;
1081 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
1082 if (!representation) return;
1085 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
1089 OCStackResult result = resource->post(
1096 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1098 if (OC_STACK_OK != result)
1100 ThrowOcException(result, "OcResource_post");
1103 catch (OCException& e)
1105 LOGE("%s", e.reason().c_str());
1106 ThrowOcException(e.code(), e.reason().c_str());
1111 * Class: org_iotivity_base_OcResource
1112 * Method: deleteResource
1113 * Signature: (Lorg/iotivity/base/OcResource/OnDeleteListener;)V
1115 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_deleteResource
1116 (JNIEnv *env, jobject thiz, jobject jListener)
1118 LOGD("OcResource_deleteResource");
1121 ThrowOcException(OC_STACK_INVALID_PARAM, "onDeleteListener cannot be null");
1124 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1125 if (!resource) return;
1129 OCStackResult result = resource->deleteResource(
1133 if (OC_STACK_OK != result)
1135 ThrowOcException(result, "OcResource_deleteResource");
1138 catch (OCException& e)
1140 LOGE("%s", e.reason().c_str());
1141 ThrowOcException(e.code(), e.reason().c_str());
1146 * Class: org_iotivity_base_OcResource
1147 * Method: deleteResource1
1148 * Signature: (Lorg/iotivity/base/OcResource/OnDeleteListener;I)V
1150 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_deleteResource1
1151 (JNIEnv *env, jobject thiz, jobject jListener, jint jQoS)
1153 LOGD("OcResource_deleteResource");
1156 ThrowOcException(OC_STACK_INVALID_PARAM, "onDeleteListener cannot be null");
1159 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1160 if (!resource) return;
1164 OCStackResult result = resource->deleteResource(
1167 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1169 if (OC_STACK_OK != result)
1171 ThrowOcException(result, "OcResource_deleteResource");
1174 catch (OCException& e)
1176 LOGE("%s", e.reason().c_str());
1177 ThrowOcException(e.code(), e.reason().c_str());
1182 * Class: org_iotivity_base_OcResource
1184 * Signature: (Lorg/iotivity/base/ObserveType;Ljava/util/Map;
1185 Lorg/iotivity/base/OcResource/OnObserveListener;)V
1187 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_observe
1188 (JNIEnv *env, jobject thiz, jint observeType, jobject jQueryParamsMap, jobject jListener)
1190 LOGD("OcResource_observe");
1191 if (!jQueryParamsMap)
1193 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
1198 ThrowOcException(OC_STACK_INVALID_PARAM, "onObserveListener cannot be null");
1201 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1202 if (!resource) return;
1205 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
1209 OCStackResult result = resource->observe(
1211 JniUtils::getObserveType(env, static_cast<int>(observeType)),
1215 if (OC_STACK_OK != result)
1217 ThrowOcException(result, "OcResource_observe");
1220 catch (OCException& e)
1222 LOGE("%s", e.reason().c_str());
1223 ThrowOcException(e.code(), e.reason().c_str());
1228 * Class: org_iotivity_base_OcResource
1230 * Signature: (Lorg/iotivity/base/ObserveType;Ljava/util/Map;
1231 Lorg/iotivity/base/OcResource/OnObserveListener;I)V
1233 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_observe1
1234 (JNIEnv *env, jobject thiz, jint observeType, jobject jQueryParamsMap,
1235 jobject jListener, jint jQoS)
1237 LOGD("OcResource_observe");
1238 if (!jQueryParamsMap)
1240 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
1245 ThrowOcException(OC_STACK_INVALID_PARAM, "onObserveListener cannot be null");
1248 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1249 if (!resource) return;
1252 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
1256 OCStackResult result = resource->observe(
1258 JniUtils::getObserveType(env, static_cast<int>(observeType)),
1261 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1263 if (OC_STACK_OK != result)
1265 ThrowOcException(result, "OcResource_observe");
1268 catch (OCException& e)
1270 LOGE("%s", e.reason().c_str());
1271 ThrowOcException(e.code(), e.reason().c_str());
1276 * Class: org_iotivity_base_OcResource
1277 * Method: cancelObserve1
1280 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_cancelObserve1
1281 (JNIEnv *env, jobject thiz, jint jQoS)
1283 LOGD("OcResource_cancelObserve1");
1284 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1285 if (!resource) return;
1289 OCStackResult result = resource->cancelObserve(
1291 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1293 if (OC_STACK_OK != result)
1295 ThrowOcException(result, "OcResource_cancelObserve");
1298 catch (OCException& e)
1300 LOGE("%s", e.reason().c_str());
1301 ThrowOcException(e.code(), e.reason().c_str());
1306 * Class: org_iotivity_base_OcResource
1307 * Method: setHeaderOptions
1308 * Signature: ([Lorg/iotivity/OcHeaderOption;)V
1310 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_setHeaderOptions
1311 (JNIEnv *env, jobject thiz, jobjectArray jheaderOptionArr)
1313 LOGD("OcResource_setHeaderOptions");
1314 if (!jheaderOptionArr)
1316 ThrowOcException(OC_STACK_INVALID_PARAM, "headerOptionList cannot be null");
1319 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1320 if (!resource) return;
1322 HeaderOptions headerOptions;
1323 JniUtils::convertJavaHeaderOptionsArrToVector(env, jheaderOptionArr, headerOptions);
1325 resource->setHeaderOptions(headerOptions);
1329 * Class: org_iotivity_base_OcResource
1330 * Method: unsetHeaderOptions
1333 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_unsetHeaderOptions
1334 (JNIEnv *env, jobject thiz)
1336 LOGD("OcResource_unsetHeaderOptions");
1337 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1338 if (!resource) return;
1340 resource->unsetHeaderOptions();
1344 * Class: org_iotivity_base_OcResource
1346 * Signature: ()Ljava/lang/String;
1348 JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResource_getHost
1349 (JNIEnv *env, jobject thiz)
1351 LOGD("OcResource_getHost");
1352 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1353 if (!resource) return nullptr;
1355 return env->NewStringUTF(resource->host().c_str());
1359 * Class: org_iotivity_base_OcResource
1361 * Signature: ()Ljava/lang/String;
1363 JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResource_getUri
1364 (JNIEnv *env, jobject thiz)
1366 LOGD("OcResource_getUri");
1367 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1368 if (!resource) return nullptr;
1370 return env->NewStringUTF(resource->uri().c_str());
1374 * Class: org_iotivity_base_OcResource
1375 * Method: getConnectivityTypeN
1378 JNIEXPORT jint JNICALL Java_org_iotivity_base_OcResource_getConnectivityTypeN
1379 (JNIEnv *env, jobject thiz)
1381 LOGD("OcResource_getConnectivityType");
1382 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1383 if (!resource) return -1;
1385 OCConnectivityType connectivityType = resource->connectivityType();
1386 return static_cast<jint>(connectivityType);
1390 * Class: org_iotivity_base_OcResource
1391 * Method: isObservable
1394 JNIEXPORT jboolean JNICALL Java_org_iotivity_base_OcResource_isObservable
1395 (JNIEnv *env, jobject thiz)
1397 LOGD("OcResource_isObservable");
1398 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1399 return (jboolean)resource->isObservable();
1403 * Class: org_iotivity_base_OcResource
1404 * Method: getResourceTypes
1405 * Signature: ()Ljava/util/List;
1407 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResource_getResourceTypes
1408 (JNIEnv *env, jobject thiz)
1410 LOGD("OcResource_getResourceTypes");
1411 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1412 if (!resource) return nullptr;
1414 std::vector<std::string> resourceTypes = resource->getResourceTypes();
1416 return JniUtils::convertStrVectorToJavaStrList(env, resourceTypes);
1420 * Class: org_iotivity_base_OcResource
1421 * Method: getResourceInterfaces
1422 * Signature: ()Ljava/util/List;
1424 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResource_getResourceInterfaces
1425 (JNIEnv *env, jobject thiz)
1427 LOGD("OcResource_getResourceInterfaces");
1428 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1429 if (!resource) return nullptr;
1431 std::vector<std::string> resourceInterfaces = resource->getResourceInterfaces();
1433 return JniUtils::convertStrVectorToJavaStrList(env, resourceInterfaces);
1437 * Class: org_iotivity_base_OcResource
1438 * Method: getUniqueIdentifier
1439 * Signature: ()Lorg/iotivity/base/OcResourceIdentifier;
1441 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResource_getUniqueIdentifier
1442 (JNIEnv *env, jobject thiz)
1444 LOGD("OcResource_getUniqueIdentifier");
1445 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1446 if (!resource) return nullptr;
1448 JniOcResourceIdentifier *jniResourceIdentifier =
1449 new JniOcResourceIdentifier(resource->uniqueIdentifier());
1450 if (!jniResourceIdentifier) return nullptr;
1452 jlong handle = reinterpret_cast<jlong>(jniResourceIdentifier);
1453 jobject jResourceIdentifier = env->NewObject(g_cls_OcResourceIdentifier,
1454 g_mid_OcResourceIdentifier_N_ctor, handle);
1455 if (!jResourceIdentifier)
1457 delete jniResourceIdentifier;
1459 return jResourceIdentifier;
1463 * Class: org_iotivity_base_OcResource
1464 * Method: getServerId
1465 * Signature: ()Ljava/lang/String;
1467 JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResource_getServerId
1468 (JNIEnv *env, jobject thiz)
1470 LOGD("OcResource_getServerId");
1471 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1472 if (!resource) return nullptr;
1474 return env->NewStringUTF(resource->sid().c_str());
1478 * Class: org_iotivity_base_OcResource
1482 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_dispose
1483 (JNIEnv *env, jobject thiz)
1485 LOGD("OcResource_dispose");
1486 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);