2 * //******************************************************************
\r
4 * // Copyright 2015 Intel Corporation.
\r
6 * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
\r
8 * // Licensed under the Apache License, Version 2.0 (the "License");
\r
9 * // you may not use this file except in compliance with the License.
\r
10 * // You may obtain a copy of the License at
\r
12 * // http://www.apache.org/licenses/LICENSE-2.0
\r
14 * // Unless required by applicable law or agreed to in writing, software
\r
15 * // distributed under the License is distributed on an "AS IS" BASIS,
\r
16 * // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
17 * // See the License for the specific language governing permissions and
\r
18 * // limitations under the License.
\r
20 * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
\r
22 #include "JniOcPlatform.h"
\r
23 #include "OCPlatform.h"
\r
24 #include "JniOcResource.h"
\r
25 #include "JniOcResourceHandle.h"
\r
26 #include "JniOcPresenceHandle.h"
\r
27 #include "JniOcResourceResponse.h"
\r
28 #include "JniOcSecurity.h"
29 #include "JniUtils.h"
\r
33 JniOnResourceFoundListener* AddOnResourceFoundListener(JNIEnv* env, jobject jListener)
\r
35 JniOnResourceFoundListener *onResourceFoundListener = NULL;
\r
37 resourceFoundMapLock.lock();
\r
39 for (auto it = onResourceFoundListenerMap.begin(); it != onResourceFoundListenerMap.end(); ++it)
\r
41 if (env->IsSameObject(jListener, it->first))
\r
43 auto refPair = it->second;
\r
44 onResourceFoundListener = refPair.first;
\r
46 it->second = refPair;
\r
47 onResourceFoundListenerMap.insert(*it);
\r
48 LOGD("OnResourceFoundListener: ref. count incremented");
\r
53 if (!onResourceFoundListener)
\r
55 onResourceFoundListener = new JniOnResourceFoundListener(env, jListener, RemoveOnResourceFoundListener);
\r
56 jobject jgListener = env->NewGlobalRef(jListener);
\r
58 onResourceFoundListenerMap.insert(std::pair < jobject, std::pair < JniOnResourceFoundListener*,
\r
59 int >> (jgListener, std::pair<JniOnResourceFoundListener*, int>(onResourceFoundListener, 1)));
\r
60 LOGD("OnResourceFoundListener: new listener");
\r
62 resourceFoundMapLock.unlock();
\r
63 return onResourceFoundListener;
\r
66 void RemoveOnResourceFoundListener(JNIEnv* env, jobject jListener)
\r
68 resourceFoundMapLock.lock();
\r
70 for (auto it = onResourceFoundListenerMap.begin(); it != onResourceFoundListenerMap.end(); ++it)
\r
72 if (env->IsSameObject(jListener, it->first))
\r
74 auto refPair = it->second;
\r
75 if (refPair.second > 1)
\r
78 it->second = refPair;
\r
79 onResourceFoundListenerMap.insert(*it);
\r
80 LOGI("OnResourceFoundListener: ref. count decremented");
\r
84 env->DeleteGlobalRef(it->first);
\r
85 JniOnResourceFoundListener* listener = refPair.first;
\r
87 onResourceFoundListenerMap.erase(it);
\r
88 LOGI("OnResourceFoundListener removed");
\r
93 resourceFoundMapLock.unlock();
\r
96 JniOnDeviceInfoListener* AddOnDeviceInfoListener(JNIEnv* env, jobject jListener)
\r
98 JniOnDeviceInfoListener *onDeviceInfoListener = NULL;
\r
100 deviceInfoMapLock.lock();
\r
102 for (auto it = onDeviceInfoListenerMap.begin(); it != onDeviceInfoListenerMap.end(); ++it)
\r
104 if (env->IsSameObject(jListener, it->first))
\r
106 auto refPair = it->second;
\r
107 onDeviceInfoListener = refPair.first;
\r
109 it->second = refPair;
\r
110 onDeviceInfoListenerMap.insert(*it);
\r
111 LOGD("OnDeviceInfoListener: ref. count incremented");
\r
116 if (!onDeviceInfoListener)
\r
118 onDeviceInfoListener = new JniOnDeviceInfoListener(env, jListener, RemoveOnDeviceInfoListener);
\r
119 jobject jgListener = env->NewGlobalRef(jListener);
\r
121 onDeviceInfoListenerMap.insert(std::pair < jobject, std::pair < JniOnDeviceInfoListener*,
\r
122 int >> (jgListener, std::pair<JniOnDeviceInfoListener*, int>(onDeviceInfoListener, 1)));
\r
123 LOGI("OnDeviceInfoListener: new listener");
\r
126 deviceInfoMapLock.unlock();
\r
127 return onDeviceInfoListener;
\r
130 void RemoveOnDeviceInfoListener(JNIEnv* env, jobject jListener)
\r
132 deviceInfoMapLock.lock();
\r
133 bool isFound = false;
\r
134 for (auto it = onDeviceInfoListenerMap.begin(); it != onDeviceInfoListenerMap.end(); ++it)
\r
136 if (env->IsSameObject(jListener, it->first))
\r
138 auto refPair = it->second;
\r
139 if (refPair.second > 1)
\r
142 it->second = refPair;
\r
143 onDeviceInfoListenerMap.insert(*it);
\r
144 LOGI("OnDeviceInfoListener: ref. count decremented");
\r
148 env->DeleteGlobalRef(it->first);
\r
149 JniOnDeviceInfoListener* listener = refPair.first;
\r
151 onDeviceInfoListenerMap.erase(it);
\r
153 LOGI("OnDeviceInfoListener removed");
\r
163 ThrowOcException(JNI_EXCEPTION, "OnDeviceInfoListenet not found");
\r
165 deviceInfoMapLock.unlock();
\r
168 JniOnPresenceListener* AddOnPresenceListener(JNIEnv* env, jobject jListener)
\r
170 JniOnPresenceListener *onPresenceListener = NULL;
\r
172 presenceMapLock.lock();
\r
174 for (auto it = onPresenceListenerMap.begin(); it != onPresenceListenerMap.end(); ++it)
\r
176 if (env->IsSameObject(jListener, it->first))
\r
178 auto refPair = it->second;
\r
179 onPresenceListener = refPair.first;
\r
181 it->second = refPair;
\r
182 onPresenceListenerMap.insert(*it);
\r
183 LOGD("OnPresenceListener: ref. count incremented");
\r
187 if (!onPresenceListener)
\r
189 onPresenceListener = new JniOnPresenceListener(env, jListener, RemoveOnPresenceListener);
\r
190 jobject jgListener = env->NewGlobalRef(jListener);
\r
191 onPresenceListenerMap.insert(std::pair < jobject, std::pair < JniOnPresenceListener*,
\r
192 int >> (jgListener, std::pair<JniOnPresenceListener*, int>(onPresenceListener, 1)));
\r
193 LOGI("OnPresenceListener: new listener");
\r
195 presenceMapLock.unlock();
\r
196 return onPresenceListener;
\r
199 void RemoveOnPresenceListener(JNIEnv* env, jobject jListener)
\r
201 presenceMapLock.lock();
\r
202 bool isFound = false;
\r
203 for (auto it = onPresenceListenerMap.begin(); it != onPresenceListenerMap.end(); ++it)
\r
205 if (env->IsSameObject(jListener, it->first))
\r
207 auto refPair = it->second;
\r
208 if (refPair.second > 1)
\r
211 it->second = refPair;
\r
212 onPresenceListenerMap.insert(*it);
\r
213 LOGI("OnPresenceListener: ref. count decremented");
\r
217 env->DeleteGlobalRef(it->first);
\r
218 JniOnPresenceListener* listener = refPair.first;
\r
220 onPresenceListenerMap.erase(it);
\r
221 LOGI("OnPresenceListener is removed");
\r
229 ThrowOcException(JNI_EXCEPTION, "OnPresenceListener not found");
\r
231 presenceMapLock.unlock();
\r
235 * Class: org_iotivity_base_OcPlatform
\r
236 * Method: configure
\r
237 * Signature: (IILjava/lang/String;IILjava/lang/String;)V
239 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_configure
\r
240 (JNIEnv *env, jclass clazz, jint jServiceType, jint jModeType, jstring jIpAddress, jint jPort,
241 jint jQOS, jstring jDbPath)
243 LOGI("OcPlatform_configure");
\r
245 std::string ipAddress;
\r
249 ipAddress = env->GetStringUTFChars(jIpAddress, NULL);
\r
253 dbfile = env->GetStringUTFChars(jDbPath, nullptr);
254 JniOcSecurity::StoreDbPath(dbfile);
259 port = static_cast<uint16_t>(jPort);
\r
261 PlatformConfig cfg{
\r
262 JniUtils::getServiceType(env, jServiceType),
\r
263 JniUtils::getModeType(env, jModeType),
\r
266 JniUtils::getQOS(env, static_cast<int>(jQOS)),
267 JniOcSecurity::getOCPersistentStorage()
270 OCPlatform::Configure(cfg);
\r
274 * Class: org_iotivity_base_OcPlatform
\r
275 * Method: notifyAllObservers0
\r
276 * Signature: (Lorg/iotivity/base/OcResourceHandle;)V
\r
278 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyAllObservers0
\r
279 (JNIEnv *env, jclass clazz, jobject jResourceHandle)
\r
281 LOGI("OcPlatform_notifyAllObservers");
\r
282 if (!jResourceHandle)
\r
284 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
\r
288 JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
\r
289 env, jResourceHandle);
\r
290 if (!jniOcResourceHandle) return;
\r
294 OCStackResult result = OCPlatform::notifyAllObservers(jniOcResourceHandle->getOCResourceHandle());
\r
296 if (OC_STACK_OK != result)
\r
298 ThrowOcException(result, "Failed to notify all observers");
\r
302 catch (OCException& e)
\r
304 LOGE("%s", e.reason().c_str());
\r
305 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r
310 * Class: org_iotivity_base_OcPlatform
\r
311 * Method: notifyAllObservers1
\r
312 * Signature: (Lorg/iotivity/base/OcResourceHandle;I)V
\r
314 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyAllObservers1
\r
315 (JNIEnv *env, jclass clazz, jobject jResourceHandle, jint jQoS)
\r
317 LOGI("OcPlatform_notifyAllObservers1");
\r
319 if (!jResourceHandle)
\r
321 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
\r
325 JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
\r
326 env, jResourceHandle);
\r
327 if (!jniOcResourceHandle) return;
\r
330 OCStackResult result = OCPlatform::notifyAllObservers(
\r
331 jniOcResourceHandle->getOCResourceHandle(),
\r
332 JniUtils::getQOS(env, static_cast<int>(jQoS)));
\r
334 if (OC_STACK_OK != result)
\r
336 ThrowOcException(result, "Failed to notify all observers");
\r
340 catch (OCException& e)
\r
342 LOGE("%s", e.reason().c_str());
\r
343 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r
348 * Class: org_iotivity_base_OcPlatform
\r
349 * Method: notifyListOfObservers2
\r
350 * Signature: (Lorg/iotivity/base/OcResourceHandle;[Ljava/lang/Byte;Lorg/iotivity/base/OcResourceResponse;)V
\r
352 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyListOfObservers2
\r
353 (JNIEnv *env, jclass clazz, jobject jResourceHandle, jbyteArray jObservationIdArr, jobject jResourceResponse)
\r
355 LOGD("OcPlatform_notifyListOfObservers2");
\r
356 if (!jResourceHandle)
\r
358 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
\r
361 if (!jObservationIdArr)
\r
363 ThrowOcException(OC_STACK_INVALID_PARAM, "observationIdList cannot be null");
\r
366 if (!jResourceResponse)
\r
368 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceResponse cannot be null");
\r
372 JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
\r
373 env, jResourceHandle);
\r
374 if (!jniOcResourceHandle) return;
\r
376 JniOcResourceResponse* jniOcResourceResponse = JniOcResourceResponse::getJniOcResourceResponsePtr(
\r
377 env, jResourceResponse);
\r
378 if (!jniOcResourceResponse) return;
\r
380 int len = env->GetArrayLength(jObservationIdArr);
\r
381 uint8_t* bArr = (uint8_t*)env->GetByteArrayElements(jObservationIdArr, 0);
\r
383 ObservationIds observationIds;
\r
384 for (int i = 0; i < len; ++i)
\r
386 observationIds.push_back(bArr[i]);
\r
389 env->ReleaseByteArrayElements(jObservationIdArr, (jbyte*)bArr, 0);
\r
392 OCStackResult result = OCPlatform::notifyListOfObservers(
\r
393 jniOcResourceHandle->getOCResourceHandle(),
\r
395 jniOcResourceResponse->getOCResourceResponse());
\r
397 if (OC_STACK_OK != result)
\r
399 ThrowOcException(result, "Failed to notify all observers");
\r
402 catch (OCException& e)
\r
404 LOGE("%s", e.reason().c_str());
\r
405 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r
410 * Class: org_iotivity_base_OcPlatform
\r
411 * Method: notifyListOfObservers3
\r
412 * Signature: (Lorg/iotivity/base/OcResourceHandle;[Ljava/lang/Byte;Lorg/iotivity/base/OcResourceResponse;I)V
\r
414 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyListOfObservers3
\r
415 (JNIEnv *env, jclass clazz, jobject jResourceHandle, jbyteArray jObservationIdArr, jobject jResourceResponse, jint jQoS)
\r
417 LOGD("OcPlatform_notifyListOfObservers3");
\r
418 if (!jResourceHandle)
\r
420 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
\r
423 if (!jObservationIdArr)
\r
425 ThrowOcException(OC_STACK_INVALID_PARAM, "observationIdList cannot be null");
\r
428 if (!jResourceResponse)
\r
430 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceResponse cannot be null");
\r
434 JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
\r
435 env, jResourceHandle);
\r
436 if (!jniOcResourceHandle) return;
\r
438 JniOcResourceResponse* jniOcResourceResponse = JniOcResourceResponse::getJniOcResourceResponsePtr(
\r
439 env, jResourceResponse);
\r
440 if (!jniOcResourceResponse) return;
\r
442 int len = env->GetArrayLength(jObservationIdArr);
\r
443 uint8_t* bArr = (uint8_t*)env->GetByteArrayElements(jObservationIdArr, 0);
\r
445 ObservationIds observationIds;
\r
446 for (int i = 0; i < len; ++i)
\r
448 observationIds.push_back(bArr[i]);
\r
451 env->ReleaseByteArrayElements(jObservationIdArr, (jbyte*)bArr, 0);
\r
454 OCStackResult result = OCPlatform::notifyListOfObservers(
\r
455 jniOcResourceHandle->getOCResourceHandle(),
\r
457 jniOcResourceResponse->getOCResourceResponse(),
\r
458 JniUtils::getQOS(env, static_cast<int>(jQoS)));
\r
460 if (OC_STACK_OK != result)
\r
462 ThrowOcException(result, "Failed to notify all observers");
\r
465 catch (OCException& e)
\r
467 LOGE("%s", e.reason().c_str());
\r
468 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r
473 * Class: org_iotivity_base_OcPlatform
\r
474 * Method: findResource0
\r
475 * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnResourceFoundListener;)V
\r
477 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findResource0
\r
478 (JNIEnv *env, jclass clazz, jstring jHost, jstring jResourceUri, jint jConnectivityType, jobject jListener)
\r
480 LOGD("OcPlatform_findResource");
\r
484 host = env->GetStringUTFChars(jHost, NULL);
\r
486 std::string resourceUri;
\r
489 resourceUri = env->GetStringUTFChars(jResourceUri, NULL);
\r
493 ThrowOcException(OC_STACK_INVALID_PARAM, "onResourceFoundListener cannot be null");
\r
497 JniOnResourceFoundListener *onResFoundListener = AddOnResourceFoundListener(env, jListener);
\r
499 FindCallback findCallback = [onResFoundListener](std::shared_ptr<OCResource> resource)
\r
501 onResFoundListener->foundResourceCallback(resource);
\r
506 OCStackResult result = OCPlatform::findResource(
\r
509 JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),
\r
512 if (OC_STACK_OK != result)
\r
514 ThrowOcException(result, "Find resource has failed");
\r
518 catch (OCException& e)
\r
520 LOGE("%s", e.reason().c_str());
\r
521 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r
526 * Class: org_iotivity_base_OcPlatform
\r
527 * Method: findResource1
\r
528 * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnResourceFoundListener;I)V
\r
530 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findResource1
\r
531 (JNIEnv *env, jclass clazz, jstring jHost, jstring jResourceUri, jint jConnectivityType, jobject jListener, jint jQoS)
\r
533 LOGD("OcPlatform_findResource");
\r
537 host = env->GetStringUTFChars(jHost, NULL);
\r
539 std::string resourceUri;
\r
542 resourceUri = env->GetStringUTFChars(jResourceUri, NULL);
\r
546 ThrowOcException(OC_STACK_INVALID_PARAM, "onResourceFoundListener cannot be null");
\r
549 JniOnResourceFoundListener *onResFoundListener = AddOnResourceFoundListener(env, jListener);
\r
551 FindCallback findCallback = [onResFoundListener](std::shared_ptr<OCResource> resource)
\r
553 onResFoundListener->foundResourceCallback(resource);
\r
558 OCStackResult result = OCPlatform::findResource(
\r
561 JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),
\r
563 JniUtils::getQOS(env, static_cast<int>(jQoS)));
\r
565 if (OC_STACK_OK != result)
\r
567 ThrowOcException(result, "Find resource has failed");
\r
571 catch (OCException& e)
\r
573 LOGE("%s", e.reason().c_str());
\r
574 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r
579 * Class: org_iotivity_base_OcPlatform
\r
580 * Method: getDeviceInfo0
\r
581 * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnDeviceFoundListener;)V
\r
583 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDeviceInfo0
\r
584 (JNIEnv *env, jclass clazz, jstring jHost, jstring jResourceUri, jint jConnectivityType, jobject jListener)
\r
586 LOGD("OcPlatform_getDeviceInfo0");
\r
590 host = env->GetStringUTFChars(jHost, NULL);
\r
592 std::string resourceUri;
\r
595 resourceUri = env->GetStringUTFChars(jResourceUri, NULL);
\r
599 ThrowOcException(OC_STACK_INVALID_PARAM, "onDeviceFoundListener cannot be null");
\r
602 JniOnDeviceInfoListener *onDeviceInfoListener = AddOnDeviceInfoListener(env, jListener);
\r
604 FindDeviceCallback findDeviceCallback = [onDeviceInfoListener](const OCRepresentation& ocRepresentation)
\r
606 onDeviceInfoListener->foundDeviceCallback(ocRepresentation);
\r
611 OCStackResult result = OCPlatform::getDeviceInfo(
\r
614 JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),
\r
615 findDeviceCallback);
\r
617 if (OC_STACK_OK != result)
\r
619 ThrowOcException(result, "Find device has failed");
\r
622 catch (OCException& e)
\r
624 LOGE("%s", e.reason().c_str());
\r
625 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r
630 * Class: org_iotivity_base_OcPlatform
\r
631 * Method: getDeviceInfo1
\r
632 * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnDeviceFoundListener;I)V
\r
634 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDeviceInfo1
\r
635 (JNIEnv *env, jclass clazz, jstring jHost, jstring jResourceUri, jint jConnectivityType, jobject jListener, jint jQoS)
\r
637 LOGD("OcPlatform_getDeviceInfo1");
\r
641 host = env->GetStringUTFChars(jHost, NULL);
\r
643 std::string resourceUri;
\r
646 resourceUri = env->GetStringUTFChars(jResourceUri, NULL);
\r
650 ThrowOcException(OC_STACK_INVALID_PARAM, "onDeviceFoundListener cannot be null");
\r
653 JniOnDeviceInfoListener *onDeviceInfoListener = AddOnDeviceInfoListener(env, jListener);
\r
655 FindDeviceCallback findDeviceCallback = [onDeviceInfoListener](const OCRepresentation& ocRepresentation)
\r
657 onDeviceInfoListener->foundDeviceCallback(ocRepresentation);
\r
662 OCStackResult result = OCPlatform::getDeviceInfo(
\r
665 JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),
\r
666 findDeviceCallback,
\r
667 JniUtils::getQOS(env, static_cast<int>(jQoS)));
\r
669 if (OC_STACK_OK != result)
\r
671 ThrowOcException(result, "Find device has failed");
\r
674 catch (OCException& e)
\r
676 LOGE("%s", e.reason().c_str());
\r
677 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r
682 * Class: org_iotivity_base_OcPlatform
\r
683 * Method: registerResource0
\r
684 * Signature: (Lorg/iotivity/base/OcResource;)Lorg/iotivity/base/OcResourceHandle;
\r
686 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_registerResource0
\r
687 (JNIEnv *env, jclass clazz, jobject jResource)
\r
689 LOGD("OcPlatform_registerResource");
\r
692 ThrowOcException(OC_STACK_INVALID_PARAM, "Resource cannot be null");
\r
695 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, jResource);
\r
696 if (!resource) return nullptr;
\r
698 OCResourceHandle resourceHandle;
\r
701 OCStackResult result = OCPlatform::registerResource(
\r
703 resource->getOCResource());
\r
705 if (OC_STACK_OK != result)
\r
707 ThrowOcException(result, "register resource");
\r
710 catch (OCException& e)
\r
712 LOGE("%s", e.reason().c_str());
\r
713 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r
717 JniOcResourceHandle* jniHandle = new JniOcResourceHandle(resourceHandle);
\r
718 jlong handle = reinterpret_cast<jlong>(jniHandle);
\r
719 jobject jResourceHandle = env->NewObject(g_cls_OcResourceHandle, g_mid_OcResourceHandle_N_ctor, handle);
\r
720 if (!jResourceHandle)
\r
722 LOGE("Failed to create OcResourceHandle");
\r
725 return jResourceHandle;
\r
729 * Class: org_iotivity_base_OcPlatform
\r
730 * Method: registerResource1
\r
731 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcPlatform/EntityHandler;I)Lorg/iotivity/base/OcResourceHandle;
\r
733 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_registerResource1
\r
734 (JNIEnv *env, jclass clazz, jstring jResourceUri, jstring jResourceTypeName, jstring jResourceInterface,
\r
735 jobject jListener, jint jResourceProperty)
\r
737 LOGI("OcPlatform_registerResource1");
\r
738 std::string resourceUri;
\r
741 resourceUri = env->GetStringUTFChars(jResourceUri, NULL);
\r
743 std::string resourceTypeName;
\r
744 if (jResourceTypeName)
\r
746 resourceTypeName = env->GetStringUTFChars(jResourceTypeName, NULL);
\r
748 std::string resourceInterface;
\r
749 if (jResourceInterface)
\r
751 resourceInterface = env->GetStringUTFChars(jResourceInterface, NULL);
\r
755 ThrowOcException(OC_STACK_INVALID_PARAM, "entityHandler cannot be null");
\r
758 JniEntityHandler* entityHandler = new JniEntityHandler(env, jListener);
\r
759 EntityHandler handleEntityCallback = [entityHandler](const std::shared_ptr<OCResourceRequest> request) ->
\r
760 OCEntityHandlerResult{
\r
761 return entityHandler->handleEntity(request);
\r
764 OCResourceHandle resourceHandle;
\r
767 OCStackResult result = OCPlatform::registerResource(
\r
772 handleEntityCallback,
\r
773 static_cast<int>(jResourceProperty));
\r
775 if (OC_STACK_OK != result)
\r
777 delete entityHandler;
\r
778 ThrowOcException(result, "register resource");
\r
782 catch (OCException& e)
\r
784 LOGE("%s", e.reason().c_str());
\r
785 delete entityHandler;
\r
786 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r
790 JniOcResourceHandle* jniHandle = new JniOcResourceHandle(resourceHandle);
\r
791 jlong handle = reinterpret_cast<jlong>(jniHandle);
\r
792 jobject jResourceHandle = env->NewObject(g_cls_OcResourceHandle, g_mid_OcResourceHandle_N_ctor, handle);
\r
793 if (!jResourceHandle)
\r
795 LOGE("Failed to create OcResourceHandle");
\r
799 return jResourceHandle;
\r
803 * Class: org_iotivity_base_OcPlatform
\r
804 * Method: registerDeviceInfo0
\r
805 * 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
\r
807 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_registerDeviceInfo0
\r
810 jstring jDeviceName)
\r
812 LOGI("OcPlatform_registerDeviceInfo");
\r
814 std::string deviceName;
\r
817 deviceName = env->GetStringUTFChars(jDeviceName, NULL);
\r
820 OCDeviceInfo deviceInfo;
\r
823 DuplicateString(&deviceInfo.deviceName, deviceName);
\r
825 catch (std::exception &e)
\r
827 ThrowOcException(JNI_EXCEPTION, "Failed to construct device info");
\r
833 OCStackResult result = OCPlatform::registerDeviceInfo(deviceInfo);
\r
835 delete deviceInfo.deviceName;
\r
837 if (OC_STACK_OK != result)
\r
839 ThrowOcException(result, "Failed to register device info");
\r
843 catch (OCException& e)
\r
845 LOGE("%s", e.reason().c_str());
\r
846 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r
851 * Class: org_iotivity_base_OcPlatform
\r
852 * Method: unregisterResource0
\r
853 * Signature: (Lorg/iotivity/base/OcResourceHandle;)V
\r
855 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unregisterResource0
\r
856 (JNIEnv *env, jclass clazz, jobject jResourceHandle)
\r
858 LOGI("OcPlatform_unregisterResource");
\r
859 if (!jResourceHandle)
\r
861 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
\r
864 JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
\r
865 env, jResourceHandle);
\r
866 if (!jniOcResourceHandle) return;
\r
870 OCResourceHandle resHandle = jniOcResourceHandle->getOCResourceHandle();
\r
871 OCStackResult result = OCPlatform::unregisterResource(resHandle);
\r
872 if (OC_STACK_OK != result)
\r
874 ThrowOcException(result, "Failed to unregister resource");
\r
877 catch (OCException& e)
\r
879 LOGE("%s", e.reason().c_str());
\r
880 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r
885 * Class: org_iotivity_base_OcPlatform
\r
886 * Method: bindResource0
\r
887 * Signature: (Lorg/iotivity/base/OcResourceHandle;Lorg/iotivity/base/OcResourceHandle;)V
\r
889 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindResource0
\r
890 (JNIEnv *env, jclass clazz, jobject jResourceCollectionHandle, jobject jResourceHandle)
\r
892 LOGI("OcPlatform_bindResource");
\r
893 if (!jResourceCollectionHandle)
\r
895 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");
\r
898 if (!jResourceHandle)
\r
900 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
\r
903 JniOcResourceHandle* jniOcResourceCollectionHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
\r
904 env, jResourceCollectionHandle);
\r
905 if (!jniOcResourceCollectionHandle) return;
\r
907 JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
\r
908 env, jResourceHandle);
\r
909 if (!jniOcResourceHandle) return;
\r
913 OCStackResult result = OCPlatform::bindResource(
\r
914 jniOcResourceCollectionHandle->getOCResourceHandle(),
\r
915 jniOcResourceHandle->getOCResourceHandle()
\r
918 if (OC_STACK_OK != result)
\r
920 ThrowOcException(result, "Failed to bind resource");
\r
923 catch (OCException& e)
\r
925 LOGE("%s", e.reason().c_str());
\r
926 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r
931 * Class: org_iotivity_base_OcPlatform
\r
932 * Method: bindResources0
\r
933 * Signature: (Lorg/iotivity/base/OcResourceHandle;[Lorg/iotivity/base/OcResourceHandle;)V
\r
935 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindResources0
\r
936 (JNIEnv *env, jclass clazz, jobject jResourceCollectionHandle, jobjectArray jResourceHandleArray)
\r
938 LOGI("OcPlatform_bindResources");
\r
940 if (!jResourceCollectionHandle)
\r
942 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");
\r
945 if (!jResourceHandleArray)
\r
947 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandleList cannot be null");
\r
951 JniOcResourceHandle* jniOcResourceCollectionHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
\r
952 env, jResourceCollectionHandle);
\r
953 if (!jniOcResourceCollectionHandle) return;
\r
955 std::vector<OCResourceHandle> resourceHandleList;
\r
956 int len = env->GetArrayLength(jResourceHandleArray);
\r
957 for (int i = 0; i < len; ++i)
\r
959 jobject jResourceHandle = env->GetObjectArrayElement(jResourceHandleArray, i);
\r
960 if (!jResourceHandle)
\r
962 ThrowOcException(JNI_EXCEPTION, "resource handle cannot be null");
\r
966 JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
\r
967 env, jResourceHandle);
\r
968 if (!jniOcResourceHandle) return;
\r
970 resourceHandleList.push_back(
\r
971 jniOcResourceHandle->getOCResourceHandle());
\r
976 OCStackResult result = OCPlatform::bindResources(
\r
977 jniOcResourceCollectionHandle->getOCResourceHandle(),
\r
981 if (OC_STACK_OK != result)
\r
983 ThrowOcException(result, "Failed to bind resources");
\r
986 catch (OCException& e)
\r
988 LOGE("%s", e.reason().c_str());
\r
989 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r
994 * Class: org_iotivity_base_OcPlatform
\r
995 * Method: unbindResource0
\r
996 * Signature: (Lorg/iotivity/base/OcResourceHandle;Lorg/iotivity/base/OcResourceHandle;)V
\r
998 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unbindResource0
\r
999 (JNIEnv *env, jclass clazz, jobject jResourceCollectionHandle, jobject jResourceHandle)
\r
1001 LOGI("OcPlatform_unbindResource");
\r
1002 if (!jResourceCollectionHandle)
\r
1004 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");
\r
1007 if (!jResourceHandle)
\r
1009 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
\r
1013 JniOcResourceHandle* jniOcResourceCollectionHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
\r
1014 env, jResourceCollectionHandle);
\r
1015 if (!jniOcResourceCollectionHandle) return;
\r
1017 JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
\r
1018 env, jResourceHandle);
\r
1019 if (!jniOcResourceHandle) return;
\r
1023 OCStackResult result = OCPlatform::unbindResource(
\r
1024 jniOcResourceCollectionHandle->getOCResourceHandle(),
\r
1025 jniOcResourceHandle->getOCResourceHandle()
\r
1028 if (OC_STACK_OK != result)
\r
1030 ThrowOcException(result, "Failed to unbind resource");
\r
1033 catch (OCException& e)
\r
1035 LOGE("%s", e.reason().c_str());
\r
1036 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r
1041 * Class: org_iotivity_base_OcPlatform
\r
1042 * Method: unbindResources0
\r
1043 * Signature: (Lorg/iotivity/base/OcResourceHandle;[Lorg/iotivity/base/OcResourceHandle;)V
\r
1045 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unbindResources0
\r
1046 (JNIEnv *env, jclass clazz, jobject jResourceCollectionHandle, jobjectArray jResourceHandleArray)
\r
1048 LOGI("OcPlatform_unbindResources");
\r
1049 if (!jResourceCollectionHandle)
\r
1051 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");
\r
1054 if (!jResourceHandleArray)
\r
1056 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandleList cannot be null");
\r
1060 JniOcResourceHandle* jniOcResourceCollectionHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
\r
1061 env, jResourceCollectionHandle);
\r
1062 if (!jniOcResourceCollectionHandle) return;
\r
1064 std::vector<OCResourceHandle> resourceHandleList;
\r
1065 int len = env->GetArrayLength(jResourceHandleArray);
\r
1066 for (int i = 0; i < len; ++i)
\r
1068 jobject jResourceHandle = env->GetObjectArrayElement(jResourceHandleArray, i);
\r
1069 if (!jResourceHandle)
\r
1071 ThrowOcException(JNI_EXCEPTION, "resource handle cannot be null");
\r
1075 JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
\r
1076 env, jResourceHandle);
\r
1077 if (!jniOcResourceHandle) return;
\r
1079 resourceHandleList.push_back(
\r
1080 jniOcResourceHandle->getOCResourceHandle());
\r
1085 OCStackResult result = OCPlatform::unbindResources(
\r
1086 jniOcResourceCollectionHandle->getOCResourceHandle(),
\r
1087 resourceHandleList
\r
1090 if (OC_STACK_OK != result)
\r
1092 ThrowOcException(result, "Failed to unbind resources");
\r
1095 catch (OCException& e)
\r
1097 LOGE("%s", e.reason().c_str());
\r
1098 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r
1103 * Class: org_iotivity_base_OcPlatform
\r
1104 * Method: bindTypeToResource0
\r
1105 * Signature: (Lorg/iotivity/base/OcResourceHandle;Ljava/lang/String;)V
\r
1107 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindTypeToResource0
\r
1108 (JNIEnv *env, jclass clazz, jobject jResourceHandle, jstring jResourceTypeName)
\r
1110 LOGI("OcPlatform_bindTypeToResource");
\r
1111 if (!jResourceHandle)
\r
1113 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
\r
1116 std::string typeName;
\r
1117 if (jResourceTypeName)
\r
1119 typeName = env->GetStringUTFChars(jResourceTypeName, NULL);
\r
1122 JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
\r
1123 env, jResourceHandle);
\r
1124 if (!jniOcResourceHandle) return;
\r
1128 OCStackResult result = OCPlatform::bindTypeToResource(
\r
1129 jniOcResourceHandle->getOCResourceHandle(),
\r
1133 if (OC_STACK_OK != result)
\r
1135 ThrowOcException(result, "Failed to bind type to resource");
\r
1138 catch (OCException& e)
\r
1140 LOGE("%s", e.reason().c_str());
\r
1141 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r
1146 * Class: org_iotivity_base_OcPlatform
\r
1147 * Method: bindInterfaceToResource0
\r
1148 * Signature: (Lorg/iotivity/base/OcResourceHandle;Ljava/lang/String;)V
\r
1150 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindInterfaceToResource0
\r
1151 (JNIEnv *env, jclass clazz, jobject jResourceHandle, jstring jResourceInterfaceName)
\r
1153 LOGI("OcPlatform_bindInterfaceToResource");
\r
1154 if (!jResourceHandle)
\r
1156 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
\r
1159 std::string interfaceName;
\r
1160 if (jResourceInterfaceName)
\r
1162 interfaceName = env->GetStringUTFChars(jResourceInterfaceName, NULL);
\r
1165 JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
\r
1166 env, jResourceHandle);
\r
1167 if (!jniOcResourceHandle) return;
\r
1171 OCStackResult result = OCPlatform::bindInterfaceToResource(
\r
1172 jniOcResourceHandle->getOCResourceHandle(),
\r
1176 if (OC_STACK_OK != result)
\r
1178 ThrowOcException(result, "Failed to bind interface to resource");
\r
1181 catch (OCException& e)
\r
1183 LOGE("%s", e.reason().c_str());
\r
1184 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r
1189 * Class: org_iotivity_base_OcPlatform
\r
1190 * Method: startPresence0
\r
1193 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_startPresence0
\r
1194 (JNIEnv *env, jclass clazz, jint ttl)
\r
1196 LOGI("OcPlatform_startPresence");
\r
1200 OCStackResult result = OCPlatform::startPresence((unsigned int)ttl);
\r
1202 if (OC_STACK_OK != result)
\r
1204 ThrowOcException(result, "Failed to start presence");
\r
1207 catch (OCException& e)
\r
1209 LOGE("%s", e.reason().c_str());
\r
1210 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r
1215 * Class: org_iotivity_base_OcPlatform
\r
1216 * Method: stopPresence0
\r
1219 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_stopPresence0
\r
1220 (JNIEnv *env, jclass clazz)
\r
1222 LOGI("OcPlatform_stopPresence");
\r
1226 OCStackResult result = OCPlatform::stopPresence();
\r
1228 if (OC_STACK_OK != result)
\r
1230 ThrowOcException(result, "Failed to stop presence");
\r
1233 catch (OCException& e)
\r
1235 LOGE("%s", e.reason().c_str());
\r
1236 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r
1241 * Class: org_iotivity_base_OcPlatform
\r
1242 * Method: subscribePresence0
\r
1243 * Signature: (Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPresenceListener;)Lorg/iotivity/base/OcPresenceHandle;
\r
1245 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribePresence0
\r
1246 (JNIEnv *env, jclass clazz, jstring jHost, jint jConnectivityType, jobject jListener)
\r
1248 LOGD("OcPlatform_subscribePresence");
\r
1252 host = env->GetStringUTFChars(jHost, NULL);
\r
1256 ThrowOcException(OC_STACK_INVALID_PARAM, "onPresenceListener cannot be null");
\r
1260 JniOnPresenceListener *onPresenceListener = AddOnPresenceListener(env, jListener);
\r
1262 SubscribeCallback subscribeCallback = [onPresenceListener](OCStackResult result, const unsigned int nonce,
\r
1263 const std::string& hostAddress)
\r
1265 onPresenceListener->onPresenceCallback(result, nonce, hostAddress);
\r
1268 OCPlatform::OCPresenceHandle presenceHandle;
\r
1271 OCStackResult result = OCPlatform::subscribePresence(
\r
1274 JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),
\r
1275 subscribeCallback);
\r
1277 if (OC_STACK_OK != result)
\r
1279 ThrowOcException(result, "subscribe presence has failed");
\r
1282 catch (OCException& e)
\r
1284 LOGE("%s", e.reason().c_str());
\r
1285 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r
1289 JniOcPresenceHandle* jniPresenceHandle = new JniOcPresenceHandle(onPresenceListener, presenceHandle);
\r
1290 jlong jhandle = reinterpret_cast<jlong>(jniPresenceHandle);
\r
1291 jobject jPresenceHandle = env->NewObject(g_cls_OcPresenceHandle, g_mid_OcPresenceHandle_N_ctor, jhandle);
\r
1292 if (!jPresenceHandle)
\r
1294 LOGE("Failed to create OcPresenceHandle");
\r
1295 delete jniPresenceHandle;
\r
1298 return jPresenceHandle;
\r
1302 * Class: org_iotivity_base_OcPlatform
\r
1303 * Method: subscribePresence1
\r
1304 * Signature: (Ljava/lang/String;Ljava/lang/String;I
\r
1305 Lorg/iotivity/base/OcPlatform/OnPresenceListener;)Lorg/iotivity/base/OcPresenceHandle;
\r
1307 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribePresence1
\r
1308 (JNIEnv *env, jclass clazz, jstring jHost, jstring jResourceType, jint jConnectivityType, jobject jListener)
\r
1310 LOGD("OcPlatform_subscribePresence1");
\r
1314 host = env->GetStringUTFChars(jHost, NULL);
\r
1316 std::string resourceType;
\r
1317 if (jResourceType)
\r
1319 resourceType = env->GetStringUTFChars(jResourceType, NULL);
\r
1323 ThrowOcException(OC_STACK_INVALID_PARAM, "onPresenceListener cannot be null");
\r
1327 JniOnPresenceListener *onPresenceListener = AddOnPresenceListener(env, jListener);
\r
1329 SubscribeCallback subscribeCallback = [onPresenceListener](OCStackResult result,
\r
1330 const unsigned int nonce, const std::string& hostAddress)
\r
1332 onPresenceListener->onPresenceCallback(result, nonce, hostAddress);
\r
1335 OCPlatform::OCPresenceHandle presenceHandle;
\r
1338 OCStackResult result = OCPlatform::subscribePresence(
\r
1342 JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),
\r
1343 subscribeCallback);
\r
1345 if (OC_STACK_OK != result)
\r
1347 ThrowOcException(result, "subscribe presence has failed");
\r
1350 catch (OCException& e)
\r
1352 LOGE("%s", e.reason().c_str());
\r
1353 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r
1357 JniOcPresenceHandle* jniPresenceHandle = new JniOcPresenceHandle(onPresenceListener, presenceHandle);
\r
1358 jlong jhandle = reinterpret_cast<jlong>(jniPresenceHandle);
\r
1359 jobject jPresenceHandle = env->NewObject(g_cls_OcPresenceHandle, g_mid_OcPresenceHandle_N_ctor, jhandle);
\r
1360 if (!jPresenceHandle)
\r
1362 LOGE("Failed to create OcPresenceHandle");
\r
1363 delete jniPresenceHandle;
\r
1365 return jPresenceHandle;
\r
1369 * Class: org_iotivity_base_OcPlatform
\r
1370 * Method: unsubscribePresence0
\r
1371 * Signature: (Lorg/iotivity/base/OcPresenceHandle;)V
\r
1373 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unsubscribePresence0
\r
1374 (JNIEnv *env, jclass clazz, jobject jPresenceHandle)
\r
1376 LOGD("OcPlatform_unsubscribePresence");
\r
1377 if (!jPresenceHandle)
\r
1379 ThrowOcException(OC_STACK_INVALID_PARAM, "presenceHandle cannot be null");
\r
1382 JniOcPresenceHandle* jniPresenceHandle = JniOcPresenceHandle::getJniOcPresenceHandlePtr(env, jPresenceHandle);
\r
1383 if (!jniPresenceHandle) return;
\r
1385 OCPresenceHandle presenceHandle = jniPresenceHandle->getOCPresenceHandle();
\r
1389 OCStackResult result = OCPlatform::unsubscribePresence(presenceHandle);
\r
1391 if (OC_STACK_OK != result)
\r
1393 ThrowOcException(result, "unsubscribe presence has failed");
\r
1396 jweak jwOnPresenceListener = jniPresenceHandle->getJniOnPresenceListener()->getJWListener();
\r
1397 if (jwOnPresenceListener)
\r
1399 RemoveOnPresenceListener(env, jwOnPresenceListener);
\r
1402 catch (OCException& e)
\r
1404 LOGE("%s", e.reason().c_str());
\r
1405 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r
1410 * Class: org_iotivity_base_OcPlatform
\r
1411 * Method: constructResourceObject0
\r
1412 * Signature: (Ljava/lang/String;Ljava/lang/String;IZ[Ljava/lang/String;[Ljava/lang/String;)
\r
1413 Lorg/iotivity/base/OcResource;
\r
1415 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_constructResourceObject0
\r
1416 (JNIEnv *env, jclass clazz, jstring jHost, jstring jUri, jint jConnectivityType,
\r
1417 jboolean jIsObservable, jobjectArray jResourceTypeArray, jobjectArray jInterfaceArray)
\r
1419 LOGD("OcPlatform_constructResourceObject");
\r
1423 host = env->GetStringUTFChars(jHost, NULL);
\r
1428 uri = env->GetStringUTFChars(jUri, NULL);
\r
1430 if (!jResourceTypeArray)
\r
1432 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceTypeList cannot be null");
\r
1435 if (!jInterfaceArray)
\r
1437 ThrowOcException(OC_STACK_INVALID_PARAM, "interfaceList cannot be null");
\r
1441 std::vector<std::string> resourceTypes;
\r
1442 JniUtils::convertJavaStrArrToStrVector(env, jResourceTypeArray, resourceTypes);
\r
1444 std::vector<std::string> interfaces;
\r
1445 JniUtils::convertJavaStrArrToStrVector(env, jInterfaceArray, interfaces);
\r
1447 std::shared_ptr<OCResource> resource = OCPlatform::constructResourceObject(
\r
1450 JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),
\r
1451 static_cast<bool>(jIsObservable),
\r
1457 ThrowOcException(OC_STACK_ERROR, "Failed to create OCResource");
\r
1461 JniOcResource *jniOcResource = new JniOcResource(resource);
\r
1462 jlong handle = reinterpret_cast<jlong>(jniOcResource);
\r
1464 jobject jResource = env->NewObject(g_cls_OcResource, g_mid_OcResource_ctor);
\r
1467 delete jniOcResource;
\r
1470 SetHandle<JniOcResource>(env, jResource, jniOcResource);
\r
1471 if (env->ExceptionCheck())
\r
1473 delete jniOcResource;
\r
1480 * Class: org_iotivity_base_OcPlatform
\r
1481 * Method: sendResponse0
\r
1482 * Signature: (Lorg/iotivity/base/OcResourceResponse;)V
\r
1484 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_sendResponse0
\r
1485 (JNIEnv *env, jclass clazz, jobject jResourceResponse)
\r
1487 LOGD("OcPlatform_sendResponse");
\r
1488 if (!jResourceResponse)
\r
1490 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceResponse cannot be null");
\r
1494 JniOcResourceResponse *jniResponse = JniOcResourceResponse::getJniOcResourceResponsePtr(
\r
1495 env, jResourceResponse);
\r
1496 if (!jniResponse) return;
\r
1500 OCStackResult result = OCPlatform::sendResponse(jniResponse->getOCResourceResponse());
\r
1502 if (OC_STACK_OK != result)
\r
1504 ThrowOcException(result, "failed to send response");
\r
1507 catch (OCException& e)
\r
1509 LOGE("%s", e.reason().c_str());
\r
1510 ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
\r