Merge "Update GetPackageAppInfoListN() API." into tizen_2.1
authorDuyoung Jang <duyoung.jang@samsung.com>
Wed, 3 Apr 2013 09:09:30 +0000 (18:09 +0900)
committerGerrit Code Review <gerrit2@kim11>
Wed, 3 Apr 2013 09:09:30 +0000 (18:09 +0900)
src/app/package/FAppPkg_PackageAppInfoImpl.cpp
src/app/package/FAppPkg_PackageManagerImpl.cpp

index ad1169b..c423671 100755 (executable)
@@ -320,6 +320,8 @@ _PackageAppInfoImpl::GetInstance(PackageAppInfo* pPackageAppInfo)
 result
 _PackageAppInfoImpl::Construct(const AppId& appId)
 {
+       SysTryReturnResult(NID_APP, appId.IsEmpty() == false, E_INVALID_ARG, "appId is empty.");
+
        int res = PMINFO_R_OK;
        char* pExePath = null;
        char* pDisplayName = null;
@@ -333,7 +335,7 @@ _PackageAppInfoImpl::Construct(const AppId& appId)
        SysTryReturnResult(NID_APP, pAppId, E_OUT_OF_MEMORY, "pAppId is null");
 
        res = pkgmgrinfo_appinfo_get_appinfo(pAppId.get(), &__pAppInfoHandle);
-       SysTryReturnResult(NID_APP, res == 0, E_SYSTEM, "pkgmgrinfo_appinfo_get_appinfo failed, res = [%d]", res);
+       SysTryReturnResult(NID_APP, res == 0, E_SYSTEM, "pkgmgrinfo_appinfo_get_appinfo failed, res = [%d], appId = [%s]", res, pAppId.get());
 
        __fromDatabase = true;
 
index 1a985af..313be99 100755 (executable)
@@ -814,8 +814,12 @@ _PackageManagerImpl::GetPackageInfoListN(const IMap& packageFilterMap) const
        std::unique_ptr<IMapEnumerator> pEnum(packageFilterMap.GetMapEnumeratorN());
        SysTryReturn(NID_APP, pEnum, null, E_INVALID_ARG, "GetMapEnumeratorN() is failed.");
 
-       int res = 0;
-       ArrayList* pList = null;
+       std::unique_ptr< ArrayList > pList(new (std::nothrow) ArrayList());
+       SysTryReturn(NID_APP, pList, null, E_OUT_OF_MEMORY, "pList is null.");
+
+       pList->Construct();
+
+       int res = PMINFO_R_OK;
        pkgmgrinfo_pkginfo_filter_h handle = null;
 
        res = pkgmgrinfo_pkginfo_filter_create(&handle);
@@ -874,18 +878,8 @@ _PackageManagerImpl::GetPackageInfoListN(const IMap& packageFilterMap) const
                }
        }
 
-       pList = new (std::nothrow) ArrayList();
-       SysTryCatch(NID_APP, pList, , E_OUT_OF_MEMORY, "ArrayList creation failure.");
-       pList->Construct();
-
-       res = pkgmgrinfo_pkginfo_filter_foreach_pkginfo(handle, PackageInfoHandler, pList);
-       if (res != 0)
-       {
-               SysLog(NID_APP, "pkgmgrinfo_pkginfo_filter_foreach_pkginfo() is failed. result = [%d]", res);
-
-               pList->RemoveAll(true);
-               pList = null;
-       }
+       res = pkgmgrinfo_pkginfo_filter_foreach_pkginfo(handle, PackageInfoHandler, pList.get());
+       SysTryCatch(NID_APP, res == PMINFO_R_OK, , E_SYSTEM, "pkgmgrinfo_pkginfo_filter_foreach_pkginfo() failed. [%d]", res);
 
 CATCH:
        if (handle)
@@ -893,7 +887,13 @@ CATCH:
                pkgmgrinfo_pkginfo_filter_destroy(handle);
        }
 
-       return pList;
+       if (pList->GetCount() <= 0)
+       {
+               AppLog("pList's count is 0.");
+               return null;
+       }
+
+       return pList.release();
 }
 
 IList*
