cmmanager/cmmgr/cmmpluginbase/src/ccmpluginbaseeng.cpp
changeset 27 489cf6208544
parent 23 7ec726f93df1
child 32 5c4486441ae6
child 46 95d45f234cf3
--- a/cmmanager/cmmgr/cmmpluginbase/src/ccmpluginbaseeng.cpp	Fri May 14 16:15:46 2010 +0300
+++ b/cmmanager/cmmgr/cmmpluginbase/src/ccmpluginbaseeng.cpp	Thu May 27 13:17:01 2010 +0300
@@ -20,7 +20,7 @@
 #include <datamobilitycommsdattypes.h>
 #include <cmpluginbaseeng.h>
 #include <cmpsettingsconsts.h>
-#include <FeatMgr.h>
+#include <featmgr.h>
 
 #include "ccmpluginbaseengtextresolver.h"
 
@@ -94,8 +94,6 @@
 //
 void CCmClientPluginInstance::ConstructL()
     {
-    OstTraceFunctionEntry0( CCMCLIENTPLUGININSTANCE_CONSTRUCTL_ENTRY );
-    OstTraceFunctionExit0( CCMCLIENTPLUGININSTANCE_CONSTRUCTL_EXIT );
     }
 
 
@@ -331,31 +329,31 @@
         User::Leave( KErrAlreadyExists );
         }
 
-    // optional record is disabled in default
+    // Optional record, disabled by default.
     iLocationEnabled = EFalse;
 
-    // create mandatory records
-    iIapRecord = static_cast<CCDIAPRecord *>
-                          (CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
-    iNetworkRecord = static_cast<CCDNetworkRecord *>
-                          (CCDRecordBase::RecordFactoryL(KCDTIdNetworkRecord));
-    iProxyRecord = static_cast<CCDProxiesRecord *>
-                  (CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord));
+    // Create mandatory records.
+    iIapRecord = static_cast<CCDIAPRecord*>(
+            CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) );
+    iNetworkRecord = static_cast<CCDNetworkRecord*>(
+            CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) );
+    iProxyRecord = static_cast<CCDProxiesRecord*>(
+            CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) );
     NewWapRecordL();
     iWapIPBearerRecord->iWAPGatewayAddress.SetL( KDefWapGatewayIpAddress );
 
     iMetaDataRecord = NewMetadataRecordL( ETrue );
 
-    // call plugin to create its own records
+    // Call plugin to create its own records.
     CreateServiceRecordL();
 
-    // Update iaprecord servicetype name
+    // Update iaprecord servicetype name.
     HBufC* servicetypeName( NULL );
     ServiceRecordNameLC( servicetypeName );
     iIapRecord->iServiceType.SetL( *servicetypeName );
     CleanupStack::PopAndDestroy( servicetypeName );
 
-    // Update iaprecord bearertype name
+    // Update iaprecord bearertype name.
     HBufC* bearerTypeName( NULL );
     BearerRecordNameLC( bearerTypeName );
     iIapRecord->iBearerType.SetL( *bearerTypeName );
@@ -365,7 +363,7 @@
 
     EnableProxyL( EFalse );
 
-    _LIT(KDefaultConnNameTextId, "txt_occ_setlabel_connection_name_val_connection");
+    _LIT( KDefaultConnNameTextId, "txt_occ_setlabel_connection_name_val_connection" );
     HBufC* resolvedText( NULL );
     resolvedText = CCmPluginBaseEngTextResolver::ResolveTextL( KDefaultConnNameTextId );
     if ( resolvedText != NULL )
@@ -400,23 +398,19 @@
 // ---------------------------------------------------------------------------
 //
 EXPORT_C CCmPluginBaseEng* CCmPluginBaseEng::CreateCopyL(
-    CCmClientPluginInstance* /*aClientPluginInstance*/ )
+        CCmClientPluginInstance* /*aClientPluginInstance*/ )
     {
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_CREATECOPYL_ENTRY );
 
     TCmPluginInitParam params( iSession );
-
     CCmPluginBaseEng* copyInst = CreateInstanceL( params );
     CleanupStack::PushL( copyInst );
 
     PrepareToCopyDataL( copyInst );
-
     CopyDataL( copyInst );
-
     CleanupStack::Pop( copyInst );
 
     OstTraceFunctionExit0( CCMPLUGINBASEENG_CREATECOPYL_EXIT );
-
     return copyInst;
     }
 
@@ -427,7 +421,7 @@
 EXPORT_C void CCmPluginBaseEng::GetGenericTableIdsToBeObserved(
         RArray<TUint32>& aTableIdArray ) const
     {
-    // Service and bearer records should be added by plugins
+    // Service and bearer records should be added by plugins.
 
     aTableIdArray.Append( KCDTIdIAPRecord );
     aTableIdArray.Append( KCDTIdWAPAccessPointRecord );
@@ -460,17 +454,17 @@
 
     CopyRecordDataL( KIapRecordIndex, aCopyInstance );
 
-    // Ensure that iap's name is set by the rules(Naming Method)
-    SetNameL( iIapRecord->iRecordName.GetL(),
-              aCopyInstance->iIapRecord,
-              aCopyInstance->iNamingMethod );
+    // Ensure that IAP's name is set by the rules (Naming Method).
+    SetNameL(
+            iIapRecord->iRecordName.GetL(),
+            aCopyInstance->iIapRecord,
+            aCopyInstance->iNamingMethod );
 
     CopyRecordDataL( KServiceRecordIndex, aCopyInstance );
     CopyRecordDataL( KNetworkRecordIndex, aCopyInstance );
     CopyRecordDataL( KWAPAPRecordIndex, aCopyInstance );
     CopyRecordDataL( KWAPBearerRecordIndex, aCopyInstance );
     CopyRecordDataL( KMetaDataRecordIndex, aCopyInstance );
-    CopyRecordDataL( KLocationRecordIndex, aCopyInstance );
     CopyRecordDataL( KProxyRecordIndex, aCopyInstance );
 
     CopyBearerRecordsL( aCopyInstance );
@@ -499,6 +493,8 @@
         case KServiceRecordIndex:
             {
             aCopyInstance->iServiceRecord = CopyServiceRecordL();
+            // The name of the service record copy is changed during update
+            // process, in PrepareToUpdateRecordsL()-method.
             }
             break;
         case KNetworkRecordIndex:
@@ -521,18 +517,12 @@
             break;
         case KMetaDataRecordIndex:
             {
-            aCopyInstance->iMetaDataRecord =
+            CCDIAPMetadataRecord* metadataRecord =
                     new( ELeave ) CCDIAPMetadataRecord( iMetadataTableId );
-            aCopyInstance->iMetaDataRecord->iIAP = IAPRecordElementId();
-            aCopyInstance->iMetaDataRecord->iMetadata.SetL( iMetaDataRecord->iMetadata );
-            aCopyInstance->iMetaDataRecord->iSeamlessness.SetL( iMetaDataRecord->iSeamlessness );
-            }
-            break;
-        case KLocationRecordIndex:
-            {
-            aCopyInstance->iWapIPBearerRecord =
-                    static_cast<CCDWAPIPBearerRecord*>
-                        ( CCDRecordBase::CreateCopyRecordL( *iWapIPBearerRecord ) );
+            CleanupStack::PushL( metadataRecord );
+            CopyRecordFieldsL( *iMetaDataRecord, *metadataRecord );
+            CleanupStack::Pop( metadataRecord );
+            aCopyInstance->iMetaDataRecord = metadataRecord;
             }
             break;
         case KProxyRecordIndex:
@@ -555,6 +545,87 @@
     }
 
 // ---------------------------------------------------------------------------
