Android: Allows to destroy OcResource java object before all of the C++ callbacks...
authorTim Kourt <tim.a.kourt@intel.com>
Thu, 27 Aug 2015 21:27:06 +0000 (14:27 -0700)
committerJon A. Cruz <jonc@osg.samsung.com>
Fri, 28 Aug 2015 23:13:36 +0000 (23:13 +0000)
Change-Id: Idc77b12f7ad6aa3dd8d4cea6e4555eac3f776ab7
Signed-off-by: Tim Kourt <tim.a.kourt@intel.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/2306
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Jon A. Cruz <jonc@osg.samsung.com>
android/android_api/base/jni/JniOcResource.cpp
android/android_api/base/jni/JniOnDeleteListener.cpp
android/android_api/base/jni/JniOnGetListener.cpp
android/android_api/base/jni/JniOnObserveListener.cpp
android/android_api/base/jni/JniOnPostListener.cpp
android/android_api/base/jni/JniOnPutListener.cpp

index 13a8451..d361c81 100644 (file)
@@ -31,6 +31,8 @@ JniOcResource::JniOcResource(std::shared_ptr<OCResource> resource)
 JniOcResource::~JniOcResource()
 {
     LOGD("~JniOcResource()");
+
+    m_sharedResource->cancelObserve();
     m_sharedResource = NULL;
 
     jint envRet;
index ce2b3f8..2a0945a 100644 (file)
@@ -37,7 +37,10 @@ JniOnDeleteListener::~JniOnDeleteListener()
         jint ret;
         JNIEnv *env = GetJNIEnv(ret);
         if (NULL == env) return;
+
         env->DeleteWeakGlobalRef(m_jwListener);
+        m_jwListener = nullptr;
+
         if (JNI_EDETACHED == ret) g_jvm->DetachCurrentThread();
     }
 }
index e2e4484..320fb43 100644 (file)
@@ -39,6 +39,7 @@ JniOnGetListener::~JniOnGetListener()
         if (NULL == env) return;
 
         env->DeleteWeakGlobalRef(m_jwListener);
+        m_jwListener = nullptr;
 
         if (JNI_EDETACHED == ret) g_jvm->DetachCurrentThread();
     }
index 934755f..869ab89 100644 (file)
@@ -39,6 +39,7 @@ JniOnObserveListener::~JniOnObserveListener()
         if (NULL == env) return;
 
         env->DeleteWeakGlobalRef(m_jwListener);
+        m_jwListener = nullptr;
 
         if (JNI_EDETACHED == ret) g_jvm->DetachCurrentThread();
     }
index 549120b..a6778bc 100644 (file)
@@ -39,6 +39,7 @@ JniOnPostListener::~JniOnPostListener()
         if (NULL == env) return;
 
         env->DeleteWeakGlobalRef(m_jwListener);
+        m_jwListener = nullptr;
 
         if (JNI_EDETACHED == ret) g_jvm->DetachCurrentThread();
     }
index 651db29..d1c6529 100644 (file)
@@ -39,6 +39,7 @@ JniOnPutListener::~JniOnPutListener()
         if (NULL == env) return;
 
         env->DeleteWeakGlobalRef(m_jwListener);
+        m_jwListener = nullptr;
 
         if (JNI_EDETACHED == ret) g_jvm->DetachCurrentThread();
     }