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"
34 #include "JniOcAccountManager.h"
39 JniOnResourceFoundListener* AddOnResourceFoundListener(JNIEnv* env, jobject jListener)
41 JniOnResourceFoundListener *onResourceFoundListener = nullptr;
43 resourceFoundMapLock.lock();
45 for (auto it = onResourceFoundListenerMap.begin();
46 it != onResourceFoundListenerMap.end();
49 if (env->IsSameObject(jListener, it->first))
51 auto refPair = it->second;
52 onResourceFoundListener = refPair.first;
55 onResourceFoundListenerMap.insert(*it);
56 LOGD("OnResourceFoundListener: ref. count incremented");
61 if (!onResourceFoundListener)
63 onResourceFoundListener =
64 new JniOnResourceFoundListener(env, jListener, RemoveOnResourceFoundListener);
65 jobject jgListener = env->NewGlobalRef(jListener);
67 onResourceFoundListenerMap.insert(
69 std::pair<JniOnResourceFoundListener*, int >>(
71 std::pair<JniOnResourceFoundListener*, int>(onResourceFoundListener,
73 LOGD("OnResourceFoundListener: new listener");
75 resourceFoundMapLock.unlock();
76 return onResourceFoundListener;
79 void RemoveOnResourceFoundListener(JNIEnv* env, jobject jListener)
81 resourceFoundMapLock.lock();
83 for (auto it = onResourceFoundListenerMap.begin();
84 it != onResourceFoundListenerMap.end();
87 if (env->IsSameObject(jListener, it->first))
89 auto refPair = it->second;
90 if (refPair.second > 1)
94 onResourceFoundListenerMap.insert(*it);
95 LOGI("OnResourceFoundListener: ref. count decremented");
99 env->DeleteGlobalRef(it->first);
100 JniOnResourceFoundListener* listener = refPair.first;
102 onResourceFoundListenerMap.erase(it);
103 LOGI("OnResourceFoundListener removed");
108 resourceFoundMapLock.unlock();
111 JniOnDeviceInfoListener* AddOnDeviceInfoListener(JNIEnv* env, jobject jListener)
113 JniOnDeviceInfoListener *onDeviceInfoListener = nullptr;
115 deviceInfoMapLock.lock();
117 for (auto it = onDeviceInfoListenerMap.begin(); it != onDeviceInfoListenerMap.end(); ++it)
119 if (env->IsSameObject(jListener, it->first))
121 auto refPair = it->second;
122 onDeviceInfoListener = refPair.first;
124 it->second = refPair;
125 onDeviceInfoListenerMap.insert(*it);
126 LOGD("OnDeviceInfoListener: ref. count incremented");
131 if (!onDeviceInfoListener)
133 onDeviceInfoListener =
134 new JniOnDeviceInfoListener(env, jListener, RemoveOnDeviceInfoListener);
135 jobject jgListener = env->NewGlobalRef(jListener);
137 onDeviceInfoListenerMap.insert(
139 std::pair<JniOnDeviceInfoListener*, int>>(
141 std::pair<JniOnDeviceInfoListener*, int>(onDeviceInfoListener, 1)));
142 LOGI("OnDeviceInfoListener: new listener");
145 deviceInfoMapLock.unlock();
146 return onDeviceInfoListener;
149 void RemoveOnDeviceInfoListener(JNIEnv* env, jobject jListener)
151 deviceInfoMapLock.lock();
152 bool isFound = false;
153 for (auto it = onDeviceInfoListenerMap.begin(); it != onDeviceInfoListenerMap.end(); ++it)
155 if (env->IsSameObject(jListener, it->first))
157 auto refPair = it->second;
158 if (refPair.second > 1)
161 it->second = refPair;
162 onDeviceInfoListenerMap.insert(*it);
163 LOGI("OnDeviceInfoListener: ref. count decremented");
167 env->DeleteGlobalRef(it->first);
168 JniOnDeviceInfoListener* listener = refPair.first;
170 onDeviceInfoListenerMap.erase(it);
172 LOGI("OnDeviceInfoListener removed");
182 ThrowOcException(JNI_EXCEPTION, "OnDeviceInfoListenet not found");
184 deviceInfoMapLock.unlock();
187 JniOnPlatformInfoListener* AddOnPlatformInfoListener(JNIEnv* env, jobject jListener)
189 JniOnPlatformInfoListener *onPlatformInfoListener = nullptr;
191 platformInfoMapLock.lock();
193 for (auto it = onPlatformInfoListenerMap.begin(); it != onPlatformInfoListenerMap.end(); ++it)
195 if (env->IsSameObject(jListener, it->first))
197 auto refPair = it->second;
198 onPlatformInfoListener = refPair.first;
200 it->second = refPair;
201 onPlatformInfoListenerMap.insert(*it);
202 LOGD("OnPlatformInfoListener: ref. count incremented");
207 if (!onPlatformInfoListener)
209 onPlatformInfoListener =
210 new JniOnPlatformInfoListener(env, jListener, RemoveOnPlatformInfoListener);
211 jobject jgListener = env->NewGlobalRef(jListener);
213 onPlatformInfoListenerMap.insert(
214 std::pair<jobject, std::pair<JniOnPlatformInfoListener*, int>>(
216 std::pair<JniOnPlatformInfoListener*, int>(onPlatformInfoListener, 1)));
217 LOGI("OnPlatformInfoListener: new listener");
220 platformInfoMapLock.unlock();
221 return onPlatformInfoListener;
224 void RemoveOnPlatformInfoListener(JNIEnv* env, jobject jListener)
226 platformInfoMapLock.lock();
227 bool isFound = false;
228 for (auto it = onPlatformInfoListenerMap.begin(); it != onPlatformInfoListenerMap.end(); ++it)
230 if (env->IsSameObject(jListener, it->first))
232 auto refPair = it->second;
233 if (refPair.second > 1)
236 it->second = refPair;
237 onPlatformInfoListenerMap.insert(*it);
238 LOGI("OnPlatformInfoListener: ref. count decremented");
242 env->DeleteGlobalRef(it->first);
243 JniOnPlatformInfoListener* listener = refPair.first;
245 onPlatformInfoListenerMap.erase(it);
247 LOGI("OnPlatformInfoListener removed");
257 ThrowOcException(JNI_EXCEPTION, "OnPlatformInfoListenet not found");
259 platformInfoMapLock.unlock();
262 JniOnPresenceListener* AddOnPresenceListener(JNIEnv* env, jobject jListener)
264 JniOnPresenceListener *onPresenceListener = nullptr;
266 presenceMapLock.lock();
268 for (auto it = onPresenceListenerMap.begin(); it != onPresenceListenerMap.end(); ++it)
270 if (env->IsSameObject(jListener, it->first))
272 auto refPair = it->second;
273 onPresenceListener = refPair.first;
275 it->second = refPair;
276 onPresenceListenerMap.insert(*it);
277 LOGD("OnPresenceListener: ref. count incremented");
281 if (!onPresenceListener)
283 onPresenceListener = new JniOnPresenceListener(env, jListener, RemoveOnPresenceListener);
284 jobject jgListener = env->NewGlobalRef(jListener);
285 onPresenceListenerMap.insert(
286 std::pair<jobject, std::pair<JniOnPresenceListener*, int>>(
288 std::pair<JniOnPresenceListener*, int>(onPresenceListener, 1)));
289 LOGI("OnPresenceListener: new listener");
291 presenceMapLock.unlock();
292 return onPresenceListener;
295 void RemoveOnPresenceListener(JNIEnv* env, jobject jListener)
297 presenceMapLock.lock();
298 bool isFound = false;
299 for (auto it = onPresenceListenerMap.begin(); it != onPresenceListenerMap.end(); ++it)
301 if (env->IsSameObject(jListener, it->first))
303 auto refPair = it->second;
304 if (refPair.second > 1)
307 it->second = refPair;
308 onPresenceListenerMap.insert(*it);
309 LOGI("OnPresenceListener: ref. count decremented");
313 env->DeleteGlobalRef(it->first);
314 JniOnPresenceListener* listener = refPair.first;
316 onPresenceListenerMap.erase(it);
317 LOGI("OnPresenceListener is removed");
325 ThrowOcException(JNI_EXCEPTION, "OnPresenceListener not found");
327 presenceMapLock.unlock();
330 JniOnObserveListener* AddOnObserveListener(JNIEnv* env, jobject jListener)
332 JniOnObserveListener *onObserveListener = nullptr;
334 observeMapLock.lock();
336 for (auto it = onObserveListenerMap.begin(); it != onObserveListenerMap.end(); ++it)
338 if (env->IsSameObject(jListener, it->first))
340 auto refPair = it->second;
341 onObserveListener = refPair.first;
343 it->second = refPair;
344 onObserveListenerMap.insert(*it);
345 LOGD("OnObserveListener: ref. count incremented");
349 if (!onObserveListener)
351 onObserveListener = new JniOnObserveListener(env, jListener, (JniOcResource*)nullptr);
352 jobject jgListener = env->NewGlobalRef(jListener);
353 onObserveListenerMap.insert(
354 std::pair<jobject, std::pair<JniOnObserveListener*, int>>(
356 std::pair<JniOnObserveListener*, int>(onObserveListener, 1)));
357 LOGI("OnObserveListener: new listener");
359 observeMapLock.unlock();
360 return onObserveListener;
363 void RemoveOnObserveListener(JNIEnv* env, jobject jListener)
365 observeMapLock.lock();
366 bool isFound = false;
367 for (auto it = onObserveListenerMap.begin(); it != onObserveListenerMap.end(); ++it)
369 if (env->IsSameObject(jListener, it->first))
371 auto refPair = it->second;
372 if (refPair.second > 1)
375 it->second = refPair;
376 onObserveListenerMap.insert(*it);
377 LOGI("OnObserveListener: ref. count decremented");
381 env->DeleteGlobalRef(it->first);
382 JniOnObserveListener* listener = refPair.first;
384 onObserveListenerMap.erase(it);
385 LOGI("OnObserveListener is removed");
393 ThrowOcException(JNI_EXCEPTION, "OnObserveListener not found");
395 observeMapLock.unlock();
398 JniOnDPDevicesFoundListener* AddOnDPDevicesFoundListener(JNIEnv* env, jobject jListener)
400 JniOnDPDevicesFoundListener *onDPDeviceListener = nullptr;
402 dpDevicesFoundListenerMapLock.lock();
404 for (auto it = onDPDevicesFoundListenerMap.begin(); it !=
405 onDPDevicesFoundListenerMap.end(); ++it)
407 if (env->IsSameObject(jListener, it->first))
409 auto refPair = it->second;
410 onDPDeviceListener = refPair.first;
412 it->second = refPair;
413 onDPDevicesFoundListenerMap.insert(*it);
414 LOGD("onDPDeviceListener: ref. count incremented");
418 if (!onDPDeviceListener)
420 onDPDeviceListener = new JniOnDPDevicesFoundListener(env, jListener,
421 RemoveOnDPDevicesFoundListener);
422 jobject jgListener = env->NewGlobalRef(jListener);
423 onDPDevicesFoundListenerMap.insert(
424 std::pair<jobject, std::pair<JniOnDPDevicesFoundListener*, int>>(
426 std::pair<JniOnDPDevicesFoundListener*, int>(onDPDeviceListener, 1)));
427 LOGI("onDPDeviceListener: new listener");
429 dpDevicesFoundListenerMapLock.unlock();
430 return onDPDeviceListener;
433 void RemoveOnDPDevicesFoundListener(JNIEnv* env, jobject jListener)
435 dpDevicesFoundListenerMapLock.lock();
436 bool isFound = false;
437 for (auto it = onDPDevicesFoundListenerMap.begin(); it !=
438 onDPDevicesFoundListenerMap.end(); ++it)
440 if (env->IsSameObject(jListener, it->first))
442 auto refPair = it->second;
443 if (refPair.second > 1)
446 it->second = refPair;
447 onDPDevicesFoundListenerMap.insert(*it);
448 LOGI("onDPDeviceListener: ref. count decremented");
452 env->DeleteGlobalRef(it->first);
453 JniOnDPDevicesFoundListener* listener = refPair.first;
455 onDPDevicesFoundListenerMap.erase(it);
456 LOGI("onDPDeviceListener is removed");
464 ThrowOcException(JNI_EXCEPTION, "onDPDeviceListener not found");
466 dpDevicesFoundListenerMapLock.unlock();
469 JniOnDirectPairingListener* AddOnDirectPairingListener(JNIEnv* env, jobject jListener)
471 JniOnDirectPairingListener *onDirectPairingListener = nullptr;
473 directPairingListenerMapLock.lock();
475 for (auto it = directPairingListenerMap.begin(); it !=
476 directPairingListenerMap.end(); ++it)
478 if (env->IsSameObject(jListener, it->first))
480 auto refPair = it->second;
481 onDirectPairingListener = refPair.first;
483 it->second = refPair;
484 directPairingListenerMap.insert(*it);
485 LOGD("onDirectPairingListener: ref. count incremented");
489 if (!onDirectPairingListener)
491 onDirectPairingListener = new JniOnDirectPairingListener(env, jListener,
492 RemoveOnDirectPairingListener);
493 jobject jgListener = env->NewGlobalRef(jListener);
494 directPairingListenerMap.insert(
495 std::pair<jobject, std::pair<JniOnDirectPairingListener*, int>>(
497 std::pair<JniOnDirectPairingListener*, int>(onDirectPairingListener, 1)));
498 LOGI("onDirectPairingListener: new listener");
500 directPairingListenerMapLock.unlock();
501 return onDirectPairingListener;
504 void RemoveOnDirectPairingListener(JNIEnv* env, jobject jListener)
506 directPairingListenerMapLock.lock();
507 bool isFound = false;
508 for (auto it = directPairingListenerMap.begin(); it !=
509 directPairingListenerMap.end(); ++it)
511 if (env->IsSameObject(jListener, it->first))
513 auto refPair = it->second;
514 if (refPair.second > 1)
517 it->second = refPair;
518 directPairingListenerMap.insert(*it);
519 LOGI("onDirectPairingListener: ref. count decremented");
523 env->DeleteGlobalRef(it->first);
524 JniOnDirectPairingListener* listener = refPair.first;
526 directPairingListenerMap.erase(it);
527 LOGI("onDirectPairingListener is removed");
535 ThrowOcException(JNI_EXCEPTION, "onDirectPairingListener not found");
537 directPairingListenerMapLock.unlock();
541 * Class: org_iotivity_base_OcPlatform
543 * Signature: (IILjava/lang/String;II)V
545 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_configure
546 (JNIEnv *env, jclass clazz, jint jServiceType, jint jModeType, jstring jIpAddress, jint jPort,
547 jint jQOS, jstring jDbPath)
549 LOGI("OcPlatform_configure");
551 std::string ipAddress;
555 ipAddress = env->GetStringUTFChars(jIpAddress, nullptr);
559 dbfile = env->GetStringUTFChars(jDbPath, nullptr);
560 JniOcSecurity::StoreDbPath(dbfile);
565 port = static_cast<uint16_t>(jPort);
569 JniUtils::getServiceType(env, jServiceType),
570 JniUtils::getModeType(env, jModeType),
573 JniUtils::getQOS(env, static_cast<int>(jQOS)),
574 JniOcSecurity::getOCPersistentStorage()
576 OCPlatform::Configure(cfg);
580 * Class: org_iotivity_base_OcPlatform
581 * Method: notifyAllObservers0
582 * Signature: (Lorg/iotivity/base/OcResourceHandle;)V
584 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyAllObservers0
585 (JNIEnv *env, jclass clazz, jobject jResourceHandle)
587 LOGI("OcPlatform_notifyAllObservers");
588 if (!jResourceHandle)
590 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
594 JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
595 env, jResourceHandle);
596 if (!jniOcResourceHandle)
603 OCStackResult result =
604 OCPlatform::notifyAllObservers(jniOcResourceHandle->getOCResourceHandle());
606 if (OC_STACK_OK != result)
608 ThrowOcException(result, "Failed to notify all observers");
612 catch (OCException& e)
614 LOGE("%s", e.reason().c_str());
615 ThrowOcException(e.code(), e.reason().c_str());
620 * Class: org_iotivity_base_OcPlatform
621 * Method: notifyAllObservers1
622 * Signature: (Lorg/iotivity/base/OcResourceHandle;I)V
624 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyAllObservers1
625 (JNIEnv *env, jclass clazz, jobject jResourceHandle, jint jQoS)
627 LOGI("OcPlatform_notifyAllObservers1");
629 if (!jResourceHandle)
631 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
635 JniOcResourceHandle* jniOcResourceHandle =
636 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
637 if (!jniOcResourceHandle)
643 OCStackResult result = OCPlatform::notifyAllObservers(
644 jniOcResourceHandle->getOCResourceHandle(),
645 JniUtils::getQOS(env, static_cast<int>(jQoS)));
647 if (OC_STACK_OK != result)
649 ThrowOcException(result, "Failed to notify all observers");
653 catch (OCException& e)
655 LOGE("%s", e.reason().c_str());
656 ThrowOcException(e.code(), e.reason().c_str());
661 * Class: org_iotivity_base_OcPlatform
662 * Method: notifyListOfObservers2
663 * Signature: (Lorg/iotivity/base/OcResourceHandle;[Ljava/lang/Byte;Lorg/iotivity/base/OcResourceResponse;)V
665 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyListOfObservers2(
668 jobject jResourceHandle,
669 jbyteArray jObservationIdArr,
670 jobject jResourceResponse)
672 LOGD("OcPlatform_notifyListOfObservers2");
673 if (!jResourceHandle)
675 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
678 if (!jObservationIdArr)
680 ThrowOcException(OC_STACK_INVALID_PARAM, "observationIdList cannot be null");
683 if (!jResourceResponse)
685 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceResponse cannot be null");
689 JniOcResourceHandle* jniOcResourceHandle =
690 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
691 if (!jniOcResourceHandle)
696 JniOcResourceResponse* jniOcResourceResponse =
697 JniOcResourceResponse::getJniOcResourceResponsePtr(env, jResourceResponse);
698 if (!jniOcResourceResponse)
703 int len = env->GetArrayLength(jObservationIdArr);
704 uint8_t* bArr = (uint8_t*)env->GetByteArrayElements(jObservationIdArr, 0);
706 ObservationIds observationIds;
707 for (int i = 0; i < len; ++i)
709 observationIds.push_back(bArr[i]);
712 env->ReleaseByteArrayElements(jObservationIdArr, (jbyte*)bArr, 0);
716 OCStackResult result = OCPlatform::notifyListOfObservers(
717 jniOcResourceHandle->getOCResourceHandle(),
719 jniOcResourceResponse->getOCResourceResponse());
721 if (OC_STACK_OK != result)
723 ThrowOcException(result, "Failed to notify all observers");
726 catch (OCException& e)
728 LOGE("%s", e.reason().c_str());
729 ThrowOcException(e.code(), e.reason().c_str());
734 * Class: org_iotivity_base_OcPlatform
735 * Method: notifyListOfObservers3
736 * Signature: (Lorg/iotivity/base/OcResourceHandle;[Ljava/lang/Byte;Lorg/iotivity/base/OcResourceResponse;I)V
738 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyListOfObservers3(
741 jobject jResourceHandle,
742 jbyteArray jObservationIdArr,
743 jobject jResourceResponse,
746 LOGD("OcPlatform_notifyListOfObservers3");
747 if (!jResourceHandle)
749 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
752 if (!jObservationIdArr)
754 ThrowOcException(OC_STACK_INVALID_PARAM, "observationIdList cannot be null");
757 if (!jResourceResponse)
759 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceResponse cannot be null");
763 JniOcResourceHandle* jniOcResourceHandle =
764 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
765 if (!jniOcResourceHandle)
770 JniOcResourceResponse* jniOcResourceResponse =
771 JniOcResourceResponse::getJniOcResourceResponsePtr(env, jResourceResponse);
772 if (!jniOcResourceResponse)
777 int len = env->GetArrayLength(jObservationIdArr);
778 uint8_t* bArr = (uint8_t*)env->GetByteArrayElements(jObservationIdArr, 0);
780 ObservationIds observationIds;
781 for (int i = 0; i < len; ++i)
783 observationIds.push_back(bArr[i]);
786 env->ReleaseByteArrayElements(jObservationIdArr, (jbyte*)bArr, 0);
790 OCStackResult result = OCPlatform::notifyListOfObservers(
791 jniOcResourceHandle->getOCResourceHandle(),
793 jniOcResourceResponse->getOCResourceResponse(),
794 JniUtils::getQOS(env, static_cast<int>(jQoS)));
796 if (OC_STACK_OK != result)
798 ThrowOcException(result, "Failed to notify all observers");
801 catch (OCException& e)
803 LOGE("%s", e.reason().c_str());
804 ThrowOcException(e.code(), e.reason().c_str());
809 * Class: org_iotivity_base_OcPlatform
810 * Method: findResource0
811 * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnResourceFoundListener;)V
813 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findResource0(
817 jstring jResourceUri,
818 jint jConnectivityType,
821 LOGD("OcPlatform_findResource");
825 host = env->GetStringUTFChars(jHost, nullptr);
827 std::string resourceUri;
830 resourceUri = env->GetStringUTFChars(jResourceUri, nullptr);
834 ThrowOcException(OC_STACK_INVALID_PARAM, "onResourceFoundListener cannot be null");
838 JniOnResourceFoundListener *onResFoundListener = AddOnResourceFoundListener(env, jListener);
840 FindCallback findCallback = [onResFoundListener](std::shared_ptr<OCResource> resource)
842 onResFoundListener->foundResourceCallback(resource);
845 FindErrorCallback findErrorCallback = [onResFoundListener](const std::string& uri, const int eCode)
847 onResFoundListener->findResourceErrorCallback(uri, eCode);
852 OCStackResult result = OCPlatform::findResource(
855 static_cast<OCConnectivityType>(jConnectivityType),
859 if (OC_STACK_OK != result)
861 ThrowOcException(result, "Find resource has failed");
865 catch (OCException& e)
867 LOGE("%s", e.reason().c_str());
868 ThrowOcException(e.code(), e.reason().c_str());
873 * Class: org_iotivity_base_OcPlatform
874 * Method: findResource1
875 * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnResourceFoundListener;I)V
877 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findResource1(
881 jstring jResourceUri,
882 jint jConnectivityType,
886 LOGD("OcPlatform_findResource");
890 host = env->GetStringUTFChars(jHost, nullptr);
892 std::string resourceUri;
895 resourceUri = env->GetStringUTFChars(jResourceUri, nullptr);
899 ThrowOcException(OC_STACK_INVALID_PARAM, "onResourceFoundListener cannot be null");
902 JniOnResourceFoundListener *onResFoundListener = AddOnResourceFoundListener(env, jListener);
904 FindCallback findCallback = [onResFoundListener](std::shared_ptr<OCResource> resource)
906 onResFoundListener->foundResourceCallback(resource);
909 FindErrorCallback findErrorCallback = [onResFoundListener](const std::string& uri, const int eCode)
911 onResFoundListener->findResourceErrorCallback(uri, eCode);
916 OCStackResult result = OCPlatform::findResource(
919 static_cast<OCConnectivityType>(jConnectivityType),
922 JniUtils::getQOS(env, static_cast<int>(jQoS)));
924 if (OC_STACK_OK != result)
926 ThrowOcException(result, "Find resource has failed");
930 catch (OCException& e)
932 LOGE("%s", e.reason().c_str());
933 ThrowOcException(e.code(), e.reason().c_str());
938 * Class: org_iotivity_base_OcPlatform
939 * Method: findDirectPairingDevices
940 * Signature: (ILorg/iotivity/base/OcPlatform/FindDirectPairingListener;)V
942 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findDirectPairingDevices
943 (JNIEnv * env, jclass clazz, jint jTimeout, jobject jListener)
945 LOGD("OcPlatform_findDirectPairingDevices");
949 ThrowOcException(OC_STACK_INVALID_PARAM, "onDPDevicesFoundListener cannot be null");
952 JniOnDPDevicesFoundListener *onDPDevsFoundListener = AddOnDPDevicesFoundListener(env,
955 GetDirectPairedCallback getDirectPairedCallback =
956 [onDPDevsFoundListener](PairedDevices pairingDevList)
958 onDPDevsFoundListener->directPairingDevicesCallback(pairingDevList,
959 DPFunc::FIND_DIRECT_PAIRED_DEV_LIST);
964 OCStackResult result = OCPlatform::findDirectPairingDevices(jTimeout,
965 getDirectPairedCallback);
966 if (OC_STACK_OK != result)
968 ThrowOcException(result, "OCPlatform::findDirectPairingDevices has failed");
972 catch (OCException& e)
974 LOGE("%s", e.reason().c_str());
975 ThrowOcException(e.code(), e.reason().c_str());
980 * Class: org_iotivity_base_OcPlatform
981 * Method: getDirectPairedDevices
982 * Signature: (Lorg/iotivity/base/OcDirectPairDevice/GetDirectPairedListener;)V
984 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDirectPairedDevices
985 (JNIEnv *env, jclass jclazz, jobject jListener)
987 LOGD("OcPlatform_getDirectPairedDevices");
991 ThrowOcException(OC_STACK_INVALID_PARAM, "getPairedDevList Callback cannot be null");
994 JniOnDPDevicesFoundListener *onGetPairedDevicesListener = AddOnDPDevicesFoundListener(env,
997 GetDirectPairedCallback getDirectPairedCallback =
998 [onGetPairedDevicesListener](PairedDevices pairedDevList)
1000 onGetPairedDevicesListener->directPairingDevicesCallback(pairedDevList,
1001 DPFunc::GET_PAIRED_DEV_LIST);
1006 OCStackResult result = OCPlatform::getDirectPairedDevices(getDirectPairedCallback);
1007 if (OC_STACK_OK != result)
1009 ThrowOcException(result, "OcDirectPairDevice_getDirectPairedDevices");
1013 catch (OCException& e)
1015 LOGE("%s", e.reason().c_str());
1016 ThrowOcException(e.code(), e.reason().c_str());
1021 * Class: org_iotivity_base_OcPlatform
1022 * Method: doDirectPairing
1023 * Signature: (Lorg/iotivity/base/OcDirectPairDevice;Lorg/iotivity/base/OcPrmType;
1024 * Ljava/lang/String;Lorg/iotivity/base/OcDirectPairDevice/DirectPairingListener;)V
1026 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_doDirectPairing0
1027 (JNIEnv *env, jclass clazz, jobject jpeer, jint jprmType, jstring jpin, jobject jListener)
1029 LOGD("OcPlatform_doDirectPairing");
1033 ThrowOcException(OC_STACK_INVALID_PARAM, "doDirectPairing Callback cannot be null");
1038 ThrowOcException(OC_STACK_INVALID_PARAM, "Peer cannot be null");
1042 JniOnDirectPairingListener *onDirectPairingListener = AddOnDirectPairingListener(env,
1045 DirectPairingCallback DirectPairingCB =
1046 [onDirectPairingListener](std::shared_ptr<OCDirectPairing> dpDev, OCStackResult result)
1048 onDirectPairingListener->doDirectPairingCB(dpDev, result);
1051 JniOcDirectPairDevice *dev = JniOcDirectPairDevice::getJniOcDirectPairDevicePtr(env, jpeer);
1057 std::string pin = env->GetStringUTFChars(jpin, 0);
1061 OCStackResult result = OCPlatform::doDirectPairing(dev->getPtr(), (OCPrm_t)jprmType,
1062 pin, DirectPairingCB);
1063 if (OC_STACK_OK != result)
1065 ThrowOcException(result, "OcPlatform_oDirectPairing");
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: getDeviceInfo0
1079 * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnDeviceFoundListener;)V
1081 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDeviceInfo0(
1085 jstring jResourceUri,
1086 jint jConnectivityType,
1089 LOGD("OcPlatform_getDeviceInfo0");
1093 host = env->GetStringUTFChars(jHost, nullptr);
1095 std::string resourceUri;
1098 resourceUri = env->GetStringUTFChars(jResourceUri, nullptr);
1102 ThrowOcException(OC_STACK_INVALID_PARAM, "onDeviceFoundListener cannot be null");
1105 JniOnDeviceInfoListener *onDeviceInfoListener = AddOnDeviceInfoListener(env, jListener);
1107 FindDeviceCallback findDeviceCallback =
1108 [onDeviceInfoListener](const OCRepresentation& ocRepresentation)
1110 onDeviceInfoListener->foundDeviceCallback(ocRepresentation);
1115 OCStackResult result = OCPlatform::getDeviceInfo(
1118 static_cast<OCConnectivityType>(jConnectivityType),
1119 findDeviceCallback);
1121 if (OC_STACK_OK != result)
1123 ThrowOcException(result, "Find device has failed");
1126 catch (OCException& e)
1128 LOGE("%s", e.reason().c_str());
1129 ThrowOcException(e.code(), e.reason().c_str());
1134 * Class: org_iotivity_base_OcPlatform
1135 * Method: getDeviceInfo1
1136 * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnDeviceFoundListener;I)V
1138 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDeviceInfo1(
1142 jstring jResourceUri,
1143 jint jConnectivityType,
1147 LOGD("OcPlatform_getDeviceInfo1");
1151 host = env->GetStringUTFChars(jHost, nullptr);
1153 std::string resourceUri;
1156 resourceUri = env->GetStringUTFChars(jResourceUri, nullptr);
1160 ThrowOcException(OC_STACK_INVALID_PARAM, "onDeviceFoundListener cannot be null");
1163 JniOnDeviceInfoListener *onDeviceInfoListener = AddOnDeviceInfoListener(env, jListener);
1165 FindDeviceCallback findDeviceCallback =
1166 [onDeviceInfoListener](const OCRepresentation& ocRepresentation)
1168 onDeviceInfoListener->foundDeviceCallback(ocRepresentation);
1173 OCStackResult result = OCPlatform::getDeviceInfo(
1176 static_cast<OCConnectivityType>(jConnectivityType),
1178 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1180 if (OC_STACK_OK != result)
1182 ThrowOcException(result, "Find device has failed");
1185 catch (OCException& e)
1187 LOGE("%s", e.reason().c_str());
1188 ThrowOcException(e.code(), e.reason().c_str());
1193 * Class: org_iotivity_base_OcPlatform
1194 * Method: getPlatformInfo0
1195 * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPlatformFoundListener;)V
1197 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getPlatformInfo0(
1201 jstring jResourceUri,
1202 jint jConnectivityType,
1205 LOGD("OcPlatform_getPlatformInfo0");
1209 host = env->GetStringUTFChars(jHost, nullptr);
1211 std::string resourceUri;
1214 resourceUri = env->GetStringUTFChars(jResourceUri, nullptr);
1218 ThrowOcException(OC_STACK_INVALID_PARAM, "onPlatformFoundListener cannot be null");
1221 JniOnPlatformInfoListener *onPlatformInfoListener = AddOnPlatformInfoListener(env, jListener);
1223 FindPlatformCallback findPlatformCallback =
1224 [onPlatformInfoListener](const OCRepresentation& ocRepresentation)
1226 onPlatformInfoListener->foundPlatformCallback(ocRepresentation);
1231 OCStackResult result = OCPlatform::getPlatformInfo(
1234 static_cast<OCConnectivityType>(jConnectivityType),
1235 findPlatformCallback);
1237 if (OC_STACK_OK != result)
1239 ThrowOcException(result, "Find platform has failed");
1242 catch (OCException& e)
1244 LOGE("%s", e.reason().c_str());
1245 ThrowOcException(e.code(), e.reason().c_str());
1250 * Class: org_iotivity_base_OcPlatform
1251 * Method: getPlatformInfo1
1252 * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPlatformFoundListener;I)V
1254 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getPlatformInfo1(
1258 jstring jResourceUri,
1259 jint jConnectivityType,
1263 LOGD("OcPlatform_getPlatformInfo1");
1267 host = env->GetStringUTFChars(jHost, nullptr);
1269 std::string resourceUri;
1272 resourceUri = env->GetStringUTFChars(jResourceUri, nullptr);
1276 ThrowOcException(OC_STACK_INVALID_PARAM, "onPlatformFoundListener cannot be null");
1279 JniOnPlatformInfoListener *onPlatformInfoListener = AddOnPlatformInfoListener(env, jListener);
1281 FindPlatformCallback findPlatformCallback =
1282 [onPlatformInfoListener](const OCRepresentation& ocRepresentation)
1284 onPlatformInfoListener->foundPlatformCallback(ocRepresentation);
1289 OCStackResult result = OCPlatform::getPlatformInfo(
1292 static_cast<OCConnectivityType>(jConnectivityType),
1293 findPlatformCallback,
1294 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1296 if (OC_STACK_OK != result)
1298 ThrowOcException(result, "Find platform has failed");
1301 catch (OCException& e)
1303 LOGE("%s", e.reason().c_str());
1304 ThrowOcException(e.code(), e.reason().c_str());
1309 * Class: org_iotivity_base_OcPlatform
1310 * Method: registerResource0
1311 * Signature: (Lorg/iotivity/base/OcResource;)Lorg/iotivity/base/OcResourceHandle;
1313 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_registerResource0(
1314 JNIEnv *env, jclass clazz, jobject jResource)
1316 LOGD("OcPlatform_registerResource");
1319 ThrowOcException(OC_STACK_INVALID_PARAM, "Resource cannot be null");
1322 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, jResource);
1328 OCResourceHandle resourceHandle;
1331 OCStackResult result = OCPlatform::registerResource(
1333 resource->getOCResource());
1335 if (OC_STACK_OK != result)
1337 ThrowOcException(result, "register resource");
1340 catch (OCException& e)
1342 LOGE("%s", e.reason().c_str());
1343 ThrowOcException(e.code(), e.reason().c_str());
1346 JniOcResourceHandle* jniHandle = new JniOcResourceHandle(resourceHandle);
1347 jlong handle = reinterpret_cast<jlong>(jniHandle);
1348 jobject jResourceHandle =
1349 env->NewObject(g_cls_OcResourceHandle, g_mid_OcResourceHandle_N_ctor, handle);
1351 if (!jResourceHandle)
1353 LOGE("Failed to create OcResourceHandle");
1356 return jResourceHandle;
1360 * Class: org_iotivity_base_OcPlatform
1361 * Method: registerResource1
1362 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcPlatform/EntityHandler;I)Lorg/iotivity/base/OcResourceHandle;
1364 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_registerResource1(
1367 jstring jResourceUri,
1368 jstring jResourceTypeName,
1369 jstring jResourceInterface,
1370 jobject jListener, jint jResourceProperty)
1372 LOGI("OcPlatform_registerResource1");
1373 std::string resourceUri;
1376 resourceUri = env->GetStringUTFChars(jResourceUri, nullptr);
1378 std::string resourceTypeName;
1379 if (jResourceTypeName)
1381 resourceTypeName = env->GetStringUTFChars(jResourceTypeName, nullptr);
1383 std::string resourceInterface;
1384 if (jResourceInterface)
1386 resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
1388 JniEntityHandler* entityHandler = NULL;
1389 EntityHandler handleEntityCallback = NULL;
1392 entityHandler = new JniEntityHandler(env, jListener);
1393 handleEntityCallback =
1394 [entityHandler](const std::shared_ptr<OCResourceRequest> request) -> OCEntityHandlerResult
1396 return entityHandler->handleEntity(request);
1400 OCResourceHandle resourceHandle;
1403 OCStackResult result = OCPlatform::registerResource(
1408 handleEntityCallback,
1409 static_cast<int>(jResourceProperty));
1411 if (OC_STACK_OK != result)
1413 delete entityHandler;
1414 ThrowOcException(result, "register resource");
1418 catch (OCException& e)
1420 LOGE("%s", e.reason().c_str());
1421 delete entityHandler;
1422 ThrowOcException(e.code(), e.reason().c_str());
1426 JniOcResourceHandle* jniHandle = new JniOcResourceHandle(resourceHandle);
1427 jlong handle = reinterpret_cast<jlong>(jniHandle);
1428 jobject jResourceHandle =
1429 env->NewObject(g_cls_OcResourceHandle, g_mid_OcResourceHandle_N_ctor, handle);
1430 if (!jResourceHandle)
1432 LOGE("Failed to create OcResourceHandle");
1436 return jResourceHandle;
1440 * Class: org_iotivity_base_OcPlatform
1441 * Method: registerDeviceInfo0
1442 * 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
1444 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_registerDeviceInfo0(
1447 jstring jDeviceName,
1448 jobjectArray jDeviceTypes)
1450 LOGI("OcPlatform_registerDeviceInfo");
1454 ThrowOcException(OC_STACK_INVALID_PARAM, "deviceName cannot be null");
1460 ThrowOcException(OC_STACK_INVALID_PARAM, "deviceTypes cannot be null");
1464 OCDeviceInfo deviceInfo;
1465 memset(&deviceInfo, 0, sizeof(deviceInfo));
1468 DuplicateString(&deviceInfo.deviceName, env->GetStringUTFChars(jDeviceName, nullptr));
1470 jsize len = env->GetArrayLength(jDeviceTypes);
1471 for (jsize i = 0; i < len; ++i)
1473 jstring jStr = (jstring)env->GetObjectArrayElement(jDeviceTypes, i);
1476 delete deviceInfo.deviceName;
1477 ThrowOcException(OC_STACK_INVALID_PARAM, "device type cannot be null");
1481 OCResourcePayloadAddStringLL(&deviceInfo.types, env->GetStringUTFChars(jStr, nullptr));
1482 if (env->ExceptionCheck())
1484 delete deviceInfo.deviceName;
1488 env->DeleteLocalRef(jStr);
1491 catch (std::exception &e)
1493 ThrowOcException(JNI_EXCEPTION, "Failed to construct device info");
1499 OCStackResult result = OCPlatform::registerDeviceInfo(deviceInfo);
1501 delete deviceInfo.deviceName;
1503 if (OC_STACK_OK != result)
1505 ThrowOcException(result, "Failed to register device info");
1509 catch (OCException& e)
1511 LOGE("%s", e.reason().c_str());
1512 ThrowOcException(e.code(), e.reason().c_str());
1517 * Class: org_iotivity_base_OcPlatform
1518 * Method: registerPlatformInfo0
1519 * 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
1521 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_registerPlatformInfo0(
1524 jstring jPlatformID,
1525 jstring jManufacturerName,
1526 jstring jManufacturerUrl,
1527 jstring jModelNumber,
1528 jstring jDateOfManufacture,
1529 jstring jPlatformVersion,
1530 jstring jOperatingSystemVersion,
1531 jstring jHardwareVersion,
1532 jstring jFirmwareVersion,
1533 jstring jSupportUrl,
1534 jstring jSystemTime)
1536 LOGI("OcPlatform_registerPlatformInfo");
1539 std::string platformID;
1540 std::string manufacturerName;
1541 std::string manufacturerUrl;
1542 std::string modelNumber;
1543 std::string dateOfManufacture;
1544 std::string platformVersion;
1545 std::string operatingSystemVersion;
1546 std::string hardwareVersion;
1547 std::string firmwareVersion;
1548 std::string supportUrl;
1549 std::string systemTime;
1553 platformID = env->GetStringUTFChars(jPlatformID, nullptr);
1555 if (jManufacturerName)
1557 manufacturerName = env->GetStringUTFChars(jManufacturerName, nullptr);
1559 if (jManufacturerUrl)
1561 manufacturerUrl = env->GetStringUTFChars(jManufacturerUrl, nullptr);
1565 modelNumber = env->GetStringUTFChars(jModelNumber, nullptr);
1567 if (jDateOfManufacture)
1569 dateOfManufacture = env->GetStringUTFChars(jDateOfManufacture, nullptr);
1571 if (jPlatformVersion)
1573 platformVersion = env->GetStringUTFChars(jPlatformVersion, nullptr);
1575 if (jOperatingSystemVersion)
1577 operatingSystemVersion = env->GetStringUTFChars(jOperatingSystemVersion, nullptr);
1579 if (jHardwareVersion)
1581 hardwareVersion = env->GetStringUTFChars(jHardwareVersion, nullptr);
1583 if (jFirmwareVersion)
1585 firmwareVersion = env->GetStringUTFChars(jFirmwareVersion, nullptr);
1589 supportUrl = env->GetStringUTFChars(jSupportUrl, nullptr);
1593 systemTime = env->GetStringUTFChars(jSystemTime, nullptr);
1596 OCPlatformInfo platformInfo;
1599 DuplicateString(&platformInfo.platformID, platformID);
1600 DuplicateString(&platformInfo.manufacturerName, manufacturerName);
1601 DuplicateString(&platformInfo.manufacturerUrl, manufacturerUrl);
1602 DuplicateString(&platformInfo.modelNumber, modelNumber);
1603 DuplicateString(&platformInfo.dateOfManufacture, dateOfManufacture);
1604 DuplicateString(&platformInfo.platformVersion, platformVersion);
1605 DuplicateString(&platformInfo.operatingSystemVersion, operatingSystemVersion);
1606 DuplicateString(&platformInfo.hardwareVersion, hardwareVersion);
1607 DuplicateString(&platformInfo.firmwareVersion, firmwareVersion);
1608 DuplicateString(&platformInfo.supportUrl, supportUrl);
1609 DuplicateString(&platformInfo.systemTime, systemTime);
1611 catch (std::exception &e)
1613 ThrowOcException(JNI_EXCEPTION, "Failed to construct platform info");
1617 // __android_log_print(ANDROID_LOG_INFO, "Rahul", "platformID = %s", platformID);
1620 OCStackResult result = OCPlatform::registerPlatformInfo(platformInfo);
1622 delete platformInfo.platformID;
1623 delete platformInfo.manufacturerName;
1624 delete platformInfo.manufacturerUrl;
1625 delete platformInfo.modelNumber;
1626 delete platformInfo.dateOfManufacture;
1627 delete platformInfo.platformVersion;
1628 delete platformInfo.operatingSystemVersion;
1629 delete platformInfo.hardwareVersion;
1630 delete platformInfo.firmwareVersion;
1631 delete platformInfo.supportUrl;
1632 delete platformInfo.systemTime;
1634 if (OC_STACK_OK != result)
1636 ThrowOcException(result, "Failed to register platform info");
1640 catch (OCException& e)
1642 LOGE("Error is due to %s", e.reason().c_str());
1643 ThrowOcException(e.code(), e.reason().c_str());
1647 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_setPropertyValue0
1648 (JNIEnv *env, jclass clazz, jint jType, jstring jPropName, jobjectArray jPropValue)
1652 OCPayloadType type = (OCPayloadType)jType;
1653 std::string propName;
1654 std::vector<std::string> propValue;
1657 propName = env->GetStringUTFChars(jPropName, nullptr);
1661 JniUtils::convertJavaStrArrToStrVector(env, jPropValue, propValue);
1663 OCStackResult result = OCPlatform::setPropertyValue(type, propName, propValue);
1664 if (OC_STACK_OK != result)
1666 ThrowOcException(result, "Failed to set property");
1670 catch (OCException& e)
1672 LOGE("Error is due to %s", e.reason().c_str());
1673 ThrowOcException(e.code(), e.reason().c_str());
1679 * Class: org_iotivity_base_OcPlatform
1680 * Method: setPropertyValue0
1681 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
1683 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_setPropertyValue1
1684 (JNIEnv *env, jclass clazz, jint jType, jstring jPropName, jstring jPropValue)
1688 OCPayloadType type = (OCPayloadType)jType;
1689 std::string propName;
1690 std::string propValue;
1693 propName = env->GetStringUTFChars(jPropName, nullptr);
1697 propValue = env->GetStringUTFChars(jPropValue, nullptr);
1699 OCStackResult result = OCPlatform::setPropertyValue(type, propName, propValue);
1700 if (OC_STACK_OK != result)
1702 ThrowOcException(result, "Failed to set property");
1706 catch (OCException& e)
1708 LOGE("Error is due to %s", e.reason().c_str());
1709 ThrowOcException(e.code(), e.reason().c_str());
1714 * Class: org_iotivity_base_OcPlatform
1715 * Method: getPropertyValue
1716 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
1718 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getPropertyValue0
1719 (JNIEnv *env, jclass clazz, jint jType, jstring jPropName, jstring jPropValue)
1723 OCPayloadType type = (OCPayloadType) jType;
1724 std::string propName;
1725 std::string propValue;
1729 propName = env->GetStringUTFChars(jPropName, nullptr);
1731 OCStackResult result = OCPlatform::getPropertyValue(type, propName, propValue);
1732 if (OC_STACK_OK != result)
1734 ThrowOcException(result, "Failed to get property value.");
1738 catch (OCException& e)
1740 LOGE("Error is due to %s", e.reason().c_str());
1741 ThrowOcException(e.code(), e.reason().c_str());
1746 * Class: org_iotivity_base_OcPlatform
1747 * Method: unregisterResource0
1748 * Signature: (Lorg/iotivity/base/OcResourceHandle;)V
1750 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unregisterResource0(
1751 JNIEnv *env, jclass clazz, jobject jResourceHandle)
1753 LOGI("OcPlatform_unregisterResource");
1754 if (!jResourceHandle)
1756 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
1759 JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
1760 env, jResourceHandle);
1761 if (!jniOcResourceHandle)
1768 OCResourceHandle resHandle = jniOcResourceHandle->getOCResourceHandle();
1769 OCStackResult result = OCPlatform::unregisterResource(resHandle);
1770 if (OC_STACK_OK != result)
1772 ThrowOcException(result, "Failed to unregister resource");
1775 catch (OCException& e)
1777 LOGE("%s", e.reason().c_str());
1778 ThrowOcException(e.code(), e.reason().c_str());
1783 * Class: org_iotivity_base_OcPlatform
1784 * Method: bindResource0
1785 * Signature: (Lorg/iotivity/base/OcResourceHandle;Lorg/iotivity/base/OcResourceHandle;)V
1787 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindResource0
1788 (JNIEnv *env, jclass clazz, jobject jResourceCollectionHandle, jobject jResourceHandle)
1790 LOGI("OcPlatform_bindResource");
1791 if (!jResourceCollectionHandle)
1793 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");
1796 if (!jResourceHandle)
1798 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
1801 JniOcResourceHandle* jniOcResourceCollectionHandle =
1802 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceCollectionHandle);
1803 if (!jniOcResourceCollectionHandle)
1808 JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
1809 env, jResourceHandle);
1810 if (!jniOcResourceHandle)
1817 OCStackResult result = OCPlatform::bindResource(
1818 jniOcResourceCollectionHandle->getOCResourceHandle(),
1819 jniOcResourceHandle->getOCResourceHandle()
1822 if (OC_STACK_OK != result)
1824 ThrowOcException(result, "Failed to bind resource");
1827 catch (OCException& e)
1829 LOGE("%s", e.reason().c_str());
1830 ThrowOcException(e.code(), e.reason().c_str());
1835 * Class: org_iotivity_base_OcPlatform
1836 * Method: bindResources0
1837 * Signature: (Lorg/iotivity/base/OcResourceHandle;[Lorg/iotivity/base/OcResourceHandle;)V
1839 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindResources0(
1842 jobject jResourceCollectionHandle,
1843 jobjectArray jResourceHandleArray)
1845 LOGI("OcPlatform_bindResources");
1847 if (!jResourceCollectionHandle)
1849 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");
1852 if (!jResourceHandleArray)
1854 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandleList cannot be null");
1858 JniOcResourceHandle* jniOcResourceCollectionHandle =
1859 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceCollectionHandle);
1860 if (!jniOcResourceCollectionHandle)
1865 std::vector<OCResourceHandle> resourceHandleList;
1866 int len = env->GetArrayLength(jResourceHandleArray);
1867 for (int i = 0; i < len; ++i)
1869 jobject jResourceHandle = env->GetObjectArrayElement(jResourceHandleArray, i);
1870 if (!jResourceHandle)
1872 ThrowOcException(JNI_EXCEPTION, "resource handle cannot be null");
1876 JniOcResourceHandle* jniOcResourceHandle =
1877 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
1878 if (!jniOcResourceHandle)
1883 resourceHandleList.push_back(
1884 jniOcResourceHandle->getOCResourceHandle());
1889 OCStackResult result = OCPlatform::bindResources(
1890 jniOcResourceCollectionHandle->getOCResourceHandle(),
1894 if (OC_STACK_OK != result)
1896 ThrowOcException(result, "Failed to bind resources");
1899 catch (OCException& e)
1901 LOGE("%s", e.reason().c_str());
1902 ThrowOcException(e.code(), e.reason().c_str());
1907 * Class: org_iotivity_base_OcPlatform
1908 * Method: unbindResource0
1909 * Signature: (Lorg/iotivity/base/OcResourceHandle;Lorg/iotivity/base/OcResourceHandle;)V
1911 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unbindResource0(
1914 jobject jResourceCollectionHandle,
1915 jobject jResourceHandle)
1917 LOGI("OcPlatform_unbindResource");
1918 if (!jResourceCollectionHandle)
1920 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");
1923 if (!jResourceHandle)
1925 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
1929 JniOcResourceHandle* jniOcResourceCollectionHandle =
1930 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceCollectionHandle);
1931 if (!jniOcResourceCollectionHandle)
1936 JniOcResourceHandle* jniOcResourceHandle =
1937 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
1938 if (!jniOcResourceHandle)
1945 OCStackResult result = OCPlatform::unbindResource(
1946 jniOcResourceCollectionHandle->getOCResourceHandle(),
1947 jniOcResourceHandle->getOCResourceHandle());
1949 if (OC_STACK_OK != result)
1951 ThrowOcException(result, "Failed to unbind resource");
1954 catch (OCException& e)
1956 LOGE("%s", e.reason().c_str());
1957 ThrowOcException(e.code(), e.reason().c_str());
1962 * Class: org_iotivity_base_OcPlatform
1963 * Method: unbindResources0
1964 * Signature: (Lorg/iotivity/base/OcResourceHandle;[Lorg/iotivity/base/OcResourceHandle;)V
1966 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unbindResources0(
1969 jobject jResourceCollectionHandle,
1970 jobjectArray jResourceHandleArray)
1972 LOGI("OcPlatform_unbindResources");
1973 if (!jResourceCollectionHandle)
1975 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");
1978 if (!jResourceHandleArray)
1980 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandleList cannot be null");
1984 JniOcResourceHandle* jniOcResourceCollectionHandle =
1985 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceCollectionHandle);
1986 if (!jniOcResourceCollectionHandle)
1991 std::vector<OCResourceHandle> resourceHandleList;
1992 int len = env->GetArrayLength(jResourceHandleArray);
1993 for (int i = 0; i < len; ++i)
1995 jobject jResourceHandle = env->GetObjectArrayElement(jResourceHandleArray, i);
1996 if (!jResourceHandle)
1998 ThrowOcException(JNI_EXCEPTION, "resource handle cannot be null");
2002 JniOcResourceHandle* jniOcResourceHandle =
2003 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
2004 if (!jniOcResourceHandle)
2009 resourceHandleList.push_back(
2010 jniOcResourceHandle->getOCResourceHandle());
2015 OCStackResult result = OCPlatform::unbindResources(
2016 jniOcResourceCollectionHandle->getOCResourceHandle(),
2020 if (OC_STACK_OK != result)
2022 ThrowOcException(result, "Failed to unbind resources");
2025 catch (OCException& e)
2027 LOGE("%s", e.reason().c_str());
2028 ThrowOcException(e.code(), e.reason().c_str());
2033 * Class: org_iotivity_base_OcPlatform
2034 * Method: bindTypeToResource0
2035 * Signature: (Lorg/iotivity/base/OcResourceHandle;Ljava/lang/String;)V
2037 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindTypeToResource0(
2040 jobject jResourceHandle,
2041 jstring jResourceTypeName)
2043 LOGI("OcPlatform_bindTypeToResource");
2044 if (!jResourceHandle)
2046 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
2049 std::string typeName;
2050 if (jResourceTypeName)
2052 typeName = env->GetStringUTFChars(jResourceTypeName, nullptr);
2055 JniOcResourceHandle* jniOcResourceHandle =
2056 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
2057 if (!jniOcResourceHandle)
2064 OCStackResult result = OCPlatform::bindTypeToResource(
2065 jniOcResourceHandle->getOCResourceHandle(),
2069 if (OC_STACK_OK != result)
2071 ThrowOcException(result, "Failed to bind type to resource");
2074 catch (OCException& e)
2076 LOGE("%s", e.reason().c_str());
2077 ThrowOcException(e.code(), e.reason().c_str());
2082 * Class: org_iotivity_base_OcPlatform
2083 * Method: bindInterfaceToResource0
2084 * Signature: (Lorg/iotivity/base/OcResourceHandle;Ljava/lang/String;)V
2086 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindInterfaceToResource0
2087 (JNIEnv *env, jclass clazz, jobject jResourceHandle, jstring jResourceInterfaceName)
2089 LOGI("OcPlatform_bindInterfaceToResource");
2090 if (!jResourceHandle)
2092 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
2095 std::string interfaceName;
2096 if (jResourceInterfaceName)
2098 interfaceName = env->GetStringUTFChars(jResourceInterfaceName, nullptr);
2101 JniOcResourceHandle* jniOcResourceHandle =
2102 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
2103 if (!jniOcResourceHandle)
2110 OCStackResult result = OCPlatform::bindInterfaceToResource(
2111 jniOcResourceHandle->getOCResourceHandle(),
2115 if (OC_STACK_OK != result)
2117 ThrowOcException(result, "Failed to bind interface to resource");
2120 catch (OCException& e)
2122 LOGE("%s", e.reason().c_str());
2123 ThrowOcException(e.code(), e.reason().c_str());
2128 * Class: org_iotivity_base_OcPlatform
2129 * Method: startPresence0
2132 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_startPresence0(
2133 JNIEnv *env, jclass clazz, jint ttl)
2135 LOGI("OcPlatform_startPresence");
2139 OCStackResult result = OCPlatform::startPresence((unsigned int)ttl);
2141 if (OC_STACK_OK != result)
2143 ThrowOcException(result, "Failed to start presence");
2146 catch (OCException& e)
2148 LOGE("%s", e.reason().c_str());
2149 ThrowOcException(e.code(), e.reason().c_str());
2154 * Class: org_iotivity_base_OcPlatform
2155 * Method: stopPresence0
2158 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_stopPresence0(
2159 JNIEnv *env, jclass clazz)
2161 LOGI("OcPlatform_stopPresence");
2165 OCStackResult result = OCPlatform::stopPresence();
2167 if (OC_STACK_OK != result)
2169 ThrowOcException(result, "Failed to stop presence");
2172 catch (OCException& e)
2174 LOGE("%s", e.reason().c_str());
2175 ThrowOcException(e.code(), e.reason().c_str());
2180 * Class: org_iotivity_base_OcPlatform
2181 * Method: subscribePresence0
2182 * Signature: (Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPresenceListener;)Lorg/iotivity/base/OcPresenceHandle;
2184 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribePresence0(
2188 jint jConnectivityType,
2191 LOGD("OcPlatform_subscribePresence");
2195 host = env->GetStringUTFChars(jHost, nullptr);
2199 ThrowOcException(OC_STACK_INVALID_PARAM, "onPresenceListener cannot be null");
2203 JniOnPresenceListener *onPresenceListener = AddOnPresenceListener(env, jListener);
2205 SubscribeCallback subscribeCallback =
2206 [onPresenceListener](OCStackResult result,
2207 const unsigned int nonce,
2208 const std::string& hostAddress)
2210 onPresenceListener->onPresenceCallback(result, nonce, hostAddress);
2213 OCPlatform::OCPresenceHandle presenceHandle;
2216 OCStackResult result = OCPlatform::subscribePresence(
2219 static_cast<OCConnectivityType>(jConnectivityType),
2222 if (OC_STACK_OK != result)
2224 ThrowOcException(result, "subscribe presence has failed");
2227 catch (OCException& e)
2229 LOGE("%s", e.reason().c_str());
2230 ThrowOcException(e.code(), e.reason().c_str());
2234 JniOcPresenceHandle* jniPresenceHandle =
2235 new JniOcPresenceHandle(onPresenceListener, presenceHandle);
2236 jlong jhandle = reinterpret_cast<jlong>(jniPresenceHandle);
2237 jobject jPresenceHandle =
2238 env->NewObject(g_cls_OcPresenceHandle, g_mid_OcPresenceHandle_N_ctor, jhandle);
2239 if (!jPresenceHandle)
2241 LOGE("Failed to create OcPresenceHandle");
2242 delete jniPresenceHandle;
2244 return jPresenceHandle;
2248 * Class: org_iotivity_base_OcPlatform
2249 * Method: subscribePresence1
2250 * Signature: (Ljava/lang/String;Ljava/lang/String;I
2251 Lorg/iotivity/base/OcPlatform/OnPresenceListener;)Lorg/iotivity/base/OcPresenceHandle;
2253 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribePresence1(
2257 jstring jResourceType,
2258 jint jConnectivityType,
2261 LOGD("OcPlatform_subscribePresence1");
2265 host = env->GetStringUTFChars(jHost, nullptr);
2267 std::string resourceType;
2270 resourceType = env->GetStringUTFChars(jResourceType, nullptr);
2274 ThrowOcException(OC_STACK_INVALID_PARAM, "onPresenceListener cannot be null");
2278 JniOnPresenceListener *onPresenceListener = AddOnPresenceListener(env, jListener);
2280 SubscribeCallback subscribeCallback = [onPresenceListener](OCStackResult result,
2281 const unsigned int nonce, const std::string& hostAddress)
2283 onPresenceListener->onPresenceCallback(result, nonce, hostAddress);
2286 OCPlatform::OCPresenceHandle presenceHandle;
2289 OCStackResult result = OCPlatform::subscribePresence(
2293 static_cast<OCConnectivityType>(jConnectivityType),
2296 if (OC_STACK_OK != result)
2298 ThrowOcException(result, "subscribe presence has failed");
2301 catch (OCException& e)
2303 LOGE("%s", e.reason().c_str());
2304 ThrowOcException(e.code(), e.reason().c_str());
2308 JniOcPresenceHandle* jniPresenceHandle =
2309 new JniOcPresenceHandle(onPresenceListener, presenceHandle);
2310 jlong jhandle = reinterpret_cast<jlong>(jniPresenceHandle);
2311 jobject jPresenceHandle =
2312 env->NewObject(g_cls_OcPresenceHandle, g_mid_OcPresenceHandle_N_ctor, jhandle);
2313 if (!jPresenceHandle)
2315 LOGE("Failed to create OcPresenceHandle");
2316 delete jniPresenceHandle;
2318 return jPresenceHandle;
2322 * Class: org_iotivity_base_OcPlatform
2323 * Method: unsubscribePresence0
2324 * Signature: (Lorg/iotivity/base/OcPresenceHandle;)V
2326 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unsubscribePresence0(
2327 JNIEnv *env, jclass clazz, jobject jPresenceHandle)
2329 LOGD("OcPlatform_unsubscribePresence");
2330 if (!jPresenceHandle)
2332 ThrowOcException(OC_STACK_INVALID_PARAM, "presenceHandle cannot be null");
2335 JniOcPresenceHandle* jniPresenceHandle =
2336 JniOcPresenceHandle::getJniOcPresenceHandlePtr(env, jPresenceHandle);
2337 if (!jniPresenceHandle)
2342 OCPresenceHandle presenceHandle = jniPresenceHandle->getOCPresenceHandle();
2346 OCStackResult result = OCPlatform::unsubscribePresence(presenceHandle);
2348 if (OC_STACK_OK != result)
2350 ThrowOcException(result, "unsubscribe presence has failed");
2354 JniOnPresenceListener* jniPresenceListener = jniPresenceHandle->getJniOnPresenceListener();
2355 if (jniPresenceListener)
2357 jweak jwOnPresenceListener = jniPresenceListener->getJWListener();
2358 if (jwOnPresenceListener)
2360 RemoveOnPresenceListener(env, jwOnPresenceListener);
2364 catch (OCException& e)
2366 LOGE("%s", e.reason().c_str());
2367 ThrowOcException(e.code(), e.reason().c_str());
2372 * Class: org_iotivity_base_OcPlatform
2373 * Method: subscribeDevicePresence0
2374 * Signature: (Ljava/lang/String;[Ljava/lang/String;I
2375 Lorg/iotivity/base/OcResource/OnObserveListener;)Lorg/iotivity/base/OcPresenceHandle;
2377 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribeDevicePresence0(
2381 jobjectArray jDiArray,
2382 jint jConnectivityType,
2385 LOGD("OcPlatform_subscribeDevicePresence0");
2390 host = env->GetStringUTFChars(jHost, nullptr);
2395 ThrowOcException(OC_STACK_INVALID_PARAM, "device id List cannot be null");
2399 std::vector<std::string> di;
2400 JniUtils::convertJavaStrArrToStrVector(env, jDiArray, di);
2404 ThrowOcException(OC_STACK_INVALID_PARAM, "onObserveListener cannot be null");
2408 JniOnObserveListener *onObserveListener = AddOnObserveListener(env, jListener);
2410 ObserveCallback observeCallback = [onObserveListener](const HeaderOptions& opts,
2411 const OCRepresentation& rep, const int& eCode, const int& sequenceNumber)
2413 onObserveListener->onObserveCallback(opts, rep, eCode, sequenceNumber);
2416 OCPlatform::OCPresenceHandle presenceHandle;
2419 OCStackResult result = OCPlatform::subscribeDevicePresence(
2423 static_cast<OCConnectivityType>(jConnectivityType),
2426 if (OC_STACK_OK != result)
2428 ThrowOcException(result, "subscribe device presence has failed");
2431 catch (OCException& e)
2433 LOGE("%s", e.reason().c_str());
2434 ThrowOcException(e.code(), e.reason().c_str());
2438 JniOcPresenceHandle* jniPresenceHandle =
2439 new JniOcPresenceHandle(onObserveListener, presenceHandle);
2440 jlong jhandle = reinterpret_cast<jlong>(jniPresenceHandle);
2441 jobject jPresenceHandle =
2442 env->NewObject(g_cls_OcPresenceHandle, g_mid_OcPresenceHandle_N_ctor, jhandle);
2443 if (!jPresenceHandle)
2445 LOGE("Failed to create OcPresenceHandle");
2446 delete jniPresenceHandle;
2448 return jPresenceHandle;
2450 ThrowOcException(JNI_NO_SUPPORT, "Not supported");
2456 * Class: org_iotivity_base_OcPlatform
2457 * Method: constructResourceObject0
2458 * Signature: (Ljava/lang/String;Ljava/lang/String;IZ[Ljava/lang/String;[Ljava/lang/String;)
2459 Lorg/iotivity/base/OcResource;
2461 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_constructResourceObject0(
2466 jint jConnectivityType,
2467 jboolean jIsObservable,
2468 jobjectArray jResourceTypeArray,
2469 jobjectArray jInterfaceArray)
2471 LOGD("OcPlatform_constructResourceObject");
2475 host = env->GetStringUTFChars(jHost, nullptr);
2480 uri = env->GetStringUTFChars(jUri, nullptr);
2482 if (!jResourceTypeArray)
2484 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceTypeList cannot be null");
2487 if (!jInterfaceArray)
2489 ThrowOcException(OC_STACK_INVALID_PARAM, "interfaceList cannot be null");
2493 std::vector<std::string> resourceTypes;
2494 JniUtils::convertJavaStrArrToStrVector(env, jResourceTypeArray, resourceTypes);
2496 std::vector<std::string> interfaces;
2497 JniUtils::convertJavaStrArrToStrVector(env, jInterfaceArray, interfaces);
2499 std::shared_ptr<OCResource> resource = OCPlatform::constructResourceObject(
2502 static_cast<OCConnectivityType>(jConnectivityType),
2503 static_cast<bool>(jIsObservable),
2509 ThrowOcException(OC_STACK_ERROR, "Failed to create OCResource");
2513 JniOcResource *jniOcResource = new JniOcResource(resource);
2515 jobject jResource = env->NewObject(g_cls_OcResource, g_mid_OcResource_ctor);
2518 delete jniOcResource;
2521 SetHandle<JniOcResource>(env, jResource, jniOcResource);
2522 if (env->ExceptionCheck())
2524 delete jniOcResource;
2531 * Class: org_iotivity_base_OcPlatform
2532 * Method: sendResponse0
2533 * Signature: (Lorg/iotivity/base/OcResourceResponse;)V
2535 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_sendResponse0(
2536 JNIEnv *env, jclass clazz, jobject jResourceResponse)
2538 LOGD("OcPlatform_sendResponse");
2539 if (!jResourceResponse)
2541 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceResponse cannot be null");
2545 JniOcResourceResponse *jniResponse =
2546 JniOcResourceResponse::getJniOcResourceResponsePtr(env, jResourceResponse);
2554 OCStackResult result =
2555 OCPlatform::sendResponse(jniResponse->getOCResourceResponse());
2557 if (OC_STACK_OK != result)
2559 ThrowOcException(result, "failed to send response");
2562 catch (OCException& e)
2564 LOGE("%s", e.reason().c_str());
2565 ThrowOcException(e.code(), e.reason().c_str());
2570 * Class: org_iotivity_base_OcPlatform
2571 * Method: constructAccountManagerObject0
2572 * Signature: (Ljava/lang/String;I)Lorg/iotivity/base/OcAccountManager;
2574 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_constructAccountManagerObject0(
2578 jint jConnectivityType)
2581 ThrowOcException(OC_STACK_ERROR,
2582 "OCAccountManager is not supported. (Please build with WITH_CLOUD=1 option)");
2585 LOGD("OcPlatform_constructAccountManagerObject");
2588 ThrowOcException(OC_STACK_INVALID_PARAM, "host cannot be null");
2592 const char* charHost = env->GetStringUTFChars(jHost, nullptr);
2595 ThrowOcException(JNI_EXCEPTION, "charHost is null");
2598 std::string host(charHost);
2599 env->ReleaseStringUTFChars(jHost, charHost);
2601 std::shared_ptr<OCAccountManager> accountManager = OCPlatform::constructAccountManagerObject(
2603 static_cast<OCConnectivityType>(jConnectivityType));
2605 if (!accountManager)
2607 ThrowOcException(OC_STACK_ERROR, "Failed to create OCAccountManager");
2611 JniOcAccountManager *jniOcAccountManager = new JniOcAccountManager(accountManager);
2613 jobject jAccountManager = env->NewObject(g_cls_OcAccountManager, g_mid_OcAccountManager_ctor);
2614 if (!jAccountManager)
2616 delete jniOcAccountManager;
2619 SetHandle<JniOcAccountManager>(env, jAccountManager, jniOcAccountManager);
2620 if (env->ExceptionCheck())
2622 delete jniOcAccountManager;
2625 return jAccountManager;
2630 * Class: org_iotivity_base_OcPlatform
2631 * Method: getDeviceId
2634 JNIEXPORT jbyteArray JNICALL Java_org_iotivity_base_OcPlatform_getDeviceId
2635 (JNIEnv *env, jobject thiz)
2637 LOGD("OcPlatform_getDeviceId");
2638 OCUUIdentity deviceId;
2640 jbyteArray ret = env->NewByteArray(UUID_IDENTITY_SIZE);
2641 jbyte uuid[UUID_IDENTITY_SIZE];
2645 OCStackResult result = OCPlatform::getDeviceId(&deviceId);
2646 LOGD("OcPlatform_getDeviceId return from CPP");
2647 if (OC_STACK_OK != result)
2649 ThrowOcException(result, "Error while getting my device Id");
2653 for(int i=0;i < UUID_IDENTITY_SIZE; i++)
2655 uuid[i] =(jbyte) deviceId.id[i];
2660 catch (OCException& e)
2662 LOGE("%s", e.reason().c_str());
2663 ThrowOcException(e.code(), e.reason().c_str());
2666 env->SetByteArrayRegion(ret, 0, UUID_IDENTITY_SIZE, uuid);
2672 * Class: org_iotivity_base_OcPlatform
2673 * Method: setDeviceId
2674 * Signature: (Ljava/lang/byte;)V
2676 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_setDeviceId(
2677 JNIEnv *env, jobject thiz, jbyteArray data)
2679 LOGI("OcPlatform_setDeviceId");
2680 OCUUIdentity deviceId;
2683 OCStackResult result;
2684 jbyte* uuid = env->GetByteArrayElements(data, 0);
2685 jsize arrayLength = env->GetArrayLength(data);
2686 if(arrayLength!=UUID_IDENTITY_SIZE)
2688 ThrowOcException(OC_STACK_INVALID_PARAM, "Byte length not equal to UUID_IDENTITY_SIZE");
2692 for(int i=0;i < UUID_IDENTITY_SIZE; i++)
2694 deviceId.id[i]=(jchar)uuid[i];
2696 result = OCPlatform::setDeviceId(&deviceId);
2697 if (OC_STACK_OK != result)
2699 ThrowOcException(result, "Failed to set DeviceId");
2703 catch (OCException& e)
2705 LOGE("%s", e.reason().c_str());
2706 ThrowOcException(e.code(), e.reason().c_str());