X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=android%2Fandroid_api%2Fbase%2Fjni%2FJniOnPostListener.cpp;h=b11c376ee5bea7d57709817ba4bad17f814f6f2c;hb=refs%2Ftags%2Faccepted%2Ftizen%2F4.0%2Funified%2F20181213.000255;hp=575748ef7c33d8d6f8ac4f00e3ffc6caec0dd3bf;hpb=b2f2076a79aee404a8c01d2d01e576fce780558d;p=platform%2Fupstream%2Fiotivity.git diff --git a/android/android_api/base/jni/JniOnPostListener.cpp b/android/android_api/base/jni/JniOnPostListener.cpp index 575748e..b11c376 100644 --- a/android/android_api/base/jni/JniOnPostListener.cpp +++ b/android/android_api/base/jni/JniOnPostListener.cpp @@ -24,8 +24,8 @@ #include "JniOcRepresentation.h" #include "JniUtils.h" -JniOnPostListener::JniOnPostListener(JNIEnv *env, jobject jListener, JniOcResource* owner) - : m_ownerResource(owner) +JniOnPostListener::JniOnPostListener(JNIEnv *env, jobject jListener, RemoveListenerCallback removeListener) + : m_removeListener(removeListener) { m_jwListener = env->NewWeakGlobalRef(jListener); } @@ -34,53 +34,75 @@ JniOnPostListener::~JniOnPostListener() { if (m_jwListener) { - jint ret; + jint ret = JNI_ERR; JNIEnv *env = GetJNIEnv(ret); - if (nullptr == env) return; + if (nullptr == env) + { + return; + } env->DeleteWeakGlobalRef(m_jwListener); m_jwListener = nullptr; - if (JNI_EDETACHED == ret) g_jvm->DetachCurrentThread(); + if (JNI_EDETACHED == ret) + { + g_jvm->DetachCurrentThread(); + } } } void JniOnPostListener::onPostCallback(const HeaderOptions& headerOptions, const OCRepresentation& ocRepresentation, const int eCode) { - jint envRet; + jint envRet = JNI_ERR; JNIEnv *env = GetJNIEnv(envRet); - if (nullptr == env) return; + if (nullptr == env) + { + return; + } jobject jListener = env->NewLocalRef(m_jwListener); if (!jListener) { checkExAndRemoveListener(env); - if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread(); + if (JNI_EDETACHED == envRet) + { + g_jvm->DetachCurrentThread(); + } return; } jclass clsL = env->GetObjectClass(jListener); if (!clsL) { checkExAndRemoveListener(env); - if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread(); + if (JNI_EDETACHED == envRet) + { + g_jvm->DetachCurrentThread(); + } return; } - if (OC_STACK_OK != eCode && OC_STACK_RESOURCE_CREATED != eCode) + if (OC_STACK_OK != eCode && OC_STACK_RESOURCE_CREATED != eCode && + OC_STACK_RESOURCE_CHANGED != eCode) { jobject ex = GetOcException(eCode, "stack error in onPostCallback"); if (!ex) { checkExAndRemoveListener(env); - if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread(); + if (JNI_EDETACHED == envRet) + { + g_jvm->DetachCurrentThread(); + } return; } jmethodID midL = env->GetMethodID(clsL, "onPostFailed", "(Ljava/lang/Throwable;)V"); if (!midL) { checkExAndRemoveListener(env); - if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread(); + if (JNI_EDETACHED == envRet) + { + g_jvm->DetachCurrentThread(); + } return; } env->CallVoidMethod(jListener, midL, ex); @@ -91,7 +113,10 @@ void JniOnPostListener::onPostCallback(const HeaderOptions& headerOptions, if (!jHeaderOptionList) { checkExAndRemoveListener(env); - if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread(); + if (JNI_EDETACHED == envRet) + { + g_jvm->DetachCurrentThread(); + } return; } @@ -103,7 +128,10 @@ void JniOnPostListener::onPostCallback(const HeaderOptions& headerOptions, { delete rep; checkExAndRemoveListener(env); - if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread(); + if (JNI_EDETACHED == envRet) + { + g_jvm->DetachCurrentThread(); + } return; } @@ -112,7 +140,10 @@ void JniOnPostListener::onPostCallback(const HeaderOptions& headerOptions, if (!midL) { checkExAndRemoveListener(env); - if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread(); + if (JNI_EDETACHED == envRet) + { + g_jvm->DetachCurrentThread(); + } return; } @@ -125,7 +156,10 @@ void JniOnPostListener::onPostCallback(const HeaderOptions& headerOptions, } checkExAndRemoveListener(env); - if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread(); + if (JNI_EDETACHED == envRet) + { + g_jvm->DetachCurrentThread(); + } } void JniOnPostListener::checkExAndRemoveListener(JNIEnv* env) @@ -134,11 +168,11 @@ void JniOnPostListener::checkExAndRemoveListener(JNIEnv* env) { jthrowable ex = env->ExceptionOccurred(); env->ExceptionClear(); - m_ownerResource->removeOnPostListener(env, m_jwListener); + m_removeListener(env, m_jwListener); env->Throw((jthrowable)ex); } else { - m_ownerResource->removeOnPostListener(env, m_jwListener); + m_removeListener(env, m_jwListener); } -} \ No newline at end of file +}