+// CCmPluginBaseEng:: CopyRecordFieldsL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::CopyRecordFieldsL(
+        CommsDat::CMDBRecordBase& aSource,
+        CommsDat::CMDBRecordBase& aDestination )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_COPYRECORDFIELDSL_ENTRY );
+
+    const SRecordTypeInfo* recordInfo = aSource.GetRecordInfo();
+    if ( recordInfo == NULL )
+        {
+        User::Leave( KErrCorrupt );
+        }
+
+    CMDBElement* ptrSource( NULL );
+    CMDBElement* ptrDest( NULL );
+
+    while ( recordInfo != NULL && recordInfo->iTypeId != 0 )
+        {
+        ptrSource = aSource.GetFieldByIdL( recordInfo->iTypeId );
+        ptrDest = aDestination.GetFieldByIdL( recordInfo->iTypeId );
+
+        // Make sure we see only basic type info. Masks out any additional info
+        // on links (CommsDat internal stuff).
+        switch ( recordInfo->iValType & 0x000000ff )
+            {
+            case CommsDat::EInt:
+            case CommsDat::EBool:
+                {
+                if ( !( ptrSource->IsNull() ) )
+                    {
+                    static_cast<CMDBField<TInt>&>( *ptrDest ).SetL(
+                            static_cast<CMDBField<TInt>&>( *ptrSource ) );
+                    }
+                }
+                break;
+            case CommsDat::EUint32:
+            case CommsDat::ELink:
+                {
+                if ( !( ptrSource->IsNull() ) )
+                    {
+                    static_cast<CMDBField<TUint32>&>( *ptrDest ).SetL(
+                            static_cast<CMDBField<TUint32>&>( *ptrSource ) );
+                    }
+                }
+                break;
+            case CommsDat::EDesC8:
+                {
+                if ( !( ptrSource->IsNull() ) )
+                    {
+                    static_cast<CMDBField<TDesC8>&>( *ptrDest ).SetL(
+                            static_cast<CMDBField<TDesC8>&>( *ptrSource ) );
+                    }
+                }
+                break;
+            case CommsDat::EText:
+            case CommsDat::EMedText:
+            case CommsDat::ELongText:
+                {
+                if ( !( ptrSource->IsNull() ) )
+                    {
+                    static_cast<CMDBField<TDesC>&>( *ptrDest ).SetL(
+                            static_cast<CMDBField<TDesC>&>( *ptrSource ) );
+                    }
+                }
+                break;
+            default:
+                {
+                User::Leave( KErrCorrupt );
+                }
+                break;
+            }
+        ptrDest->SetAttributes( ptrSource->Attributes() );
+        recordInfo++;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_COPYRECORDFIELDSL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
 // CCmPluginBaseEng::DoLoadL
 // ---------------------------------------------------------------------------
 //
@@ -568,7 +639,6 @@
     LoadWapRecordL();
     LoadMetadataRecordL();
     LoadNetworkRecordL();
-    LoadLocationRecordL();
 
     // This is a connectionmethodinfo instance, that has no
     // service and proxy setting.
@@ -637,7 +707,7 @@
 
     // Now try to find the linked proxy record
     // create new record
-    CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord *>(
+    CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>(
             CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) );
 
     CleanupStack::PushL( proxyRecord );
@@ -653,7 +723,7 @@
     if ( proxieRS->FindL(iSession) )
         {
         TInt i( 0 );
-        while( i < proxieRS->iRecords.Count() )
+        while ( i < proxieRS->iRecords.Count() )
             // Now that we have a list of services with the proper service type
             // search for our proxy record and remove it from the array,
             // then destroy the array.
@@ -726,27 +796,6 @@
 void CCmPluginBaseEng::LoadLocationRecordL()
     {
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_LOADLOCATIONSETTINGL_ENTRY );
-
-    CCDLocationRecord* locationRecord = static_cast<CCDLocationRecord*>
-                         (CCDRecordBase::RecordFactoryL(KCDTIdLocationRecord));
-
-    CleanupStack::PushL( locationRecord );
-
-    locationRecord->SetRecordId( iIapRecord->iLocation );
-    if ( locationRecord->FindL(iSession) )
-        {
-        iLocationEnabled = ETrue;
-
-        iLocationRecord = locationRecord;
-
-        CleanupStack::Pop( locationRecord );
-        }
-    else
-        {
-        iLocationEnabled = EFalse;
-
-        CleanupStack::PopAndDestroy( locationRecord );
-        }
     OstTraceFunctionExit0( CCMPLUGINBASEENG_LOADLOCATIONSETTINGL_EXIT );
     }
 
@@ -755,24 +804,28 @@
 // ---------------------------------------------------------------------------
 //
 void CCmPluginBaseEng::PrepareToUpdateRecordsL(
-    CCmClientPluginInstance* aClientPluginInstance )
+        CCmClientPluginInstance* aClientPluginInstance )
     {
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_PREPARETOUPDATERECORDSL_ENTRY );
 
-    // Set the record attributes to bearer specific records
-    CCDIAPRecord* iapRecord =
-       static_cast<CCDIAPRecord*>( aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
+    //TODO, Add null checks for mandatory generic record pointers.
+    //
+
+    // Set the record attributes to bearer specific records.
+    CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
+            aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
 
     for ( TInt i = 0; i < aClientPluginInstance->iBearerSpecRecordArray.Count(); i++ )
         {
-        CCDRecordBase* record =
-                static_cast<CCDRecordBase*>( aClientPluginInstance->iBearerSpecRecordArray[i] );
+        CCDRecordBase* record = static_cast<CCDRecordBase*>(
+                aClientPluginInstance->iBearerSpecRecordArray[i] );
 
         CopyAttributes( iapRecord, record );
         }
 
-    PreparePluginToUpdateRecordsL( aClientPluginInstance->iGenRecordArray,
-                                   aClientPluginInstance->iBearerSpecRecordArray );
+    PreparePluginToUpdateRecordsL(
+            aClientPluginInstance->iGenRecordArray,
+            aClientPluginInstance->iBearerSpecRecordArray );
 
     OstTraceFunctionExit0( CCMPLUGINBASEENG_PREPARETOUPDATERECORDSL_EXIT );
     }
@@ -782,16 +835,16 @@
 // ---------------------------------------------------------------------------
 //
 void CCmPluginBaseEng::UpdateIAPRecordL(
-    CCmClientPluginInstance* aClientPluginInstance )
+        CCmClientPluginInstance* aClientPluginInstance )
     {
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATEIAPRECORDL_ENTRY );
 
-    CCDIAPRecord* iapRecord =
-       static_cast<CCDIAPRecord*>( aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
+    CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
+            aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
 
     if ( iIapId == 0 )
         {
-        // Otherwise predefined iapid
+        // Otherwise predefined iapid.
         if ( !iIapRecord->RecordId() )
             {
             iIapRecord->SetRecordId( KCDNewRecordRequest );
@@ -814,14 +867,7 @@
 
         iIapRecord->iNetwork = iNetworkRecord->RecordId();
 
-        if ( iLocationRecord )
-            {
-            iIapRecord->iLocation = iLocationRecord->RecordId();
-            }
-        else
-            {
-            iIapRecord->iLocation = GetLocationIdL();
-            }
+        iIapRecord->iLocation = GetLocationIdL();
 
         CopyAttributes( iapRecord, iIapRecord );
         CheckIfNameModifiedL( iapRecord, iIapRecord );
@@ -840,24 +886,24 @@
         CleanupStack::PushL( iapRecord );
 
         aClientPluginInstance->iGenRecordArray.InsertL(
-                static_cast<CommsDat::CCDRecordBase*>( tempIapRecord ), KIapRecordIndex );
+                static_cast<CommsDat::CCDRecordBase*>( tempIapRecord ),
+                KIapRecordIndex );
 
         CleanupStack::PopAndDestroy( iapRecord );
         CleanupStack::Pop( tempIapRecord );
-
         }
     else
         {
         delete iIapRecord;
         iIapRecord = NULL;
 
-        iIapRecord = static_cast<CCDIAPRecord*>
-                            ( CCDRecordBase::CreateCopyRecordL( *iapRecord ) );
+        iIapRecord = static_cast<CCDIAPRecord*>(
+                CCDRecordBase::CreateCopyRecordL( *iapRecord ) );
 
         iIapRecord->SetElementId( iapRecord->ElementId() );
-
         iIapRecord->ModifyL( iSession );
         }
+
     OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATEIAPRECORDL_EXIT );
     }
 
@@ -876,6 +922,11 @@
     CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>(
             aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] );
 
+    if ( !iapRecord || !proxyRecord )
+        {
+        User::Leave( KErrCorrupt );
+        }
+
     CopyAttributes( iapRecord, proxyRecord );
     CheckIfNameModifiedL( iapRecord, proxyRecord );
 
@@ -884,17 +935,17 @@
         delete iProxyRecord;
         iProxyRecord = NULL;
 
-        iProxyRecord = static_cast<CCDProxiesRecord*>
-                            ( CCDRecordBase::CreateCopyRecordL( *proxyRecord ) );
+        iProxyRecord = static_cast<CCDProxiesRecord*>(
+                CCDRecordBase::CreateCopyRecordL( *proxyRecord ) );
         iProxyRecord->SetElementId( proxyRecord->ElementId() );
 
         if ( !iProxyRecord->RecordId() )
-            // new proxy setting -> create new record
             {
+            // New proxy setting -> create new record.
             iProxyRecord->iService = iServiceRecord->RecordId();
             iProxyRecord->iServiceType.SetL( iIapRecord->iServiceType );
 
-            // By default protocol is set to "http"
+            // By default protocol is set to "http".
             if ( TPtrC( proxyRecord->iProtocolName ).Length() == 0 )
                 {
                 iProxyRecord->iProtocolName.SetL( KDefProxyProtocolName );
@@ -907,7 +958,7 @@
             proxyRecord->iServiceType.SetL( iIapRecord->iServiceType );
             }
         else
-            // already existing record -> update only
+            // Already existing record -> update only.
             {
             iProxyRecord->ModifyL( iSession );
             }
@@ -919,6 +970,7 @@
             iProxyRecord->DeleteL( iSession );
             }
         }
+
     OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATEPROXYRECORDL_EXIT );
     }
 
@@ -931,32 +983,29 @@
     {
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATEMETADATARECORDL_ENTRY );
 
