Imported Upstream version 1.0.1
[platform/upstream/iotivity.git] / service / easy-setup / sdk / mediator / android / jni / jniutil / src / jni_object.cpp
1 #include "jni_object.h"
2
3 //#define NULL 0
4 #define LOG_TAG "TM_JObject"
5
6 JObject::JObject(JNIEnv *env) :
7                 m_pEnv(env), m_pObject(NULL), m_pClazz(NULL), m_fIsNewObject(true) {
8 }
9
10 JObject::JObject(JNIEnv *env, jobject obj) :
11                 m_pEnv(NULL), m_pObject(NULL), m_pClazz(NULL), m_fIsNewObject(false) {
12         if (NULL == env || NULL == obj) {
13                 return;
14         }
15
16         m_pEnv = env;
17         m_pObject = obj;
18         m_pClazz = m_pEnv->GetObjectClass(obj);
19 }
20
21 JObject::JObject(JNIEnv *env, const char *classPath) :
22                 m_pEnv(NULL), m_pObject(NULL), m_pClazz(NULL), m_fIsNewObject(true) {
23         if (NULL == env || NULL == classPath) {
24                 LOGI("JObject Invalid parameters");
25                 return;
26         }
27
28         m_pEnv = env;
29         //m_pClazz = GetJClass( classPath );
30
31         if (NULL == m_pClazz) {
32                 LOGE("GetJClass failed [%s]", classPath);
33                 return;
34         }
35
36         jmethodID mid = env->GetMethodID(m_pClazz, "<init>", "()V");
37         if (NULL == mid) {
38                 LOGE("GetMethodID failed [%s]", classPath);
39                 return;
40         }
41
42         m_pObject = env->NewObject(m_pClazz, mid);
43 }
44
45 JObject::~JObject() {
46         if (m_pEnv) {
47                 if (m_pObject && m_fIsNewObject) {
48                         m_pEnv->DeleteLocalRef(m_pObject);
49                 }
50
51                 if (m_pClazz && !m_fIsNewObject) {
52                         m_pEnv->DeleteLocalRef(m_pClazz);
53                 }
54         }
55 }
56
57 jobject JObject::getObject() const {
58         return m_pObject;
59 }
60
61 void JObject::detachObject() {
62         if (m_fIsNewObject) {
63                 m_fIsNewObject = false;
64                 m_pClazz = NULL;
65         }
66 }
67