projects
/
platform
/
upstream
/
iotivity.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added OCAccountManager class for Android and JNI method
[platform/upstream/iotivity.git]
/
android
/
android_api
/
base
/
jni
/
JniOnGetListener.cpp
diff --git
a/android/android_api/base/jni/JniOnGetListener.cpp
b/android/android_api/base/jni/JniOnGetListener.cpp
index
2bc8624
..
496c5a6
100644
(file)
--- a/
android/android_api/base/jni/JniOnGetListener.cpp
+++ b/
android/android_api/base/jni/JniOnGetListener.cpp
@@
-23,6
+23,9
@@
#include "JniOcResource.h"
#include "JniOcRepresentation.h"
#include "JniUtils.h"
#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)
JniOnGetListener::JniOnGetListener(JNIEnv *env, jobject jListener, JniOcResource* owner)
: m_ownerResource(owner)
@@
-30,34
+33,54
@@
JniOnGetListener::JniOnGetListener(JNIEnv *env, jobject jListener, JniOcResource
m_jwListener = env->NewWeakGlobalRef(jListener);
}
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");
if (m_jwListener)
{
JniOnGetListener::~JniOnGetListener()
{
LOGD("~JniOnGetListener");
if (m_jwListener)
{
- jint ret;
+ jint ret
= JNI_ERR
;
JNIEnv *env = GetJNIEnv(ret);
JNIEnv *env = GetJNIEnv(ret);
- if (nullptr == env) return;
+ if (nullptr == env)
+ {
+ return;
+ }
env->DeleteWeakGlobalRef(m_jwListener);
m_jwListener = nullptr;
env->DeleteWeakGlobalRef(m_jwListener);
m_jwListener = nullptr;
- if (JNI_EDETACHED == ret) g_jvm->DetachCurrentThread();
+ if (JNI_EDETACHED == ret)
+ {
+ g_jvm->DetachCurrentThread();
+ }
}
}
void JniOnGetListener::onGetCallback(const HeaderOptions& headerOptions,
const OCRepresentation& ocRepresentation, const int eCode)
{
}
}
void JniOnGetListener::onGetCallback(const HeaderOptions& headerOptions,
const OCRepresentation& ocRepresentation, const int eCode)
{
- jint envRet;
+ jint envRet
= JNI_ERR
;
JNIEnv *env = GetJNIEnv(envRet);
JNIEnv *env = GetJNIEnv(envRet);
- if (nullptr == env) return;
+ if (nullptr == env)
+ {
+ return;
+ }
jobject jListener = env->NewLocalRef(m_jwListener);
if (!jListener)
{
checkExAndRemoveListener(env);
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);
return;
}
jclass clsL = env->GetObjectClass(jListener);
@@
-65,7
+88,10
@@
void JniOnGetListener::onGetCallback(const HeaderOptions& headerOptions,
if (!clsL)
{
checkExAndRemoveListener(env);
if (!clsL)
{
checkExAndRemoveListener(env);
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+ if (JNI_EDETACHED == envRet)
+ {
+ g_jvm->DetachCurrentThread();
+ }
return;
}
return;
}
@@
-75,14
+101,20
@@
void JniOnGetListener::onGetCallback(const HeaderOptions& headerOptions,
if (!ex)
{
checkExAndRemoveListener(env);
if (!ex)
{
checkExAndRemoveListener(env);
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+ if (JNI_EDETACHED == envRet)
+ {
+ g_jvm->DetachCurrentThread();
+ }
return;
}
jmethodID midL = env->GetMethodID(clsL, "onGetFailed", "(Ljava/lang/Throwable;)V");
if (!midL)
{
checkExAndRemoveListener(env);
return;
}
jmethodID midL = env->GetMethodID(clsL, "onGetFailed", "(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);
return;
}
env->CallVoidMethod(jListener, midL, ex);
@@
-93,7
+125,10
@@
void JniOnGetListener::onGetCallback(const HeaderOptions& headerOptions,
if (!jHeaderOptionList)
{
checkExAndRemoveListener(env);
if (!jHeaderOptionList)
{
checkExAndRemoveListener(env);
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+ if (JNI_EDETACHED == envRet)
+ {
+ g_jvm->DetachCurrentThread();
+ }
return;
}
return;
}
@@
-105,7
+140,10
@@
void JniOnGetListener::onGetCallback(const HeaderOptions& headerOptions,
{
delete rep;
checkExAndRemoveListener(env);
{
delete rep;
checkExAndRemoveListener(env);
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+ if (JNI_EDETACHED == envRet)
+ {
+ g_jvm->DetachCurrentThread();
+ }
return;
}
return;
}
@@
-115,7
+153,10
@@
void JniOnGetListener::onGetCallback(const HeaderOptions& headerOptions,
{
delete rep;
checkExAndRemoveListener(env);
{
delete rep;
checkExAndRemoveListener(env);
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+ if (JNI_EDETACHED == envRet)
+ {
+ g_jvm->DetachCurrentThread();
+ }
return;
}
env->CallVoidMethod(jListener, midL, jHeaderOptionList, jRepresentation);
return;
}
env->CallVoidMethod(jListener, midL, jHeaderOptionList, jRepresentation);
@@
-127,7
+168,10
@@
void JniOnGetListener::onGetCallback(const HeaderOptions& headerOptions,
}
checkExAndRemoveListener(env);
}
checkExAndRemoveListener(env);
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+ if (JNI_EDETACHED == envRet)
+ {
+ g_jvm->DetachCurrentThread();
+ }
}
void JniOnGetListener::checkExAndRemoveListener(JNIEnv* env)
}
void JniOnGetListener::checkExAndRemoveListener(JNIEnv* env)
@@
-136,11
+180,33
@@
void JniOnGetListener::checkExAndRemoveListener(JNIEnv* env)
{
jthrowable ex = env->ExceptionOccurred();
env->ExceptionClear();
{
jthrowable ex = env->ExceptionOccurred();
env->ExceptionClear();
+#ifndef WITH_CLOUD
m_ownerResource->removeOnGetListener(env, m_jwListener);
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
{
env->Throw((jthrowable)ex);
}
else
{
+#ifndef WITH_CLOUD
m_ownerResource->removeOnGetListener(env, m_jwListener);
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
}
}
-}
\ No newline at end of file
+}