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