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->cancelObserve();
36 m_sharedResource = NULL;
39 JNIEnv *env = GetJNIEnv(envRet);
40 if (NULL == env) return;
42 m_onGetManager.removeAllListeners(env);
43 m_onPutManager.removeAllListeners(env);
44 m_onPostManager.removeAllListeners(env);
45 m_onDeleteManager.removeAllListeners(env);
46 m_onObserveManager.removeAllListeners(env);
48 if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
51 OCStackResult JniOcResource::get(JNIEnv* env, const QueryParamsMap &queryParametersMap, jobject jListener)
53 JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
55 GetCallback getCallback = [onGetListener](
56 const HeaderOptions& opts,
57 const OCRepresentation& rep,
60 onGetListener->onGetCallback(opts, rep, eCode);
63 return m_sharedResource->get(queryParametersMap, getCallback);
66 OCStackResult JniOcResource::get(JNIEnv* env, const QueryParamsMap &queryParametersMap, jobject jListener,
69 JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
71 GetCallback getCallback = [onGetListener](const HeaderOptions& opts, const OCRepresentation& rep,
74 onGetListener->onGetCallback(opts, rep, eCode);
77 return m_sharedResource->get(queryParametersMap, getCallback, QoS);
80 OCStackResult JniOcResource::get(
82 const std::string &resourceType,
83 const std::string &resourceInterface,
84 const QueryParamsMap &queryParametersMap,
87 JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
89 GetCallback getCallback = [onGetListener](const HeaderOptions& opts,
90 const OCRepresentation& rep, const int eCode)
92 onGetListener->onGetCallback(opts, rep, eCode);
95 return m_sharedResource->get(resourceType, resourceInterface, queryParametersMap,
99 OCStackResult JniOcResource::get(JNIEnv* env, const std::string &resourceType,
100 const std::string &resourceInterface, const QueryParamsMap &queryParametersMap,
101 jobject jListener, QualityOfService QoS)
103 JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
105 GetCallback getCallback = [onGetListener](const HeaderOptions& opts,
106 const OCRepresentation& rep, const int eCode)
108 onGetListener->onGetCallback(opts, rep, eCode);
111 return m_sharedResource->get(resourceType, resourceInterface, queryParametersMap,
115 OCStackResult JniOcResource::put(JNIEnv* env, const OCRepresentation &representation,
116 const QueryParamsMap &queryParametersMap, jobject jListener)
118 JniOnPutListener *onPutListener = addOnPutListener(env, jListener);
120 PutCallback putCallback = [onPutListener](const HeaderOptions& opts,
121 const OCRepresentation& rep, const int eCode)
123 onPutListener->onPutCallback(opts, rep, eCode);
126 return m_sharedResource->put(representation, queryParametersMap, putCallback);
129 OCStackResult JniOcResource::put(JNIEnv* env, const OCRepresentation &representation,
130 const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
132 JniOnPutListener *onPutListener = addOnPutListener(env, jListener);
134 PutCallback putCallback = [onPutListener](const HeaderOptions& opts,
135 const OCRepresentation& rep, const int eCode)
137 onPutListener->onPutCallback(opts, rep, eCode);
140 return m_sharedResource->put(representation, queryParametersMap, putCallback, QoS);
143 OCStackResult JniOcResource::put(JNIEnv* env, const std::string &resourceType,
144 const std::string &resourceInterface, const OCRepresentation &representation,
145 const QueryParamsMap &queryParametersMap, jobject jListener)
147 JniOnPutListener *onPutListener = addOnPutListener(env, jListener);
149 PutCallback putCallback = [onPutListener](const HeaderOptions& opts,
150 const OCRepresentation& rep, const int eCode)
152 onPutListener->onPutCallback(opts, rep, eCode);
155 return m_sharedResource->put(resourceType, resourceInterface, representation,
156 queryParametersMap, putCallback);
159 OCStackResult JniOcResource::put(JNIEnv* env, const std::string &resourceType,
160 const std::string &resourceInterface, const OCRepresentation &representation,
161 const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
163 JniOnPutListener *onPutListener = addOnPutListener(env, jListener);
165 PutCallback putCallback = [onPutListener](const HeaderOptions& opts,
166 const OCRepresentation& rep, const int eCode)
168 onPutListener->onPutCallback(opts, rep, eCode);
171 return m_sharedResource->put(resourceType, resourceInterface, representation,
172 queryParametersMap, putCallback, QoS);
175 OCStackResult JniOcResource::post(JNIEnv* env, const OCRepresentation &representation,
176 const QueryParamsMap &queryParametersMap, jobject jListener)
178 JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
180 PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
181 const OCRepresentation& rep, const int eCode)
183 onPostListener->onPostCallback(opts, rep, eCode);
186 return m_sharedResource->post(representation, queryParametersMap, postCallback);
189 OCStackResult JniOcResource::post(JNIEnv* env, const OCRepresentation &representation,
190 const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
192 JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
194 PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
195 const OCRepresentation& rep, const int eCode)
197 onPostListener->onPostCallback(opts, rep, eCode);
200 return m_sharedResource->post(representation, queryParametersMap, postCallback, QoS);
203 OCStackResult JniOcResource::post(JNIEnv* env, const std::string &resourceType,
204 const std::string &resourceInterface, const OCRepresentation &representation,
205 const QueryParamsMap &queryParametersMap, jobject jListener)
207 JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
209 PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
210 const OCRepresentation& rep, const int eCode)
212 onPostListener->onPostCallback(opts, rep, eCode);
215 return m_sharedResource->post(resourceType, resourceInterface, representation,
216 queryParametersMap, postCallback);
219 OCStackResult JniOcResource::post(JNIEnv* env, const std::string &resourceType,
220 const std::string &resourceInterface, const OCRepresentation &representation,
221 const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
223 JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
225 PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
226 const OCRepresentation& rep, const int eCode)
228 onPostListener->onPostCallback(opts, rep, eCode);
231 return m_sharedResource->post(resourceType, resourceInterface, representation,
232 queryParametersMap, postCallback, QoS);
235 OCStackResult JniOcResource::deleteResource(JNIEnv* env, jobject jListener)
237 JniOnDeleteListener *onDeleteListener = addOnDeleteListener(env, jListener);
239 DeleteCallback deleteCallback = [onDeleteListener](const HeaderOptions& opts,
242 onDeleteListener->onDeleteCallback(opts, eCode);
245 return m_sharedResource->deleteResource(deleteCallback);
248 OCStackResult JniOcResource::deleteResource(JNIEnv* env, jobject jListener, QualityOfService QoS)
250 JniOnDeleteListener *onDeleteListener = addOnDeleteListener(env, jListener);
252 DeleteCallback deleteCallback = [onDeleteListener](const HeaderOptions& opts, const int eCode)
254 onDeleteListener->onDeleteCallback(opts, eCode);
257 return m_sharedResource->deleteResource(deleteCallback, QoS);
260 OCStackResult JniOcResource::observe(JNIEnv* env, ObserveType observeType,
261 const QueryParamsMap &queryParametersMap, jobject jListener)
263 JniOnObserveListener *onObserveListener = addOnObserveListener(env, jListener);
265 ObserveCallback observeCallback = [onObserveListener](const HeaderOptions& opts,
266 const OCRepresentation& rep, const int& eCode, const int& sequenceNumber)
268 onObserveListener->onObserveCallback(opts, rep, eCode, sequenceNumber);
271 return m_sharedResource->observe(observeType, queryParametersMap, observeCallback);
274 OCStackResult JniOcResource::observe(JNIEnv* env, ObserveType observeType,
275 const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
277 JniOnObserveListener *onObserveListener = addOnObserveListener(env, jListener);
279 ObserveCallback observeCallback = [onObserveListener](const HeaderOptions& opts,
280 const OCRepresentation& rep, const int& eCode, const int& sequenceNumber)
282 onObserveListener->onObserveCallback(opts, rep, eCode, sequenceNumber);
285 return m_sharedResource->observe(observeType, queryParametersMap, observeCallback, QoS);
288 OCStackResult JniOcResource::cancelObserve(JNIEnv* env)
290 this->m_onObserveManager.removeAllListeners(env);
291 return m_sharedResource->cancelObserve();
294 OCStackResult JniOcResource::cancelObserve(JNIEnv* env, QualityOfService qos)
296 //TODO confirm behavior
297 //add removal of java listeners by qos
298 this->m_onObserveManager.removeAllListeners(env);
299 return m_sharedResource->cancelObserve(qos);
302 void JniOcResource::setHeaderOptions(const HeaderOptions &headerOptions)
304 m_sharedResource->setHeaderOptions(headerOptions);
307 void JniOcResource::unsetHeaderOptions()
309 m_sharedResource->unsetHeaderOptions();
312 std::string JniOcResource::host()
314 return m_sharedResource->host();
317 std::string JniOcResource::uri()
319 return m_sharedResource->uri();
322 OCConnectivityType JniOcResource::connectivityType() const
324 return m_sharedResource->connectivityType();
327 bool JniOcResource::isObservable()
329 return m_sharedResource->isObservable();
332 std::vector< std::string > JniOcResource::getResourceTypes() const
334 return m_sharedResource->getResourceTypes();
337 std::vector< std::string > JniOcResource::getResourceInterfaces(void) const
339 return m_sharedResource->getResourceInterfaces();
342 OCResourceIdentifier JniOcResource::uniqueIdentifier() const
344 return m_sharedResource->uniqueIdentifier();
347 std::string JniOcResource::sid() const
349 return m_sharedResource->sid();
352 JniOnGetListener* JniOcResource::addOnGetListener(JNIEnv* env, jobject jListener)
354 return this->m_onGetManager.addListener(env, jListener, this);
357 JniOnPutListener* JniOcResource::addOnPutListener(JNIEnv* env, jobject jListener)
359 return this->m_onPutManager.addListener(env, jListener, this);
362 JniOnPostListener* JniOcResource::addOnPostListener(JNIEnv* env, jobject jListener)
364 return this->m_onPostManager.addListener(env, jListener, this);
367 JniOnDeleteListener* JniOcResource::addOnDeleteListener(JNIEnv* env, jobject jListener)
369 return this->m_onDeleteManager.addListener(env, jListener, this);
372 JniOnObserveListener* JniOcResource::addOnObserveListener(JNIEnv* env, jobject jListener)
374 return this->m_onObserveManager.addListener(env, jListener, this);
377 void JniOcResource::removeOnGetListener(JNIEnv* env, jobject jListener)
379 this->m_onGetManager.removeListener(env, jListener);
382 void JniOcResource::removeOnPutListener(JNIEnv* env, jobject jListener)
384 this->m_onPutManager.removeListener(env, jListener);
387 void JniOcResource::removeOnPostListener(JNIEnv* env, jobject jListener)
389 this->m_onPostManager.removeListener(env, jListener);
392 void JniOcResource::removeOnDeleteListener(JNIEnv* env, jobject jListener)
394 this->m_onDeleteManager.removeListener(env, jListener);
397 void JniOcResource::removeOnObserveListener(JNIEnv* env, jobject jListener)
399 this->m_onObserveManager.removeListener(env, jListener);
402 std::shared_ptr<OCResource> JniOcResource::getOCResource()
404 return this->m_sharedResource;
407 JniOcResource* JniOcResource::getJniOcResourcePtr(JNIEnv *env, jobject thiz)
409 JniOcResource *resource = GetHandle<JniOcResource>(env, thiz);
410 if (env->ExceptionCheck())
412 LOGE("Failed to get native handle from OcResource");
416 ThrowOcException(JNI_NO_NATIVE_POINTER, "");
422 * Class: org_iotivity_base_OcResource
424 * Signature: (Ljava/util/Map;Lorg/iotivity/base/OcResource/OnGetListener;)V
426 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get
427 (JNIEnv *env, jobject thiz, jobject jQueryParamsMap, jobject jListener)
429 LOGD("OcResource_get");
430 if (!jQueryParamsMap)
432 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
437 ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");
440 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
441 if (!resource) return;
444 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
448 OCStackResult result = resource->get(
453 if (OC_STACK_OK != result)
455 ThrowOcException(result, "OcResource_get");
458 catch (OCException& e)
460 LOGE("%s", e.reason().c_str());
461 ThrowOcException(e.code(), e.reason().c_str());
466 * Class: org_iotivity_base_OcResource
468 * Signature: (Ljava/util/Map;Lorg/iotivity/base/OcResource/OnGetListener;I)V
470 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get1
471 (JNIEnv *env, jobject thiz, jobject jQueryParamsMap, jobject jListener, jint jQoS)
473 LOGD("OcResource_get");
474 if (!jQueryParamsMap)
476 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
481 ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");
484 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
485 if (!resource) return;
488 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
492 OCStackResult result = resource->get(
496 JniUtils::getQOS(env, static_cast<int>(jQoS)));
498 if (OC_STACK_OK != result)
500 ThrowOcException(result, "OcResource_get");
503 catch (OCException& e)
505 LOGE("%s", e.reason().c_str());
506 ThrowOcException(e.code(), e.reason().c_str());
511 * Class: org_iotivity_base_OcResource
513 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;
514 Lorg/iotivity/base/OcResource/OnGetListener;)V
516 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get2
517 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
518 jobject jQueryParamsMap, jobject jListener)
520 LOGD("OcResource_get");
521 std::string resourceType;
524 resourceType = env->GetStringUTFChars(jResourceType, NULL);
526 std::string resourceInterface;
527 if (jResourceInterface)
529 resourceInterface = env->GetStringUTFChars(jResourceInterface, NULL);
531 if (!jQueryParamsMap)
533 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
538 ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");
541 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
542 if (!resource) return;
545 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
548 OCStackResult result = resource->get(
555 if (OC_STACK_OK != result)
557 ThrowOcException(result, "OcResource_get");
560 catch (OCException& e)
562 LOGE("%s", e.reason().c_str());
563 ThrowOcException(e.code(), e.reason().c_str());
568 * Class: org_iotivity_base_OcResource
570 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;
571 Lorg/iotivity/base/OcResource/OnGetListener;I)V
573 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get3
574 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
575 jobject jQueryParamsMap, jobject jListener, jint jQoS)
577 LOGD("OcResource_get");
578 if (!jQueryParamsMap)
580 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
585 ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");
588 std::string resourceType;
591 resourceType = env->GetStringUTFChars(jResourceType, NULL);
593 std::string resourceInterface;
594 if (jResourceInterface)
596 resourceInterface = env->GetStringUTFChars(jResourceInterface, NULL);
598 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
599 if (!resource) return;
602 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
606 OCStackResult result = resource->get(
612 JniUtils::getQOS(env, static_cast<int>(jQoS)));
614 if (OC_STACK_OK != result)
616 ThrowOcException(result, "OcResource_get");
619 catch (OCException& e)
621 LOGE("%s", e.reason().c_str());
622 ThrowOcException(e.code(), e.reason().c_str());
627 * Class: org_iotivity_base_OcResource
629 * Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;
630 Lorg/iotivity/base/OcResource/OnPutListener;)V
632 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put
633 (JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
635 LOGD("OcResource_put");
636 if (!jRepresentation)
638 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
641 if (!jQueryParamsMap)
643 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
648 ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");
651 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
652 if (!resource) return;
654 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
655 if (!representation) return;
658 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
662 OCStackResult result = resource->put(
668 if (OC_STACK_OK != result)
670 ThrowOcException(result, "OcResource_put");
673 catch (OCException& e)
675 LOGE("%s", e.reason().c_str());
676 ThrowOcException(e.code(), e.reason().c_str());
681 * Class: org_iotivity_base_OcResource
683 * Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;
684 Lorg/iotivity/base/OcResource/OnPutListener;I)V
686 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put1
687 (JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap,
688 jobject jListener, jint jQoS)
690 LOGD("OcResource_put");
691 if (!jRepresentation)
693 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
696 if (!jQueryParamsMap)
698 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
703 ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");
706 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
707 if (!resource) return;
709 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
710 if (!representation) return;
713 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
717 OCStackResult result = resource->put(
722 JniUtils::getQOS(env, static_cast<int>(jQoS)));
724 if (OC_STACK_OK != result)
726 ThrowOcException(result, "OcResource_put");
729 catch (OCException& e)
731 LOGE("%s", e.reason().c_str());
732 ThrowOcException(e.code(), e.reason().c_str());
737 * Class: org_iotivity_base_OcResource
739 * Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
740 Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPutListener;)V
742 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put2
743 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
744 jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
746 LOGD("OcResource_put");
747 std::string resourceType;
750 resourceType = env->GetStringUTFChars(jResourceType, NULL);
752 std::string resourceInterface;
753 if (jResourceInterface)
755 resourceInterface = env->GetStringUTFChars(jResourceInterface, NULL);
757 if (!jRepresentation)
759 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
762 if (!jQueryParamsMap)
764 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
769 ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");
772 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
773 if (!resource) return;
775 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
776 if (!representation) return;
779 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
783 OCStackResult result = resource->put(
791 if (OC_STACK_OK != result)
793 ThrowOcException(result, "OcResource_put");
796 catch (OCException& e)
798 LOGE("%s", e.reason().c_str());
799 ThrowOcException(e.code(), e.reason().c_str());
804 * Class: org_iotivity_base_OcResource
806 * Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
807 Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPutListener;I)V
809 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put3
810 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface, jobject jRepresentation,
811 jobject jQueryParamsMap, jobject jListener, jint jQoS)
813 LOGD("OcResource_put");
814 if (!jRepresentation)
816 ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
819 if (!jQueryParamsMap)
821 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
826 ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");
829 std::string resourceType;
832 resourceType = env->GetStringUTFChars(jResourceType, NULL);
834 std::string resourceInterface;
835 if (jResourceInterface)
837 resourceInterface = env->GetStringUTFChars(jResourceInterface, NULL);
840 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
841 if (!resource) return;
843 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
844 if (!representation) return;
847 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
851 OCStackResult result = resource->put(
858 JniUtils::getQOS(env, static_cast<int>(jQoS)));
860 if (OC_STACK_OK != result)
862 ThrowOcException(result, "OcResource_put");
865 catch (OCException& e)
867 LOGE("%s", e.reason().c_str());
868 ThrowOcException(e.code(), e.reason().c_str());
873 * Class: org_iotivity_base_OcResource
875 * Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;)V
877 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post
878 (JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
880 LOGD("OcResource_post");
881 if (!jRepresentation)
883 ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
886 if (!jQueryParamsMap)
888 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
893 ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");
896 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
897 if (!resource) return;
899 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
900 if (!representation) return;
903 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
907 OCStackResult result = resource->post(
913 if (OC_STACK_OK != result)
915 ThrowOcException(result, "OcResource_post");
918 catch (OCException& e)
920 LOGE("%s", e.reason().c_str());
921 ThrowOcException(e.code(), e.reason().c_str());
926 * Class: org_iotivity_base_OcResource
928 * Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;I)V
930 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post1
931 (JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap, jobject jListener, jint jQoS)
933 LOGD("OcResource_post");
934 if (!jRepresentation)
936 ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
939 if (!jQueryParamsMap)
941 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
946 ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");
949 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
950 if (!resource) return;
952 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
953 if (!representation) return;
956 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
960 OCStackResult result = resource->post(
965 JniUtils::getQOS(env, static_cast<int>(jQoS)));
967 if (OC_STACK_OK != result)
969 ThrowOcException(result, "OcResource_post");
972 catch (OCException& e)
974 LOGE("%s", e.reason().c_str());
975 ThrowOcException(e.code(), e.reason().c_str());
980 * Class: org_iotivity_base_OcResource
982 * Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
983 Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;)V
985 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post2
986 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
987 jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
989 LOGD("OcResource_post");
990 if (!jRepresentation)
992 ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
995 if (!jQueryParamsMap)
997 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
1002 ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");
1005 std::string resourceType;
1008 resourceType = env->GetStringUTFChars(jResourceType, NULL);
1010 std::string resourceInterface;
1011 if (jResourceInterface)
1013 resourceInterface = env->GetStringUTFChars(jResourceInterface, NULL);
1016 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1017 if (!resource) return;
1019 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
1020 if (!representation) return;
1023 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
1027 OCStackResult result = resource->post(
1035 if (OC_STACK_OK != result)
1037 ThrowOcException(result, "OcResource_post");
1040 catch (OCException& e)
1042 LOGE("%s", e.reason().c_str());
1043 ThrowOcException(e.code(), e.reason().c_str());
1048 * Class: org_iotivity_base_OcResource
1050 * Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
1051 Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;I)V
1053 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post3
1054 (JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
1055 jobject jRepresentation, jobject jQueryParamsMap, jobject jListener, jint jQoS)
1057 LOGD("OcResource_post");
1058 if (!jRepresentation)
1060 ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
1063 if (!jQueryParamsMap)
1065 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
1070 ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");
1073 std::string resourceType;
1076 resourceType = env->GetStringUTFChars(jResourceType, NULL);
1078 std::string resourceInterface;
1079 if (jResourceInterface)
1081 resourceInterface = env->GetStringUTFChars(jResourceInterface, NULL);
1084 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1085 if (!resource) return;
1087 OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
1088 if (!representation) return;
1091 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
1095 OCStackResult result = resource->post(
1102 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1104 if (OC_STACK_OK != result)
1106 ThrowOcException(result, "OcResource_post");
1109 catch (OCException& e)
1111 LOGE("%s", e.reason().c_str());
1112 ThrowOcException(e.code(), e.reason().c_str());
1117 * Class: org_iotivity_base_OcResource
1118 * Method: deleteResource
1119 * Signature: (Lorg/iotivity/base/OcResource/OnDeleteListener;)V
1121 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_deleteResource
1122 (JNIEnv *env, jobject thiz, jobject jListener)
1124 LOGD("OcResource_deleteResource");
1127 ThrowOcException(OC_STACK_INVALID_PARAM, "onDeleteListener cannot be null");
1130 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1131 if (!resource) return;
1135 OCStackResult result = resource->deleteResource(
1139 if (OC_STACK_OK != result)
1141 ThrowOcException(result, "OcResource_deleteResource");
1144 catch (OCException& e)
1146 LOGE("%s", e.reason().c_str());
1147 ThrowOcException(e.code(), e.reason().c_str());
1152 * Class: org_iotivity_base_OcResource
1153 * Method: deleteResource1
1154 * Signature: (Lorg/iotivity/base/OcResource/OnDeleteListener;I)V
1156 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_deleteResource1
1157 (JNIEnv *env, jobject thiz, jobject jListener, jint jQoS)
1159 LOGD("OcResource_deleteResource");
1162 ThrowOcException(OC_STACK_INVALID_PARAM, "onDeleteListener cannot be null");
1165 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1166 if (!resource) return;
1170 OCStackResult result = resource->deleteResource(
1173 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1175 if (OC_STACK_OK != result)
1177 ThrowOcException(result, "OcResource_deleteResource");
1180 catch (OCException& e)
1182 LOGE("%s", e.reason().c_str());
1183 ThrowOcException(e.code(), e.reason().c_str());
1188 * Class: org_iotivity_base_OcResource
1190 * Signature: (Lorg/iotivity/base/ObserveType;Ljava/util/Map;
1191 Lorg/iotivity/base/OcResource/OnObserveListener;)V
1193 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_observe
1194 (JNIEnv *env, jobject thiz, jint observeType, jobject jQueryParamsMap, jobject jListener)
1196 LOGD("OcResource_observe");
1197 if (!jQueryParamsMap)
1199 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
1204 ThrowOcException(OC_STACK_INVALID_PARAM, "onObserveListener cannot be null");
1207 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1208 if (!resource) return;
1211 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
1215 OCStackResult result = resource->observe(
1217 JniUtils::getObserveType(env, static_cast<int>(observeType)),
1221 if (OC_STACK_OK != result)
1223 ThrowOcException(result, "OcResource_observe");
1226 catch (OCException& e)
1228 LOGE("%s", e.reason().c_str());
1229 ThrowOcException(e.code(), e.reason().c_str());
1234 * Class: org_iotivity_base_OcResource
1236 * Signature: (Lorg/iotivity/base/ObserveType;Ljava/util/Map;
1237 Lorg/iotivity/base/OcResource/OnObserveListener;I)V
1239 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_observe1
1240 (JNIEnv *env, jobject thiz, jint observeType, jobject jQueryParamsMap,
1241 jobject jListener, jint jQoS)
1243 LOGD("OcResource_observe");
1244 if (!jQueryParamsMap)
1246 ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
1251 ThrowOcException(OC_STACK_INVALID_PARAM, "onObserveListener cannot be null");
1254 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1255 if (!resource) return;
1258 JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
1262 OCStackResult result = resource->observe(
1264 JniUtils::getObserveType(env, static_cast<int>(observeType)),
1267 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1269 if (OC_STACK_OK != result)
1271 ThrowOcException(result, "OcResource_observe");
1274 catch (OCException& e)
1276 LOGE("%s", e.reason().c_str());
1277 ThrowOcException(e.code(), e.reason().c_str());
1282 * Class: org_iotivity_base_OcResource
1283 * Method: cancelObserve
1286 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_cancelObserve
1287 (JNIEnv *env, jobject thiz)
1289 LOGD("OcResource_cancelObserve");
1290 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1291 if (!resource) return;
1295 OCStackResult result = resource->cancelObserve(env);
1297 if (OC_STACK_OK != result)
1299 ThrowOcException(result, "OcResource_cancelObserve");
1302 catch (OCException& e)
1304 LOGE("%s", e.reason().c_str());
1305 ThrowOcException(e.code(), e.reason().c_str());
1310 * Class: org_iotivity_base_OcResource
1311 * Method: cancelObserve1
1314 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_cancelObserve1
1315 (JNIEnv *env, jobject thiz, jint jQoS)
1317 LOGD("OcResource_cancelObserve1");
1318 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1319 if (!resource) return;
1323 OCStackResult result = resource->cancelObserve(
1325 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1327 if (OC_STACK_OK != result)
1329 ThrowOcException(result, "OcResource_cancelObserve");
1332 catch (OCException& e)
1334 LOGE("%s", e.reason().c_str());
1335 ThrowOcException(e.code(), e.reason().c_str());
1340 * Class: org_iotivity_base_OcResource
1341 * Method: setHeaderOptions
1342 * Signature: ([Lorg/iotivity/OcHeaderOption;)V
1344 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_setHeaderOptions
1345 (JNIEnv *env, jobject thiz, jobjectArray jheaderOptionArr)
1347 LOGD("OcResource_setHeaderOptions");
1348 if (!jheaderOptionArr)
1350 ThrowOcException(OC_STACK_INVALID_PARAM, "headerOptionList cannot be null");
1353 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1354 if (!resource) return;
1356 HeaderOptions headerOptions;
1357 JniUtils::convertJavaHeaderOptionsArrToVector(env, jheaderOptionArr, headerOptions);
1359 resource->setHeaderOptions(headerOptions);
1363 * Class: org_iotivity_base_OcResource
1364 * Method: unsetHeaderOptions
1367 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_unsetHeaderOptions
1368 (JNIEnv *env, jobject thiz)
1370 LOGD("OcResource_unsetHeaderOptions");
1371 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1372 if (!resource) return;
1374 resource->unsetHeaderOptions();
1378 * Class: org_iotivity_base_OcResource
1380 * Signature: ()Ljava/lang/String;
1382 JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResource_getHost
1383 (JNIEnv *env, jobject thiz)
1385 LOGD("OcResource_getHost");
1386 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1387 if (!resource) return nullptr;
1389 return env->NewStringUTF(resource->host().c_str());
1393 * Class: org_iotivity_base_OcResource
1395 * Signature: ()Ljava/lang/String;
1397 JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResource_getUri
1398 (JNIEnv *env, jobject thiz)
1400 LOGD("OcResource_getUri");
1401 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1402 if (!resource) return nullptr;
1404 return env->NewStringUTF(resource->uri().c_str());
1408 * Class: org_iotivity_base_OcResource
1409 * Method: getConnectivityTypeN
1412 JNIEXPORT jint JNICALL Java_org_iotivity_base_OcResource_getConnectivityTypeN
1413 (JNIEnv *env, jobject thiz)
1415 LOGD("OcResource_getConnectivityType");
1416 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1417 if (!resource) return -1;
1419 OCConnectivityType connectivityType = resource->connectivityType();
1420 return static_cast<jint>(connectivityType);
1424 * Class: org_iotivity_base_OcResource
1425 * Method: isObservable
1428 JNIEXPORT jboolean JNICALL Java_org_iotivity_base_OcResource_isObservable
1429 (JNIEnv *env, jobject thiz)
1431 LOGD("OcResource_isObservable");
1432 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1433 return (jboolean)resource->isObservable();
1437 * Class: org_iotivity_base_OcResource
1438 * Method: getResourceTypes
1439 * Signature: ()Ljava/util/List;
1441 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResource_getResourceTypes
1442 (JNIEnv *env, jobject thiz)
1444 LOGD("OcResource_getResourceTypes");
1445 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1446 if (!resource) return nullptr;
1448 std::vector<std::string> resourceTypes = resource->getResourceTypes();
1450 return JniUtils::convertStrVectorToJavaStrList(env, resourceTypes);
1454 * Class: org_iotivity_base_OcResource
1455 * Method: getResourceInterfaces
1456 * Signature: ()Ljava/util/List;
1458 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResource_getResourceInterfaces
1459 (JNIEnv *env, jobject thiz)
1461 LOGD("OcResource_getResourceInterfaces");
1462 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1463 if (!resource) return nullptr;
1465 std::vector<std::string> resourceInterfaces = resource->getResourceInterfaces();
1467 return JniUtils::convertStrVectorToJavaStrList(env, resourceInterfaces);
1471 * Class: org_iotivity_base_OcResource
1472 * Method: getUniqueIdentifier
1473 * Signature: ()Lorg/iotivity/base/OcResourceIdentifier;
1475 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResource_getUniqueIdentifier
1476 (JNIEnv *env, jobject thiz)
1478 LOGD("OcResource_getUniqueIdentifier");
1479 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1480 if (!resource) return nullptr;
1482 JniOcResourceIdentifier *jniResourceIdentifier =
1483 new JniOcResourceIdentifier(resource->uniqueIdentifier());
1484 if (!jniResourceIdentifier) return nullptr;
1486 jlong handle = reinterpret_cast<jlong>(jniResourceIdentifier);
1487 jobject jResourceIdentifier = env->NewObject(g_cls_OcResourceIdentifier,
1488 g_mid_OcResourceIdentifier_N_ctor, handle);
1489 if (!jResourceIdentifier)
1491 delete jniResourceIdentifier;
1493 return jResourceIdentifier;
1497 * Class: org_iotivity_base_OcResource
1498 * Method: getServerId
1499 * Signature: ()Ljava/lang/String;
1501 JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResource_getServerId
1502 (JNIEnv *env, jobject thiz)
1504 LOGD("OcResource_getServerId");
1505 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
1506 if (!resource) return nullptr;
1508 return env->NewStringUTF(resource->sid().c_str());
1512 * Class: org_iotivity_base_OcResource
1516 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_dispose
1517 (JNIEnv *env, jobject thiz)
1519 LOGD("OcResource_dispose");
1520 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);