diff -r 6757f1e2efd2 -r 5b858729772b applicationmanagement/omascomoadapter/src/omascomoadapter.cpp --- a/applicationmanagement/omascomoadapter/src/omascomoadapter.cpp Tue Aug 31 15:05:55 2010 +0300 +++ b/applicationmanagement/omascomoadapter/src/omascomoadapter.cpp Wed Sep 01 12:31:32 2010 +0100 @@ -48,6 +48,7 @@ #include #include #include +#include #include "NSmlPrivateAPI.h" @@ -55,7 +56,7 @@ #include "ampskeys.h" #include "nsmldmtreedbclient.h" -//#include "SyncService.h" +#include "SyncService.h" #include "amprivateCRKeys.h" #include #include @@ -221,8 +222,6 @@ accessTypesAdd; accessTypesAddReplace.SetReplace(); - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step1" ); - /* Node: ./SCOMO AM node is the common parent to all application management functionality nodes. @@ -238,8 +237,6 @@ MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode, KAMNodeDescription); - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 2" ); - /* Node: ./SCOMO/Inventory This node is start node to application inventory. @@ -254,8 +251,6 @@ MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode, KAMInventoryNodeDescription); - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 3" ); - /* Node: ./SCOMO/Inventory/Delivered This is node under which applications that are delivered but not installed are found. @@ -270,8 +265,6 @@ MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode, KAMDeliveredNodeDescription); - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 4" ); - /* Node: ./SCOMO/Inventory/Deployed This is a node under which active applications are found. @@ -288,8 +281,6 @@ MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode, KAMDeployedNodeDescription); - - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 5" ); /* Node: ./SCOMO/Inventory/Delivered/ This dynamic node is placeholder applications that are in Delivered state. @@ -304,8 +295,6 @@ MSmlDmDDFObject::EZeroOrMore, MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::ENode, KAMDeliveredDynaNodeDescription); - - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 6" ); /* Node: ./SCOMO/Inventory/Delivered//PkgID This leaf node holds an identifier for an application. @@ -320,7 +309,6 @@ MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr, KAMPkgIDNodeDescription); - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 7" ); /* Node: ./SCOMO/Inventory/Delivered//Name This leaf node holds name of an application. @@ -335,7 +323,7 @@ MSmlDmDDFObject::EZeroOrOne, MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr, KAMNameNodeDescription); - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 8" ); + /* Node: ./SCM/Inventory/Delivered//Status This leaf node holds the status of the Delivered. The client updates the node value. @@ -351,8 +339,6 @@ MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EInt, KAMStatusNodeDescription); - - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 9" ); /* Node: ./SCOMO/Inventory/Delivered//PkgType This leaf node holds an identifier for an application. @@ -367,7 +353,7 @@ MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr, KAMPkgTypeNodeDescription); - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 10" ); + /* Node: ./SCOMO/Inventory/Delivered//Data This leaf node holds the data of an application. @@ -382,24 +368,18 @@ MSmlDmDDFObject::EZeroOrOne, MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EBin, KAMDataNodeDescription); - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 11" ); - delda.AddDFTypeMimeTypeL(KSisxMimeType); delda.AddDFTypeMimeTypeL(KSisMimeType); delda.AddDFTypeMimeTypeL(KPipMimeType); - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 12" ); - FeatureManager::InitializeLibL(); if (FeatureManager::FeatureSupported(KFeatureIdJavaMIDP20) ) { - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 13" ); delda.AddDFTypeMimeTypeL(KJadMIMEType); delda.AddDFTypeMimeTypeL(KJarMIMEType); delda.AddDFTypeMimeTypeL(KJavaMIMEType); } - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 14" ); FeatureManager::UnInitializeLib(); /* @@ -416,7 +396,6 @@ MSmlDmDDFObject::EZeroOrOne, MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EBin, KAMDescriptorNodeDescription); - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 15" ); /* Node: ./SCOMO/Inventory/Delivered//State This leaf node holds state value of an application. @@ -431,7 +410,7 @@ FillNodeInfoL(delstate, accessTypesGet, MSmlDmDDFObject::EOne, MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr, KAMStateValueNodeDescription); - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 16" ); + /* Node: ./SCOMO/Inventory/Delivered//Operations This is a node that allows vendors to extend functionality. @@ -495,7 +474,7 @@ /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= DEPLOYED *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 17" ); + /* Node: ./SCOMO/Inventory/Deployed/ This dynamic node is placeholder applications that are in Inactive state. @@ -551,7 +530,7 @@ FillNodeInfoL(deplver, accessTypesGetAddReplace, MSmlDmDDFObject::EZeroOrOne, MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr, KAMVersionNodeDescription); - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 18" ); + /* Node: ./SCOMO/Inventory/Deployed//Description This leaf node holds the version of an application. @@ -609,7 +588,7 @@ FillNodeInfoL(deplstate, accessTypesGet, MSmlDmDDFObject::EOne, MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr, KAMStateValueNodeDescription); - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 19" ); + /* Node: ./SCOMO/Inventory/Deployed//Operations This is a node that allows vendors to extend functionality. @@ -640,7 +619,7 @@ FillNodeInfoL(deplrem, accessTypesExecReplace, MSmlDmDDFObject::EOne, MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode, KAMRemoveNodeDescription); - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 20" ); + /* Node: ./SCOMO/Inventory/Deployed//Operations/Activate Exec command causes device to activate an application. @@ -717,7 +696,7 @@ FillNodeInfoL(dowid, accessTypesGetAddReplace, MSmlDmDDFObject::EOne, MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr, KAMPkgIDNodeDescription); - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 21" ); + /* Node: ./SCOMO/Download//Name This leaf node holds name of an application. @@ -850,7 +829,7 @@ MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode, KAMDownloadAndInstallAndInActivateNodeName); - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 22" ); + #ifdef __AM_LASTERROR_NODE MSmlDmDDFObject& amext = am.AddChildObjectL(KAMExtNodeName); FillNodeInfoL(amext, accessTypesGet, MSmlDmDDFObject::EOne, @@ -864,16 +843,13 @@ #endif // Ignore generic alert error status if any otherwise adapter fails to load - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 23" ); + TRAP_IGNORE(SendPendingGenericAlertL()); - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 24" ); - //if (GetAdapterValue() == KAMSCOMOAdapter) + if (GetAdapterValue() == KAMSCOMOAdapter) { - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 25" ); CheckStateChangesL(); SetAdapterValue(KAMDefaultValue); } - RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 26" ); CheckAndAddPredefinedNodeL(); RDEBUG( "CSCOMOAdapter::DDFStructureL(): end" ); } @@ -946,8 +922,11 @@ TBuf8<6> dataresult; dataresult.Num(finalresult); - TPtrC8 mapping(NSmlDmURI::LastURISeg(targetURIGet) ); + RDEBUG8_2("CSCOMOAdapter::GetIdentifierIdL is targetURIGet '%S'", &targetURIGet); + //TPtrC8 mapping(NSmlDmURI::LastURISeg(targetURIGet) ); + + HBufC8* identifier=GetIdentifierIdL(internalid ); TInt retryupdate = iAMdb->GetRetryCountForLuidL(internalid); @@ -986,7 +965,7 @@ ptr.Append(dataresult); ptr.Append(KResultCodeEnd); ptr.Append(KIdentifierStart); - ptr.Append(mapping); + ptr.Append(*identifier); ptr.Append(KIdentifierEnd); //ptr.Append(KDataEnd); @@ -1016,18 +995,29 @@ TRAP_IGNORE(privateAPI.AddDMGenericAlertRequestL( *genericalerts[i]->iCorrelator,iItemArray )); - - + + + //cleanup all the allocated heap cells + if(data) delete data; + if(metamark) delete metamark; + if(metaformat) delete metaformat; + if(metatype) delete metatype; + if(targeturi) delete targeturi; + + if(item) delete item; + + if(identifier) + delete identifier; iItemArray.Reset(); iItemArray.Close(); @@ -1061,7 +1051,9 @@ TPckg pcert(info); errx = re->Get(KCertKey, pcert) ; - RDEBUG_2("aCertInfo.iFingerprint.Length() is %u",info.iFingerprint.Length() ); + RDEBUG("CSCOMOAdapter::SessionL() aCertInfo"); + + //RDEBUG_2("aCertInfo.iFingerprint.Length() is %u",info.iFingerprint.Length() ); if (errx == KErrNone) { RDEBUG("CSCOMOAdapter::SessionL() errx == KErrNone"); @@ -1294,6 +1286,7 @@ TDeplCompAttrType fl(UpdateFlagFromMapping(mapping) ); + if (mapping == KAMDataNodeName || mapping == KAMDescriptorNodeName) { @@ -1762,12 +1755,13 @@ iManagement.StateChangeComplete(aLuidi); DeactivateIfInactive(aLuidi, aTargetState); - aRet = EOk; + aRet = EExecSuccess; } else { RDEBUG_2( "CSCOMOAdapter::InstallL(): INSTALL FAILED '%d'" , err); - MAPERROR( err, aRet, _L8("Install %d") ); + //MAPERROR( err, aRet, _L8("Install %d") ); + aRet = EExecInstallFailed; } } @@ -1861,7 +1855,7 @@ const TDesC8& aArgument, const TDesC8& /*aType*/, TInt aStatusRef) { -#ifdef __TARM_SYMBIAN_CONVERGENCY //Done by Dipak +#ifdef __TARM_SYMBIAN_CONVERGENCY TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash(aURI); #else //nothing @@ -1870,14 +1864,14 @@ RDEBUG8_3("CSCOMOAdapter::ExecuteCommandL(): begin, '%S', '%S'", &aURI, &aLUID ); SetAdapterValue(KAMSCOMOAdapter); CheckStateChangesL(); - TError ret(EError); + TError ret(EExecUndefError); if (aLUID == KNullDesC8) { RDEBUG("CSCOMOAdapter::ExecuteCommandL(): WARNING no valid luid provided" ); } -#ifdef __TARM_SYMBIAN_CONVERGENCY //Done by Dipak +#ifdef __TARM_SYMBIAN_CONVERGENCY TInt cnt( NSmlDmURI::NumOfURISegs( uriPtrc ) ); #else TInt cnt(NSmlDmURI::NumOfURISegs(aURI) ); @@ -1960,18 +1954,19 @@ else if (errx == KErrArgument) { - ret = EInvalidObject ; + ret = EExecUndefError; } else { - ret = EError; + ret = EExecUndefError; } } + SetSCOMOTargetURIL(*iUriDel, mapping, ret); } else { - ret = ENotFound; + ret = EExecUndefError; RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 5 Not found node" ); } break; @@ -2015,7 +2010,7 @@ } else { - ret = ENotFound; + ret = EExecInstallFailed; RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 6 install Not found node" ); } } @@ -2054,7 +2049,7 @@ err = iDbSession.RemoveMappingInfoL(KAMAdapterImplUid, aclmapping); if (err == KErrNone) { - ret = EOk; + ret = EExecSuccess; } if (iInAtomic) { @@ -2067,16 +2062,17 @@ RDEBUG_2( "CSCOMOAdapter::ExecuteCommandL(): Remove FAILED '%d'", err); if (err == SwiUI::KSWInstErrUserCancel) - ret = EError; + ret = EExecUserCancelled; else MAPERROR( err, ret, _L8("Execute Remove %d") ); } } else { - ret = ENotFound; + ret = EExecRemoveFailed; RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 6 remove Not found node" ); } + SetSCOMOTargetURIL(*iUriDel, mapping, ret); } else if (mapping == KAMActivateNodeName) @@ -2096,15 +2092,17 @@ if (iluid > 0) { TRAP_IGNORE( SessionL().ActivateL( iluid ) ); - ret = EOk; + ret = EExecSuccess; //MAPERROR( erx, ret, _L8("Activate %d") ); } else { - ret = ENotFound; + ret = EExecActivateFailed; RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 6 Activate Not found node" ); } + + SetSCOMOTargetURIL(*iUriDel, mapping, ret); } else if (mapping == KAMDeActivateNodeName) @@ -2128,20 +2126,23 @@ { TRAP_IGNORE(SessionL().DeactivateL( iluid ) ) ; - ret = EOk; + ret = EExecSuccess; //MAPERROR( erx, ret,_L8("Dectivate %d") ); } else { - ret = ENotFound; + ret = EExecDeactivateFailed; RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 6 DeActivate Not found node" ); } + + SetSCOMOTargetURIL(*iUriDel, mapping, ret); + } else { RDEBUG8_2( "CSCOMOAdapter::ExecuteCommandL(): ASKED NOT SUPPORTED OPERATION '%S'", &mapping ); - ret = EError; + ret = EExecUndefError; } break; } @@ -2150,20 +2151,128 @@ { RDEBUG8_3( "CSCOMOAdapter::ExecuteCommandL(): ILLEGAL LEVEL %d NODE %S", cnt, &aURI ); - ret = EInvalidObject; + ret = EExecUndefError; break; } } SetStatusL(aStatusRef, ret) ; } + +void CSCOMOAdapter::SetSCOMOTargetURIL(const TDesC8& aURI, + const TDesC8& aMapping,const TError& aErrorStatus) + { + + RDEBUG( "CSCOMOAdapter:: SetSCOMOTargetURI" ); + + TInt cnt(NSmlDmURI::NumOfURISegs(aURI)); + _LIT8( KNSmlNull, "null" ); + + CRepository* cenrep = NULL; + TInt errr(KErrNone); + + TRAP(errr, cenrep = CRepository::NewL( KCRUidDeviceManagementInternalKeys )); + + if (errr == KErrNone) + { + + switch (cnt) + { + case 3: + { + + RDEBUG( "CSCOMOAdapter:: SetSCOMOTargetURI case 3" ); + + TInt ASyncSupported = -1; + + CRepository *repository = CRepository::NewLC( + KCRUidPrivateApplicationManagementKeys); + repository->Get(KAsyncEnabled, ASyncSupported); + CleanupStack::PopAndDestroy(); + + //means accepted for processing set to NULL. + if (ASyncSupported) + { + RDEBUG( "CSCOMOAdapter:: ASyncSupported" ); + + TInt err1 = cenrep->Set(KNSmlDMSCOMOTargetRef, KNSmlNull); + + RDEBUG_2( "CSCOMOAdapter:: ASyncSupported %d", err1 ); + + } + + } + break; + + case 4: + { + + RDEBUG( "CSCOMOAdapter:: SetSCOMOTargetURI case 4" ); + + if (aMapping == KAMRemoveNodeName) + { + + if (aErrorStatus == EExecSuccess) + { + cenrep->Set(KNSmlDMSCOMOTargetRef, KNSmlNull); + } + } + + if (aMapping == KAMActivateNodeName || aMapping + == KAMDeActivateNodeName) + { + + RDEBUG( "CSCOMOAdapter:: SetSCOMOTargetURI case KAMActivateNodeName or KAMDeActivateNodeName " ); + + if (aErrorStatus == EExecSuccess) + { + RDEBUG( "CSCOMOAdapter:: EExecSuccess " ); + _LIT8( KAMInitial, "./" ); + _LIT8( KAMSeparator8, "/" ); + _LIT8( KAMStateValueNodeName, "State" ); + TBuf8<256> targetStateURI; + targetStateURI.Append(KAMInitial); + targetStateURI.Append(aURI); + + targetStateURI.Append(KAMSeparator8); + targetStateURI.Append(KAMStateValueNodeName); + + cenrep->Set(KNSmlDMSCOMOTargetRef, targetStateURI); + RDEBUG( "CSCOMOAdapter:: EExecSuccess End" ); + } + else + { + cenrep->Set(KNSmlDMSCOMOTargetRef, KNSmlNull); + } + + } + + } + + break; + } + + } + + if (cenrep) + { + delete cenrep; + cenrep = NULL; + } + + } + + void CSCOMOAdapter::ASyncReportL(TUint32 aLuid, const TDesC8& aArgument, const TDownloadTarget aTarget,const TDesC8& aURI) { + // while sending generic alert // adapter uses entry stored in database and constructs generic alert // using SyncML framework API. + TInt index = 0; + // Default max retry count is 5. It is also cenep configurable // Cenrep configuration responsible can change the max retry // count @@ -2185,7 +2294,7 @@ //Add Download entry to database iAMdb->SaveToDatabaseL(index, aLuid, profId, retrycount, aURI, - *serverId, aArgument); + *serverId, aArgument); CleanupStack::PopAndDestroy(serverId); @@ -2201,13 +2310,13 @@ EOwnerThread); User::LeaveIfError(r); - /*CSyncService *syncService = CSyncService::NewL(NULL, KDevManServiceStart); + CSyncService *syncService = CSyncService::NewL(NULL, KDevManServiceStart); if (syncService) { syncService->EnableProgressNoteL(EFalse); } - delete syncService;*/ + delete syncService; // wait for the previously attached ‘counter’ property to be updated TRequestStatus s; @@ -2222,61 +2331,61 @@ { case KStatusUserCancelled: { - aRet = MSmlDmAdapter::EError; + aRet = MSmlDmAdapter::EExecUserCancelled; break; } case KStatusDowloadFailedOOM: { - aRet = MSmlDmAdapter::EError; + aRet = MSmlDmAdapter::EExecDownFailOOM; break; } case KStatusAlternateDownldAuthFail: { - aRet = MSmlDmAdapter::EError; + aRet = MSmlDmAdapter::EExecAltDwnldAuthFail; break; } case KStatusDownloadFailed: { - aRet = MSmlDmAdapter::EError; + aRet = MSmlDmAdapter::EExecDownloadFailed; break; } case KStatusPkgValidationFailed: { - aRet = MSmlDmAdapter::EError; + aRet = MSmlDmAdapter::EExecPkgValidationFail; break; } case KStatusInstallFailedOOM: { - aRet = MSmlDmAdapter::EError; + aRet = MSmlDmAdapter::EExecInstallOOM; break; } case KStatusInstallFailed: { - aRet = MSmlDmAdapter::EError; + aRet = MSmlDmAdapter::EExecInstallFailed; break; } case KStatusUnSupportedEnvironment: { - aRet = MSmlDmAdapter::EError; + aRet = MSmlDmAdapter::EExecOperationReject; break; } case KStatusAltDowldUnavailable: { - aRet = MSmlDmAdapter::EError; + aRet = MSmlDmAdapter::EExecAltDwnldSrvUnavailable; break; } default: { - aRet = MSmlDmAdapter::EOk; + aRet = MSmlDmAdapter::EExecSuccess; break; } } @@ -4363,29 +4472,20 @@ void CSCOMOAdapter::CheckAndAddPredefinedNodeL() { - RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): begin"); - // Check if SCOMODefault node addition is enabled. TInt staticnodeenabled = 0; CRepository* cenrep = CRepository::NewLC( KCRUidPrivateApplicationManagementKeys ); cenrep->Get( KAMStaticNodeEnabled, staticnodeenabled ); CleanupStack::PopAndDestroy(); //cenrep - RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step1"); - + if(staticnodeenabled) { TBuf8 temp; - - RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step2"); GetPredefinedNodeL(temp); - - RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step3"); if (temp.Length()) { - - RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step4"); TBuf8 temp1; temp1.Zero(); temp1.Copy(KAMNodeName); @@ -4393,11 +4493,8 @@ temp1.Append(KAMDownloadNodeName); temp1.Append(KAMSeparator8); temp1.Append(temp); - HBufC8* luid = DirectGetLuidAllocLC(temp1); - RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step5"); - if (luid->Length() > 0) { CleanupStack::PopAndDestroy(luid); @@ -4405,20 +4502,16 @@ } else { - RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step6"); // Not found, add node and mapping ... //TError status(EError); TPtrC8 mapping(NSmlDmURI::LastURISeg(temp1) ); TPtrC8 parent(NSmlDmURI::RemoveLastSeg(temp1) ); TPtrC8 parentMapping(NSmlDmURI::LastURISeg(parent) ); TInt cnt(NSmlDmURI::NumOfURISegs(temp1) ); - RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step7"); TUint32 newLuid(SessionL().DownloadL(mapping)); //Callback().SetMappingL( temp1, *IntToDes8LC( newLuid ) ); //CleanupStack::PopAndDestroy(); - RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step8"); DirectSetMappingL(temp1, *IntToDes8LC(newLuid) ); - RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step9"); CleanupStack::PopAndDestroy(); // for IntToDes8LC() CleanupStack::PopAndDestroy(luid); } @@ -4466,8 +4559,6 @@ TInt adapterValue; CRepository *repository = NULL; TRAPD( err, repository = CRepository::NewL ( KCRUidPrivateApplicationManagementKeys ) ); - - RDEBUG_2("error reading cenrep %d", err); if (err == KErrNone) { err = repository->Get(KAMAdapterValue, adapterValue); @@ -4498,5 +4589,37 @@ } return isSupportedMimeType; } + +HBufC8* CSCOMOAdapter::GetIdentifierIdL(const TUint32 aluid) + { + RDEBUG( "CSCOMOAdapter::GetIdentifierIdL: const TUint32 aluid, const TDesC8& aTargetUri" ); + + _LIT8(KNull, "null"); + TDeploymentComponent comp; + HBufC8 *id = NULL; + TInt err(SessionL().DeploymentComponent(aluid, comp) ); + RDEBUG( "CSCOMOAdapter::GetIdentifierIdL: Step 1" ); + + if(err == KErrNone) + { + RDEBUG( "CSCOMOAdapter::GetIdentifierIdL: Step 1.1" ); + if(comp.iState == EDCSDelivered || comp.iState ==EDCSDownload) + { + RDEBUG( "CSCOMOAdapter::GetIdentifierIdL: iState EDCSActive,EDCSInactive" ); + id = (comp.iPkgID).AllocL(); + } + else if(comp.iState==EDCSActive || comp.iState ==EDCSInactive) + { + RDEBUG( "CSCOMOAdapter::GetIdentifierIdL: iState EDCSDelivered,EDCSDownload" ); + id = (comp.iId).AllocL(); + } + else + { + id = KNull().AllocL(); + } + } + RDEBUG( "CSCOMOAdapter::GetIdentifierIdL: Step 1 end" ); + return id; + } // End of File