-    CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
+    CCDIAPRecord* clientIapRecord = static_cast<CCDIAPRecord*>(
             aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
 
-    CCDIAPMetadataRecord* metadataRecord = static_cast<CCDIAPMetadataRecord*>(
+    CCDIAPMetadataRecord* clientMetadataRecord = static_cast<CCDIAPMetadataRecord*>(
             aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] );
 
-    CopyAttributes( iapRecord, metadataRecord );
-    CheckIfNameModifiedL( iapRecord, metadataRecord );
-
+    // Adjust client side metadata record attributes and name if needed.
+    CopyAttributes( clientIapRecord, clientMetadataRecord );
+    CheckIfNameModifiedL( clientIapRecord, clientMetadataRecord );
+
+    // Make a copy of client's metadata record and save to database.
     delete iMetaDataRecord;
     iMetaDataRecord = NULL;
-
-    // Get a new blank IAP metadata record.
-    iMetaDataRecord = NewMetadataRecordL( EFalse );
-
-    iMetaDataRecord->SetElementId( metadataRecord->ElementId() );
-    iMetaDataRecord->iRecordName.SetL( metadataRecord->iRecordName );
-    iMetaDataRecord->iMetadata.SetL( metadataRecord->iMetadata );
-    iMetaDataRecord->iSeamlessness.SetL( metadataRecord->iSeamlessness );
+    iMetaDataRecord = new( ELeave ) CCDIAPMetadataRecord( iMetadataTableId );
+    CopyRecordFieldsL( *clientMetadataRecord, *iMetaDataRecord );
+    iMetaDataRecord->SetElementId( clientMetadataRecord->ElementId() );
 
     if ( !iMetaDataRecord->RecordId() )
         {
         iMetaDataRecord->iIAP = IAPRecordElementId();
         iMetaDataRecord->SetRecordId( KCDNewRecordRequest );
         iMetaDataRecord->StoreL( iSession );
-        metadataRecord->SetElementId( iMetaDataRecord->ElementId() );
+        clientMetadataRecord->SetElementId( iMetaDataRecord->ElementId() );
         }
     else
         {
@@ -975,16 +1024,17 @@
     {
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATESERVICERECORDL_ENTRY );
 
-    CCDIAPRecord* iapRecord =
-                static_cast<CCDIAPRecord*>( aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
-
-    CCDRecordBase* serviceRecord =
-                static_cast<CCDRecordBase*>( aClientPluginInstance->iGenRecordArray[KServiceRecordIndex] );
+    CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
+            aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
+
+    CCDRecordBase* serviceRecord = static_cast<CCDRecordBase*>(
+            aClientPluginInstance->iGenRecordArray[KServiceRecordIndex] );
 
     CopyAttributes( iapRecord, serviceRecord );
 
-    UpdateServiceRecordL( aClientPluginInstance->iGenRecordArray,
-                          aClientPluginInstance->iBearerSpecRecordArray );
+    UpdateServiceRecordL(
+            aClientPluginInstance->iGenRecordArray,
+            aClientPluginInstance->iBearerSpecRecordArray );
 
     OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATESERVICERECORDL_EXIT );
     }
@@ -994,15 +1044,15 @@
 // ---------------------------------------------------------------------------
 //
 void CCmPluginBaseEng::UpdateNetworkRecordL(
-    CCmClientPluginInstance* aClientPluginInstance )
+        CCmClientPluginInstance* aClientPluginInstance )
     {
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATENETWORKRECORDL_ENTRY );
 
-    CCDIAPRecord* iapRecord =
-                static_cast<CCDIAPRecord*>( aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
-
-    CCDNetworkRecord* networkRecord =
-                static_cast<CCDNetworkRecord*>( aClientPluginInstance->iGenRecordArray[KNetworkRecordIndex] );
+    CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
+            aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
+
+    CCDNetworkRecord* networkRecord = static_cast<CCDNetworkRecord*>(
+            aClientPluginInstance->iGenRecordArray[KNetworkRecordIndex] );
 
     CopyAttributes( iapRecord, networkRecord );
 
@@ -1011,8 +1061,8 @@
 
     CheckIfNameModifiedL( iapRecord, networkRecord );
 
-    iNetworkRecord = static_cast<CCDNetworkRecord*>
-                        ( CCDRecordBase::CreateCopyRecordL( *networkRecord ) );
+    iNetworkRecord = static_cast<CCDNetworkRecord*>(
+            CCDRecordBase::CreateCopyRecordL( *networkRecord ) );
 
     iNetworkRecord->SetElementId( networkRecord->ElementId() );
 
@@ -1026,6 +1076,7 @@
         {
         iNetworkRecord->ModifyL( iSession );
         }
+
     OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATENETWORKRECORDL_EXIT );
     }
 
@@ -1034,49 +1085,9 @@
 // ---------------------------------------------------------------------------
 //
 void CCmPluginBaseEng::UpdateLocationRecordL(
-    CCmClientPluginInstance* aClientPluginInstance )
+        CCmClientPluginInstance* /*aClientPluginInstance*/ )
     {
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATELOCATIONRECORDL_ENTRY );
-
-    if ( iLocationEnabled )
-        {
-        CCDIAPRecord* iapRecord =
-                    static_cast<CCDIAPRecord*>( aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
-
-        CCDLocationRecord* locationRecord =
-                    static_cast<CCDLocationRecord*>( aClientPluginInstance->iGenRecordArray[KLocationRecordIndex] );
-
-        // location record is not set as hidden because it can be shared between iaps
-        CopyAttributes( iapRecord, locationRecord );
-        locationRecord->ClearAttributes( ECDHidden );
-
-        delete iLocationRecord;
-        iLocationRecord = NULL;
-
-        iLocationRecord = static_cast<CCDLocationRecord*>
-                            ( CCDRecordBase::CreateCopyRecordL( *locationRecord ) );
-
-        iLocationRecord->SetElementId( locationRecord->ElementId() );
-
-        CheckIfNameModifiedL( iapRecord, locationRecord );
-
-        if ( !iLocationRecord->RecordId() )
-            {
-            iLocationRecord->SetRecordId( KCDNewRecordRequest );
-            iLocationRecord->StoreL( iSession );
-            }
-        else
-            {
-            iLocationRecord->ModifyL( iSession );
-            }
-        }
-    else
-        {
-        if ( iLocationRecord )
-            {
-            iLocationRecord->DeleteL( iSession );
-            }
-        }
     OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATELOCATIONRECORDL_EXIT );
     }
 
@@ -1105,8 +1116,8 @@
 
     if ( !iProxyRecord )
         {
-        iProxyRecord = static_cast<CCDProxiesRecord *>
-                      (CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord));
+        iProxyRecord = static_cast<CCDProxiesRecord *>(
+                CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) );
         }
 
     iProxyRecord->iUseProxyServer = aEnable;
@@ -1122,15 +1133,7 @@
     {
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_ENABLELOCATIONL_ENTRY );
 
-    if ( aEnable )
-        {
-        if ( !iLocationRecord )
-            {
-            iLocationRecord = static_cast<CCDLocationRecord *>
-                         (CCDRecordBase::RecordFactoryL(KCDTIdLocationRecord));
-            }
-        }
-
+    // Not supported anymore
     iLocationEnabled = aEnable;
 
     OstTraceFunctionExit0( CCMPLUGINBASEENG_ENABLELOCATIONL_EXIT );
@@ -1147,8 +1150,8 @@
     iWapIPBearerRecord = FindWAPRecordL();
     if ( iWapIPBearerRecord )
         {
-        CCDWAPAccessPointRecord *wapApRecord = static_cast<CCDWAPAccessPointRecord *>
-                   (CCDRecordBase::RecordFactoryL(KCDTIdWAPAccessPointRecord));
+        CCDWAPAccessPointRecord *wapApRecord = static_cast<CCDWAPAccessPointRecord*>(
+                CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) );
 
         CleanupStack::PushL( wapApRecord );
 
@@ -1158,8 +1161,8 @@
             {
             CleanupStack::PopAndDestroy( wapApRecord );
 
-            wapApRecord = static_cast<CCDWAPAccessPointRecord *>
-                   (CCDRecordBase::RecordFactoryL(KCDTIdWAPAccessPointRecord));
+            wapApRecord = static_cast<CCDWAPAccessPointRecord*>(
+                    CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) );
             }
         else
             {
@@ -1175,6 +1178,7 @@
         {
         NewWapRecordL();
         }
+
     OstTraceFunctionExit0( CCMPLUGINBASEENG_LOADWAPRECORDL_EXIT );
     }
 
@@ -1196,7 +1200,7 @@
 // ---------------------------------------------------------------------------
 //
 void CCmPluginBaseEng::UpdateWapRecordL(
-    CCmClientPluginInstance* aClientPluginInstance )
+        CCmClientPluginInstance* aClientPluginInstance )
     {
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATEWAPRECORDL_ENTRY );
 
@@ -1206,14 +1210,14 @@
     delete iWapIPBearerRecord;
     iWapIPBearerRecord = NULL;
 
-    CCDIAPRecord* iapRecord =
-        static_cast<CCDIAPRecord*>( aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
-
-    CCDWAPAccessPointRecord* wapAPRecord =
-        static_cast<CCDWAPAccessPointRecord*>( aClientPluginInstance->iGenRecordArray[KWAPAPRecordIndex] );
-
-    CCDWAPIPBearerRecord* wapIPBearerRecord =
-        static_cast<CCDWAPIPBearerRecord*>( aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] );
+    CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
+            aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
+
+    CCDWAPAccessPointRecord* wapAPRecord = static_cast<CCDWAPAccessPointRecord*>(
+            aClientPluginInstance->iGenRecordArray[KWAPAPRecordIndex] );
+
+    CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
+            aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] );
 
     CopyAttributes( iapRecord, wapAPRecord );
     CopyAttributes( iapRecord, wapIPBearerRecord );
