applicationmanagement/omascomoadapter/src/omascomoadapter.cpp
branchRCL_3
changeset 23 c4687ff85147
parent 20 f2101057ffeb
child 24 6757f1e2efd2
--- a/applicationmanagement/omascomoadapter/src/omascomoadapter.cpp	Thu Jul 15 18:24:21 2010 +0300
+++ b/applicationmanagement/omascomoadapter/src/omascomoadapter.cpp	Thu Aug 19 09:42:30 2010 +0300
@@ -922,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);
             
@@ -962,7 +965,7 @@
             ptr.Append(dataresult);
             ptr.Append(KResultCodeEnd);
             ptr.Append(KIdentifierStart);
-            ptr.Append(mapping);
+            ptr.Append(*identifier);
             ptr.Append(KIdentifierEnd);
             //ptr.Append(KDataEnd);
 
@@ -992,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();
@@ -1741,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;
         }
     }
 
@@ -1840,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
@@ -1856,7 +1871,7 @@
         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) );
@@ -1946,6 +1961,7 @@
                             ret = EExecUndefError;
                             }
                     }
+			SetSCOMOTargetURIL(*iUriDel, mapping, ret);
 
                 }
             else
@@ -2056,6 +2072,7 @@
                         ret = EExecRemoveFailed;
                         RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 6 remove Not found node" );
                         }
+                    SetSCOMOTargetURIL(*iUriDel, mapping, ret);
                     }
                         else
                             if (mapping == KAMActivateNodeName)
@@ -2084,6 +2101,8 @@
                                     ret = EExecActivateFailed;
                                     RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 6 Activate Not found node" );
                                     }
+
+                                SetSCOMOTargetURIL(*iUriDel, mapping, ret);
                                 }
                             else
                                 if (mapping == KAMDeActivateNodeName)
@@ -2115,6 +2134,9 @@
                                         ret = EExecDeactivateFailed;
                                         RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 6 DeActivate Not found node" );
                                         }
+
+                                    SetSCOMOTargetURIL(*iUriDel, mapping, ret);
+						
                                     }
                                 else
                                     {
@@ -2136,6 +2158,111 @@
     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 <Target><LOCURI> 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)
     {
@@ -4462,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