1 //******************************************************************
3 // Copyright 2015 Intel Corporation.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
11 // http://www.apache.org/licenses/LICENSE-2.0
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21 #include "JniOcPlatform.h"
22 #include "OCPlatform.h"
23 #include "JniOcResource.h"
24 #include "JniOcResourceHandle.h"
25 #include "JniOcPresenceHandle.h"
26 #include "JniOcResourceResponse.h"
27 #include "JniOcSecurity.h"
28 #include "JniOcDirectPairDevice.h"
30 #include "ocpayload.h"
33 #include "JniOcAccountManager.h"
38 JniOnResourceFoundListener* AddOnResourceFoundListener(JNIEnv* env, jobject jListener)
40 JniOnResourceFoundListener *onResourceFoundListener = nullptr;
42 resourceFoundMapLock.lock();
44 for (auto it = onResourceFoundListenerMap.begin();
45 it != onResourceFoundListenerMap.end();
48 if (env->IsSameObject(jListener, it->first))
50 auto refPair = it->second;
51 onResourceFoundListener = refPair.first;
54 onResourceFoundListenerMap.insert(*it);
55 LOGD("OnResourceFoundListener: ref. count incremented");
60 if (!onResourceFoundListener)
62 onResourceFoundListener =
63 new JniOnResourceFoundListener(env, jListener, RemoveOnResourceFoundListener);
64 jobject jgListener = env->NewGlobalRef(jListener);
66 onResourceFoundListenerMap.insert(
68 std::pair<JniOnResourceFoundListener*, int >>(
70 std::pair<JniOnResourceFoundListener*, int>(onResourceFoundListener,
72 LOGD("OnResourceFoundListener: new listener");
74 resourceFoundMapLock.unlock();
75 return onResourceFoundListener;
78 void RemoveOnResourceFoundListener(JNIEnv* env, jobject jListener)
80 resourceFoundMapLock.lock();
82 for (auto it = onResourceFoundListenerMap.begin();
83 it != onResourceFoundListenerMap.end();
86 if (env->IsSameObject(jListener, it->first))
88 auto refPair = it->second;
89 if (refPair.second > 1)
93 onResourceFoundListenerMap.insert(*it);
94 LOGI("OnResourceFoundListener: ref. count decremented");
98 env->DeleteGlobalRef(it->first);
99 JniOnResourceFoundListener* listener = refPair.first;
101 onResourceFoundListenerMap.erase(it);
102 LOGI("OnResourceFoundListener removed");
107 resourceFoundMapLock.unlock();
110 JniOnDeviceInfoListener* AddOnDeviceInfoListener(JNIEnv* env, jobject jListener)
112 JniOnDeviceInfoListener *onDeviceInfoListener = nullptr;
114 deviceInfoMapLock.lock();
116 for (auto it = onDeviceInfoListenerMap.begin(); it != onDeviceInfoListenerMap.end(); ++it)
118 if (env->IsSameObject(jListener, it->first))
120 auto refPair = it->second;
121 onDeviceInfoListener = refPair.first;
123 it->second = refPair;
124 onDeviceInfoListenerMap.insert(*it);
125 LOGD("OnDeviceInfoListener: ref. count incremented");
130 if (!onDeviceInfoListener)
132 onDeviceInfoListener =
133 new JniOnDeviceInfoListener(env, jListener, RemoveOnDeviceInfoListener);
134 jobject jgListener = env->NewGlobalRef(jListener);
136 onDeviceInfoListenerMap.insert(
138 std::pair<JniOnDeviceInfoListener*, int>>(
140 std::pair<JniOnDeviceInfoListener*, int>(onDeviceInfoListener, 1)));
141 LOGI("OnDeviceInfoListener: new listener");
144 deviceInfoMapLock.unlock();
145 return onDeviceInfoListener;
148 void RemoveOnDeviceInfoListener(JNIEnv* env, jobject jListener)
150 deviceInfoMapLock.lock();
151 bool isFound = false;
152 for (auto it = onDeviceInfoListenerMap.begin(); it != onDeviceInfoListenerMap.end(); ++it)
154 if (env->IsSameObject(jListener, it->first))
156 auto refPair = it->second;
157 if (refPair.second > 1)
160 it->second = refPair;
161 onDeviceInfoListenerMap.insert(*it);
162 LOGI("OnDeviceInfoListener: ref. count decremented");
166 env->DeleteGlobalRef(it->first);
167 JniOnDeviceInfoListener* listener = refPair.first;
169 onDeviceInfoListenerMap.erase(it);
171 LOGI("OnDeviceInfoListener removed");
181 ThrowOcException(JNI_EXCEPTION, "OnDeviceInfoListenet not found");
183 deviceInfoMapLock.unlock();
186 JniOnPlatformInfoListener* AddOnPlatformInfoListener(JNIEnv* env, jobject jListener)
188 JniOnPlatformInfoListener *onPlatformInfoListener = nullptr;
190 platformInfoMapLock.lock();
192 for (auto it = onPlatformInfoListenerMap.begin(); it != onPlatformInfoListenerMap.end(); ++it)
194 if (env->IsSameObject(jListener, it->first))
196 auto refPair = it->second;
197 onPlatformInfoListener = refPair.first;
199 it->second = refPair;
200 onPlatformInfoListenerMap.insert(*it);
201 LOGD("OnPlatformInfoListener: ref. count incremented");
206 if (!onPlatformInfoListener)
208 onPlatformInfoListener =
209 new JniOnPlatformInfoListener(env, jListener, RemoveOnPlatformInfoListener);
210 jobject jgListener = env->NewGlobalRef(jListener);
212 onPlatformInfoListenerMap.insert(
213 std::pair<jobject, std::pair<JniOnPlatformInfoListener*, int>>(
215 std::pair<JniOnPlatformInfoListener*, int>(onPlatformInfoListener, 1)));
216 LOGI("OnPlatformInfoListener: new listener");
219 platformInfoMapLock.unlock();
220 return onPlatformInfoListener;
223 void RemoveOnPlatformInfoListener(JNIEnv* env, jobject jListener)
225 platformInfoMapLock.lock();
226 bool isFound = false;
227 for (auto it = onPlatformInfoListenerMap.begin(); it != onPlatformInfoListenerMap.end(); ++it)
229 if (env->IsSameObject(jListener, it->first))
231 auto refPair = it->second;
232 if (refPair.second > 1)
235 it->second = refPair;
236 onPlatformInfoListenerMap.insert(*it);
237 LOGI("OnPlatformInfoListener: ref. count decremented");
241 env->DeleteGlobalRef(it->first);
242 JniOnPlatformInfoListener* listener = refPair.first;
244 onPlatformInfoListenerMap.erase(it);
246 LOGI("OnPlatformInfoListener removed");
256 ThrowOcException(JNI_EXCEPTION, "OnPlatformInfoListenet not found");
258 platformInfoMapLock.unlock();
261 JniOnPresenceListener* AddOnPresenceListener(JNIEnv* env, jobject jListener)
263 JniOnPresenceListener *onPresenceListener = nullptr;
265 presenceMapLock.lock();
267 for (auto it = onPresenceListenerMap.begin(); it != onPresenceListenerMap.end(); ++it)
269 if (env->IsSameObject(jListener, it->first))
271 auto refPair = it->second;
272 onPresenceListener = refPair.first;
274 it->second = refPair;
275 onPresenceListenerMap.insert(*it);
276 LOGD("OnPresenceListener: ref. count incremented");
280 if (!onPresenceListener)
282 onPresenceListener = new JniOnPresenceListener(env, jListener, RemoveOnPresenceListener);
283 jobject jgListener = env->NewGlobalRef(jListener);
284 onPresenceListenerMap.insert(
285 std::pair<jobject, std::pair<JniOnPresenceListener*, int>>(
287 std::pair<JniOnPresenceListener*, int>(onPresenceListener, 1)));
288 LOGI("OnPresenceListener: new listener");
290 presenceMapLock.unlock();
291 return onPresenceListener;
294 void RemoveOnPresenceListener(JNIEnv* env, jobject jListener)
296 presenceMapLock.lock();
297 bool isFound = false;
298 for (auto it = onPresenceListenerMap.begin(); it != onPresenceListenerMap.end(); ++it)
300 if (env->IsSameObject(jListener, it->first))
302 auto refPair = it->second;
303 if (refPair.second > 1)
306 it->second = refPair;
307 onPresenceListenerMap.insert(*it);
308 LOGI("OnPresenceListener: ref. count decremented");
312 env->DeleteGlobalRef(it->first);
313 JniOnPresenceListener* listener = refPair.first;
315 onPresenceListenerMap.erase(it);
316 LOGI("OnPresenceListener is removed");
324 ThrowOcException(JNI_EXCEPTION, "OnPresenceListener not found");
326 presenceMapLock.unlock();
329 JniOnDPDevicesFoundListener* AddOnDPDevicesFoundListener(JNIEnv* env, jobject jListener)
331 JniOnDPDevicesFoundListener *onDPDeviceListener = nullptr;
333 dpDevicesFoundListenerMapLock.lock();
335 for (auto it = onDPDevicesFoundListenerMap.begin(); it !=
336 onDPDevicesFoundListenerMap.end(); ++it)
338 if (env->IsSameObject(jListener, it->first))
340 auto refPair = it->second;
341 onDPDeviceListener = refPair.first;
343 it->second = refPair;
344 onDPDevicesFoundListenerMap.insert(*it);
345 LOGD("onDPDeviceListener: ref. count incremented");
349 if (!onDPDeviceListener)
351 onDPDeviceListener = new JniOnDPDevicesFoundListener(env, jListener,
352 RemoveOnDPDevicesFoundListener);
353 jobject jgListener = env->NewGlobalRef(jListener);
354 onDPDevicesFoundListenerMap.insert(
355 std::pair<jobject, std::pair<JniOnDPDevicesFoundListener*, int>>(
357 std::pair<JniOnDPDevicesFoundListener*, int>(onDPDeviceListener, 1)));
358 LOGI("onDPDeviceListener: new listener");
360 dpDevicesFoundListenerMapLock.unlock();
361 return onDPDeviceListener;
364 void RemoveOnDPDevicesFoundListener(JNIEnv* env, jobject jListener)
366 dpDevicesFoundListenerMapLock.lock();
367 bool isFound = false;
368 for (auto it = onDPDevicesFoundListenerMap.begin(); it !=
369 onDPDevicesFoundListenerMap.end(); ++it)
371 if (env->IsSameObject(jListener, it->first))
373 auto refPair = it->second;
374 if (refPair.second > 1)
377 it->second = refPair;
378 onDPDevicesFoundListenerMap.insert(*it);
379 LOGI("onDPDeviceListener: ref. count decremented");
383 env->DeleteGlobalRef(it->first);
384 JniOnDPDevicesFoundListener* listener = refPair.first;
386 onDPDevicesFoundListenerMap.erase(it);
387 LOGI("onDPDeviceListener is removed");
395 ThrowOcException(JNI_EXCEPTION, "onDPDeviceListener not found");
397 dpDevicesFoundListenerMapLock.unlock();
400 JniOnDirectPairingListener* AddOnDirectPairingListener(JNIEnv* env, jobject jListener)
402 JniOnDirectPairingListener *onDirectPairingListener = nullptr;
404 directPairingListenerMapLock.lock();
406 for (auto it = directPairingListenerMap.begin(); it !=
407 directPairingListenerMap.end(); ++it)
409 if (env->IsSameObject(jListener, it->first))
411 auto refPair = it->second;
412 onDirectPairingListener = refPair.first;
414 it->second = refPair;
415 directPairingListenerMap.insert(*it);
416 LOGD("onDirectPairingListener: ref. count incremented");
420 if (!onDirectPairingListener)
422 onDirectPairingListener = new JniOnDirectPairingListener(env, jListener,
423 RemoveOnDirectPairingListener);
424 jobject jgListener = env->NewGlobalRef(jListener);
425 directPairingListenerMap.insert(
426 std::pair<jobject, std::pair<JniOnDirectPairingListener*, int>>(
428 std::pair<JniOnDirectPairingListener*, int>(onDirectPairingListener, 1)));
429 LOGI("onDirectPairingListener: new listener");
431 directPairingListenerMapLock.unlock();
432 return onDirectPairingListener;
435 void RemoveOnDirectPairingListener(JNIEnv* env, jobject jListener)
437 directPairingListenerMapLock.lock();
438 bool isFound = false;
439 for (auto it = directPairingListenerMap.begin(); it !=
440 directPairingListenerMap.end(); ++it)
442 if (env->IsSameObject(jListener, it->first))
444 auto refPair = it->second;
445 if (refPair.second > 1)
448 it->second = refPair;
449 directPairingListenerMap.insert(*it);
450 LOGI("onDirectPairingListener: ref. count decremented");
454 env->DeleteGlobalRef(it->first);
455 JniOnDirectPairingListener* listener = refPair.first;
457 directPairingListenerMap.erase(it);
458 LOGI("onDirectPairingListener is removed");
466 ThrowOcException(JNI_EXCEPTION, "onDirectPairingListener not found");
468 directPairingListenerMapLock.unlock();
471 JniOnPublishResourceListener* AddOnPublishResourceListener(JNIEnv* env, jobject jListener)
479 JniOnPublishResourceListener *onPublishResourceListener = nullptr;
481 publishResourceListenerMapLock.lock();
483 for (auto it = onPublishResourceListenerMap.begin(); it !=
484 onPublishResourceListenerMap.end(); ++it)
486 if (env->IsSameObject(jListener, it->first))
488 auto refPair = it->second;
489 onPublishResourceListener = refPair.first;
491 it->second = refPair;
492 onPublishResourceListenerMap.insert(*it);
493 LOGD("onPublishResourceListener: ref. count incremented");
497 if (!onPublishResourceListener)
499 onPublishResourceListener = new JniOnPublishResourceListener(env, jListener,
500 RemoveOnPublishResourceListener);
501 jobject jgListener = env->NewGlobalRef(jListener);
502 onPublishResourceListenerMap.insert(
503 std::pair<jobject, std::pair<JniOnPublishResourceListener*, int>>(
505 std::pair<JniOnPublishResourceListener*, int>(onPublishResourceListener, 1)));
506 LOGI("onPublishResourceListener: new listener");
508 publishResourceListenerMapLock.unlock();
509 return onPublishResourceListener;
512 void RemoveOnPublishResourceListener(JNIEnv* env, jobject jListener)
516 ThrowOcException(JNI_EXCEPTION, "env is null");
520 publishResourceListenerMapLock.lock();
521 bool isFound = false;
522 for (auto it = onPublishResourceListenerMap.begin(); it !=
523 onPublishResourceListenerMap.end(); ++it)
525 if (env->IsSameObject(jListener, it->first))
527 auto refPair = it->second;
528 if (refPair.second > 1)
531 it->second = refPair;
532 onPublishResourceListenerMap.insert(*it);
533 LOGI("onPublishResourceListener: ref. count decremented");
537 env->DeleteGlobalRef(it->first);
538 JniOnPublishResourceListener* listener = refPair.first;
540 onPublishResourceListenerMap.erase(it);
541 LOGI("onPublishResourceListener is removed");
549 ThrowOcException(JNI_EXCEPTION, "onPublishResourceListener not found");
551 publishResourceListenerMapLock.unlock();
554 JniOnDeleteResourceListener* AddOnDeleteResourceListener(JNIEnv* env, jobject jListener)
562 JniOnDeleteResourceListener *onDeleteResourceListener = nullptr;
564 deleteResourceListenerMapLock.lock();
566 for (auto it = onDeleteResourceListenerMap.begin(); it !=
567 onDeleteResourceListenerMap.end(); ++it)
569 if (env->IsSameObject(jListener, it->first))
571 auto refPair = it->second;
572 onDeleteResourceListener = refPair.first;
574 it->second = refPair;
575 onDeleteResourceListenerMap.insert(*it);
576 LOGD("onDeleteResourceListener: ref. count incremented");
580 if (!onDeleteResourceListener)
582 onDeleteResourceListener = new JniOnDeleteResourceListener(env, jListener,
583 RemoveOnDeleteResourceListener);
584 jobject jgListener = env->NewGlobalRef(jListener);
585 onDeleteResourceListenerMap.insert(
586 std::pair<jobject, std::pair<JniOnDeleteResourceListener*, int>>(
588 std::pair<JniOnDeleteResourceListener*, int>(onDeleteResourceListener, 1)));
589 LOGI("onDeleteResourceListener: new listener");
591 deleteResourceListenerMapLock.unlock();
592 return onDeleteResourceListener;
595 void RemoveOnDeleteResourceListener(JNIEnv* env, jobject jListener)
599 ThrowOcException(JNI_EXCEPTION, "env is null");
603 deleteResourceListenerMapLock.lock();
604 bool isFound = false;
605 for (auto it = onDeleteResourceListenerMap.begin(); it !=
606 onDeleteResourceListenerMap.end(); ++it)
608 if (env->IsSameObject(jListener, it->first))
610 auto refPair = it->second;
611 if (refPair.second > 1)
614 it->second = refPair;
615 onDeleteResourceListenerMap.insert(*it);
616 LOGI("onDeleteResourceListener: ref. count decremented");
620 env->DeleteGlobalRef(it->first);
621 JniOnDeleteResourceListener* listener = refPair.first;
623 onDeleteResourceListenerMap.erase(it);
624 LOGI("onDeleteResourceListener is removed");
632 ThrowOcException(JNI_EXCEPTION, "onDeleteResourceListener not found");
634 deleteResourceListenerMapLock.unlock();
638 * Class: org_iotivity_base_OcPlatform
640 * Signature: (IILjava/lang/String;II)V
642 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_configure
643 (JNIEnv *env, jclass clazz, jint jServiceType, jint jModeType, jstring jIpAddress, jint jPort,
644 jint jQOS, jstring jDbPath)
646 LOGI("OcPlatform_configure");
648 std::string ipAddress;
652 ipAddress = env->GetStringUTFChars(jIpAddress, nullptr);
656 dbfile = env->GetStringUTFChars(jDbPath, nullptr);
657 JniOcSecurity::StoreDbPath(dbfile);
662 port = static_cast<uint16_t>(jPort);
666 JniUtils::getServiceType(env, jServiceType),
667 JniUtils::getModeType(env, jModeType),
670 JniUtils::getQOS(env, static_cast<int>(jQOS)),
671 JniOcSecurity::getOCPersistentStorage()
673 OCPlatform::Configure(cfg);
677 * Class: org_iotivity_base_OcPlatform
678 * Method: notifyAllObservers0
679 * Signature: (Lorg/iotivity/base/OcResourceHandle;)V
681 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyAllObservers0
682 (JNIEnv *env, jclass clazz, jobject jResourceHandle)
684 LOGI("OcPlatform_notifyAllObservers");
685 if (!jResourceHandle)
687 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
691 JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
692 env, jResourceHandle);
693 if (!jniOcResourceHandle)
700 OCStackResult result =
701 OCPlatform::notifyAllObservers(jniOcResourceHandle->getOCResourceHandle());
703 if (OC_STACK_OK != result)
705 ThrowOcException(result, "Failed to notify all observers");
709 catch (OCException& e)
711 LOGE("%s", e.reason().c_str());
712 ThrowOcException(e.code(), e.reason().c_str());
717 * Class: org_iotivity_base_OcPlatform
718 * Method: notifyAllObservers1
719 * Signature: (Lorg/iotivity/base/OcResourceHandle;I)V
721 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyAllObservers1
722 (JNIEnv *env, jclass clazz, jobject jResourceHandle, jint jQoS)
724 LOGI("OcPlatform_notifyAllObservers1");
726 if (!jResourceHandle)
728 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
732 JniOcResourceHandle* jniOcResourceHandle =
733 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
734 if (!jniOcResourceHandle)
740 OCStackResult result = OCPlatform::notifyAllObservers(
741 jniOcResourceHandle->getOCResourceHandle(),
742 JniUtils::getQOS(env, static_cast<int>(jQoS)));
744 if (OC_STACK_OK != result)
746 ThrowOcException(result, "Failed to notify all observers");
750 catch (OCException& e)
752 LOGE("%s", e.reason().c_str());
753 ThrowOcException(e.code(), e.reason().c_str());
758 * Class: org_iotivity_base_OcPlatform
759 * Method: notifyListOfObservers2
760 * Signature: (Lorg/iotivity/base/OcResourceHandle;[Ljava/lang/Byte;Lorg/iotivity/base/OcResourceResponse;)V
762 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyListOfObservers2(
765 jobject jResourceHandle,
766 jbyteArray jObservationIdArr,
767 jobject jResourceResponse)
769 LOGD("OcPlatform_notifyListOfObservers2");
770 if (!jResourceHandle)
772 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
775 if (!jObservationIdArr)
777 ThrowOcException(OC_STACK_INVALID_PARAM, "observationIdList cannot be null");
780 if (!jResourceResponse)
782 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceResponse cannot be null");
786 JniOcResourceHandle* jniOcResourceHandle =
787 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
788 if (!jniOcResourceHandle)
793 JniOcResourceResponse* jniOcResourceResponse =
794 JniOcResourceResponse::getJniOcResourceResponsePtr(env, jResourceResponse);
795 if (!jniOcResourceResponse)
800 int len = env->GetArrayLength(jObservationIdArr);
801 uint8_t* bArr = (uint8_t*)env->GetByteArrayElements(jObservationIdArr, 0);
803 ObservationIds observationIds;
804 for (int i = 0; i < len; ++i)
806 observationIds.push_back(bArr[i]);
809 env->ReleaseByteArrayElements(jObservationIdArr, (jbyte*)bArr, 0);
813 OCStackResult result = OCPlatform::notifyListOfObservers(
814 jniOcResourceHandle->getOCResourceHandle(),
816 jniOcResourceResponse->getOCResourceResponse());
818 if (OC_STACK_OK != result)
820 ThrowOcException(result, "Failed to notify all observers");
823 catch (OCException& e)
825 LOGE("%s", e.reason().c_str());
826 ThrowOcException(e.code(), e.reason().c_str());
831 * Class: org_iotivity_base_OcPlatform
832 * Method: notifyListOfObservers3
833 * Signature: (Lorg/iotivity/base/OcResourceHandle;[Ljava/lang/Byte;Lorg/iotivity/base/OcResourceResponse;I)V
835 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyListOfObservers3(
838 jobject jResourceHandle,
839 jbyteArray jObservationIdArr,
840 jobject jResourceResponse,
843 LOGD("OcPlatform_notifyListOfObservers3");
844 if (!jResourceHandle)
846 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
849 if (!jObservationIdArr)
851 ThrowOcException(OC_STACK_INVALID_PARAM, "observationIdList cannot be null");
854 if (!jResourceResponse)
856 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceResponse cannot be null");
860 JniOcResourceHandle* jniOcResourceHandle =
861 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
862 if (!jniOcResourceHandle)
867 JniOcResourceResponse* jniOcResourceResponse =
868 JniOcResourceResponse::getJniOcResourceResponsePtr(env, jResourceResponse);
869 if (!jniOcResourceResponse)
874 int len = env->GetArrayLength(jObservationIdArr);
875 uint8_t* bArr = (uint8_t*)env->GetByteArrayElements(jObservationIdArr, 0);
877 ObservationIds observationIds;
878 for (int i = 0; i < len; ++i)
880 observationIds.push_back(bArr[i]);
883 env->ReleaseByteArrayElements(jObservationIdArr, (jbyte*)bArr, 0);
887 OCStackResult result = OCPlatform::notifyListOfObservers(
888 jniOcResourceHandle->getOCResourceHandle(),
890 jniOcResourceResponse->getOCResourceResponse(),
891 JniUtils::getQOS(env, static_cast<int>(jQoS)));
893 if (OC_STACK_OK != result)
895 ThrowOcException(result, "Failed to notify all observers");
898 catch (OCException& e)
900 LOGE("%s", e.reason().c_str());
901 ThrowOcException(e.code(), e.reason().c_str());
906 * Class: org_iotivity_base_OcPlatform
907 * Method: findResource0
908 * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnResourceFoundListener;)V
910 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findResource0(
914 jstring jResourceUri,
915 jint jConnectivityType,
918 LOGD("OcPlatform_findResource");
922 host = env->GetStringUTFChars(jHost, nullptr);
924 std::string resourceUri;
927 resourceUri = env->GetStringUTFChars(jResourceUri, nullptr);
931 ThrowOcException(OC_STACK_INVALID_PARAM, "onResourceFoundListener cannot be null");
935 JniOnResourceFoundListener *onResFoundListener = AddOnResourceFoundListener(env, jListener);
937 FindCallback findCallback = [onResFoundListener](std::shared_ptr<OCResource> resource)
939 onResFoundListener->foundResourceCallback(resource);
942 FindErrorCallback findErrorCallback = [onResFoundListener](const std::string& uri, const int eCode)
944 onResFoundListener->findResourceErrorCallback(uri, eCode);
949 OCStackResult result = OCPlatform::findResource(
952 static_cast<OCConnectivityType>(jConnectivityType),
956 if (OC_STACK_OK != result)
958 ThrowOcException(result, "Find resource has failed");
962 catch (OCException& e)
964 LOGE("%s", e.reason().c_str());
965 ThrowOcException(e.code(), e.reason().c_str());
970 * Class: org_iotivity_base_OcPlatform
971 * Method: findResource1
972 * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnResourceFoundListener;I)V
974 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findResource1(
978 jstring jResourceUri,
979 jint jConnectivityType,
983 LOGD("OcPlatform_findResource");
987 host = env->GetStringUTFChars(jHost, nullptr);
989 std::string resourceUri;
992 resourceUri = env->GetStringUTFChars(jResourceUri, nullptr);
996 ThrowOcException(OC_STACK_INVALID_PARAM, "onResourceFoundListener cannot be null");
999 JniOnResourceFoundListener *onResFoundListener = AddOnResourceFoundListener(env, jListener);
1001 FindCallback findCallback = [onResFoundListener](std::shared_ptr<OCResource> resource)
1003 onResFoundListener->foundResourceCallback(resource);
1006 FindErrorCallback findErrorCallback = [onResFoundListener](const std::string& uri, const int eCode)
1008 onResFoundListener->findResourceErrorCallback(uri, eCode);
1013 OCStackResult result = OCPlatform::findResource(
1016 static_cast<OCConnectivityType>(jConnectivityType),
1019 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1021 if (OC_STACK_OK != result)
1023 ThrowOcException(result, "Find resource has failed");
1027 catch (OCException& e)
1029 LOGE("%s", e.reason().c_str());
1030 ThrowOcException(e.code(), e.reason().c_str());
1035 * Class: org_iotivity_base_OcPlatform
1036 * Method: findDirectPairingDevices
1037 * Signature: (ILorg/iotivity/base/OcPlatform/FindDirectPairingListener;)V
1039 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findDirectPairingDevices
1040 (JNIEnv * env, jclass clazz, jint jTimeout, jobject jListener)
1042 LOGD("OcPlatform_findDirectPairingDevices");
1046 ThrowOcException(OC_STACK_INVALID_PARAM, "onDPDevicesFoundListener cannot be null");
1049 JniOnDPDevicesFoundListener *onDPDevsFoundListener = AddOnDPDevicesFoundListener(env,
1052 GetDirectPairedCallback getDirectPairedCallback =
1053 [onDPDevsFoundListener](PairedDevices pairingDevList)
1055 onDPDevsFoundListener->directPairingDevicesCallback(pairingDevList,
1056 DPFunc::FIND_DIRECT_PAIRED_DEV_LIST);
1061 OCStackResult result = OCPlatform::findDirectPairingDevices(jTimeout,
1062 getDirectPairedCallback);
1063 if (OC_STACK_OK != result)
1065 ThrowOcException(result, "OCPlatform::findDirectPairingDevices has failed");
1069 catch (OCException& e)
1071 LOGE("%s", e.reason().c_str());
1072 ThrowOcException(e.code(), e.reason().c_str());
1077 * Class: org_iotivity_base_OcPlatform
1078 * Method: getDirectPairedDevices
1079 * Signature: (Lorg/iotivity/base/OcDirectPairDevice/GetDirectPairedListener;)V
1081 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDirectPairedDevices
1082 (JNIEnv *env, jclass jclazz, jobject jListener)
1084 LOGD("OcPlatform_getDirectPairedDevices");
1088 ThrowOcException(OC_STACK_INVALID_PARAM, "getPairedDevList Callback cannot be null");
1091 JniOnDPDevicesFoundListener *onGetPairedDevicesListener = AddOnDPDevicesFoundListener(env,
1094 GetDirectPairedCallback getDirectPairedCallback =
1095 [onGetPairedDevicesListener](PairedDevices pairedDevList)
1097 onGetPairedDevicesListener->directPairingDevicesCallback(pairedDevList,
1098 DPFunc::GET_PAIRED_DEV_LIST);
1103 OCStackResult result = OCPlatform::getDirectPairedDevices(getDirectPairedCallback);
1104 if (OC_STACK_OK != result)
1106 ThrowOcException(result, "OcDirectPairDevice_getDirectPairedDevices");
1110 catch (OCException& e)
1112 LOGE("%s", e.reason().c_str());
1113 ThrowOcException(e.code(), e.reason().c_str());
1118 * Class: org_iotivity_base_OcPlatform
1119 * Method: doDirectPairing
1120 * Signature: (Lorg/iotivity/base/OcDirectPairDevice;Lorg/iotivity/base/OcPrmType;
1121 * Ljava/lang/String;Lorg/iotivity/base/OcDirectPairDevice/DirectPairingListener;)V
1123 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_doDirectPairing0
1124 (JNIEnv *env, jclass clazz, jobject jpeer, jint jprmType, jstring jpin, jobject jListener)
1126 LOGD("OcPlatform_doDirectPairing");
1130 ThrowOcException(OC_STACK_INVALID_PARAM, "doDirectPairing Callback cannot be null");
1135 ThrowOcException(OC_STACK_INVALID_PARAM, "Peer cannot be null");
1139 JniOnDirectPairingListener *onDirectPairingListener = AddOnDirectPairingListener(env,
1142 DirectPairingCallback DirectPairingCB =
1143 [onDirectPairingListener](std::shared_ptr<OCDirectPairing> dpDev, OCStackResult result)
1145 onDirectPairingListener->doDirectPairingCB(dpDev, result);
1148 JniOcDirectPairDevice *dev = JniOcDirectPairDevice::getJniOcDirectPairDevicePtr(env, jpeer);
1154 std::string pin = env->GetStringUTFChars(jpin, 0);
1158 OCStackResult result = OCPlatform::doDirectPairing(dev->getPtr(), (OCPrm_t)jprmType,
1159 pin, DirectPairingCB);
1160 if (OC_STACK_OK != result)
1162 ThrowOcException(result, "OcPlatform_oDirectPairing");
1166 catch (OCException& e)
1168 LOGE("%s", e.reason().c_str());
1169 ThrowOcException(e.code(), e.reason().c_str());
1174 * Class: org_iotivity_base_OcPlatform
1175 * Method: getDeviceInfo0
1176 * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnDeviceFoundListener;)V
1178 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDeviceInfo0(
1182 jstring jResourceUri,
1183 jint jConnectivityType,
1186 LOGD("OcPlatform_getDeviceInfo0");
1190 host = env->GetStringUTFChars(jHost, nullptr);
1192 std::string resourceUri;
1195 resourceUri = env->GetStringUTFChars(jResourceUri, nullptr);
1199 ThrowOcException(OC_STACK_INVALID_PARAM, "onDeviceFoundListener cannot be null");
1202 JniOnDeviceInfoListener *onDeviceInfoListener = AddOnDeviceInfoListener(env, jListener);
1204 FindDeviceCallback findDeviceCallback =
1205 [onDeviceInfoListener](const OCRepresentation& ocRepresentation)
1207 onDeviceInfoListener->foundDeviceCallback(ocRepresentation);
1212 OCStackResult result = OCPlatform::getDeviceInfo(
1215 static_cast<OCConnectivityType>(jConnectivityType),
1216 findDeviceCallback);
1218 if (OC_STACK_OK != result)
1220 ThrowOcException(result, "Find device has failed");
1223 catch (OCException& e)
1225 LOGE("%s", e.reason().c_str());
1226 ThrowOcException(e.code(), e.reason().c_str());
1231 * Class: org_iotivity_base_OcPlatform
1232 * Method: getDeviceInfo1
1233 * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnDeviceFoundListener;I)V
1235 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDeviceInfo1(
1239 jstring jResourceUri,
1240 jint jConnectivityType,
1244 LOGD("OcPlatform_getDeviceInfo1");
1248 host = env->GetStringUTFChars(jHost, nullptr);
1250 std::string resourceUri;
1253 resourceUri = env->GetStringUTFChars(jResourceUri, nullptr);
1257 ThrowOcException(OC_STACK_INVALID_PARAM, "onDeviceFoundListener cannot be null");
1260 JniOnDeviceInfoListener *onDeviceInfoListener = AddOnDeviceInfoListener(env, jListener);
1262 FindDeviceCallback findDeviceCallback =
1263 [onDeviceInfoListener](const OCRepresentation& ocRepresentation)
1265 onDeviceInfoListener->foundDeviceCallback(ocRepresentation);
1270 OCStackResult result = OCPlatform::getDeviceInfo(
1273 static_cast<OCConnectivityType>(jConnectivityType),
1275 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1277 if (OC_STACK_OK != result)
1279 ThrowOcException(result, "Find device has failed");
1282 catch (OCException& e)
1284 LOGE("%s", e.reason().c_str());
1285 ThrowOcException(e.code(), e.reason().c_str());
1290 * Class: org_iotivity_base_OcPlatform
1291 * Method: getPlatformInfo0
1292 * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPlatformFoundListener;)V
1294 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getPlatformInfo0(
1298 jstring jResourceUri,
1299 jint jConnectivityType,
1302 LOGD("OcPlatform_getPlatformInfo0");
1306 host = env->GetStringUTFChars(jHost, nullptr);
1308 std::string resourceUri;
1311 resourceUri = env->GetStringUTFChars(jResourceUri, nullptr);
1315 ThrowOcException(OC_STACK_INVALID_PARAM, "onPlatformFoundListener cannot be null");
1318 JniOnPlatformInfoListener *onPlatformInfoListener = AddOnPlatformInfoListener(env, jListener);
1320 FindPlatformCallback findPlatformCallback =
1321 [onPlatformInfoListener](const OCRepresentation& ocRepresentation)
1323 onPlatformInfoListener->foundPlatformCallback(ocRepresentation);
1328 OCStackResult result = OCPlatform::getPlatformInfo(
1331 static_cast<OCConnectivityType>(jConnectivityType),
1332 findPlatformCallback);
1334 if (OC_STACK_OK != result)
1336 ThrowOcException(result, "Find platform has failed");
1339 catch (OCException& e)
1341 LOGE("%s", e.reason().c_str());
1342 ThrowOcException(e.code(), e.reason().c_str());
1347 * Class: org_iotivity_base_OcPlatform
1348 * Method: getPlatformInfo1
1349 * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPlatformFoundListener;I)V
1351 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getPlatformInfo1(
1355 jstring jResourceUri,
1356 jint jConnectivityType,
1360 LOGD("OcPlatform_getPlatformInfo1");
1364 host = env->GetStringUTFChars(jHost, nullptr);
1366 std::string resourceUri;
1369 resourceUri = env->GetStringUTFChars(jResourceUri, nullptr);
1373 ThrowOcException(OC_STACK_INVALID_PARAM, "onPlatformFoundListener cannot be null");
1376 JniOnDeviceInfoListener *onDeviceInfoListener = AddOnDeviceInfoListener(env, jListener);
1378 FindDeviceCallback findDeviceCallback =
1379 [onDeviceInfoListener](const OCRepresentation& ocRepresentation)
1381 onDeviceInfoListener->foundDeviceCallback(ocRepresentation);
1386 OCStackResult result = OCPlatform::getPlatformInfo(
1389 static_cast<OCConnectivityType>(jConnectivityType),
1391 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1393 if (OC_STACK_OK != result)
1395 ThrowOcException(result, "Find platform has failed");
1398 catch (OCException& e)
1400 LOGE("%s", e.reason().c_str());
1401 ThrowOcException(e.code(), e.reason().c_str());
1406 * Class: org_iotivity_base_OcPlatform
1407 * Method: registerResource0
1408 * Signature: (Lorg/iotivity/base/OcResource;)Lorg/iotivity/base/OcResourceHandle;
1410 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_registerResource0(
1411 JNIEnv *env, jclass clazz, jobject jResource)
1413 LOGD("OcPlatform_registerResource");
1416 ThrowOcException(OC_STACK_INVALID_PARAM, "Resource cannot be null");
1419 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, jResource);
1425 OCResourceHandle resourceHandle;
1428 OCStackResult result = OCPlatform::registerResource(
1430 resource->getOCResource());
1432 if (OC_STACK_OK != result)
1434 ThrowOcException(result, "register resource");
1437 catch (OCException& e)
1439 LOGE("%s", e.reason().c_str());
1440 ThrowOcException(e.code(), e.reason().c_str());
1443 JniOcResourceHandle* jniHandle = new JniOcResourceHandle(resourceHandle);
1444 jlong handle = reinterpret_cast<jlong>(jniHandle);
1445 jobject jResourceHandle =
1446 env->NewObject(g_cls_OcResourceHandle, g_mid_OcResourceHandle_N_ctor, handle);
1448 if (!jResourceHandle)
1450 LOGE("Failed to create OcResourceHandle");
1453 return jResourceHandle;
1457 * Class: org_iotivity_base_OcPlatform
1458 * Method: registerResource1
1459 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcPlatform/EntityHandler;I)Lorg/iotivity/base/OcResourceHandle;
1461 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_registerResource1(
1464 jstring jResourceUri,
1465 jstring jResourceTypeName,
1466 jstring jResourceInterface,
1467 jobject jListener, jint jResourceProperty)
1469 LOGI("OcPlatform_registerResource1");
1470 std::string resourceUri;
1473 resourceUri = env->GetStringUTFChars(jResourceUri, nullptr);
1475 std::string resourceTypeName;
1476 if (jResourceTypeName)
1478 resourceTypeName = env->GetStringUTFChars(jResourceTypeName, nullptr);
1480 std::string resourceInterface;
1481 if (jResourceInterface)
1483 resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
1485 JniEntityHandler* entityHandler = NULL;
1486 EntityHandler handleEntityCallback = NULL;
1489 entityHandler = new JniEntityHandler(env, jListener);
1490 handleEntityCallback =
1491 [entityHandler](const std::shared_ptr<OCResourceRequest> request) -> OCEntityHandlerResult
1493 return entityHandler->handleEntity(request);
1497 OCResourceHandle resourceHandle;
1500 OCStackResult result = OCPlatform::registerResource(
1505 handleEntityCallback,
1506 static_cast<int>(jResourceProperty));
1508 if (OC_STACK_OK != result)
1510 delete entityHandler;
1511 ThrowOcException(result, "register resource");
1515 catch (OCException& e)
1517 LOGE("%s", e.reason().c_str());
1518 delete entityHandler;
1519 ThrowOcException(e.code(), e.reason().c_str());
1523 JniOcResourceHandle* jniHandle = new JniOcResourceHandle(resourceHandle);
1524 jlong handle = reinterpret_cast<jlong>(jniHandle);
1525 jobject jResourceHandle =
1526 env->NewObject(g_cls_OcResourceHandle, g_mid_OcResourceHandle_N_ctor, handle);
1527 if (!jResourceHandle)
1529 LOGE("Failed to create OcResourceHandle");
1533 return jResourceHandle;
1537 * Class: org_iotivity_base_OcPlatform
1538 * Method: registerDeviceInfo0
1539 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
1541 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_registerDeviceInfo0(
1544 jstring jDeviceName,
1545 jobjectArray jDeviceTypes)
1547 LOGI("OcPlatform_registerDeviceInfo");
1551 ThrowOcException(OC_STACK_INVALID_PARAM, "deviceName cannot be null");
1557 ThrowOcException(OC_STACK_INVALID_PARAM, "deviceTypes cannot be null");
1561 OCDeviceInfo deviceInfo;
1564 DuplicateString(&deviceInfo.deviceName, env->GetStringUTFChars(jDeviceName, nullptr));
1565 deviceInfo.types = NULL;
1567 jsize len = env->GetArrayLength(jDeviceTypes);
1568 for (jsize i = 0; i < len; ++i)
1570 jstring jStr = (jstring)env->GetObjectArrayElement(jDeviceTypes, i);
1573 delete deviceInfo.deviceName;
1574 ThrowOcException(OC_STACK_INVALID_PARAM, "device type cannot be null");
1578 OCResourcePayloadAddStringLL(&deviceInfo.types, env->GetStringUTFChars(jStr, nullptr));
1579 if (env->ExceptionCheck())
1581 delete deviceInfo.deviceName;
1585 env->DeleteLocalRef(jStr);
1588 catch (std::exception &e)
1590 ThrowOcException(JNI_EXCEPTION, "Failed to construct device info");
1596 OCStackResult result = OCPlatform::registerDeviceInfo(deviceInfo);
1598 delete deviceInfo.deviceName;
1600 if (OC_STACK_OK != result)
1602 ThrowOcException(result, "Failed to register device info");
1606 catch (OCException& e)
1608 LOGE("%s", e.reason().c_str());
1609 ThrowOcException(e.code(), e.reason().c_str());
1614 * Class: org_iotivity_base_OcPlatform
1615 * Method: registerPlatformInfo0
1616 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
1618 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_registerPlatformInfo0(
1621 jstring jPlatformID,
1622 jstring jManufacturerName,
1623 jstring jManufacturerUrl,
1624 jstring jModelNumber,
1625 jstring jDateOfManufacture,
1626 jstring jPlatformVersion,
1627 jstring jOperatingSystemVersion,
1628 jstring jHardwareVersion,
1629 jstring jFirmwareVersion,
1630 jstring jSupportUrl,
1631 jstring jSystemTime)
1633 LOGI("OcPlatform_registerPlatformInfo");
1636 std::string platformID;
1637 std::string manufacturerName;
1638 std::string manufacturerUrl;
1639 std::string modelNumber;
1640 std::string dateOfManufacture;
1641 std::string platformVersion;
1642 std::string operatingSystemVersion;
1643 std::string hardwareVersion;
1644 std::string firmwareVersion;
1645 std::string supportUrl;
1646 std::string systemTime;
1650 platformID = env->GetStringUTFChars(jPlatformID, nullptr);
1652 if (jManufacturerName)
1654 manufacturerName = env->GetStringUTFChars(jManufacturerName, nullptr);
1656 if (jManufacturerUrl)
1658 manufacturerUrl = env->GetStringUTFChars(jManufacturerUrl, nullptr);
1662 modelNumber = env->GetStringUTFChars(jModelNumber, nullptr);
1664 if (jDateOfManufacture)
1666 dateOfManufacture = env->GetStringUTFChars(jDateOfManufacture, nullptr);
1668 if (jPlatformVersion)
1670 platformVersion = env->GetStringUTFChars(jPlatformVersion, nullptr);
1672 if (jOperatingSystemVersion)
1674 operatingSystemVersion = env->GetStringUTFChars(jOperatingSystemVersion, nullptr);
1676 if (jHardwareVersion)
1678 hardwareVersion = env->GetStringUTFChars(jHardwareVersion, nullptr);
1680 if (jFirmwareVersion)
1682 firmwareVersion = env->GetStringUTFChars(jFirmwareVersion, nullptr);
1686 supportUrl = env->GetStringUTFChars(jSupportUrl, nullptr);
1690 systemTime = env->GetStringUTFChars(jSystemTime, nullptr);
1693 OCPlatformInfo platformInfo;
1696 DuplicateString(&platformInfo.platformID, platformID);
1697 DuplicateString(&platformInfo.manufacturerName, manufacturerName);
1698 DuplicateString(&platformInfo.manufacturerUrl, manufacturerUrl);
1699 DuplicateString(&platformInfo.modelNumber, modelNumber);
1700 DuplicateString(&platformInfo.dateOfManufacture, dateOfManufacture);
1701 DuplicateString(&platformInfo.platformVersion, platformVersion);
1702 DuplicateString(&platformInfo.operatingSystemVersion, operatingSystemVersion);
1703 DuplicateString(&platformInfo.hardwareVersion, hardwareVersion);
1704 DuplicateString(&platformInfo.firmwareVersion, firmwareVersion);
1705 DuplicateString(&platformInfo.supportUrl, supportUrl);
1706 DuplicateString(&platformInfo.systemTime, systemTime);
1708 catch (std::exception &e)
1710 ThrowOcException(JNI_EXCEPTION, "Failed to construct platform info");
1714 // __android_log_print(ANDROID_LOG_INFO, "Rahul", "platformID = %s", platformID);
1717 OCStackResult result = OCPlatform::registerPlatformInfo(platformInfo);
1719 delete platformInfo.platformID;
1720 delete platformInfo.manufacturerName;
1721 delete platformInfo.manufacturerUrl;
1722 delete platformInfo.modelNumber;
1723 delete platformInfo.dateOfManufacture;
1724 delete platformInfo.platformVersion;
1725 delete platformInfo.operatingSystemVersion;
1726 delete platformInfo.hardwareVersion;
1727 delete platformInfo.firmwareVersion;
1728 delete platformInfo.supportUrl;
1729 delete platformInfo.systemTime;
1731 if (OC_STACK_OK != result)
1733 ThrowOcException(result, "Failed to register platform info");
1737 catch (OCException& e)
1739 LOGE("Error is due to %s", e.reason().c_str());
1740 ThrowOcException(e.code(), e.reason().c_str());
1745 * Class: org_iotivity_base_OcPlatform
1746 * Method: unregisterResource0
1747 * Signature: (Lorg/iotivity/base/OcResourceHandle;)V
1749 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unregisterResource0(
1750 JNIEnv *env, jclass clazz, jobject jResourceHandle)
1752 LOGI("OcPlatform_unregisterResource");
1753 if (!jResourceHandle)
1755 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
1758 JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
1759 env, jResourceHandle);
1760 if (!jniOcResourceHandle)
1767 OCResourceHandle resHandle = jniOcResourceHandle->getOCResourceHandle();
1768 OCStackResult result = OCPlatform::unregisterResource(resHandle);
1769 if (OC_STACK_OK != result)
1771 ThrowOcException(result, "Failed to unregister resource");
1774 catch (OCException& e)
1776 LOGE("%s", e.reason().c_str());
1777 ThrowOcException(e.code(), e.reason().c_str());
1782 * Class: org_iotivity_base_OcPlatform
1783 * Method: bindResource0
1784 * Signature: (Lorg/iotivity/base/OcResourceHandle;Lorg/iotivity/base/OcResourceHandle;)V
1786 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindResource0
1787 (JNIEnv *env, jclass clazz, jobject jResourceCollectionHandle, jobject jResourceHandle)
1789 LOGI("OcPlatform_bindResource");
1790 if (!jResourceCollectionHandle)
1792 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");
1795 if (!jResourceHandle)
1797 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
1800 JniOcResourceHandle* jniOcResourceCollectionHandle =
1801 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceCollectionHandle);
1802 if (!jniOcResourceCollectionHandle)
1807 JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
1808 env, jResourceHandle);
1809 if (!jniOcResourceHandle)
1816 OCStackResult result = OCPlatform::bindResource(
1817 jniOcResourceCollectionHandle->getOCResourceHandle(),
1818 jniOcResourceHandle->getOCResourceHandle()
1821 if (OC_STACK_OK != result)
1823 ThrowOcException(result, "Failed to bind resource");
1826 catch (OCException& e)
1828 LOGE("%s", e.reason().c_str());
1829 ThrowOcException(e.code(), e.reason().c_str());
1834 * Class: org_iotivity_base_OcPlatform
1835 * Method: bindResources0
1836 * Signature: (Lorg/iotivity/base/OcResourceHandle;[Lorg/iotivity/base/OcResourceHandle;)V
1838 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindResources0(
1841 jobject jResourceCollectionHandle,
1842 jobjectArray jResourceHandleArray)
1844 LOGI("OcPlatform_bindResources");
1846 if (!jResourceCollectionHandle)
1848 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");
1851 if (!jResourceHandleArray)
1853 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandleList cannot be null");
1857 JniOcResourceHandle* jniOcResourceCollectionHandle =
1858 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceCollectionHandle);
1859 if (!jniOcResourceCollectionHandle)
1864 std::vector<OCResourceHandle> resourceHandleList;
1865 int len = env->GetArrayLength(jResourceHandleArray);
1866 for (int i = 0; i < len; ++i)
1868 jobject jResourceHandle = env->GetObjectArrayElement(jResourceHandleArray, i);
1869 if (!jResourceHandle)
1871 ThrowOcException(JNI_EXCEPTION, "resource handle cannot be null");
1875 JniOcResourceHandle* jniOcResourceHandle =
1876 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
1877 if (!jniOcResourceHandle)
1882 resourceHandleList.push_back(
1883 jniOcResourceHandle->getOCResourceHandle());
1888 OCStackResult result = OCPlatform::bindResources(
1889 jniOcResourceCollectionHandle->getOCResourceHandle(),
1893 if (OC_STACK_OK != result)
1895 ThrowOcException(result, "Failed to bind resources");
1898 catch (OCException& e)
1900 LOGE("%s", e.reason().c_str());
1901 ThrowOcException(e.code(), e.reason().c_str());
1906 * Class: org_iotivity_base_OcPlatform
1907 * Method: unbindResource0
1908 * Signature: (Lorg/iotivity/base/OcResourceHandle;Lorg/iotivity/base/OcResourceHandle;)V
1910 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unbindResource0(
1913 jobject jResourceCollectionHandle,
1914 jobject jResourceHandle)
1916 LOGI("OcPlatform_unbindResource");
1917 if (!jResourceCollectionHandle)
1919 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");
1922 if (!jResourceHandle)
1924 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
1928 JniOcResourceHandle* jniOcResourceCollectionHandle =
1929 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceCollectionHandle);
1930 if (!jniOcResourceCollectionHandle)
1935 JniOcResourceHandle* jniOcResourceHandle =
1936 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
1937 if (!jniOcResourceHandle)
1944 OCStackResult result = OCPlatform::unbindResource(
1945 jniOcResourceCollectionHandle->getOCResourceHandle(),
1946 jniOcResourceHandle->getOCResourceHandle());
1948 if (OC_STACK_OK != result)
1950 ThrowOcException(result, "Failed to unbind resource");
1953 catch (OCException& e)
1955 LOGE("%s", e.reason().c_str());
1956 ThrowOcException(e.code(), e.reason().c_str());
1961 * Class: org_iotivity_base_OcPlatform
1962 * Method: unbindResources0
1963 * Signature: (Lorg/iotivity/base/OcResourceHandle;[Lorg/iotivity/base/OcResourceHandle;)V
1965 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unbindResources0(
1968 jobject jResourceCollectionHandle,
1969 jobjectArray jResourceHandleArray)
1971 LOGI("OcPlatform_unbindResources");
1972 if (!jResourceCollectionHandle)
1974 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");
1977 if (!jResourceHandleArray)
1979 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandleList cannot be null");
1983 JniOcResourceHandle* jniOcResourceCollectionHandle =
1984 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceCollectionHandle);
1985 if (!jniOcResourceCollectionHandle)
1990 std::vector<OCResourceHandle> resourceHandleList;
1991 int len = env->GetArrayLength(jResourceHandleArray);
1992 for (int i = 0; i < len; ++i)
1994 jobject jResourceHandle = env->GetObjectArrayElement(jResourceHandleArray, i);
1995 if (!jResourceHandle)
1997 ThrowOcException(JNI_EXCEPTION, "resource handle cannot be null");
2001 JniOcResourceHandle* jniOcResourceHandle =
2002 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
2003 if (!jniOcResourceHandle)
2008 resourceHandleList.push_back(
2009 jniOcResourceHandle->getOCResourceHandle());
2014 OCStackResult result = OCPlatform::unbindResources(
2015 jniOcResourceCollectionHandle->getOCResourceHandle(),
2019 if (OC_STACK_OK != result)
2021 ThrowOcException(result, "Failed to unbind resources");
2024 catch (OCException& e)
2026 LOGE("%s", e.reason().c_str());
2027 ThrowOcException(e.code(), e.reason().c_str());
2032 * Class: org_iotivity_base_OcPlatform
2033 * Method: bindTypeToResource0
2034 * Signature: (Lorg/iotivity/base/OcResourceHandle;Ljava/lang/String;)V
2036 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindTypeToResource0(
2039 jobject jResourceHandle,
2040 jstring jResourceTypeName)
2042 LOGI("OcPlatform_bindTypeToResource");
2043 if (!jResourceHandle)
2045 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
2048 std::string typeName;
2049 if (jResourceTypeName)
2051 typeName = env->GetStringUTFChars(jResourceTypeName, nullptr);
2054 JniOcResourceHandle* jniOcResourceHandle =
2055 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
2056 if (!jniOcResourceHandle)
2063 OCStackResult result = OCPlatform::bindTypeToResource(
2064 jniOcResourceHandle->getOCResourceHandle(),
2068 if (OC_STACK_OK != result)
2070 ThrowOcException(result, "Failed to bind type to resource");
2073 catch (OCException& e)
2075 LOGE("%s", e.reason().c_str());
2076 ThrowOcException(e.code(), e.reason().c_str());
2081 * Class: org_iotivity_base_OcPlatform
2082 * Method: bindInterfaceToResource0
2083 * Signature: (Lorg/iotivity/base/OcResourceHandle;Ljava/lang/String;)V
2085 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindInterfaceToResource0
2086 (JNIEnv *env, jclass clazz, jobject jResourceHandle, jstring jResourceInterfaceName)
2088 LOGI("OcPlatform_bindInterfaceToResource");
2089 if (!jResourceHandle)
2091 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
2094 std::string interfaceName;
2095 if (jResourceInterfaceName)
2097 interfaceName = env->GetStringUTFChars(jResourceInterfaceName, nullptr);
2100 JniOcResourceHandle* jniOcResourceHandle =
2101 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
2102 if (!jniOcResourceHandle)
2109 OCStackResult result = OCPlatform::bindInterfaceToResource(
2110 jniOcResourceHandle->getOCResourceHandle(),
2114 if (OC_STACK_OK != result)
2116 ThrowOcException(result, "Failed to bind interface to resource");
2119 catch (OCException& e)
2121 LOGE("%s", e.reason().c_str());
2122 ThrowOcException(e.code(), e.reason().c_str());
2127 * Class: org_iotivity_base_OcPlatform
2128 * Method: startPresence0
2131 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_startPresence0(
2132 JNIEnv *env, jclass clazz, jint ttl)
2134 LOGI("OcPlatform_startPresence");
2138 OCStackResult result = OCPlatform::startPresence((unsigned int)ttl);
2140 if (OC_STACK_OK != result)
2142 ThrowOcException(result, "Failed to start presence");
2145 catch (OCException& e)
2147 LOGE("%s", e.reason().c_str());
2148 ThrowOcException(e.code(), e.reason().c_str());
2153 * Class: org_iotivity_base_OcPlatform
2154 * Method: stopPresence0
2157 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_stopPresence0(
2158 JNIEnv *env, jclass clazz)
2160 LOGI("OcPlatform_stopPresence");
2164 OCStackResult result = OCPlatform::stopPresence();
2166 if (OC_STACK_OK != result)
2168 ThrowOcException(result, "Failed to stop presence");
2171 catch (OCException& e)
2173 LOGE("%s", e.reason().c_str());
2174 ThrowOcException(e.code(), e.reason().c_str());
2179 * Class: org_iotivity_base_OcPlatform
2180 * Method: subscribePresence0
2181 * Signature: (Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPresenceListener;)Lorg/iotivity/base/OcPresenceHandle;
2183 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribePresence0(
2187 jint jConnectivityType,
2190 LOGD("OcPlatform_subscribePresence");
2194 host = env->GetStringUTFChars(jHost, nullptr);
2198 ThrowOcException(OC_STACK_INVALID_PARAM, "onPresenceListener cannot be null");
2202 JniOnPresenceListener *onPresenceListener = AddOnPresenceListener(env, jListener);
2204 SubscribeCallback subscribeCallback =
2205 [onPresenceListener](OCStackResult result,
2206 const unsigned int nonce,
2207 const std::string& hostAddress)
2209 onPresenceListener->onPresenceCallback(result, nonce, hostAddress);
2212 OCPlatform::OCPresenceHandle presenceHandle;
2215 OCStackResult result = OCPlatform::subscribePresence(
2218 static_cast<OCConnectivityType>(jConnectivityType),
2221 if (OC_STACK_OK != result)
2223 ThrowOcException(result, "subscribe presence has failed");
2226 catch (OCException& e)
2228 LOGE("%s", e.reason().c_str());
2229 ThrowOcException(e.code(), e.reason().c_str());
2233 JniOcPresenceHandle* jniPresenceHandle =
2234 new JniOcPresenceHandle(onPresenceListener, presenceHandle);
2235 jlong jhandle = reinterpret_cast<jlong>(jniPresenceHandle);
2236 jobject jPresenceHandle =
2237 env->NewObject(g_cls_OcPresenceHandle, g_mid_OcPresenceHandle_N_ctor, jhandle);
2238 if (!jPresenceHandle)
2240 LOGE("Failed to create OcPresenceHandle");
2241 delete jniPresenceHandle;
2243 return jPresenceHandle;
2247 * Class: org_iotivity_base_OcPlatform
2248 * Method: subscribePresence1
2249 * Signature: (Ljava/lang/String;Ljava/lang/String;I
2250 Lorg/iotivity/base/OcPlatform/OnPresenceListener;)Lorg/iotivity/base/OcPresenceHandle;
2252 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribePresence1(
2256 jstring jResourceType,
2257 jint jConnectivityType,
2260 LOGD("OcPlatform_subscribePresence1");
2264 host = env->GetStringUTFChars(jHost, nullptr);
2266 std::string resourceType;
2269 resourceType = env->GetStringUTFChars(jResourceType, nullptr);
2273 ThrowOcException(OC_STACK_INVALID_PARAM, "onPresenceListener cannot be null");
2277 JniOnPresenceListener *onPresenceListener = AddOnPresenceListener(env, jListener);
2279 SubscribeCallback subscribeCallback = [onPresenceListener](OCStackResult result,
2280 const unsigned int nonce, const std::string& hostAddress)
2282 onPresenceListener->onPresenceCallback(result, nonce, hostAddress);
2285 OCPlatform::OCPresenceHandle presenceHandle;
2288 OCStackResult result = OCPlatform::subscribePresence(
2292 static_cast<OCConnectivityType>(jConnectivityType),
2295 if (OC_STACK_OK != result)
2297 ThrowOcException(result, "subscribe presence has failed");
2300 catch (OCException& e)
2302 LOGE("%s", e.reason().c_str());
2303 ThrowOcException(e.code(), e.reason().c_str());
2307 JniOcPresenceHandle* jniPresenceHandle =
2308 new JniOcPresenceHandle(onPresenceListener, presenceHandle);
2309 jlong jhandle = reinterpret_cast<jlong>(jniPresenceHandle);
2310 jobject jPresenceHandle =
2311 env->NewObject(g_cls_OcPresenceHandle, g_mid_OcPresenceHandle_N_ctor, jhandle);
2312 if (!jPresenceHandle)
2314 LOGE("Failed to create OcPresenceHandle");
2315 delete jniPresenceHandle;
2317 return jPresenceHandle;
2321 * Class: org_iotivity_base_OcPlatform
2322 * Method: unsubscribePresence0
2323 * Signature: (Lorg/iotivity/base/OcPresenceHandle;)V
2325 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unsubscribePresence0(
2326 JNIEnv *env, jclass clazz, jobject jPresenceHandle)
2328 LOGD("OcPlatform_unsubscribePresence");
2329 if (!jPresenceHandle)
2331 ThrowOcException(OC_STACK_INVALID_PARAM, "presenceHandle cannot be null");
2334 JniOcPresenceHandle* jniPresenceHandle =
2335 JniOcPresenceHandle::getJniOcPresenceHandlePtr(env, jPresenceHandle);
2336 if (!jniPresenceHandle)
2341 OCPresenceHandle presenceHandle = jniPresenceHandle->getOCPresenceHandle();
2345 OCStackResult result = OCPlatform::unsubscribePresence(presenceHandle);
2347 if (OC_STACK_OK != result)
2349 ThrowOcException(result, "unsubscribe presence has failed");
2352 jweak jwOnPresenceListener =
2353 jniPresenceHandle->getJniOnPresenceListener()->getJWListener();
2354 if (jwOnPresenceListener)
2356 RemoveOnPresenceListener(env, jwOnPresenceListener);
2359 catch (OCException& e)
2361 LOGE("%s", e.reason().c_str());
2362 ThrowOcException(e.code(), e.reason().c_str());
2367 * Class: org_iotivity_base_OcPlatform
2368 * Method: constructResourceObject0
2369 * Signature: (Ljava/lang/String;Ljava/lang/String;IZ[Ljava/lang/String;[Ljava/lang/String;)
2370 Lorg/iotivity/base/OcResource;
2372 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_constructResourceObject0(
2377 jint jConnectivityType,
2378 jboolean jIsObservable,
2379 jobjectArray jResourceTypeArray,
2380 jobjectArray jInterfaceArray)
2382 LOGD("OcPlatform_constructResourceObject");
2386 host = env->GetStringUTFChars(jHost, nullptr);
2391 uri = env->GetStringUTFChars(jUri, nullptr);
2393 if (!jResourceTypeArray)
2395 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceTypeList cannot be null");
2398 if (!jInterfaceArray)
2400 ThrowOcException(OC_STACK_INVALID_PARAM, "interfaceList cannot be null");
2404 std::vector<std::string> resourceTypes;
2405 JniUtils::convertJavaStrArrToStrVector(env, jResourceTypeArray, resourceTypes);
2407 std::vector<std::string> interfaces;
2408 JniUtils::convertJavaStrArrToStrVector(env, jInterfaceArray, interfaces);
2410 std::shared_ptr<OCResource> resource = OCPlatform::constructResourceObject(
2413 static_cast<OCConnectivityType>(jConnectivityType),
2414 static_cast<bool>(jIsObservable),
2420 ThrowOcException(OC_STACK_ERROR, "Failed to create OCResource");
2424 JniOcResource *jniOcResource = new JniOcResource(resource);
2426 jobject jResource = env->NewObject(g_cls_OcResource, g_mid_OcResource_ctor);
2429 delete jniOcResource;
2432 SetHandle<JniOcResource>(env, jResource, jniOcResource);
2433 if (env->ExceptionCheck())
2435 delete jniOcResource;
2442 * Class: org_iotivity_base_OcPlatform
2443 * Method: sendResponse0
2444 * Signature: (Lorg/iotivity/base/OcResourceResponse;)V
2446 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_sendResponse0(
2447 JNIEnv *env, jclass clazz, jobject jResourceResponse)
2449 LOGD("OcPlatform_sendResponse");
2450 if (!jResourceResponse)
2452 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceResponse cannot be null");
2456 JniOcResourceResponse *jniResponse =
2457 JniOcResourceResponse::getJniOcResourceResponsePtr(env, jResourceResponse);
2465 OCStackResult result =
2466 OCPlatform::sendResponse(jniResponse->getOCResourceResponse());
2468 if (OC_STACK_OK != result)
2470 ThrowOcException(result, "failed to send response");
2473 catch (OCException& e)
2475 LOGE("%s", e.reason().c_str());
2476 ThrowOcException(e.code(), e.reason().c_str());
2481 * Class: org_iotivity_base_OcPlatform
2482 * Method: publishResourceToRD0
2483 * Signature: (Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPublishResourceListener;I)V
2485 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_publishResourceToRD0(
2489 jint jConnectivityType,
2493 LOGD("OcPlatform_publishResourceToRD");
2498 host = env->GetStringUTFChars(jHost, nullptr);
2502 ThrowOcException(OC_STACK_INVALID_PARAM, "onPublishResourceListener cannot be null");
2505 JniOnPublishResourceListener *onPubResListener = AddOnPublishResourceListener(env, jListener);
2507 PublishResourceCallback pubResCallback = [onPubResListener](
2508 const OCRepresentation& ocRepresentation,
2511 onPubResListener->onPublishResourceCallback(ocRepresentation, eCode);
2516 OCStackResult result = OCPlatform::publishResourceToRD(
2518 static_cast<OCConnectivityType>(jConnectivityType),
2520 JniUtils::getQOS(env, static_cast<int>(jQoS)));
2522 if (OC_STACK_OK != result)
2524 ThrowOcException(result, "Publish resource has failed");
2528 catch (OCException& e)
2530 LOGE("%s", e.reason().c_str());
2531 ThrowOcException(e.code(), e.reason().c_str());
2534 ThrowOcException(OC_STACK_ERROR, "Publish resource has failed");
2540 * Class: org_iotivity_base_OcPlatform
2541 * Method: publishResourceToRD1
2542 * Signature: (Ljava/lang/String;I[Lorg/iotivity/base/OcResourceHandle;Lorg/iotivity/base/OcPlatform/OnPublishResourceListener;I)V
2544 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_publishResourceToRD1(
2548 jint jConnectivityType,
2549 jobjectArray jResourceHandleArray,
2553 LOGD("OcPlatform_publishResourceToRD");
2557 ThrowOcException(OC_STACK_INVALID_PARAM, "env is null");
2563 host = env->GetStringUTFChars(jHost, nullptr);
2567 ThrowOcException(OC_STACK_INVALID_PARAM, "onPublishResourceListener cannot be null");
2570 if (!jResourceHandleArray)
2572 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandleList cannot be null");
2575 JniOnPublishResourceListener *onPubResListener = AddOnPublishResourceListener(env, jListener);
2577 PublishResourceCallback pubResCallback = [onPubResListener](
2578 const OCRepresentation& ocRepresentation,
2581 onPubResListener->onPublishResourceCallback(ocRepresentation, eCode);
2584 std::vector<OCResourceHandle> resourceHandleList;
2585 size_t len = env->GetArrayLength(jResourceHandleArray);
2586 for (size_t i = 0; i < len; ++i)
2588 jobject jResourceHandle = env->GetObjectArrayElement(jResourceHandleArray, i);
2589 if (!jResourceHandle)
2591 ThrowOcException(JNI_EXCEPTION, "resource handle cannot be null");
2595 JniOcResourceHandle* jniOcResourceHandle =
2596 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
2597 if (!jniOcResourceHandle)
2599 ThrowOcException(OC_STACK_INVALID_PARAM, "resource handle is invalid");
2603 resourceHandleList.push_back(jniOcResourceHandle->getOCResourceHandle());
2608 OCStackResult result = OCPlatform::publishResourceToRD(
2610 static_cast<OCConnectivityType>(jConnectivityType),
2613 JniUtils::getQOS(env, static_cast<int>(jQoS)));
2615 if (OC_STACK_OK != result)
2617 ThrowOcException(result, "Publish resource has failed");
2621 catch (OCException& e)
2623 LOGE("%s", e.reason().c_str());
2624 ThrowOcException(e.code(), e.reason().c_str());
2627 ThrowOcException(OC_STACK_ERROR, "Publish resource has failed");
2633 * Class: org_iotivity_base_OcPlatform
2634 * Method: deleteResourceFromRD0
2635 * Signature: (Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnDeleteResourceListener;I)V
2637 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_deleteResourceFromRD0(
2641 jint jConnectivityType,
2645 LOGD("OcPlatform_deleteResourceFromRD");
2650 host = env->GetStringUTFChars(jHost, nullptr);
2654 ThrowOcException(OC_STACK_INVALID_PARAM, "onDeleteResourceListener cannot be null");
2657 JniOnDeleteResourceListener *onDelResListener = AddOnDeleteResourceListener(env, jListener);
2659 DeleteResourceCallback delResCallback = [onDelResListener](const int eCode)
2661 onDelResListener->onDeleteResourceCallback(eCode);
2666 OCStackResult result = OCPlatform::deleteResourceFromRD(
2668 static_cast<OCConnectivityType>(jConnectivityType),
2670 JniUtils::getQOS(env, static_cast<int>(jQoS)));
2672 if (OC_STACK_OK != result)
2674 ThrowOcException(result, "Delete resource has failed");
2678 catch (OCException& e)
2680 LOGE("%s", e.reason().c_str());
2681 ThrowOcException(e.code(), e.reason().c_str());
2684 ThrowOcException(OC_STACK_ERROR, "Delete resource has failed");
2690 * Class: org_iotivity_base_OcPlatform
2691 * Method: deleteResourceFromRD1
2692 * Signature: (Ljava/lang/String;I[Lorg/iotivity/base/OcResourceHandle;Lorg/iotivity/base/OcPlatform/OnDeleteResourceListener;I)V
2694 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_deleteResourceFromRD1(
2698 jint jConnectivityType,
2699 jobjectArray jResourceHandleArray,
2703 LOGD("OcPlatform_deleteResourceFromRD");
2707 ThrowOcException(OC_STACK_INVALID_PARAM, "env is null");
2713 host = env->GetStringUTFChars(jHost, nullptr);
2717 ThrowOcException(OC_STACK_INVALID_PARAM, "onDeleteResourceListener cannot be null");
2720 if (!jResourceHandleArray)
2722 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandleList cannot be null");
2725 JniOnDeleteResourceListener *onDelResListener = AddOnDeleteResourceListener(env, jListener);
2727 DeleteResourceCallback delResCallback = [onDelResListener](const int eCode)
2729 onDelResListener->onDeleteResourceCallback(eCode);
2732 std::vector<OCResourceHandle> resourceHandleList;
2733 size_t len = env->GetArrayLength(jResourceHandleArray);
2734 for (size_t i = 0; i < len; ++i)
2736 jobject jResourceHandle = env->GetObjectArrayElement(jResourceHandleArray, i);
2737 if (!jResourceHandle)
2739 ThrowOcException(JNI_EXCEPTION, "resource handle cannot be null");
2743 JniOcResourceHandle* jniOcResourceHandle =
2744 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
2745 if (!jniOcResourceHandle)
2747 ThrowOcException(OC_STACK_INVALID_PARAM, "resource handle is invalid");
2751 resourceHandleList.push_back(jniOcResourceHandle->getOCResourceHandle());
2756 OCStackResult result = OCPlatform::deleteResourceFromRD(
2758 static_cast<OCConnectivityType>(jConnectivityType),
2761 JniUtils::getQOS(env, static_cast<int>(jQoS)));
2763 if (OC_STACK_OK != result)
2765 ThrowOcException(result, "Delete resource has failed");
2769 catch (OCException& e)
2771 LOGE("%s", e.reason().c_str());
2772 ThrowOcException(e.code(), e.reason().c_str());
2775 ThrowOcException(OC_STACK_ERROR, "Delete resource has failed");
2781 * Class: org_iotivity_base_OcPlatform
2782 * Method: constructAccountManagerObject0
2783 * Signature: (Ljava/lang/String;I)Lorg/iotivity/base/OcAccountManager;
2785 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_constructAccountManagerObject0(
2789 jint jConnectivityType)
2792 ThrowOcException(OC_STACK_ERROR,
2793 "OCAccountManager is not supported. (Please build with WITH_CLOUD=1 option)");
2796 LOGD("OcPlatform_constructAccountManagerObject");
2799 ThrowOcException(OC_STACK_INVALID_PARAM, "host cannot be null");
2803 const char* charHost = env->GetStringUTFChars(jHost, nullptr);
2806 ThrowOcException(JNI_EXCEPTION, "charHost is null");
2809 std::string host(charHost);
2810 env->ReleaseStringUTFChars(jHost, charHost);
2812 std::shared_ptr<OCAccountManager> accountManager = OCPlatform::constructAccountManagerObject(
2814 static_cast<OCConnectivityType>(jConnectivityType));
2816 if (!accountManager)
2818 ThrowOcException(OC_STACK_ERROR, "Failed to create OCAccountManager");
2822 JniOcAccountManager *jniOcAccountManager = new JniOcAccountManager(accountManager);
2824 jobject jAccountManager = env->NewObject(g_cls_OcAccountManager, g_mid_OcAccountManager_ctor);
2825 if (!jAccountManager)
2827 delete jniOcAccountManager;
2830 SetHandle<JniOcAccountManager>(env, jAccountManager, jniOcAccountManager);
2831 if (env->ExceptionCheck())
2833 delete jniOcAccountManager;
2836 return jAccountManager;