@@ -1221,12 +1225,12 @@
     CheckIfNameModifiedL( iapRecord, wapAPRecord );
     CheckIfNameModifiedL( iapRecord, wapIPBearerRecord );
 
-    iWapAPRecord = static_cast<CCDWAPAccessPointRecord*>
-                            ( CCDRecordBase::CreateCopyRecordL( *wapAPRecord ) );
+    iWapAPRecord = static_cast<CCDWAPAccessPointRecord*>(
+            CCDRecordBase::CreateCopyRecordL( *wapAPRecord ) );
     iWapAPRecord->SetElementId( wapAPRecord->ElementId() );
 
-    iWapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>
-                        ( CCDRecordBase::CreateCopyRecordL( *wapIPBearerRecord ) );
+    iWapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
+            CCDRecordBase::CreateCopyRecordL( *wapIPBearerRecord ) );
     iWapIPBearerRecord->SetElementId( wapIPBearerRecord->ElementId() );
 
     if ( !iWapAPRecord->RecordId() )
@@ -1256,6 +1260,7 @@
         {
         iWapIPBearerRecord->ModifyL( iSession );
         }
+
     OstTraceFunctionExit0( DUP1_CCMPLUGINBASEENG_UPDATEWAPRECORDL_EXIT );
     }
 
@@ -1269,8 +1274,8 @@
 
     if ( !iWapIPBearerRecord )
         {
-        iWapIPBearerRecord = static_cast<CCDWAPIPBearerRecord *>
-                      ( CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) );
+        iWapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
+                CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) );
         iWapIPBearerRecord->iWAPProxyPort = 0;
         iWapIPBearerRecord->iWAPWSPOption = ECmWapWspOptionConnectionOriented;
         iWapIPBearerRecord->iWAPSecurity = EFalse;
@@ -1278,11 +1283,12 @@
 
     if ( !iWapAPRecord )
         {
-        iWapAPRecord = static_cast<CCDWAPAccessPointRecord *>
-                   ( CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) );
-        // SMS bearer is not supported by this version
+        iWapAPRecord = static_cast<CCDWAPAccessPointRecord*>(
+                CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) );
+        // SMS bearer is not supported by this version.
         iWapAPRecord->iWAPCurrentBearer.SetL( TPtrC( KCDTypeNameWAPIPBearer ) );
         }
+
     OstTraceFunctionExit0( CCMPLUGINBASEENG_NEWWAPRECORDL_EXIT );
     }
 
@@ -1313,9 +1319,10 @@
 // CCmPluginBaseEng::SetAttribute
 // ---------------------------------------------------------------------------
 //
-void CCmPluginBaseEng::SetAttribute( CCDRecordBase* aRecord,
-                                     TUint32 aAttribute,
-                                     TBool aSet )
+void CCmPluginBaseEng::SetAttribute(
+        CCDRecordBase* aRecord,
+        TUint32 aAttribute,
+        TBool aSet )
     {
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETATTRIBUTE_ENTRY );
 
@@ -1335,22 +1342,23 @@
 // CCmPluginBaseEng::CopyAttributes
 // ---------------------------------------------------------------------------
 //
-void CCmPluginBaseEng::CopyAttributes( CCDRecordBase* aSrcRecord,
-                                       CCDRecordBase* aDstRecord )
+void CCmPluginBaseEng::CopyAttributes(
+        CCDRecordBase* aSrcRecord,
+        CCDRecordBase* aDstRecord )
     {
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_COPYATTRIBUTES_ENTRY );
 
     if ( aSrcRecord == NULL || aDstRecord == NULL )
         {
+        OstTraceFunctionExit0( CCMPLUGINBASEENG_COPYATTRIBUTES_EXIT );
         return;
         }
 
-    // clear the target record attributes first
+    // Clear the target record attributes first.
     aDstRecord->ClearAttributes( aDstRecord->Attributes() );
-
     aDstRecord->SetAttributes( aSrcRecord->Attributes() );
 
-    OstTraceFunctionExit0( CCMPLUGINBASEENG_COPYATTRIBUTES_EXIT );
+    OstTraceFunctionExit0( DUP1_CCMPLUGINBASEENG_COPYATTRIBUTES_EXIT );
     }
 
 // ---------------------------------------------------------------------------
@@ -1362,12 +1370,11 @@
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_FINDWAPRECORDL_ENTRY );
 
     CMDBRecordSet<CCDWAPIPBearerRecord>* wapRS =
-            new(ELeave)
-                   CMDBRecordSet<CCDWAPIPBearerRecord>(KCDTIdWAPIPBearerRecord);
+            new( ELeave ) CMDBRecordSet<CCDWAPIPBearerRecord>( KCDTIdWAPIPBearerRecord );
     CleanupStack::PushL( wapRS );
 
-    CCDWAPIPBearerRecord* wapBearerRecord = static_cast<CCDWAPIPBearerRecord *>
-                      (CCDRecordBase::RecordFactoryL(KCDTIdWAPIPBearerRecord));
+    CCDWAPIPBearerRecord* wapBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
+            CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) );
 
     CleanupStack::PushL( wapBearerRecord );
 
@@ -1377,19 +1384,17 @@
     CleanupStack::Pop( wapBearerRecord );
     wapBearerRecord = NULL;
 
-    if ( wapRS->FindL(iSession) )
+    if ( wapRS->FindL( iSession ) )
         {
-        wapBearerRecord =
-                        static_cast<CCDWAPIPBearerRecord *>(wapRS->iRecords[0]);
-
-        // we take over the ownership of this record
+        wapBearerRecord = static_cast<CCDWAPIPBearerRecord*>( wapRS->iRecords[0] );
+
+        // Take over the ownership of this record.
         wapRS->iRecords.Remove( 0 );
         }
 
     CleanupStack::PopAndDestroy( wapRS );
 
     OstTraceFunctionExit0( CCMPLUGINBASEENG_FINDWAPRECORDL_EXIT );
-
     return wapBearerRecord;
     }
 
@@ -1402,12 +1407,11 @@
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_FINDSEAMLESSNESSRECORDL_ENTRY );
 
     CMDBRecordSet<CCDIAPMetadataRecord>* metadataRecordSet =
-          new(ELeave) CMDBRecordSet<CCDIAPMetadataRecord>( iMetadataTableId );
+            new( ELeave ) CMDBRecordSet<CCDIAPMetadataRecord>( iMetadataTableId );
     CleanupStack::PushL( metadataRecordSet );
 
     CCDIAPMetadataRecord* metadataRecord =
-            new (ELeave) CCDIAPMetadataRecord( iMetadataTableId );
-
+            new( ELeave ) CCDIAPMetadataRecord( iMetadataTableId );
     CleanupStack::PushL( metadataRecord );
 
     metadataRecord->iIAP = IAPRecordElementId();
@@ -1434,7 +1438,6 @@
     CleanupStack::PopAndDestroy( metadataRecordSet );
 
     OstTraceFunctionExit0( CCMPLUGINBASEENG_FINDSEAMLESSNESSRECORDL_EXIT );
-
     return metadataRecord;
     }
 
@@ -1442,8 +1445,9 @@
 // CCmPluginBaseEng::DoMakeValidNameL
 // ---------------------------------------------------------------------------
 //
-HBufC* CCmPluginBaseEng::DoMakeValidNameL( const TDesC& aName,
-                                           const TUint32& aIapId  )
+HBufC* CCmPluginBaseEng::DoMakeValidNameL(
+        const TDesC& aName,
+        const TUint32& aIapId )
     {
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_DOMAKEVALIDNAMEL_ENTRY );
 
@@ -1469,9 +1473,9 @@
             {
             changed = ETrue;
             postfix++;
-            // check the length of postfix, check text length accordingly
+            // Check the length of postfix, check text length accordingly.
             pf = postfix;
-            for (i=1; i<10; i++)
+            for ( i = 1; i < 10; i++ )
                 {
                 pf /= 10;
                 if ( !pf )
@@ -1496,7 +1500,7 @@
                 }
             if ( postfix )
                 {
-                TBuf< KMaxPostfixLength > postfixString;
+                TBuf<KMaxPostfixLength> postfixString;
                 if ( postfix > 9 )
                     {
                     postfixString.Format( KFormatLargePostfix, postfix );
@@ -1507,8 +1511,7 @@
                     postfixString.Format( KFormatPostfix, postfix );
 //     TODO:               AknTextUtils::LanguageSpecificNumberConversion( postfixString );
                     }
-                sgdptr.Format( KFormatNameWithPostfix, &sgdptr2,
-                                   &postfixString );
+                sgdptr.Format( KFormatNameWithPostfix, &sgdptr2, &postfixString );
                 }
             else
                 {
@@ -1531,7 +1534,6 @@
         }
 
     OstTraceFunctionExit0( CCMPLUGINBASEENG_DOMAKEVALIDNAMEL_EXIT );
-
     return temp;
     }
 
