Merge tizen_5.0 codes into tizen_4.0
[platform/upstream/iotivity.git] / android / android_api / base / jni / JniListenerManager.h
index b082f7d..6912424 100644 (file)
@@ -32,7 +32,7 @@ template <class T>
 class JniListenerManager
 {
 public:
-    T* addListener(JNIEnv* env, jobject jListener, JniOcResource* owner)
+    T* addListener(JNIEnv* env, jobject jListener, RemoveListenerCallback removeListener)
     {
         T *onEventListener = nullptr;
 
@@ -51,9 +51,10 @@ public:
                 break;
             }
         }
+
         if (!onEventListener)
         {
-            onEventListener = new T(env, jListener, owner);
+            onEventListener = new T(env, jListener, removeListener);
             jobject jgListener = env->NewGlobalRef(jListener);
 
             if (jgListener)
@@ -66,9 +67,12 @@ public:
             {
                 LOGD("OnEventListener: Failed to create global listener ref.");
                 delete onEventListener;
+                m_mapMutex.unlock();
+                return nullptr;
             }
             LOGD("OnEventListener: new listener");
         }
+
         m_mapMutex.unlock();
         return onEventListener;
     }
@@ -94,7 +98,6 @@ public:
                     T* listener = refPair.first;
                     delete listener;
                     m_listenerMap.erase(it);
-
                     LOGI("OnEventListener is removed");
                 }
                 break;
@@ -106,6 +109,7 @@ public:
     void removeAllListeners(JNIEnv* env)
     {
         m_mapMutex.lock();
+        LOGI("All listeners are removed");
 
         for (auto& pair : m_listenerMap)
         {