replace : iotivity -> iotivity-sec
[platform/upstream/iotivity.git] / resource / csdk / connectivity / src / nfc_adapter / android / canfcserver.c
index 0b2d6c9..3fc370e 100644 (file)
@@ -20,7 +20,7 @@
 #include "canfcinterface.h"\r
 \r
 #include "caadapterutils.h"\r
-#include "camutex.h"\r
+#include "octhread.h"\r
 #include "oic_malloc.h"\r
 #include "oic_string.h"\r
 \r
@@ -70,6 +70,12 @@ void CANFCSetPacketReceiveCallback(CANFCPacketReceivedCallback callback)
 CAResult_t SetCreateNdefMessageCallbackfromNative(JNIEnv* env)\r
 {\r
     OIC_LOG(DEBUG, TAG, "SetCreateNdefMessageCallbackfromNative IN");\r
+\r
+    VERIFY_NON_NULL(env, TAG, "env");\r
+    VERIFY_NON_NULL(g_context, TAG, "g_context");\r
+    VERIFY_NON_NULL(g_activity, TAG, "g_activity");\r
+    VERIFY_NON_NULL(g_nfcInterface, TAG, "g_nfcInterface");\r
+\r
     jclass cid_NfcAdapter = (*env)->FindClass(env, "android/nfc/NfcAdapter");\r
     if (!cid_NfcAdapter)\r
     {\r
@@ -122,20 +128,12 @@ CAResult_t CANfcCreateJniInterfaceObject()
 {\r
     OIC_LOG(DEBUG, TAG, "CANfcCreateJniInterfaceObject IN");\r
 \r
-    if (!g_context)\r
-    {\r
-        OIC_LOG(ERROR, TAG, "g_context is null");\r
-        return CA_STATUS_FAILED;\r
-    }\r
-\r
-    if (!g_jvm)\r
-    {\r
-        OIC_LOG(ERROR, TAG, "g_jvm is null");\r
-        return CA_STATUS_FAILED;\r
-    }\r
+    VERIFY_NON_NULL(g_activity, TAG, "g_activity");\r
+    VERIFY_NON_NULL(g_context, TAG, "g_context");\r
+    VERIFY_NON_NULL(g_jvm, TAG, "g_jvm");\r
 \r
     bool isAttached = false;\r
-    JNIEnv* env;\r
+    JNIEnv* env = NULL;\r
     jint res = (*g_jvm)->GetEnv(g_jvm, (void**) &env, JNI_VERSION_1_6);\r
     if (JNI_OK != res)\r
     {\r
@@ -150,7 +148,25 @@ CAResult_t CANfcCreateJniInterfaceObject()
         isAttached = true;\r
     }\r
 \r
-    jclass jni_NfcInterface = (*env)->FindClass(env, "org/iotivity/ca/CaNfcInterface");\r
+    jmethodID mid_getApplicationContext = CAGetJNIMethodID(env, "android/content/Context",\r
+                                                           "getApplicationContext",\r
+                                                           "()Landroid/content/Context;");\r
+\r
+    if (!mid_getApplicationContext)\r
+    {\r
+        OIC_LOG(ERROR, TAG, "Could not get getApplicationContext method");\r
+        return CA_STATUS_FAILED;\r
+    }\r
+\r
+    jobject jApplicationContext = (*env)->CallObjectMethod(env, g_context,\r
+                                                           mid_getApplicationContext);\r
+    if (!jApplicationContext)\r
+    {\r
+        OIC_LOG(ERROR, TAG, "Could not get application context");\r
+        return CA_STATUS_FAILED;\r
+    }\r
+\r
+    jclass jni_NfcInterface = (*env)->FindClass(env, CLASS_NFCINTERFACE);\r
     if (!jni_NfcInterface)\r
     {\r
         OIC_LOG(ERROR, TAG, "Could not get CaNfcInterface class");\r
@@ -166,7 +182,7 @@ CAResult_t CANfcCreateJniInterfaceObject()
     }\r
 \r
     jobject jni_nfcInstance = (*env)->NewObject(env, jni_NfcInterface,\r
-                                                NfcInterfaceConstructorMethod, g_context,\r
+                                                NfcInterfaceConstructorMethod, jApplicationContext,\r
                                                 g_activity);\r
     if (!jni_nfcInstance)\r
     {\r
@@ -227,7 +243,7 @@ CAResult_t CANFCStartServer()
 \r
     OIC_LOG(INFO, TAG, "CANFCStartServer : IN");\r
 \r
-    JNIEnv* env;\r
+    JNIEnv* env = NULL;\r
     jint res = (*g_jvm)->GetEnv(g_jvm, (void**) &env, JNI_VERSION_1_6);\r
     if (JNI_OK != res)\r
     {\r
@@ -242,7 +258,7 @@ CAResult_t CANFCStartServer()
         isAttached = true;\r
     }\r
 \r
-    jclass jni_NfcInterface = (*env)->FindClass(env, "org/iotivity/ca/CaNfcInterface");\r
+    jclass jni_NfcInterface = (*env)->FindClass(env, CLASS_NFCINTERFACE);\r
     if (!jni_NfcInterface)\r
     {\r
         OIC_LOG(ERROR, TAG, "Could not get CaNFCClientInterface class");\r
@@ -325,15 +341,8 @@ Java_org_iotivity_ca_CaNfcInterface_caNativeNfcCreateNdefMessage(JNIEnv *env, jo
         return NULL;\r
     }\r
 \r
-    jclass cid_string = (*env)->FindClass(env, "java/lang/String");\r
-    if (!cid_string)\r
-    {\r
-        OIC_LOG(ERROR, TAG, "Could not get NfcAdapter class for cid_string");\r
-        return NULL;\r
-    }\r
-\r
-    jmethodID mid_getBytes = (*env)->GetMethodID(env, cid_string, "getBytes",\r
-                                                 "(Ljava/lang/String;)[B");\r
+    jmethodID mid_getBytes = CAGetJNIMethodID(env, "java/lang/String", "getBytes",\r
+                                              "(Ljava/lang/String;)[B");\r
     if (!mid_getBytes)\r
     {\r
         OIC_LOG(ERROR, TAG, "Could not get methodId for mid_getBytes");\r
@@ -416,6 +425,8 @@ Java_org_iotivity_ca_CaNfcInterface_caNativeNfcInvokeBeam(JNIEnv *env, jobject o
     OIC_LOG(DEBUG, TAG, "cANativeNfcInvokeBeam : IN");\r
     VERIFY_NON_NULL_RET(env, TAG, "env is null", false);\r
     VERIFY_NON_NULL_RET(obj, TAG, "obj is null", false);\r
+    VERIFY_NON_NULL_RET(g_context, TAG, "g_context is null", false);\r
+    VERIFY_NON_NULL_RET(g_activity, TAG, "g_activity is null", false);\r
 \r
     jclass cid_NfcAdapter = (*env)->FindClass(env, "android/nfc/NfcAdapter");\r
     if (!cid_NfcAdapter)\r
@@ -516,9 +527,11 @@ CAResult_t CANfcSendDataImpl(const CAEndpoint_t * ep, const char* data, uint32_t
 {\r
     VERIFY_NON_NULL(ep, TAG, "CANfcSendDataImpl : endpoint is null");\r
     VERIFY_NON_NULL(data, TAG, "CANfcSendDataImpl : data is null");\r
+    VERIFY_NON_NULL(g_jvm, TAG, "CANfcSendDataImpl : g_jvm is null");\r
+\r
     OIC_LOG(INFO, TAG, "CANfcSendDataImpl moved env outside");\r
     bool isAttached = false;\r
-    JNIEnv* env;\r
+    JNIEnv* env = NULL;\r
     jint res = (*g_jvm)->GetEnv(g_jvm, (void**) &env, JNI_VERSION_1_6);\r
     if (JNI_OK != res)\r
     {\r