@@ -1539,8 +1541,9 @@
 // CCmPluginBaseEng::EnsureMaxLengthLC
 // ---------------------------------------------------------------------------
 //
-HBufC* CCmPluginBaseEng::EnsureMaxLengthLC( const TDesC& aName,
-                                            TBool& aChanged )
+HBufC* CCmPluginBaseEng::EnsureMaxLengthLC(
+        const TDesC& aName,
+        TBool& aChanged )
     {
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_ENSUREMAXLENGTHLC_ENTRY );
 
@@ -1556,7 +1559,8 @@
 
     HBufC* corrname;
     if ( KApMaxConnNameLength < length )
-        { // name too long, truncate.
+        {
+        // Name too long, truncate.
         corrname = aName.Left( KApMaxConnNameLength ).AllocLC();
         aChanged = ETrue;
         }
@@ -1568,7 +1572,7 @@
             {
             User::Leave( KErrArgument );
             }
-        // comes here only if name is valid
+        // Comes here only if name is valid.
         if ( corrname->Length() != aName.Length() )
             {
             aChanged = ETrue;
@@ -1576,7 +1580,6 @@
         }
 
     OstTraceFunctionExit0( CCMPLUGINBASEENG_ENSUREMAXLENGTHLC_EXIT );
-
     return corrname;
     }
 
@@ -1613,8 +1616,8 @@
             prefix.Set( aName.Left( lastBrace ) );
             }
         }
+
     OstTraceFunctionExit0( CCMPLUGINBASEENG_GETPREFIX_EXIT );
-
     return prefix;
     }
 
@@ -1682,8 +1685,8 @@
                 }
             }
         }
+
     OstTraceFunctionExit0( CCMPLUGINBASEENG_GETPOSTFIX_EXIT );
-
     return postfix;
     }
 
@@ -1691,49 +1694,46 @@
 // CCmPluginBaseEng::IsValidNameL
 // ---------------------------------------------------------------------------
 //
-TBool CCmPluginBaseEng::IsValidNameL( const TDesC& aNameText,
-                                      const TUint32& aIapId )
+TBool CCmPluginBaseEng::IsValidNameL(
+        const TDesC& aNameText,
+        const TUint32& aIapId )
     {
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_ISVALIDNAMEL_ENTRY );
 
     TBool retVal( ETrue );
 
     CMDBRecordSet<CCDIAPRecord>* iapRS =
-                      new(ELeave) CMDBRecordSet<CCDIAPRecord>(KCDTIdIAPRecord);
+            new( ELeave ) CMDBRecordSet<CCDIAPRecord>(KCDTIdIAPRecord);
     CleanupStack::PushL(iapRS);
 
-    CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord *>
-                            (CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
-
+    CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
+            CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) );
     CleanupStack::PushL( iapRecord );
 
-    // Prime record
+    // Prime record.
     iapRecord->iRecordName.SetL( aNameText );
-
     iapRS->iRecords.AppendL( iapRecord );
-
     CleanupStack::Pop( iapRecord );
-
     iapRecord = NULL;
 
-    if ( iapRS->FindL(iSession) )
+    if ( iapRS->FindL( iSession ) )
         {
         if ( iIapId )
-            // this is not a new CM
             {
+            // This is not a new CM.
             for ( TInt i = 0; i < iapRS->iRecords.Count(); ++i )
                 {
                 if ( iapRS->iRecords[i]->RecordId() != aIapId )
-                    // duplication because it's not our name
                     {
+                    // Duplication because it's not our name.
                     retVal = EFalse;
                     break;
                     }
                 }
             }
         else
-            // new CM -> any occurence is a duplication
             {
+            // New CM -> any occurence is a duplication.
             retVal = EFalse;
             }
         }
@@ -1741,7 +1741,6 @@
     CleanupStack::PopAndDestroy( iapRS );
 
     OstTraceFunctionExit0( CCMPLUGINBASEENG_ISVALIDNAMEL_EXIT );
-
     return retVal;
     }
 
@@ -1760,7 +1759,7 @@
     TUint quote( '\'' );  // TChar gives warnings in THUMB & ARMI
     TInt i( 0 );
 
-    for ( i=0; i<l; i++ )
+    for ( i = 0; i < l; i++ )
         {
         ret.Append( aLiteral[i] );
         if ( aLiteral[i] == quote )
@@ -1769,8 +1768,8 @@
             ret.Append( quote );
             }
         }
+
     OstTraceFunctionExit0( CCMPLUGINBASEENG_ESCAPETEXTLC_EXIT );
-
     return retbuf;
     }
 
@@ -1791,7 +1790,7 @@
         HBufC* newName = DoMakeValidNameL( aName, iIapId );
 
         if ( newName )
-            // name converted to unique
+            // Name converted to unique.
             {
             CleanupStack::PushL( newName );
             iIapRecord->iRecordName.SetL( *newName );
@@ -1817,6 +1816,7 @@
         {
         User::Leave( KErrCorrupt );
         }
+
     OstTraceFunctionExit0( CCMPLUGINBASEENG_SETDEFAULTNAMEL_EXIT );
     }
 
@@ -1841,7 +1841,7 @@
         HBufC* newName = DoMakeValidNameL( aName, iapid );
 
         if ( newName )
-            // name converted to unique
+            // Name converted to unique.
             {
             CleanupStack::PushL( newName );
             aIapRecord->iRecordName.SetL( *newName );
@@ -1880,9 +1880,14 @@
     {
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_CHECKIFNAMEMODIFIEDL_ENTRY );
 
+    if ( !aSrcRecord || !aDestRecord )
+        {
+        User::Leave( KErrCorrupt );
+        }
+
     if ( !TPtrC( aSrcRecord->iRecordName ).CompareF( TPtrC( aDestRecord->iRecordName ) ) )
-        // names matche
         {
+        // Names match.
         OstTraceFunctionExit0( CCMPLUGINBASEENG_CHECKIFNAMEMODIFIEDL_EXIT );
         return;
         }
@@ -1897,8 +1902,6 @@
 // ---------------------------------------------------------------------------
 TMDBElementId CCmPluginBaseEng::IAPRecordElementId() const
     {
-    OstTraceFunctionEntry0( CCMPLUGINBASEENG_IAPRECORDELEMENTID_ENTRY );
-
     return ( KCDMaskShowField & iIapRecord->ElementId() );
     }
 
@@ -1921,45 +1924,43 @@
 
     TUint32 locId( 0 );
     CMDBRecordSet<CCDLocationRecord>* locRS =
-            new(ELeave) CMDBRecordSet<CCDLocationRecord>(KCDTIdLocationRecord);
+            new( ELeave ) CMDBRecordSet<CCDLocationRecord>( KCDTIdLocationRecord );
     CleanupStack::PushL( locRS );
 
-    CCDLocationRecord* locRecord = static_cast<CCDLocationRecord *>
-                         (CCDRecordBase::RecordFactoryL(KCDTIdLocationRecord));
-
+    CCDLocationRecord* locRecord = static_cast<CCDLocationRecord*>(
+            CCDRecordBase::RecordFactoryL( KCDTIdLocationRecord ) );
     CleanupStack::PushL( locRecord );
+
     locRecord->iRecordName.SetL( KLocationName );
     locRS->iRecords.AppendL( locRecord );
     CleanupStack::Pop( locRecord );
 
     if ( locRS->FindL(iSession) )
         {
-        locRecord = static_cast<CCDLocationRecord *>(locRS->iRecords[0]);
-
+        locRecord = static_cast<CCDLocationRecord*>( locRS->iRecords[0] );
         locId = locRecord->RecordId();
         }
     else
         {
-        User::Leave( KErrNotFound );
+        User::Leave( KErrNotFound ); //TODO, what to do if not found. Can we create it? need study.
         }
 
     CleanupStack::PopAndDestroy( locRS );
 
     OstTraceFunctionExit0( CCMPLUGINBASEENG_GETLOCATIONIDL_EXIT );
-
     return locId;
     }
 
 // ---------------------------------------------------------------------------
 // CCmPluginBaseEng::SetProxyServerNameL
 // ---------------------------------------------------------------------------
- void CCmPluginBaseEng::SetProxyServerNameL( const TDesC& aProxyServer,
-                                             CCDRecordBase* aProxyRecord )
+ void CCmPluginBaseEng::SetProxyServerNameL(
+         const TDesC& aProxyServer,
+         CCDRecordBase* aProxyRecord )
     {
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETPROXYSERVERNAMEL_ENTRY );
 
-    CCDProxiesRecord* proxyRecord =
-                    static_cast<CCDProxiesRecord*>( aProxyRecord );
+    CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>( aProxyRecord );
 
     proxyRecord->iServerName.SetL( aProxyServer );
     if ( !aProxyServer.Length() )
