added OCAccountManager class for Android and JNI method
[platform/upstream/iotivity.git] / android / android_api / base / jni / JniOnGetListener.cpp
index 1a46903..496c5a6 100644 (file)
@@ -23,6 +23,9 @@
 #include "JniOcResource.h"
 #include "JniOcRepresentation.h"
 #include "JniUtils.h"
+#ifdef WITH_CLOUD
+#include "JniOcAccountManager.h"
+#endif
 
 JniOnGetListener::JniOnGetListener(JNIEnv *env, jobject jListener, JniOcResource* owner)
     : m_ownerResource(owner)
@@ -30,6 +33,14 @@ JniOnGetListener::JniOnGetListener(JNIEnv *env, jobject jListener, JniOcResource
     m_jwListener = env->NewWeakGlobalRef(jListener);
 }
 
+#ifdef WITH_CLOUD
+JniOnGetListener::JniOnGetListener(JNIEnv *env, jobject jListener, JniOcAccountManager* owner)
+    : m_ownerAccountManager(owner)
+{
+    m_jwListener = env->NewWeakGlobalRef(jListener);
+}
+#endif
+
 JniOnGetListener::~JniOnGetListener()
 {
     LOGD("~JniOnGetListener");
@@ -169,11 +180,33 @@ void JniOnGetListener::checkExAndRemoveListener(JNIEnv* env)
     {
         jthrowable ex = env->ExceptionOccurred();
         env->ExceptionClear();
+#ifndef WITH_CLOUD
         m_ownerResource->removeOnGetListener(env, m_jwListener);
+#else
+        if (m_ownerResource)
+        {
+            m_ownerResource->removeOnGetListener(env, m_jwListener);
+        }
+        if (m_ownerAccountManager)
+        {
+            m_ownerAccountManager->removeOnGetListener(env, m_jwListener);
+        }
+#endif
         env->Throw((jthrowable)ex);
     }
     else
     {
+#ifndef WITH_CLOUD
         m_ownerResource->removeOnGetListener(env, m_jwListener);
+#else
+        if (m_ownerResource)
+        {
+            m_ownerResource->removeOnGetListener(env, m_jwListener);
+        }
+        if (m_ownerAccountManager)
+        {
+            m_ownerAccountManager->removeOnGetListener(env, m_jwListener);
+        }
+#endif
     }
 }