@@ -901,13 +901,17 @@ _PackageManagerImpl::GetPackageAppInfoListN(const IMap& packageAppFilterMap) con
 {
        SysTryReturn(NID_APP, packageAppFilterMap.GetCount() > 0, null, E_INVALID_ARG, "packageAppFilterMap.GetCount() is invalid.");
 
-       std::unique_ptr<IMapEnumerator> pEnum(packageAppFilterMap.GetMapEnumeratorN());
+       std::unique_ptr< IMapEnumerator > pEnum(packageAppFilterMap.GetMapEnumeratorN());
        SysTryReturn(NID_APP, pEnum, null, E_INVALID_ARG, "GetMapEnumeratorN() is failed.");
 
+       std::unique_ptr< ArrayList > pList(new (std::nothrow) ArrayList());
+       SysTryReturn(NID_APP, pList, null, E_OUT_OF_MEMORY, "pList is null.");
+
+       pList->Construct();
+
        int res = 0;
        bool definedKey = false;
        bool metadataKey = false;
-       ArrayList* pList = null;
        ArrayList list;
        ArrayList metadataList;
        ArrayList appIdList;
@@ -975,33 +979,13 @@ _PackageManagerImpl::GetPackageAppInfoListN(const IMap& packageAppFilterMap) con
 
        if ((definedKey == true) && (metadataKey == false))
        {
-               pList = new (std::nothrow) ArrayList();
-               SysTryCatch(NID_APP, pList, , E_OUT_OF_MEMORY, "ArrayList creation failure.");
-               pList->Construct();
-
-               res = pkgmgrinfo_appinfo_filter_foreach_appinfo(handle, PackageAppInfoHandler, pList);
-               if (res != PMINFO_R_OK)
-               {
-                       SysLog(NID_APP, "pkgmgrinfo_appinfo_filter_foreach_appinfo() is failed. result = [%d]", res);
-
-                       pList->RemoveAll(true);
-                       pList = null;
-               }
+               res = pkgmgrinfo_appinfo_filter_foreach_appinfo(handle, PackageAppInfoHandler, pList.get());
+               SysTryCatch(NID_APP, res == PMINFO_R_OK, , E_SYSTEM, "pkgmgrinfo_appinfo_filter_foreach_appinfo() failed. [%d]", res);
        }
        else if ((definedKey == false) && (metadataKey == true))
        {
-               pList = new (std::nothrow) ArrayList();
-               SysTryCatch(NID_APP, pList, , E_OUT_OF_MEMORY, "ArrayList creation failure.");
-               pList->Construct();
-
-               res = pkgmgrinfo_appinfo_metadata_filter_foreach(metaHandle, PackageAppInfoMetadataHandler, pList);
-               if (res != PMINFO_R_OK)
-               {
-                       SysLog(NID_APP, "pkgmgrinfo_appinfo_metadata_filter_foreach() is failed. result = [%d]", res);
-
-                       pList->RemoveAll(true);
-                       pList = null;
-               }
+               res = pkgmgrinfo_appinfo_metadata_filter_foreach(metaHandle, PackageAppInfoMetadataHandler, pList.get());
+               SysTryCatch(NID_APP, res == PMINFO_R_OK, , E_SYSTEM, "pkgmgrinfo_appinfo_metadata_filter_foreach() failed. [%d]", res);
        }
        else
        {
@@ -1035,26 +1019,24 @@ _PackageManagerImpl::GetPackageAppInfoListN(const IMap& packageAppFilterMap) con
                        }
                }
 
-               pList = new (std::nothrow) ArrayList();
-               SysTryCatch(NID_APP, pList, , E_OUT_OF_MEMORY, "ArrayList creation failure.");
-               pList->Construct();
-
                for (int j = 0; j < metadataList.GetCount(); j++)
                {
                        PackageAppInfo* pPackageAppInfo = dynamic_cast < PackageAppInfo* >(metadataList.GetAt(j));
                        if (pPackageAppInfo)
                        {
-                               if (appIdList.Contains(pPackageAppInfo->GetAppId()) == true)
+                               AppId appId = pPackageAppInfo->GetAppId();
+
+                               if (appIdList.Contains(appId) == true)
                                {
-                                       AppLog("AppId [%ls] is matched.", pPackageAppInfo->GetAppId().GetPointer());
+                                       AppLog("AppId [%ls] is matched.", appId.GetPointer());
 
-                                       std::unique_ptr< PackageAppInfo > pPackageAppInfo(new (std::nothrow) PackageAppInfo);
-                                       SysTryCatch(NID_APP, pPackageAppInfo, , E_OUT_OF_MEMORY, "PackageAppInfo is null.");
+                                       std::unique_ptr< PackageAppInfo > pAppInfo(new (std::nothrow) PackageAppInfo);
+                                       SysTryCatch(NID_APP, pAppInfo, , E_OUT_OF_MEMORY, "pAppInfo is null.");
 
-                                       _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pPackageAppInfo.get());
-                                       pPackageAppInfoImpl->Construct(pPackageAppInfo->GetAppId());
+                                       _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pAppInfo.get());
+                                       pPackageAppInfoImpl->Construct(appId);
 
-                                       pList->Add(pPackageAppInfo.release());
+                                       pList->Add(pAppInfo.release());
                                }
                                else
                                {
@@ -1074,7 +1056,14 @@ CATCH:
        {
                pkgmgrinfo_appinfo_metadata_filter_destroy(metaHandle);
        }
-       return pList;
+
+       if (pList->GetCount() <= 0)
+       {
+               AppLog("pList's count is 0.");
+               return null;
+       }
+
+       return pList.release();
 }
 
 IList*
@@ -1201,6 +1190,8 @@ _PackageManagerImpl::PackageAppInfoHandler(const pkgmgrinfo_appinfo_h handle, vo
        res = pkgmgrinfo_appinfo_get_appid(handle, &pAppId);
        SysTryReturn(NID_APP, res == PMINFO_R_OK, 0, E_SYSTEM, "pkgmgrinfo_appinfo_get_appid is failed. [%d]", res);
 
+       SysLog(NID_APP, "appId = [%s]", pAppId);
+
        std::unique_ptr<PackageAppInfo> pPackageAppInfo(new (std::nothrow) PackageAppInfo);
        SysTryReturn(NID_APP, pPackageAppInfo, 0, E_OUT_OF_MEMORY, "pPackageAppInfo instance must not be null.");
 
@@ -1227,6 +1218,8 @@ _PackageManagerImpl::PackageAppInfoMetadataHandler(const pkgmgrinfo_appinfo_h ha
        res = pkgmgrinfo_appinfo_get_appid(handle, &pAppId);
        SysTryReturn(NID_APP, res == PMINFO_R_OK, 0, E_SYSTEM, "pkgmgrinfo_appinfo_get_appid is failed. [%d]", res);
 
+       SysLog(NID_APP, "appId = [%s]", pAppId);
+
        std::unique_ptr< PackageAppInfo > pPackageAppInfo(new (std::nothrow) PackageAppInfo);
        SysTryReturn(NID_APP, pPackageAppInfo, 0, E_OUT_OF_MEMORY, "pPackageAppInfo instance must not be null.");