@@ -1979,10 +1980,11 @@
 // CCmPluginBaseEng::CheckDNSServerAddressL
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void CCmPluginBaseEng::CheckDNSServerAddressL( TBool aIPv6,
-                                                        CMDBField<TDesC>& aDNS1,
-                                                        CMDBField<TDesC>& aDNS2,
-                                                        CMDBField<TBool>& aDNSFromServer )
+EXPORT_C void CCmPluginBaseEng::CheckDNSServerAddressL(
+        TBool aIPv6,
+        CMDBField<TDesC>& aDNS1,
+        CMDBField<TDesC>& aDNS2,
+        CMDBField<TBool>& aDNSFromServer )
     {
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_CHECKDNSSERVERADDRESSL_ENTRY );
 
@@ -1999,7 +2001,7 @@
                     }
                 else
                     {
-                    // Both are unspecified
+                    // Both are unspecified.
                     aDNSFromServer = ETrue;
                     }
                 }
@@ -2015,7 +2017,7 @@
                     }
                 else
                     {
-                    // Both are unspecified
+                    // Both are unspecified.
                     aDNSFromServer = ETrue;
                     }
                 }
@@ -2046,11 +2048,12 @@
 
     if ( iIapRecord )
         {
-        CCDIAPRecord* iapRecord =
-                static_cast<CCDIAPRecord*>( CCDRecordBase::CreateCopyRecordL( *iIapRecord ) );
+        CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
+                CCDRecordBase::CreateCopyRecordL( *iIapRecord ) );
+        iapRecord->SetElementId( iIapRecord->ElementId() );
         CleanupStack::PushL( iapRecord );
-        iapRecord->SetElementId( iIapRecord->ElementId() );
-        aClientPluginInstance->iGenRecordArray.AppendL( static_cast<CommsDat::CCDRecordBase*>( iapRecord ) );
+        aClientPluginInstance->iGenRecordArray.AppendL(
+                static_cast<CommsDat::CCDRecordBase*>( iapRecord ) );
         CleanupStack::Pop( iapRecord );
         }
     else
@@ -2073,11 +2076,12 @@
 
     if ( iNetworkRecord )
         {
-        CCDNetworkRecord* networkRecord =
-                static_cast<CCDNetworkRecord*>( CCDRecordBase::CreateCopyRecordL( *iNetworkRecord ) );
+        CCDNetworkRecord* networkRecord = static_cast<CCDNetworkRecord*>(
+                CCDRecordBase::CreateCopyRecordL( *iNetworkRecord ) );
+        networkRecord->SetElementId( iNetworkRecord->ElementId() );
         CleanupStack::PushL( networkRecord );
-        networkRecord->SetElementId( iNetworkRecord->ElementId() );
-        aClientPluginInstance->iGenRecordArray.AppendL( static_cast<CommsDat::CCDRecordBase*>( networkRecord ) );
+        aClientPluginInstance->iGenRecordArray.AppendL(
+                static_cast<CommsDat::CCDRecordBase*>( networkRecord ) );
         CleanupStack::Pop( networkRecord );
         }
     else
@@ -2087,11 +2091,12 @@
 
     if ( iWapAPRecord )
         {
-        CCDWAPAccessPointRecord* wapAPRecord =
-                static_cast<CCDWAPAccessPointRecord*>( CCDRecordBase::CreateCopyRecordL( *iWapAPRecord ) );
+        CCDWAPAccessPointRecord* wapAPRecord = static_cast<CCDWAPAccessPointRecord*>(
+                CCDRecordBase::CreateCopyRecordL( *iWapAPRecord ) );
+        wapAPRecord->SetElementId( iWapAPRecord->ElementId() );
         CleanupStack::PushL( wapAPRecord );
-        wapAPRecord->SetElementId( iWapAPRecord->ElementId() );
-        aClientPluginInstance->iGenRecordArray.AppendL( static_cast<CommsDat::CCDRecordBase*>( wapAPRecord ) );
+        aClientPluginInstance->iGenRecordArray.AppendL(
+                static_cast<CommsDat::CCDRecordBase*>( wapAPRecord ) );
         CleanupStack::Pop( wapAPRecord );
         }
     else
@@ -2101,11 +2106,12 @@
 
     if ( iWapIPBearerRecord )
         {
-        CCDWAPIPBearerRecord* wapIPBearerRecord =
-                static_cast<CCDWAPIPBearerRecord*>( CCDRecordBase::CreateCopyRecordL( *iWapIPBearerRecord ) );
+        CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
+                CCDRecordBase::CreateCopyRecordL( *iWapIPBearerRecord ) );
+        wapIPBearerRecord->SetElementId( iWapIPBearerRecord->ElementId() );
         CleanupStack::PushL( wapIPBearerRecord );
-        wapIPBearerRecord->SetElementId( iWapIPBearerRecord->ElementId() );
-        aClientPluginInstance->iGenRecordArray.AppendL( static_cast<CommsDat::CCDRecordBase*>( wapIPBearerRecord ) );
+        aClientPluginInstance->iGenRecordArray.AppendL(
+                static_cast<CommsDat::CCDRecordBase*>( wapIPBearerRecord ) );
         CleanupStack::Pop( wapIPBearerRecord );
         }
     else
@@ -2115,45 +2121,33 @@
 
     if ( iMetaDataRecord )
         {
-        CCDIAPMetadataRecord* metaDataRecord =
+        CCDIAPMetadataRecord* metadataRecord =
                 new( ELeave ) CCDIAPMetadataRecord( iMetadataTableId );
-        CleanupStack::PushL( metaDataRecord );
-        metaDataRecord->iIAP = IAPRecordElementId();
-        metaDataRecord->iMetadata.SetL( iMetaDataRecord->iMetadata );
-        metaDataRecord->iSeamlessness.SetL( iMetaDataRecord->iSeamlessness );
-        metaDataRecord->SetElementId( iMetaDataRecord->ElementId() );
-        // Record name is set during update.
+        CleanupStack::PushL( metadataRecord );
+        CopyRecordFieldsL( *iMetaDataRecord, *metadataRecord );
+        metadataRecord->SetElementId( iMetaDataRecord->ElementId() );
+        // Record name is set/changed during update.
 
         aClientPluginInstance->iGenRecordArray.AppendL(
-                static_cast<CommsDat::CCDRecordBase*>( metaDataRecord ) );
-        CleanupStack::Pop( metaDataRecord );
+                static_cast<CommsDat::CCDRecordBase*>( metadataRecord ) );
+        CleanupStack::Pop( metadataRecord );
         }
     else
         {
         aClientPluginInstance->iGenRecordArray.AppendL( NULL );
         }
 
-    if ( iLocationRecord )
-        {
-        CCDLocationRecord* locationRecord =
-                static_cast<CCDLocationRecord*>( CCDRecordBase::CreateCopyRecordL( *iLocationRecord ) );
-        CleanupStack::PushL( locationRecord );
-        locationRecord->SetElementId( iLocationRecord->ElementId() );
-        aClientPluginInstance->iGenRecordArray.AppendL( static_cast<CommsDat::CCDRecordBase*>( locationRecord ) );
-        CleanupStack::Pop( locationRecord );
-        }
-    else
-        {
-        aClientPluginInstance->iGenRecordArray.AppendL( NULL );
-        }
+    // Location record does not need to be loaded
+    aClientPluginInstance->iGenRecordArray.AppendL( NULL );
 
     if ( iProxyRecord )
         {
-        CCDProxiesRecord* proxyRecord =
-                static_cast<CCDProxiesRecord*>( CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) );
+        CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>(
+                CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) );
+        proxyRecord->SetElementId( iProxyRecord->ElementId() );
         CleanupStack::PushL( proxyRecord );
-        proxyRecord->SetElementId( iProxyRecord->ElementId() );
-        aClientPluginInstance->iGenRecordArray.AppendL( static_cast<CommsDat::CCDRecordBase*>( proxyRecord ) );
+        aClientPluginInstance->iGenRecordArray.AppendL(
+                static_cast<CommsDat::CCDRecordBase*>( proxyRecord ) );
         CleanupStack::Pop( proxyRecord );
         }
     else
