Fix Exception issue on Add and remove event listener
authorJoohyun Kim <joohyune.kim@samsung.com>
Fri, 2 Aug 2013 08:48:06 +0000 (17:48 +0900)
committerJoohyun Kim <joohyune.kim@samsung.com>
Fri, 2 Aug 2013 08:48:06 +0000 (17:48 +0900)
Change-Id: I3bfde81d73b3677811e744b3f1da7fc4d6946654
Signed-off-by: Joohyun Kim <joohyune.kim@samsung.com>
src/system/FSys_SettingClientEx.cpp
src/system/FSys_SettingClientEx.h

index 96cb239..bcaa8bc 100644 (file)
@@ -1001,10 +1001,13 @@ _SettingClientEx::AddSettingEventListener(ISettingEventListener& listener)
        SysTryReturnResult(NID_SYS, pSettingEvent != null, E_SYSTEM, "listener event is not ready.");
 
        result r = pSettingEvent->AddSettingEventListener(listener);
-       if (r == E_INVALID_OPERATION)
+
+       if (r == E_OBJ_ALREADY_EXIST)
        {
-               r = E_SYSTEM;
+               SysLogException(NID_SYS, E_OBJ_ALREADY_EXIST, "It is already registered.");
+               return E_OBJ_ALREADY_EXIST;
        }
+
        SysTryReturnResult(NID_SYS, r == E_SUCCESS, E_SYSTEM, "It is failed to add event listener.");
 
        r = SubscribeEvent();
@@ -1021,7 +1024,13 @@ _SettingClientEx::RemoveSettingEventListener(ISettingEventListener& listener)
        SysTryReturnResult(NID_SYS, pSettingEvent != null, E_SYSTEM, "listener event is not ready.");
 
        result r = pSettingEvent->RemoveSettingEventListener(listener);
-       SysTryReturnResult(NID_SYS, r == E_SUCCESS, E_SYSTEM, "It is failed to remove event listener.");
+       
+       if (r == E_OBJ_NOT_FOUND)
+       {
+               SysLogException(NID_SYS, E_OBJ_NOT_FOUND, "It is not registered.");
+               return E_OBJ_NOT_FOUND;
+       }
+       SysTryReturnResult(NID_SYS, r == E_SUCCESS, E_SYSTEM, "It is failed to remove event listener.[%s]", GetErrorMessage(r));
 
        r = SubscribeEvent();
        SysTryReturnResult(NID_SYS, r == E_SUCCESS, r, "It is failed to request to remove event listener.");
index 38bbfa2..bd0f082 100644 (file)
@@ -69,6 +69,10 @@ public:
        result RemoveSettingEventListener(ISettingEventListener& listener)
        {
                result  r = RemoveListener(listener);
+               if(r == E_OBJ_NOT_FOUND)
+               {
+                       return E_OBJ_NOT_FOUND;
+               }
                SysTryReturnResult(NID_SYS, __count > 0, E_SYSTEM, "Listenr count[%d] is error.", __count);
                if(r == E_SUCCESS)
                {