From 4bb5d9ed2c7e637e736f3595a13e7d2779b05d32 Mon Sep 17 00:00:00 2001 From: Duyoung Jang Date: Wed, 3 Apr 2013 18:04:46 +0900 Subject: [PATCH] Update GetPackageAppInfoListN() API. Change-Id: I5d3b82358fd26d3c00fabdde3d6f47f2efb252e4 Signed-off-by: Duyoung Jang --- src/app/package/FAppPkg_PackageAppInfoImpl.cpp | 4 +- src/app/package/FAppPkg_PackageManagerImpl.cpp | 99 ++++++++++++-------------- 2 files changed, 49 insertions(+), 54 deletions(-) diff --git a/src/app/package/FAppPkg_PackageAppInfoImpl.cpp b/src/app/package/FAppPkg_PackageAppInfoImpl.cpp index ad1169b..c423671 100755 --- a/src/app/package/FAppPkg_PackageAppInfoImpl.cpp +++ b/src/app/package/FAppPkg_PackageAppInfoImpl.cpp @@ -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; diff --git a/src/app/package/FAppPkg_PackageManagerImpl.cpp b/src/app/package/FAppPkg_PackageManagerImpl.cpp index 1a985af..313be99 100755 --- a/src/app/package/FAppPkg_PackageManagerImpl.cpp +++ b/src/app/package/FAppPkg_PackageManagerImpl.cpp @@ -814,8 +814,12 @@ _PackageManagerImpl::GetPackageInfoListN(const IMap& packageFilterMap) const std::unique_ptr 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 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 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."); -- 2.7.4