@@ -2330,9 +2324,10 @@
             break;
         case ECmDestination:
             {
-            TRAPD( err, retVal = GetBearerBoolAttributeL( aAttribute,
-                                                          aClientPluginInstance->iGenRecordArray,
-                                                          aClientPluginInstance->iBearerSpecRecordArray ) );
+            TRAPD( err, retVal = GetBearerBoolAttributeL(
+                    aAttribute,
+                    aClientPluginInstance->iGenRecordArray,
+                    aClientPluginInstance->iBearerSpecRecordArray ) );
             if ( err )
                 {
                 if ( err == KErrNotFound )
@@ -2351,12 +2346,18 @@
             retVal = EFalse;
             }
             break;
+        case ECmLocationUsageEnabled:
+            {
+            retVal = iLocationEnabled;
+            }
+            break;
         case ECmCoverage:
             // By default the plugin has no network coverage.
             {
-            TRAPD( err, retVal = GetBearerBoolAttributeL( aAttribute,
-                                                          aClientPluginInstance->iGenRecordArray,
-                                                          aClientPluginInstance->iBearerSpecRecordArray ) );
+            TRAPD( err, retVal = GetBearerBoolAttributeL(
+                    aAttribute,
+                    aClientPluginInstance->iGenRecordArray,
+                    aClientPluginInstance->iBearerSpecRecordArray ) );
             if ( err )
                 {
                 if ( err == KErrNotFound )
@@ -2372,16 +2373,14 @@
             break;
         case ECmMetaHighlight:
             {
-            CCDIAPMetadataRecord* metadataRecord =
-                static_cast<CCDIAPMetadataRecord*>(
+            CCDIAPMetadataRecord* metadataRecord = static_cast<CCDIAPMetadataRecord*>(
                     aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] );
             retVal = metadataRecord->iMetadata & EMetaHighlight;
             }
             break;
         case ECmMetaHiddenAgent:
             {
-            CCDIAPMetadataRecord* metadataRecord =
-                static_cast<CCDIAPMetadataRecord*>(
+            CCDIAPMetadataRecord* metadataRecord = static_cast<CCDIAPMetadataRecord*>(
                     aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] );
             retVal = metadataRecord->iMetadata & EMetaHiddenAgent;
             }
@@ -2420,16 +2419,40 @@
     {
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_GETSTRINGATTRIBUTEL_ENTRY );
 
+    if ( !aClientPluginInstance )
+        {
+        User::Leave( KErrCorrupt );
+        }
+
     HBufC* retVal = NULL;
 
     switch ( aAttribute )
         {
+        case ECmBearerIcon:
+            {
+            //TODO, read icon name from metadata record after commsdat changes implemented.
+            //CCDIAPMetadataRecord* metadataRecord = static_cast<CCDIAPMetadataRecord*>(
+            //        aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] );
+
+            //if ( !metadataRecord )
+            //    {
+            //    User::Leave( KErrCorrupt );
+            //    }
+
+            //retVal = TPtrC( metadataRecord->iIconFileName ).AllocL();
+            retVal = KNullDesC().AllocL();//TODO, check this freed
+            }
+            break;
         case ECmStartPage:
             {
-            CCDWAPAccessPointRecord* wapAPRecord =
-                static_cast<CCDWAPAccessPointRecord*>(
+            CCDWAPAccessPointRecord* wapAPRecord = static_cast<CCDWAPAccessPointRecord*>(
                     aClientPluginInstance->iGenRecordArray[KWAPAPRecordIndex] );
 
+            if ( !wapAPRecord )
+                {
+                User::Leave( KErrCorrupt );
+                }
+
             retVal = TPtrC( wapAPRecord->iWAPStartPage ).AllocL();
             }
             break;
@@ -2438,84 +2461,89 @@
             CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
                     aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
 
+            if ( !iapRecord )
+                {
+                User::Leave( KErrCorrupt );
+                }
+
             retVal = TPtrC( iapRecord->iRecordName ).AllocL();
             }
             break;
         case ECmProxyServerName:
             {
-            if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )
-                {
-                User::Leave( KErrNotFound );
-                }
-
             CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>(
                     aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] );
 
+            if ( !proxyRecord )
+                {
+                User::Leave( KErrCorrupt );
+                }
+
             retVal = TPtrC( proxyRecord->iServerName ).AllocL();
             }
             break;
         case ECmProxyProtocolName:
             {
-            if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )
-                {
-                User::Leave( KErrNotFound );
-                }
-
             CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>(
                     aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] );
 
+            if ( !proxyRecord )
+                {
+                User::Leave( KErrCorrupt );
+                }
+
             retVal = TPtrC( proxyRecord->iExceptions ).AllocL();
             }
             break;
         case ECmProxyExceptions:
             {
-            if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )
-                {
-                User::Leave( KErrNotFound );
-                }
-
             CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>(
                     aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] );
 
+            if ( !proxyRecord )
+                {
+                User::Leave( KErrCorrupt );
+                }
+
             retVal = TPtrC( proxyRecord->iProtocolName ).AllocL();
             }
             break;
         case ECmWapIPGatewayAddress:
             {
-            if ( !aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )
-                {
-                User::Leave( KErrNotFound );
-                }
-
             CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
                     aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] );
 
+            if ( !wapIPBearerRecord )
+                {
+                User::Leave( KErrCorrupt );
+                }
+
             retVal = TPtrC( wapIPBearerRecord->iWAPGatewayAddress ).AllocL();
             }
             break;
         case ECmWapIPProxyLoginName:
             {
-            if ( !aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )
-                {
-                User::Leave( KErrNotFound );
-                }
-
             CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
                     aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] );
 
+            if ( !wapIPBearerRecord )
+                {
+                User::Leave( KErrCorrupt );
+                }
+
             retVal = TPtrC( wapIPBearerRecord->iWAPProxyLoginName ).AllocL();
             }
             break;
         case ECmWapIPProxyLoginPass:
             {
-            if ( !aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )
-                {
-                User::Leave( KErrNotFound );
-                }
-
             CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
                     aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] );
 
+            if ( !wapIPBearerRecord )
+                {
+                User::Leave( KErrCorrupt );
+                }
+
             retVal = TPtrC( wapIPBearerRecord->iWAPProxyLoginPass ).AllocL();
             }
             break;
@@ -2560,13 +2588,13 @@
     return retVal;
     }
 
-//-----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // CCmPluginBaseEng::GetIntAttributeL
 // -----------------------------------------------------------------------------
 EXPORT_C void CCmPluginBaseEng::SetIntAttributeL(
-    TUint32 aAttribute,
-    TUint32 aValue,
-    CCmClientPluginInstance* aClientPluginInstance )
+        TUint32 aAttribute,
+        TUint32 aValue,
+        CCmClientPluginInstance* aClientPluginInstance )
     {
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETINTATTRIBUTEL_ENTRY );
 
@@ -2593,7 +2621,7 @@
                 {
                 static_cast<CCDIAPMetadataRecord*>(
                         aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] )->
-                                iSeamlessness.SetL( aValue );
+                        iSeamlessness.SetL( aValue );
                 }
             else
                 {
@@ -2611,17 +2639,18 @@
             {
             if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )
                 {
-                CCDProxiesRecord* proxyRecord =
-                        static_cast<CCDProxiesRecord*>( CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) );
+                CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>(
+                        CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) );
                 CleanupStack::PushL( proxyRecord );
                 proxyRecord->SetElementId( iProxyRecord->ElementId() );
-                aClientPluginInstance->iGenRecordArray.AppendL( static_cast<CommsDat::CCDRecordBase*>( proxyRecord ) );
+                aClientPluginInstance->iGenRecordArray.AppendL(
+                        static_cast<CommsDat::CCDRecordBase*>( proxyRecord ) );
                 CleanupStack::Pop( proxyRecord );
                 }
 
             static_cast<CCDProxiesRecord*>(
-                    aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )
-                        ->iPortNumber = aValue;
+                    aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->
+                    iPortNumber = aValue;
             }
             break;
         case ECmWapIPWSPOption:
@@ -2633,39 +2662,43 @@
             else
                 {
                 static_cast<CCDWAPIPBearerRecord*>(
-                        aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )->iWAPWSPOption.SetL( aValue );
+                        aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )->
+                        iWAPWSPOption.SetL( aValue );
                 }
             }
             break;
         case ECmWapIPProxyPort:
             {
             static_cast<CCDWAPIPBearerRecord*>(
-                    aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )->iWAPProxyPort.SetL( aValue );
+                    aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )->
+                    iWAPProxyPort.SetL( aValue );
             }
             break;
         default:
             {
-            SetBearerIntAttributeL( aAttribute,
-                                    aValue,
-                                    aClientPluginInstance->iGenRecordArray,
-                                    aClientPluginInstance->iBearerSpecRecordArray );
+            SetBearerIntAttributeL(
+                    aAttribute,
+                    aValue,
+                    aClientPluginInstance->iGenRecordArray,
+                    aClientPluginInstance->iBearerSpecRecordArray );
             }
         }
+
     OstTraceFunctionExit0( CCMPLUGINBASEENG_SETINTATTRIBUTEL_EXIT );
     }
 
-//-----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // CCmPluginBaseEng::SetBoolAttributeL
 // -----------------------------------------------------------------------------
 EXPORT_C void CCmPluginBaseEng::SetBoolAttributeL(
-    TUint32 aAttribute,
-    TBool aValue,
-    CCmClientPluginInstance* aClientPluginInstance )
+        TUint32 aAttribute,
+        TBool aValue,
+        CCmClientPluginInstance* aClientPluginInstance )
     {
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETBOOLATTRIBUTEL_ENTRY );
 
     CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
-                        aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
+            aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
 
     switch ( aAttribute )
         {
@@ -2707,17 +2740,18 @@
             {
             if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )
                 {
-                CCDProxiesRecord* proxyRecord =
-                        static_cast<CCDProxiesRecord*>( CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) );
+                CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>(
+                        CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) );
                 CleanupStack::PushL( proxyRecord );
                 proxyRecord->SetElementId( iProxyRecord->ElementId() );
-                aClientPluginInstance->iGenRecordArray.AppendL( static_cast<CommsDat::CCDRecordBase*>( proxyRecord ) );
+                aClientPluginInstance->iGenRecordArray.AppendL(
+                        static_cast<CommsDat::CCDRecordBase*>( proxyRecord ) );
                 CleanupStack::Pop( proxyRecord );
                 }
 
             static_cast<CCDProxiesRecord*>(
-                    aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )
-                        ->iUseProxyServer = aValue;
+                    aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->iUseProxyServer =
+                            aValue;
             }
             break;
         case ECmChargeCardUsageEnabled:
