-/*\r
-* //******************************************************************\r
-* //\r
-* // Copyright 2015 Intel Corporation.\r
-* //\r
-* //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
-* //\r
-* // Licensed under the Apache License, Version 2.0 (the "License");\r
-* // you may not use this file except in compliance with the License.\r
-* // You may obtain a copy of the License at\r
-* //\r
-* // http://www.apache.org/licenses/LICENSE-2.0\r
-* //\r
-* // Unless required by applicable law or agreed to in writing, software\r
-* // distributed under the License is distributed on an "AS IS" BASIS,\r
-* // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-* // See the License for the specific language governing permissions and\r
-* // limitations under the License.\r
-* //\r
-* //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
-*/\r
-#include <jni.h>\r
-#include <android/log.h>\r
-#include "OCApi.h"\r
-\r
-#ifndef _Included_org_iotivity_base_ocstack\r
-#define _Included_org_iotivity_base_ocstack\r
-\r
-#define TAG "OIC-JNI"\r
-\r
-#define JNI_CURRENT_VERSION JNI_VERSION_1_6\r
-\r
-#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, TAG, __VA_ARGS__)\r
-#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, TAG, __VA_ARGS__)\r
-#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, TAG, __VA_ARGS__)\r
-\r
-#define JNI_EXCEPTION 1000\r
-#define JNI_NO_NATIVE_POINTER 1001\r
-#define JNI_INVALID_VALUE 1002\r
-#define JNI_NO_SUCH_KEY 1003\r
-\r
-jobject getOcException(JNIEnv* env, const char* file, const char* functionName, const int line,\r
- const int code, const char* message);\r
-void throwOcException(JNIEnv* env, jobject ex);\r
-#define GetOcException(code, message) getOcException (env,__FILE__,__func__,__LINE__,code,message)\r
-#define ThrowOcException(code, message) throwOcException (env, GetOcException(code, message))\r
-\r
-extern JavaVM* g_jvm;\r
-\r
-extern jclass g_cls_Integer;\r
-extern jclass g_cls_int1DArray;\r
-extern jclass g_cls_int2DArray;\r
-extern jclass g_cls_Double;\r
-extern jclass g_cls_double1DArray;\r
-extern jclass g_cls_double2DArray;\r
-extern jclass g_cls_Boolean;\r
-extern jclass g_cls_boolean1DArray;\r
-extern jclass g_cls_boolean2DArray;\r
-extern jclass g_cls_String;\r
-extern jclass g_cls_String1DArray;\r
-extern jclass g_cls_String2DArray;\r
-extern jclass g_cls_LinkedList;\r
-extern jclass g_cls_Map;\r
-extern jclass g_cls_MapEntry;\r
-extern jclass g_cls_Set;\r
-extern jclass g_cls_Iterator;\r
-extern jclass g_cls_HashMap;\r
-extern jclass g_cls_OcException;\r
-extern jclass g_cls_OcResource;\r
-extern jclass g_cls_OcRepresentation;\r
-extern jclass g_cls_OcRepresentation1DArray;\r
-extern jclass g_cls_OcRepresentation2DArray;\r
-extern jclass g_cls_OcResourceRequest;\r
-extern jclass g_cls_OcResourceResponse;\r
-extern jclass g_cls_OcResourceHandle;\r
-extern jclass g_cls_OcPresenceHandle;\r
-extern jclass g_cls_OcRequestHandle;\r
-extern jclass g_cls_OcPresenceStatus;\r
-extern jclass g_cls_OcHeaderOption;\r
-extern jclass g_cls_ObservationInfo;\r
-extern jclass g_cls_OcResourceIdentifier;\r
-\r
-extern jmethodID g_mid_Integer_ctor;\r
-extern jmethodID g_mid_Double_ctor;\r
-extern jmethodID g_mid_Boolean_ctor;\r
-extern jmethodID g_mid_LinkedList_ctor;\r
-extern jmethodID g_mid_LinkedList_add_object;\r
-extern jmethodID g_mid_Map_entrySet;\r
-extern jmethodID g_mid_MapEntry_getKey;\r
-extern jmethodID g_mid_MapEntry_getValue;\r
-extern jmethodID g_mid_Set_iterator;\r
-extern jmethodID g_mid_Iterator_hasNext;\r
-extern jmethodID g_mid_Iterator_next;\r
-extern jmethodID g_mid_HashMap_ctor;\r
-extern jmethodID g_mid_HashMap_put;\r
-extern jmethodID g_mid_OcException_ctor;\r
-extern jmethodID g_mid_OcException_setNativeExceptionLocation;\r
-extern jmethodID g_mid_OcResource_ctor;\r
-extern jmethodID g_mid_OcRepresentation_N_ctor;\r
-extern jmethodID g_mid_OcRepresentation_N_ctor_bool;\r
-extern jmethodID g_mid_OcResourceRequest_N_ctor;\r
-extern jmethodID g_mid_OcResourceResponse_N_ctor;\r
-extern jmethodID g_mid_OcResourceHandle_N_ctor;\r
-extern jmethodID g_mid_OcPresenceHandle_N_ctor;\r
-extern jmethodID g_mid_OcRequestHandle_N_ctor;\r
-extern jmethodID g_mid_OcHeaderOption_ctor;\r
-extern jmethodID g_mid_OcHeaderOption_get_id;\r
-extern jmethodID g_mid_OcHeaderOption_get_data;\r
-extern jmethodID g_mid_ObservationInfo_N_ctor;\r
-extern jmethodID g_mid_OcPresenceStatus_get;\r
-extern jmethodID g_mid_OcResourceIdentifier_N_ctor;\r
-\r
-typedef void(*RemoveListenerCallback)(JNIEnv* env, jobject jListener);\r
-\r
-static jfieldID GetHandleField(JNIEnv *env, jobject jobj)\r
-{\r
- jclass cls = env->GetObjectClass(jobj);\r
- return env->GetFieldID(cls, "mNativeHandle", "J");\r
-}\r
-\r
-template <typename T>\r
-static T *GetHandle(JNIEnv *env, jobject jobj)\r
-{\r
- jlong handle = env->GetLongField(jobj, GetHandleField(env, jobj));\r
- return reinterpret_cast<T *>(handle);\r
-}\r
-\r
-template <typename T>\r
-static void SetHandle(JNIEnv *env, jobject jobj, T *type)\r
-{\r
- jlong handle = reinterpret_cast<jlong>(type);\r
-\r
- env->SetLongField(jobj, GetHandleField(env, jobj), handle);\r
-}\r
-\r
-static JNIEnv* GetJNIEnv(jint& ret)\r
-{\r
- JNIEnv *env = NULL;\r
-\r
- ret = g_jvm->GetEnv((void **)&env, JNI_CURRENT_VERSION);\r
- switch (ret) {\r
- case JNI_OK:\r
- return env;\r
- case JNI_EDETACHED:\r
- if (g_jvm->AttachCurrentThread(&env, NULL) < 0)\r
- {\r
- LOGE("Failed to get the environment");\r
- return nullptr;\r
- }\r
- else\r
- {\r
- return env;\r
- }\r
-\r
- case JNI_EVERSION:\r
- LOGE("JNI version not supported");\r
- default:\r
- LOGE("Failed to get the environment");\r
- return nullptr;\r
- }\r
-}\r
-\r
-static void DuplicateString(char ** targetString, std::string sourceString)\r
-{\r
- *targetString = new char[sourceString.length() + 1];\r
- strncpy(*targetString, sourceString.c_str(), (sourceString.length() + 1));\r
-}\r
-\r
-#endif // _Included_org_iotivity_base_ocstack
\ No newline at end of file
+/*
+* //******************************************************************
+* //
+* // Copyright 2015 Intel Corporation.
+* //
+* //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+* //
+* // Licensed under the Apache License, Version 2.0 (the "License");
+* // you may not use this file except in compliance with the License.
+* // You may obtain a copy of the License at
+* //
+* // http://www.apache.org/licenses/LICENSE-2.0
+* //
+* // Unless required by applicable law or agreed to in writing, software
+* // distributed under the License is distributed on an "AS IS" BASIS,
+* // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* // See the License for the specific language governing permissions and
+* // limitations under the License.
+* //
+* //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+*/
+#include <jni.h>
+#include <android/log.h>
+#include "OCApi.h"
+
+#ifndef _Included_org_iotivity_base_ocstack
+#define _Included_org_iotivity_base_ocstack
+
+#define TAG "OIC-JNI"
+
+#define JNI_CURRENT_VERSION JNI_VERSION_1_6
+
+#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, TAG, __VA_ARGS__)
+#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, TAG, __VA_ARGS__)
+#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, TAG, __VA_ARGS__)
+
+#define JNI_EXCEPTION 1000
+#define JNI_NO_NATIVE_POINTER 1001
+#define JNI_INVALID_VALUE 1002
+#define JNI_NO_SUCH_KEY 1003
+#define JNI_NO_SUPPORT 1004
+
+jobject getOcException(JNIEnv* env, const char* file, const char* functionName, const int line,
+ const int code, const char* message);
+void throwOcException(JNIEnv* env, jobject ex);
+#define GetOcException(code, message) getOcException (env,__FILE__,__func__,__LINE__,code,message)
+#define ThrowOcException(code, message) throwOcException (env, GetOcException(code, message))
+
+extern JavaVM* g_jvm;
+
+extern jclass g_cls_byte1DArray;
+extern jclass g_cls_byte2DArray;
+extern jclass g_cls_byte3DArray;
+extern jclass g_cls_Integer;
+extern jclass g_cls_int1DArray;
+extern jclass g_cls_int2DArray;
+extern jclass g_cls_Double;
+extern jclass g_cls_double1DArray;
+extern jclass g_cls_double2DArray;
+extern jclass g_cls_Boolean;
+extern jclass g_cls_boolean1DArray;
+extern jclass g_cls_boolean2DArray;
+extern jclass g_cls_String;
+extern jclass g_cls_String1DArray;
+extern jclass g_cls_String2DArray;
+extern jclass g_cls_LinkedList;
+extern jclass g_cls_Map;
+extern jclass g_cls_MapEntry;
+extern jclass g_cls_Set;
+extern jclass g_cls_Iterator;
+extern jclass g_cls_HashMap;
+extern jclass g_cls_OcException;
+extern jclass g_cls_OcResource;
+extern jclass g_cls_OcRepresentation;
+extern jclass g_cls_OcRepresentation1DArray;
+extern jclass g_cls_OcRepresentation2DArray;
+extern jclass g_cls_OcResourceRequest;
+extern jclass g_cls_OcResourceResponse;
+extern jclass g_cls_OcResourceHandle;
+extern jclass g_cls_OcPresenceHandle;
+extern jclass g_cls_OcRequestHandle;
+extern jclass g_cls_OcPresenceStatus;
+extern jclass g_cls_OcHeaderOption;
+extern jclass g_cls_ObservationInfo;
+extern jclass g_cls_OcResourceIdentifier;
+extern jclass g_cls_OcProvisionResult;
+extern jclass g_cls_OcSecureResource;
+extern jclass g_cls_OcOicSecAcl;
+extern jclass g_cls_OcOicSecPdAcl;
+extern jclass g_cls_OcDirectPairDevice;
+#ifdef WITH_CLOUD
+extern jclass g_cls_OcAccountManager;
+#endif
+#ifdef __WITH_TLS__
+extern jclass g_cls_OcCloudProvisioning;
+#endif
+
+extern jclass g_cls_OcOicSecAcl_ace;
+extern jclass g_cls_OcOicSecAcl_resr;
+extern jclass g_cls_OcOicSecAcl_validity;
+
+extern jmethodID g_mid_Integer_ctor;
+extern jmethodID g_mid_Double_ctor;
+extern jmethodID g_mid_Boolean_ctor;
+extern jmethodID g_mid_LinkedList_ctor;
+extern jmethodID g_mid_LinkedList_add_object;
+extern jmethodID g_mid_Map_entrySet;
+extern jmethodID g_mid_MapEntry_getKey;
+extern jmethodID g_mid_MapEntry_getValue;
+extern jmethodID g_mid_Set_iterator;
+extern jmethodID g_mid_Iterator_hasNext;
+extern jmethodID g_mid_Iterator_next;
+extern jmethodID g_mid_HashMap_ctor;
+extern jmethodID g_mid_HashMap_put;
+extern jmethodID g_mid_OcException_ctor;
+extern jmethodID g_mid_OcException_setNativeExceptionLocation;
+extern jmethodID g_mid_OcResource_ctor;
+extern jmethodID g_mid_OcRepresentation_N_ctor;
+extern jmethodID g_mid_OcRepresentation_N_ctor_bool;
+extern jmethodID g_mid_OcResourceRequest_N_ctor;
+extern jmethodID g_mid_OcResourceResponse_N_ctor;
+extern jmethodID g_mid_OcResourceHandle_N_ctor;
+extern jmethodID g_mid_OcPresenceHandle_N_ctor;
+extern jmethodID g_mid_OcRequestHandle_N_ctor;
+extern jmethodID g_mid_OcHeaderOption_ctor;
+extern jmethodID g_mid_OcHeaderOption_get_id;
+extern jmethodID g_mid_OcHeaderOption_get_data;
+extern jmethodID g_mid_ObservationInfo_N_ctor;
+extern jmethodID g_mid_OcPresenceStatus_get;
+extern jmethodID g_mid_OcResourceIdentifier_N_ctor;
+extern jmethodID g_mid_OcProvisionResult_ctor;
+extern jmethodID g_mid_OcSecureResource_ctor;
+extern jmethodID g_mid_OcDirectPairDevice_ctor;
+extern jmethodID g_mid_OcDirectPairDevice_dev_ctor;
+#ifdef WITH_CLOUD
+extern jmethodID g_mid_OcAccountManager_ctor;
+#endif
+#ifdef __WITH_TLS__
+extern jmethodID g_mid_OcCloudProvisioning_getIP;
+extern jmethodID g_mid_OcCloudProvisioning_getPort;
+#endif
+
+extern jmethodID g_mid_OcOicSecAcl_get_rownerID;
+extern jmethodID g_mid_OcOicSecAcl_get_aces;
+extern jmethodID g_mid_OcOicSecAcl_ace_get_subjectID;
+extern jmethodID g_mid_OcOicSecAcl_ace_get_permissions;
+extern jmethodID g_mid_OcOicSecAcl_ace_get_resources;
+extern jmethodID g_mid_OcOicSecAcl_ace_get_validities;
+extern jmethodID g_mid_OcOicSecAcl_resr_get_href;
+extern jmethodID g_mid_OcOicSecAcl_resr_get_rel;
+extern jmethodID g_mid_OcOicSecAcl_resr_get_types;
+extern jmethodID g_mid_OcOicSecAcl_resr_get_typeLen;
+extern jmethodID g_mid_OcOicSecAcl_resr_get_interfaces;
+extern jmethodID g_mid_OcOicSecAcl_resr_get_interfaceLen;
+extern jmethodID g_mid_OcOicSecAcl_validity_get_getPeriod;
+extern jmethodID g_mid_OcOicSecAcl_validity_get_recurrences;
+extern jmethodID g_mid_OcOicSecAcl_validity_get_recurrenceLen;
+extern jmethodID g_mid_OcOicSecPdAcl_get_resources_cnt;
+extern jmethodID g_mid_OcOicSecPdAcl_get_resources;
+extern jmethodID g_mid_OcOicSecPdAcl_get_permission;
+extern jmethodID g_mid_OcOicSecPdAcl_get_periods_cnt;
+extern jmethodID g_mid_OcOicSecPdAcl_get_periods;
+extern jmethodID g_mid_OcOicSecPdAcl_get_recurrences;
+
+
+//typedef void(*RemoveListenerCallback)(JNIEnv* env, jobject jListener);
+typedef std::function<void(JNIEnv* env, jobject jListener)> RemoveListenerCallback;
+
+static jfieldID GetHandleField(JNIEnv *env, jobject jobj)
+{
+ jclass cls = env->GetObjectClass(jobj);
+ return env->GetFieldID(cls, "mNativeHandle", "J");
+}
+
+template <typename T>
+static T *GetHandle(JNIEnv *env, jobject jobj)
+{
+ jlong handle = env->GetLongField(jobj, GetHandleField(env, jobj));
+ return reinterpret_cast<T *>(handle);
+}
+
+template <typename T>
+static void SetHandle(JNIEnv *env, jobject jobj, T *type)
+{
+ jlong handle = reinterpret_cast<jlong>(type);
+
+ env->SetLongField(jobj, GetHandleField(env, jobj), handle);
+}
+
+static JNIEnv* GetJNIEnv(jint& ret)
+{
+ JNIEnv *env = nullptr;
+
+ ret = g_jvm->GetEnv((void **)&env, JNI_CURRENT_VERSION);
+ switch (ret)
+ {
+ case JNI_OK:
+ return env;
+ case JNI_EDETACHED:
+ if (g_jvm->AttachCurrentThread(&env, nullptr) < 0)
+ {
+ LOGE("Failed to get the environment");
+ return nullptr;
+ }
+ else
+ {
+ return env;
+ }
+
+ case JNI_EVERSION:
+ LOGE("JNI version not supported");
+ break;
+ default:
+ LOGE("Failed to get the environment");
+ return nullptr;
+ }
+ return nullptr;
+}
+
+static void DuplicateString(char ** targetString, std::string sourceString)
+{
+ *targetString = new char[sourceString.length() + 1];
+ strncpy(*targetString, sourceString.c_str(), (sourceString.length() + 1));
+}
+
+#endif // _Included_org_iotivity_base_ocstack