Merge tizen_5.0 codes into tizen_4.0
[platform/upstream/iotivity.git] / android / android_api / base / jni / JniOcStack.h
index bd0ddd5..cc530d6 100644 (file)
-/*\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