+ if (__fromDatabase)
+ {
+ SysTryReturn(NID_APP, __id.IsEmpty() == false, null, E_SYSTEM, "__id is empty.");
+
+ std::unique_ptr< IList > pList(_PrivilegeManager::GetPrivilegeListN(__id));
+ if (pList == null)
+ {
+ SysLog(NID_APP, "_PrivilegeManager::GetPrivilegeListN() is null.");
+ return null;
+ }
+
+ for (int i = 0; i < pList->GetCount(); i++)
+ {
+ String* pPrivilege = dynamic_cast < String* >(pList->GetAt(i));
+ if (pPrivilege)
+ {
+ std::unique_ptr< PrivilegeInfo > pPrivilegeInfo(new (std::nothrow) PrivilegeInfo);
+ SysTryReturn(NID_APP, pPrivilegeInfo, null, E_OUT_OF_MEMORY, "pPrivilegeInfo must not be null.");
+
+ r = pPrivilegeInfo->Construct(*pPrivilege);
+ SysTryReturn(NID_APP, !IsFailed(r), null, E_SYSTEM, "pPrivilegeInfo->Construct() failed.");
+
+ r = pPrivilegeList->Add(*pPrivilegeInfo.release());
+ SysTryReturn(NID_APP, !IsFailed(r), null, E_SYSTEM, "pPrivilegeList->Add() failed.");
+ }
+ }
+ }
+ else