@@ -2732,9 +2766,8 @@
             break;
         case ECmMetaHighlight:
             {
-            CCDIAPMetadataRecord* metadataRecord =
-                static_cast<CCDIAPMetadataRecord*>(
-                        aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] );
+            CCDIAPMetadataRecord* metadataRecord = static_cast<CCDIAPMetadataRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] );
             if ( aValue )
                 {
                 metadataRecord->iMetadata = EMetaHighlight | metadataRecord->iMetadata;
@@ -2762,38 +2795,57 @@
         case ECmWapIPSecurity:
             {
             static_cast<CCDWAPIPBearerRecord*>(
-                    aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )->iWAPSecurity.SetL( aValue );
+                    aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )
+                    ->iWAPSecurity.SetL( aValue );
             }
             break;
         default:
             {
-            SetBearerBoolAttributeL( aAttribute,
-                                     aValue,
-                                     aClientPluginInstance->iGenRecordArray,
-                                     aClientPluginInstance->iBearerSpecRecordArray );
+            SetBearerBoolAttributeL(
+                    aAttribute,
+                    aValue,
+                    aClientPluginInstance->iGenRecordArray,
+                    aClientPluginInstance->iBearerSpecRecordArray );
             }
         }
+
     OstTraceFunctionExit0( CCMPLUGINBASEENG_SETBOOLATTRIBUTEL_EXIT );
     }
 
-//-----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // CCmPluginBaseEng::SetStringAttributeL
 // -----------------------------------------------------------------------------
 EXPORT_C void CCmPluginBaseEng::SetStringAttributeL(
-    TUint32 aAttribute,
-    const TDesC16& aValue,
-    CCmClientPluginInstance* aClientPluginInstance )
+        TUint32 aAttribute,
+        const TDesC16& aValue,
+        CCmClientPluginInstance* aClientPluginInstance )
     {
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETSTRINGATTRIBUTEL_ENTRY );
 
     switch ( aAttribute )
         {
+        case ECmBearerIcon:
+            {
+            //TODO, write icon name to metadata record after commsdat changes implemented.
+            //CCDIAPMetadataRecord* metadataRecord = static_cast<CCDIAPMetadataRecord*>(
+            //        aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] );
+
+            //if ( !metadataRecord )
+            //    {
+            //    User::Leave( KErrCorrupt );
+            //    }
+            //metadataRecord->iIconFileName.SetL( aValue );
+            }
+            break;
         case ECmStartPage:
             {
-            CCDWAPAccessPointRecord* wapAPRecord =
-                static_cast<CCDWAPAccessPointRecord*>(
-                        aClientPluginInstance->iGenRecordArray[KWAPAPRecordIndex] );
-
+            CCDWAPAccessPointRecord* wapAPRecord = static_cast<CCDWAPAccessPointRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KWAPAPRecordIndex] );
+
+            if ( !wapAPRecord )
+                {
+                User::Leave( KErrCorrupt );
+                }
             wapAPRecord->iWAPStartPage.SetL( aValue );
             }
             break;
@@ -2802,23 +2854,25 @@
             CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
                     aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
 
+            if ( !iapRecord )
+                {
+                User::Leave( KErrCorrupt );
+                }
             SetNameL( aValue, iapRecord, aClientPluginInstance->iNamingMethod );
             }
             break;
         case ECmProxyServerName:
             {
-            CCDProxiesRecord* proxyRecord =
-                    static_cast<CCDProxiesRecord*>(
-                            aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] );
+            CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] );
             if ( !proxyRecord )
                 {
-                proxyRecord = static_cast<CCDProxiesRecord *>
-                              ( CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord ) );
-
-                // map proxy record to this iap.
-                proxyRecord->iService =
-                        static_cast<CCDProxiesRecord*>(
-                                aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->RecordId();
+                proxyRecord = static_cast<CCDProxiesRecord*>(
+                        CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) );
+
+                // Map proxy record to this iap.
+                proxyRecord->iService = static_cast<CCDProxiesRecord*>(
+                        aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->RecordId();
 
                 aClientPluginInstance->iGenRecordArray.Insert( proxyRecord, KProxyRecordIndex );
                 }
@@ -2828,18 +2882,16 @@
             break;
         case ECmProxyProtocolName:
             {
-            CCDProxiesRecord* proxyRecord =
-                    static_cast<CCDProxiesRecord*>(
-                            aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] );
+            CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] );
             if ( !proxyRecord )
                 {
-                proxyRecord = static_cast<CCDProxiesRecord *>
-                              ( CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord ) );
-
-                // map proxy record to this iap.
-                proxyRecord->iService =
-                        static_cast<CCDProxiesRecord*>(
-                                aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->RecordId();
+                proxyRecord = static_cast<CCDProxiesRecord*>(
+                        CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) );
+
+                // Map proxy record to this iap.
+                proxyRecord->iService = static_cast<CCDProxiesRecord*>(
+                        aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->RecordId();
 
                 aClientPluginInstance->iGenRecordArray.Insert( proxyRecord, KProxyRecordIndex );
                 }
@@ -2849,18 +2901,16 @@
             break;
         case ECmProxyExceptions:
             {
-            CCDProxiesRecord* proxyRecord =
-                    static_cast<CCDProxiesRecord*>(
-                            aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] );
+            CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] );
             if ( !proxyRecord )
                 {
-                proxyRecord = static_cast<CCDProxiesRecord *>
-                              ( CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord ) );
-
-                // map proxy record to this iap.
-                proxyRecord->iService =
-                        static_cast<CCDProxiesRecord*>(
-                                aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->RecordId();
+                proxyRecord = static_cast<CCDProxiesRecord*>(
+                        CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) );
+
+                // Map proxy record to this iap.
+                proxyRecord->iService = static_cast<CCDProxiesRecord*>(
+                        aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->RecordId();
 
                 aClientPluginInstance->iGenRecordArray.Insert( proxyRecord, KProxyRecordIndex );
                 }
@@ -2873,6 +2923,10 @@
             CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
                     aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] );
 
+            if ( !wapIPBearerRecord )
+                {
+                User::Leave( KErrCorrupt );
+                }
             wapIPBearerRecord->iWAPGatewayAddress.SetL( aValue );
             }
             break;
@@ -2881,6 +2935,10 @@
             CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
                     aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] );
 
+            if ( !wapIPBearerRecord )
+                {
+                User::Leave( KErrCorrupt );
+                }
             wapIPBearerRecord->iWAPProxyLoginName.SetL( aValue );
             }
             break;
@@ -2889,27 +2947,33 @@
             CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
                     aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] );
 
+            if ( !wapIPBearerRecord )
+                {
+                User::Leave( KErrCorrupt );
+                }
             wapIPBearerRecord->iWAPProxyLoginPass.SetL( aValue );
             }
             break;
         default:
             {
-            SetBearerStringAttributeL( aAttribute,
-                                       aValue,
-                                       aClientPluginInstance->iGenRecordArray,
-                                       aClientPluginInstance->iBearerSpecRecordArray );
+            SetBearerStringAttributeL(
+                    aAttribute,
+                    aValue,
+                    aClientPluginInstance->iGenRecordArray,
+                    aClientPluginInstance->iBearerSpecRecordArray );
             }
         }
+
     OstTraceFunctionExit0( CCMPLUGINBASEENG_SETSTRINGATTRIBUTEL_EXIT );
     }
 
-//-----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
 // CCmPluginBaseEng::SetString8AttributeL
 // -----------------------------------------------------------------------------
 EXPORT_C void CCmPluginBaseEng::SetString8AttributeL(
-    TUint32 aAttribute,
-    const TDesC8& aValue,
-    CCmClientPluginInstance* aClientPluginInstance )
+        TUint32 aAttribute,
+        const TDesC8& aValue,
+        CCmClientPluginInstance* aClientPluginInstance )
     {
     OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETSTRING8ATTRIBUTEL_ENTRY );
 
@@ -2917,12 +2981,14 @@
         {
         default:
             {
-            SetBearerString8AttributeL( aAttribute,
-                                        aValue,
-                                        aClientPluginInstance->iGenRecordArray,
-                                        aClientPluginInstance->iBearerSpecRecordArray );
+            SetBearerString8AttributeL(
+                    aAttribute,
+                    aValue,
+                    aClientPluginInstance->iGenRecordArray,
+                    aClientPluginInstance->iBearerSpecRecordArray );
             }
         }
+
     OstTraceFunctionExit0( CCMPLUGINBASEENG_SETSTRING8ATTRIBUTEL_EXIT );
     }
 
@@ -2941,7 +3007,6 @@
         }
 
     OstTraceFunctionExit0( DUP1__ISUNSPECIFIEDIPV4ADDRESS_EXIT );
-
     return EFalse;
     }
 
@@ -2968,7 +3033,6 @@
         }
 
     OstTraceFunctionExit0( DUP2__CLASSIFYIPV6ADDRESS_EXIT );
-
     return EIPv6UserDefined;
     }