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)
32 JniOcResource::~JniOcResource()
34 LOGD("~JniOcResource()");
36 m_sharedResource = nullptr;
38 jint envRet = JNI_ERR;
39 JNIEnv *env = GetJNIEnv(envRet);
45 m_onGetManager.removeAllListeners(env);
46 m_onPutManager.removeAllListeners(env);
47 m_onPostManager.removeAllListeners(env);
48 m_onDeleteManager.removeAllListeners(env);
49 m_onObserveManager.removeAllListeners(env);
51 if (JNI_EDETACHED == envRet)
53 g_jvm->DetachCurrentThread();
57 OCStackResult JniOcResource::get(JNIEnv* env, const QueryParamsMap &queryParametersMap, jobject jListener)
59 JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
61 GetCallback getCallback = [onGetListener](
62 const HeaderOptions& opts,
63 const OCRepresentation& rep,
66 onGetListener->onGetCallback(opts, rep, eCode);
69 return m_sharedResource->get(queryParametersMap, getCallback);
72 OCStackResult JniOcResource::get(JNIEnv* env, const QueryParamsMap &queryParametersMap, jobject jListener,
75 JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
77 GetCallback getCallback = [onGetListener](const HeaderOptions& opts, const OCRepresentation& rep,
80 onGetListener->onGetCallback(opts, rep, eCode);
83 return m_sharedResource->get(queryParametersMap, getCallback, QoS);
86 OCStackResult JniOcResource::get(
88 const std::string &resourceType,
89 const std::string &resourceInterface,
90 const QueryParamsMap &queryParametersMap,
93 JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
95 GetCallback getCallback = [onGetListener](const HeaderOptions& opts,
96 const OCRepresentation& rep, const int eCode)
98 onGetListener->onGetCallback(opts, rep, eCode);
101 return m_sharedResource->get(resourceType, resourceInterface, queryParametersMap,
105 OCStackResult JniOcResource::get(JNIEnv* env, const std::string &resourceType,
106 const std::string &resourceInterface, const QueryParamsMap &queryParametersMap,
107 jobject jListener, QualityOfService QoS)
109 JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
111 GetCallback getCallback = [onGetListener](const HeaderOptions& opts,
112 const OCRepresentation& rep, const int eCode)
114 onGetListener->onGetCallback(opts, rep, eCode);
117 return m_sharedResource->get(resourceType, resourceInterface, queryParametersMap,
121 OCStackResult JniOcResource::put(JNIEnv* env, const OCRepresentation &representation,
122 const QueryParamsMap &queryParametersMap, jobject jListener)
124 JniOnPutListener *onPutListener = addOnPutListener(env, jListener);
126 PutCallback putCallback = [onPutListener](const HeaderOptions& opts,
127 const OCRepresentation& rep, const int eCode)
129 onPutListener->onPutCallback(opts, rep, eCode);
132 return m_sharedResource->put(representation, queryParametersMap, putCallback);
135 OCStackResult JniOcResource::put(JNIEnv* env, const OCRepresentation &representation,
136 const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
138 JniOnPutListener *onPutListener = addOnPutListener(env, jListener);
140 PutCallback putCallback = [onPutListener](const HeaderOptions& opts,
141 const OCRepresentation& rep, const int eCode)
143 onPutListener->onPutCallback(opts, rep, eCode);
146 return m_sharedResource->put(representation, queryParametersMap, putCallback, QoS);
149 OCStackResult JniOcResource::put(JNIEnv* env, const std::string &resourceType,
150 const std::string &resourceInterface, const OCRepresentation &representation,
151 const QueryParamsMap &queryParametersMap, jobject jListener)
153 JniOnPutListener *onPutListener = addOnPutListener(env, jListener);
155 PutCallback putCallback = [onPutListener](const HeaderOptions& opts,
156 const OCRepresentation& rep, const int eCode)
158 onPutListener->onPutCallback(opts, rep, eCode);
161 return m_sharedResource->put(resourceType, resourceInterface, representation,
162 queryParametersMap, putCallback);
165 OCStackResult JniOcResource::put(JNIEnv* env, const std::string &resourceType,
166 const std::string &resourceInterface, const OCRepresentation &representation,
167 const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
169 JniOnPutListener *onPutListener = addOnPutListener(env, jListener);
171 PutCallback putCallback = [onPutListener](const HeaderOptions& opts,
172 const OCRepresentation& rep, const int eCode)
174 onPutListener->onPutCallback(opts, rep, eCode);
177 return m_sharedResource->put(resourceType, resourceInterface, representation,
178 queryParametersMap, putCallback, QoS);
181 OCStackResult JniOcResource::post(JNIEnv* env, const OCRepresentation &representation,
182 const QueryParamsMap &queryParametersMap, jobject jListener)
184 JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
186 PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
187 const OCRepresentation& rep, const int eCode)
189 onPostListener->onPostCallback(opts, rep, eCode);
192 return m_sharedResource->post(representation, queryParametersMap, postCallback);
195 OCStackResult JniOcResource::post(JNIEnv* env, const OCRepresentation &representation,
196 const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
198 JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
200 PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
201 const OCRepresentation& rep, const int eCode)
203 onPostListener->onPostCallback(opts, rep, eCode);
206 return m_sharedResource->post(representation, queryParametersMap, postCallback, QoS);
209 OCStackResult JniOcResource::post(JNIEnv* env, const std::string &resourceType,
210 const std::string &resourceInterface, const OCRepresentation &representation,
211 const QueryParamsMap &queryParametersMap, jobject jListener)
213 JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
215 PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
216 const OCRepresentation& rep, const int eCode)
218 onPostListener->onPostCallback(opts, rep, eCode);
221 return m_sharedResource->post(resourceType, resourceInterface, representation,
222 queryParametersMap, postCallback);
225 OCStackResult JniOcResource::post(JNIEnv* env, const std::string &resourceType,
226 const std::string &resourceInterface, const OCRepresentation &representation,
227 const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
229 JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
231 PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
232 const OCRepresentation& rep, const int eCode)
234 onPostListener->onPostCallback(opts, rep, eCode);
237 return m_sharedResource->post(resourceType, resourceInterface, representation,
238 queryParametersMap, postCallback, QoS);
241 OCStackResult JniOcResource::deleteResource(JNIEnv* env, jobject jListener)
243 JniOnDeleteListener *onDeleteListener = addOnDeleteListener(env, jListener);
245 DeleteCallback deleteCallback = [onDeleteListener](const HeaderOptions& opts,
248 onDeleteListener->onDeleteCallback(opts, eCode);
251 return m_sharedResource->deleteResource(deleteCallback);
254 OCStackResult JniOcResource::deleteResource(JNIEnv* env, jobject jListener, QualityOfService QoS)
256 JniOnDeleteListener *onDeleteListener = addOnDeleteListener(env, jListener);
258 DeleteCallback deleteCallback = [onDeleteListener](const HeaderOptions& opts, const int eCode)
260 onDeleteListener->onDeleteCallback(opts, eCode);
263 return m_sharedResource->deleteResource(deleteCallback, QoS);
266 OCStackResult JniOcResource::observe(JNIEnv* env, ObserveType observeType,
267 const QueryParamsMap &queryParametersMap, jobject jListener)
269 JniOnObserveListener *onObserveListener = addOnObserveListener(env, jListener);
271 ObserveCallback observeCallback = [onObserveListener](const HeaderOptions& opts,
272 const OCRepresentation& rep, const int& eCode, const int& sequenceNumber)
274 onObserveListener->onObserveCallback(opts, rep, eCode, sequenceNumber);
277 return m_sharedResource->observe(observeType, queryParametersMap, observeCallback);
280 OCStackResult JniOcResource::observe(JNIEnv* env, ObserveType observeType,
281 const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
283 JniOnObserveListener *onObserveListener = addOnObserveListener(env, jListener);
285 ObserveCallback observeCallback = [onObserveListener](const HeaderOptions& opts,
286 const OCRepresentation& rep, const int& eCode, const int& sequenceNumber)
288 onObserveListener->onObserveCallback(opts, rep, eCode, sequenceNumber);
291 return m_sharedResource->observe(observeType, queryParametersMap, observeCallback, QoS);
294 OCStackResult JniOcResource::cancelObserve(JNIEnv* env, QualityOfService qos)
296 if (QualityOfService::HighQos != qos)
298 this->m_onObserveManager.removeAllListeners(env);
300 return m_sharedResource->cancelObserve(qos);
303 void JniOcResource::setHeaderOptions(const HeaderOptions &headerOptions)
305 m_sharedResource->setHeaderOptions(headerOptions);
308 void JniOcResource::unsetHeaderOptions()
310 m_sharedResource->unsetHeaderOptions();
313 std::string JniOcResource::host()
315 return m_sharedResource->host();
318 std::string JniOcResource::uri()
320 return m_sharedResource->uri();
323 OCConnectivityType JniOcResource::connectivityType() const
325 return m_sharedResource->connectivityType();
328 bool JniOcResource::isObservable()
330 return m_sharedResource->isObservable();
333 std::vector< std::string > JniOcResource::getResourceTypes() const
335 return m_sharedResource->getResourceTypes();
338 std::vector< std::string > JniOcResource::getResourceInterfaces(void) const
340 return m_sharedResource->getResourceInterfaces();
343 OCResourceIdentifier JniOcResource::uniqueIdentifier() const
345 return m_sharedResource->uniqueIdentifier();
348 std::string JniOcResource::sid() const
350 return m_sharedResource->sid();
353 JniOnGetListener* JniOcResource::addOnGetListener(JNIEnv* env, jobject jListener)
355 return this->m_onGetManager.addListener(env, jListener, this);
358 JniOnPutListener* JniOcResource::addOnPutListener(JNIEnv* env, jobject jListener)
360 return this->m_onPutManager.addListener(env, jListener, this);
363 JniOnPostListener* JniOcResource::addOnPostListener(JNIEnv* env, jobject jListener)
365 return this->m_onPostManager.addListener(env, jListener, this);
368 JniOnDeleteListener* JniOcResource::addOnDeleteListener(JNIEnv* env, jobject jListener)
370 return this->m_onDeleteManager.addListener(env, jListener, this);
373 JniOnObserveListener* JniOcResource::addOnObserveListener(JNIEnv* env, jobject jListener)
375 return this->m_onObserveManager.addListener(env, jListener, this);
378 void JniOcResource::removeOnGetListener(JNIEnv* env, jobject jListener)
380 this->m_onGetManager.removeListener(env, jListener);
383 void JniOcResource::removeOnPutListener(JNIEnv* env, jobject jListener)
385 this->m_onPutManager.removeListener(env, jListener);
388 void JniOcResource::removeOnPostListener(JNIEnv* env, jobject jListener)
390 this->m_onPostManager.removeListener(env, jListener);
393 void JniOcResource::removeOnDeleteListener(JNIEnv* env, jobject jListener)
395 this->m_onDeleteManager.removeListener(env, jListener);
398 void JniOcResource::removeOnObserveListener(JNIEnv* env, jobject jListener)
400 this->m_onObserveManager.removeListener(env, jListener);
403 std::shared_ptr<OCResource> JniOcResource::getOCResource()
405 return this->m_sharedResource;
408 JniOcResource* JniOcResource::getJniOcResourcePtr(JNIEnv *env, jobject thiz)
410 JniOcResource *resource = GetHandle<JniOcResource>(env, thiz);
411 if (env->ExceptionCheck())
413 LOGE("Failed to get native handle from OcResource");
417 ThrowOcException(JNI_NO_NATIVE_POINTER, "");
423 * Class: org_iotivity_base_OcResource
425 * Signature: (Ljava/util/Map;Lorg/iotivity/base/OcResource/OnGetListener;)V
427 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get
428 (JNIEnv *env, jobject thiz, jobject jQueryParamsMap, jobject jListener)
430 LOGD("OcResource_get");
431 if (!jQueryParamsMap)
433 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
438 ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");
441 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
448 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
452 OCStackResult result = resource->get(
457 if (OC_STACK_OK != result)
459 ThrowOcException(result, "OcResource_get");
462 catch (OCException& e)
464 LOGE("%s", e.reason().c_str());
465 ThrowOcException(e.code(), e.reason().c_str());
470 * Class: org_iotivity_base_OcResource
472 * Signature: (Ljava/util/Map;Lorg/iotivity/base/OcResource/OnGetListener;I)V
474 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get1
475 (JNIEnv *env, jobject thiz, jobject jQueryParamsMap, jobject jListener, jint jQoS)
477 LOGD("OcResource_get");
478 if (!jQueryParamsMap)
480 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
485 ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");
488 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
495 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
499 OCStackResult result = resource->get(
503 JniUtils::getQOS(env, static_cast<int>(jQoS)));
505 if (OC_STACK_OK != result)
507 ThrowOcException(result, "OcResource_get");
510 catch (OCException& e)
512 LOGE("%s", e.reason().c_str());
513 ThrowOcException(e.code(), e.reason().c_str());
518 * Class: org_iotivity_base_OcResource
520 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;
521 Lorg/iotivity/base/OcResource/OnGetListener;)V
523 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get2
524 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
525 jobject jQueryParamsMap, jobject jListener)
527 LOGD("OcResource_get");
528 std::string resourceType;
531 resourceType = env->GetStringUTFChars(jResourceType, nullptr);
533 std::string resourceInterface;
534 if (jResourceInterface)
536 resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
538 if (!jQueryParamsMap)
540 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
545 ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");
548 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
555 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
558 OCStackResult result = resource->get(
565 if (OC_STACK_OK != result)
567 ThrowOcException(result, "OcResource_get");
570 catch (OCException& e)
572 LOGE("%s", e.reason().c_str());
573 ThrowOcException(e.code(), e.reason().c_str());
578 * Class: org_iotivity_base_OcResource
580 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;
581 Lorg/iotivity/base/OcResource/OnGetListener;I)V
583 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get3
584 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
585 jobject jQueryParamsMap, jobject jListener, jint jQoS)
587 LOGD("OcResource_get");
588 if (!jQueryParamsMap)
590 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
595 ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");
598 std::string resourceType;
601 resourceType = env->GetStringUTFChars(jResourceType, nullptr);
603 std::string resourceInterface;
604 if (jResourceInterface)
606 resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
608 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
615 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
619 OCStackResult result = resource->get(
625 JniUtils::getQOS(env, static_cast<int>(jQoS)));
627 if (OC_STACK_OK != result)
629 ThrowOcException(result, "OcResource_get");
632 catch (OCException& e)
634 LOGE("%s", e.reason().c_str());
635 ThrowOcException(e.code(), e.reason().c_str());
640 * Class: org_iotivity_base_OcResource
642 * Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;
643 Lorg/iotivity/base/OcResource/OnPutListener;)V
645 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put
646 (JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
648 LOGD("OcResource_put");
649 if (!jRepresentation)
651 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
654 if (!jQueryParamsMap)
656 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
661 ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");
664 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
670 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
677 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
681 OCStackResult result = resource->put(
687 if (OC_STACK_OK != result)
689 ThrowOcException(result, "OcResource_put");
692 catch (OCException& e)
694 LOGE("%s", e.reason().c_str());
695 ThrowOcException(e.code(), e.reason().c_str());
700 * Class: org_iotivity_base_OcResource
702 * Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;
703 Lorg/iotivity/base/OcResource/OnPutListener;I)V
705 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put1
706 (JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap,
707 jobject jListener, jint jQoS)
709 LOGD("OcResource_put");
710 if (!jRepresentation)
712 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
715 if (!jQueryParamsMap)
717 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
722 ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");
725 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
731 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
738 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
742 OCStackResult result = resource->put(
747 JniUtils::getQOS(env, static_cast<int>(jQoS)));
749 if (OC_STACK_OK != result)
751 ThrowOcException(result, "OcResource_put");
754 catch (OCException& e)
756 LOGE("%s", e.reason().c_str());
757 ThrowOcException(e.code(), e.reason().c_str());
762 * Class: org_iotivity_base_OcResource
764 * Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
765 Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPutListener;)V
767 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put2
768 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
769 jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
771 LOGD("OcResource_put");
772 std::string resourceType;
775 resourceType = env->GetStringUTFChars(jResourceType, nullptr);
777 std::string resourceInterface;
778 if (jResourceInterface)
780 resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
782 if (!jRepresentation)
784 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
787 if (!jQueryParamsMap)
789 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
794 ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");
797 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
803 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
810 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
814 OCStackResult result = resource->put(
822 if (OC_STACK_OK != result)
824 ThrowOcException(result, "OcResource_put");
827 catch (OCException& e)
829 LOGE("%s", e.reason().c_str());
830 ThrowOcException(e.code(), e.reason().c_str());
835 * Class: org_iotivity_base_OcResource
837 * Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
838 Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPutListener;I)V
840 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put3
841 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface, jobject jRepresentation,
842 jobject jQueryParamsMap, jobject jListener, jint jQoS)
844 LOGD("OcResource_put");
845 if (!jRepresentation)
847 ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
850 if (!jQueryParamsMap)
852 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
857 ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");
860 std::string resourceType;
863 resourceType = env->GetStringUTFChars(jResourceType, nullptr);
865 std::string resourceInterface;
866 if (jResourceInterface)
868 resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
871 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
877 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
884 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
888 OCStackResult result = resource->put(
895 JniUtils::getQOS(env, static_cast<int>(jQoS)));
897 if (OC_STACK_OK != result)
899 ThrowOcException(result, "OcResource_put");
902 catch (OCException& e)
904 LOGE("%s", e.reason().c_str());
905 ThrowOcException(e.code(), e.reason().c_str());
910 * Class: org_iotivity_base_OcResource
912 * Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;)V
914 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post
915 (JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
917 LOGD("OcResource_post");
918 if (!jRepresentation)
920 ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
923 if (!jQueryParamsMap)
925 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
930 ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");
933 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
939 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
946 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
950 OCStackResult result = resource->post(
956 if (OC_STACK_OK != result)
958 ThrowOcException(result, "OcResource_post");
961 catch (OCException& e)
963 LOGE("%s", e.reason().c_str());
964 ThrowOcException(e.code(), e.reason().c_str());
969 * Class: org_iotivity_base_OcResource
971 * Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;I)V
973 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post1
974 (JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap, jobject jListener, jint jQoS)
976 LOGD("OcResource_post");
977 if (!jRepresentation)
979 ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
982 if (!jQueryParamsMap)
984 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
989 ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");
992 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
998 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
1005 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
1009 OCStackResult result = resource->post(
1014 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1016 if (OC_STACK_OK != result)
1018 ThrowOcException(result, "OcResource_post");
1021 catch (OCException& e)
1023 LOGE("%s", e.reason().c_str());
1024 ThrowOcException(e.code(), e.reason().c_str());
1029 * Class: org_iotivity_base_OcResource
1031 * Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
1032 Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;)V
1034 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post2
1035 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
1036 jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
1038 LOGD("OcResource_post");
1039 if (!jRepresentation)
1041 ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
1044 if (!jQueryParamsMap)
1046 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
1051 ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");
1054 std::string resourceType;
1057 resourceType = env->GetStringUTFChars(jResourceType, nullptr);
1059 std::string resourceInterface;
1060 if (jResourceInterface)
1062 resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
1065 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1071 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
1072 if (!representation)
1078 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
1082 OCStackResult result = resource->post(
1090 if (OC_STACK_OK != result)
1092 ThrowOcException(result, "OcResource_post");
1095 catch (OCException& e)
1097 LOGE("%s", e.reason().c_str());
1098 ThrowOcException(e.code(), e.reason().c_str());
1103 * Class: org_iotivity_base_OcResource
1105 * Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
1106 Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;I)V
1108 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post3
1109 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
1110 jobject jRepresentation, jobject jQueryParamsMap, jobject jListener, jint jQoS)
1112 LOGD("OcResource_post");
1113 if (!jRepresentation)
1115 ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
1118 if (!jQueryParamsMap)
1120 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
1125 ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");
1128 std::string resourceType;
1131 resourceType = env->GetStringUTFChars(jResourceType, nullptr);
1133 std::string resourceInterface;
1134 if (jResourceInterface)
1136 resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
1139 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1145 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
1146 if (!representation)
1152 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
1156 OCStackResult result = resource->post(
1163 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1165 if (OC_STACK_OK != result)
1167 ThrowOcException(result, "OcResource_post");
1170 catch (OCException& e)
1172 LOGE("%s", e.reason().c_str());
1173 ThrowOcException(e.code(), e.reason().c_str());
1178 * Class: org_iotivity_base_OcResource
1179 * Method: deleteResource
1180 * Signature: (Lorg/iotivity/base/OcResource/OnDeleteListener;)V
1182 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_deleteResource
1183 (JNIEnv *env, jobject thiz, jobject jListener)
1185 LOGD("OcResource_deleteResource");
1188 ThrowOcException(OC_STACK_INVALID_PARAM, "onDeleteListener cannot be null");
1191 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1199 OCStackResult result = resource->deleteResource(
1203 if (OC_STACK_OK != result)
1205 ThrowOcException(result, "OcResource_deleteResource");
1208 catch (OCException& e)
1210 LOGE("%s", e.reason().c_str());
1211 ThrowOcException(e.code(), e.reason().c_str());
1216 * Class: org_iotivity_base_OcResource
1217 * Method: deleteResource1
1218 * Signature: (Lorg/iotivity/base/OcResource/OnDeleteListener;I)V
1220 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_deleteResource1
1221 (JNIEnv *env, jobject thiz, jobject jListener, jint jQoS)
1223 LOGD("OcResource_deleteResource");
1226 ThrowOcException(OC_STACK_INVALID_PARAM, "onDeleteListener cannot be null");
1229 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1237 OCStackResult result = resource->deleteResource(
1240 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1242 if (OC_STACK_OK != result)
1244 ThrowOcException(result, "OcResource_deleteResource");
1247 catch (OCException& e)
1249 LOGE("%s", e.reason().c_str());
1250 ThrowOcException(e.code(), e.reason().c_str());
1255 * Class: org_iotivity_base_OcResource
1257 * Signature: (Lorg/iotivity/base/ObserveType;Ljava/util/Map;
1258 Lorg/iotivity/base/OcResource/OnObserveListener;)V
1260 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_observe
1261 (JNIEnv *env, jobject thiz, jint observeType, jobject jQueryParamsMap, jobject jListener)
1263 LOGD("OcResource_observe");
1264 if (!jQueryParamsMap)
1266 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
1271 ThrowOcException(OC_STACK_INVALID_PARAM, "onObserveListener cannot be null");
1274 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1281 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
1285 OCStackResult result = resource->observe(
1287 JniUtils::getObserveType(env, static_cast<int>(observeType)),
1291 if (OC_STACK_OK != result)
1293 ThrowOcException(result, "OcResource_observe");
1296 catch (OCException& e)
1298 LOGE("%s", e.reason().c_str());
1299 ThrowOcException(e.code(), e.reason().c_str());
1304 * Class: org_iotivity_base_OcResource
1306 * Signature: (Lorg/iotivity/base/ObserveType;Ljava/util/Map;
1307 Lorg/iotivity/base/OcResource/OnObserveListener;I)V
1309 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_observe1
1310 (JNIEnv *env, jobject thiz, jint observeType, jobject jQueryParamsMap,
1311 jobject jListener, jint jQoS)
1313 LOGD("OcResource_observe");
1314 if (!jQueryParamsMap)
1316 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
1321 ThrowOcException(OC_STACK_INVALID_PARAM, "onObserveListener cannot be null");
1324 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1331 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
1335 OCStackResult result = resource->observe(
1337 JniUtils::getObserveType(env, static_cast<int>(observeType)),
1340 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1342 if (OC_STACK_OK != result)
1344 ThrowOcException(result, "OcResource_observe");
1347 catch (OCException& e)
1349 LOGE("%s", e.reason().c_str());
1350 ThrowOcException(e.code(), e.reason().c_str());
1355 * Class: org_iotivity_base_OcResource
1356 * Method: cancelObserve1
1359 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_cancelObserve1
1360 (JNIEnv *env, jobject thiz, jint jQoS)
1362 LOGD("OcResource_cancelObserve1");
1363 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1371 OCStackResult result = resource->cancelObserve(
1373 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1375 if (OC_STACK_OK != result)
1377 ThrowOcException(result, "OcResource_cancelObserve");
1380 catch (OCException& e)
1382 LOGE("%s", e.reason().c_str());
1383 ThrowOcException(e.code(), e.reason().c_str());
1388 * Class: org_iotivity_base_OcResource
1389 * Method: setHeaderOptions
1390 * Signature: ([Lorg/iotivity/OcHeaderOption;)V
1392 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_setHeaderOptions
1393 (JNIEnv *env, jobject thiz, jobjectArray jheaderOptionArr)
1395 LOGD("OcResource_setHeaderOptions");
1396 if (!jheaderOptionArr)
1398 ThrowOcException(OC_STACK_INVALID_PARAM, "headerOptionList cannot be null");
1401 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1407 HeaderOptions headerOptions;
1408 JniUtils::convertJavaHeaderOptionsArrToVector(env, jheaderOptionArr, headerOptions);
1410 resource->setHeaderOptions(headerOptions);
1414 * Class: org_iotivity_base_OcResource
1415 * Method: unsetHeaderOptions
1418 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_unsetHeaderOptions
1419 (JNIEnv *env, jobject thiz)
1421 LOGD("OcResource_unsetHeaderOptions");
1422 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1428 resource->unsetHeaderOptions();
1432 * Class: org_iotivity_base_OcResource
1434 * Signature: ()Ljava/lang/String;
1436 JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResource_getHost
1437 (JNIEnv *env, jobject thiz)
1439 LOGD("OcResource_getHost");
1440 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1446 return env->NewStringUTF(resource->host().c_str());
1450 * Class: org_iotivity_base_OcResource
1452 * Signature: ()Ljava/lang/String;
1454 JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResource_getUri
1455 (JNIEnv *env, jobject thiz)
1457 LOGD("OcResource_getUri");
1458 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1464 return env->NewStringUTF(resource->uri().c_str());
1468 * Class: org_iotivity_base_OcResource
1469 * Method: getConnectivityTypeN
1472 JNIEXPORT jint JNICALL Java_org_iotivity_base_OcResource_getConnectivityTypeN
1473 (JNIEnv *env, jobject thiz)
1475 LOGD("OcResource_getConnectivityType");
1476 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1482 OCConnectivityType connectivityType = resource->connectivityType();
1483 return static_cast<jint>(connectivityType);
1487 * Class: org_iotivity_base_OcResource
1488 * Method: isObservable
1491 JNIEXPORT jboolean JNICALL Java_org_iotivity_base_OcResource_isObservable
1492 (JNIEnv *env, jobject thiz)
1494 LOGD("OcResource_isObservable");
1495 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1501 return (jboolean)resource->isObservable();
1505 * Class: org_iotivity_base_OcResource
1506 * Method: getResourceTypes
1507 * Signature: ()Ljava/util/List;
1509 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResource_getResourceTypes
1510 (JNIEnv *env, jobject thiz)
1512 LOGD("OcResource_getResourceTypes");
1513 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1519 std::vector<std::string> resourceTypes = resource->getResourceTypes();
1521 return JniUtils::convertStrVectorToJavaStrList(env, resourceTypes);
1525 * Class: org_iotivity_base_OcResource
1526 * Method: getResourceInterfaces
1527 * Signature: ()Ljava/util/List;
1529 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResource_getResourceInterfaces
1530 (JNIEnv *env, jobject thiz)
1532 LOGD("OcResource_getResourceInterfaces");
1533 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1539 std::vector<std::string> resourceInterfaces = resource->getResourceInterfaces();
1541 return JniUtils::convertStrVectorToJavaStrList(env, resourceInterfaces);
1545 * Class: org_iotivity_base_OcResource
1546 * Method: getUniqueIdentifier
1547 * Signature: ()Lorg/iotivity/base/OcResourceIdentifier;
1549 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResource_getUniqueIdentifier
1550 (JNIEnv *env, jobject thiz)
1552 LOGD("OcResource_getUniqueIdentifier");
1553 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1559 JniOcResourceIdentifier *jniResourceIdentifier =
1560 new JniOcResourceIdentifier(resource->uniqueIdentifier());
1561 if (!jniResourceIdentifier)
1566 jlong handle = reinterpret_cast<jlong>(jniResourceIdentifier);
1567 jobject jResourceIdentifier = env->NewObject(g_cls_OcResourceIdentifier,
1568 g_mid_OcResourceIdentifier_N_ctor, handle);
1569 if (!jResourceIdentifier)
1571 delete jniResourceIdentifier;
1573 return jResourceIdentifier;
1577 * Class: org_iotivity_base_OcResource
1578 * Method: getServerId
1579 * Signature: ()Ljava/lang/String;
1581 JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResource_getServerId
1582 (JNIEnv *env, jobject thiz)
1584 LOGD("OcResource_getServerId");
1585 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1591 return env->NewStringUTF(resource->sid().c_str());
1595 * Class: org_iotivity_base_OcResource
1599 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_dispose
1600 (JNIEnv *env, jobject thiz)
1602 LOGD("OcResource_dispose");
1603 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);