From 50960c2e0b2f3a0db5b5e3126000a690ddf7e136 Mon Sep 17 00:00:00 2001 From: Joohyun Kim Date: Fri, 2 Aug 2013 17:41:49 +0900 Subject: [PATCH] Fix Exception issue on Add and remove event listener Change-Id: Ie3f80209b2ec543dd8adad21394b4451b2160a12 Signed-off-by: Joohyun Kim --- src/system/FSys_SettingClientEx.cpp | 15 ++++++++++++--- src/system/FSys_SettingClientEx.h | 4 ++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/system/FSys_SettingClientEx.cpp b/src/system/FSys_SettingClientEx.cpp index 96cb239..bcaa8bc 100644 --- a/src/system/FSys_SettingClientEx.cpp +++ b/src/system/FSys_SettingClientEx.cpp @@ -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."); diff --git a/src/system/FSys_SettingClientEx.h b/src/system/FSys_SettingClientEx.h index 38bbfa2..bd0f082 100644 --- a/src/system/FSys_SettingClientEx.h +++ b/src/system/FSys_SettingClientEx.h @@ -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) { -- 2.7.4