cmmanager/cmmgr/cmmpluginbase/src/ccmpluginbaseeng.cpp
changeset 53 4af712113915
parent 46 95d45f234cf3
child 66 ed07dcc72692
equal deleted inserted replaced
47:cb7afde124a3 53:4af712113915
   425 
   425 
   426 // ---------------------------------------------------------------------------
   426 // ---------------------------------------------------------------------------
   427 // CCmPluginBaseEng::GetGenericTableIdsToBeObserved
   427 // CCmPluginBaseEng::GetGenericTableIdsToBeObserved
   428 // ---------------------------------------------------------------------------
   428 // ---------------------------------------------------------------------------
   429 //
   429 //
   430 EXPORT_C void CCmPluginBaseEng::GetGenericTableIdsToBeObserved(
   430 EXPORT_C void CCmPluginBaseEng::GetGenericTableIdsToBeObservedL(
   431         RArray<TUint32>& aTableIdArray ) const
   431         RArray<TUint32>& aTableIdArray ) const
   432     {
   432     {
       
   433     OstTraceFunctionEntry0( CCMPLUGINBASEENG_GETGENERICTABLEIDSTOBEOBSERVED_ENTRY );
       
   434 
   433     // Service and bearer records should be added by plugins.
   435     // Service and bearer records should be added by plugins.
   434 
   436     aTableIdArray.AppendL( KCDTIdIAPRecord );
   435     aTableIdArray.Append( KCDTIdIAPRecord );
   437     aTableIdArray.AppendL( KCDTIdWAPAccessPointRecord );
   436     aTableIdArray.Append( KCDTIdWAPAccessPointRecord );
   438     aTableIdArray.AppendL( KCDTIdWAPIPBearerRecord );
   437     aTableIdArray.Append( KCDTIdProxiesRecord );
   439     aTableIdArray.AppendL( KCDTIdProxiesRecord );
   438     aTableIdArray.Append( iMetadataTableId );
   440     aTableIdArray.AppendL( iMetadataTableId );
       
   441 
       
   442     OstTraceFunctionExit0( CCMPLUGINBASEENG_GETGENERICTABLEIDSTOBEOBSERVED_EXIT );
   439     }
   443     }
   440 
   444 
   441 // ---------------------------------------------------------------------------
   445 // ---------------------------------------------------------------------------
   442 // CCmPluginBaseEng::CopyDataL
   446 // CCmPluginBaseEng::CopyDataL
   443 // ---------------------------------------------------------------------------
   447 // ---------------------------------------------------------------------------
   493 
   497 
   494     switch ( aRecordIdentifier )
   498     switch ( aRecordIdentifier )
   495         {
   499         {
   496         case KIapRecordIndex:
   500         case KIapRecordIndex:
   497             {
   501             {
   498             CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
   502             aCopyInstance->iIapRecord = static_cast<CCDIAPRecord*>(
   499                     CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) );
   503                     CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) );
   500             CleanupStack::PushL( iapRecord );
   504             CopyRecordFieldsL( *iIapRecord, *aCopyInstance->iIapRecord );
   501             CopyRecordFieldsL( *iIapRecord, *iapRecord );
       
   502             CleanupStack::Pop( iapRecord );
       
   503             aCopyInstance->iIapRecord = iapRecord;
       
   504             }
   505             }
   505             break;
   506             break;
   506         case KServiceRecordIndex:
   507         case KServiceRecordIndex:
   507             {
   508             {
   508             aCopyInstance->iServiceRecord = CopyServiceRecordL();
   509             aCopyInstance->iServiceRecord = CopyServiceRecordL();
   510             // process, in PrepareToUpdateRecordsL()-method.
   511             // process, in PrepareToUpdateRecordsL()-method.
   511             }
   512             }
   512             break;
   513             break;
   513         case KNetworkRecordIndex:
   514         case KNetworkRecordIndex:
   514             {
   515             {
   515             CCDNetworkRecord* networkRecord = static_cast<CCDNetworkRecord*>(
   516             aCopyInstance->iNetworkRecord = static_cast<CCDNetworkRecord*>(
   516                     CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) );
   517                     CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) );
   517             CleanupStack::PushL( networkRecord );
   518             CopyRecordFieldsL( *iNetworkRecord, *aCopyInstance->iNetworkRecord );
   518             CopyRecordFieldsL( *iNetworkRecord, *networkRecord );
       
   519             CleanupStack::Pop( networkRecord );
       
   520             aCopyInstance->iNetworkRecord = networkRecord;
       
   521             }
   519             }
   522             break;
   520             break;
   523         case KWAPAPRecordIndex:
   521         case KWAPAPRecordIndex:
   524             {
   522             {
   525             aCopyInstance->iWapAPRecord = static_cast<CCDWAPAccessPointRecord*>(
   523             aCopyInstance->iWapAPRecord = static_cast<CCDWAPAccessPointRecord*>(
   526                     CCDRecordBase::CreateCopyRecordL( *iWapAPRecord ) );//TODO, convert to generic copy
   524                     CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) );
       
   525             CopyRecordFieldsL( *iWapAPRecord, *aCopyInstance->iWapAPRecord );
   527             }
   526             }
   528             break;
   527             break;
   529         case KWAPBearerRecordIndex:
   528         case KWAPBearerRecordIndex:
   530             {
   529             {
   531             aCopyInstance->iWapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
   530             aCopyInstance->iWapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
   532                     CCDRecordBase::CreateCopyRecordL( *iWapIPBearerRecord ) );//TODO, convert to generic copy
   531                     CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) );
       
   532             CopyRecordFieldsL( *iWapIPBearerRecord, *aCopyInstance->iWapIPBearerRecord );
   533             }
   533             }
   534             break;
   534             break;
   535         case KMetaDataRecordIndex:
   535         case KMetaDataRecordIndex:
   536             {
   536             {
   537             CCDIAPMetadataRecord* metadataRecord =
   537             aCopyInstance->iMetaDataRecord = new( ELeave ) CCDIAPMetadataRecord( 
   538                     new( ELeave ) CCDIAPMetadataRecord( iMetadataTableId );
   538                     iMetadataTableId );
   539             CleanupStack::PushL( metadataRecord );
   539             CopyRecordFieldsL( *iMetaDataRecord, *aCopyInstance->iMetaDataRecord );
   540             CopyRecordFieldsL( *iMetaDataRecord, *metadataRecord );
       
   541             CleanupStack::Pop( metadataRecord );
       
   542             aCopyInstance->iMetaDataRecord = metadataRecord;
       
   543             }
   540             }
   544             break;
   541             break;
   545         case KProxyRecordIndex:
   542         case KProxyRecordIndex:
   546             {
   543             {
   547             if ( iProxyRecord )
   544             if ( iProxyRecord )
   548                 {
   545                 {
   549                 CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>(
   546                 aCopyInstance->iProxyRecord = static_cast<CCDProxiesRecord*>(
   550                         CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) );
   547                         CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) );
   551                 CleanupStack::PushL( proxyRecord );
   548                 CopyRecordFieldsL( *iProxyRecord, *aCopyInstance->iProxyRecord );
   552                 CopyRecordFieldsL( *iProxyRecord, *proxyRecord );
       
   553                 CleanupStack::Pop( proxyRecord );
       
   554                 aCopyInstance->iProxyRecord = proxyRecord;
       
   555                 }
   549                 }
   556             }
   550             }
   557             break;
   551             break;
   558         default:
   552         default:
   559             {
   553             {
   589     while ( recordInfo && recordInfo->iTypeId != 0 )
   583     while ( recordInfo && recordInfo->iTypeId != 0 )
   590         {
   584         {
   591         ptrSource = aSource.GetFieldByIdL( recordInfo->iTypeId );
   585         ptrSource = aSource.GetFieldByIdL( recordInfo->iTypeId );
   592         ptrDest = aDestination.GetFieldByIdL( recordInfo->iTypeId );
   586         ptrDest = aDestination.GetFieldByIdL( recordInfo->iTypeId );
   593 
   587 
   594         // Make sure we see only basic type info. Masks out any additional info
   588         if ( !( ptrSource->IsNull() ) )
   595         // on links (CommsDat internal stuff).
   589             {
   596         switch ( recordInfo->iValType & 0x000000ff )
   590             // Make sure we see only basic type info. Masks out any additional info
   597             {
   591             // on links (CommsDat internal stuff).
   598             case CommsDat::EInt:
   592             switch ( recordInfo->iValType & 0x000000ff )
   599             case CommsDat::EBool:
   593                 {
   600                 {
   594                 case CommsDat::EInt:
   601                 if ( !( ptrSource->IsNull() ) )
   595                 case CommsDat::EBool:
   602                     {
   596                     {
   603                     static_cast<CMDBField<TInt>&>( *ptrDest ).SetL(
   597                     static_cast<CMDBField<TInt>&>( *ptrDest ).SetL(
   604                             static_cast<CMDBField<TInt>&>( *ptrSource ) );
   598                             static_cast<CMDBField<TInt>&>( *ptrSource ) );
   605                     }
   599                     }
   606                 }
   600                     break;
   607                 break;
   601                 case CommsDat::EUint32:
   608             case CommsDat::EUint32:
   602                 case CommsDat::ELink:
   609             case CommsDat::ELink:
       
   610                 {
       
   611                 if ( !( ptrSource->IsNull() ) )
       
   612                     {
   603                     {
   613                     static_cast<CMDBField<TUint32>&>( *ptrDest ).SetL(
   604                     static_cast<CMDBField<TUint32>&>( *ptrDest ).SetL(
   614                             static_cast<CMDBField<TUint32>&>( *ptrSource ) );
   605                             static_cast<CMDBField<TUint32>&>( *ptrSource ) );
   615                     }
   606                     }
   616                 }
   607                     break;
   617                 break;
   608                 case CommsDat::EDesC8:
   618             case CommsDat::EDesC8:
       
   619                 {
       
   620                 if ( !( ptrSource->IsNull() ) )
       
   621                     {
   609                     {
   622                     static_cast<CMDBField<TDesC8>&>( *ptrDest ).SetL(
   610                     static_cast<CMDBField<TDesC8>&>( *ptrDest ).SetL(
   623                             static_cast<CMDBField<TDesC8>&>( *ptrSource ) );
   611                             static_cast<CMDBField<TDesC8>&>( *ptrSource ) );
   624                     }
   612                     }
   625                 }
   613                     break;
   626                 break;
   614                 case CommsDat::EText:
   627             case CommsDat::EText:
   615                 case CommsDat::EMedText:
   628             case CommsDat::EMedText:
   616                 case CommsDat::ELongText:
   629             case CommsDat::ELongText:
       
   630                 {
       
   631                 if ( !( ptrSource->IsNull() ) )
       
   632                     {
   617                     {
   633                     static_cast<CMDBField<TDesC>&>( *ptrDest ).SetL(
   618                     static_cast<CMDBField<TDesC>&>( *ptrDest ).SetL(
   634                             static_cast<CMDBField<TDesC>&>( *ptrSource ) );
   619                             static_cast<CMDBField<TDesC>&>( *ptrSource ) );
   635                     }
   620                     }
   636                 }
   621                     break;
   637                 break;
   622                 default:
   638             default:
   623                     {
   639                 {
   624                     User::Leave( KErrCorrupt );
   640                 User::Leave( KErrCorrupt );
   625                     }
   641                 }
   626                     break;
   642                 break;
   627                 }
   643             }
   628             ptrDest->ClearAttributes( ptrDest->Attributes() );
   644         ptrDest->SetAttributes( ptrSource->Attributes() );
   629             ptrDest->SetAttributes( ptrSource->Attributes() );
       
   630             }
   645         recordInfo++;
   631         recordInfo++;
   646         }
   632         }
   647 
   633 
   648     OstTraceFunctionExit0( CCMPLUGINBASEENG_COPYRECORDFIELDSL_EXIT );
   634     OstTraceFunctionExit0( CCMPLUGINBASEENG_COPYRECORDFIELDSL_EXIT );
   649     }
   635     }
   661     LoadIAPRecordL( aIapId );
   647     LoadIAPRecordL( aIapId );
   662     LoadWapRecordL();
   648     LoadWapRecordL();
   663     LoadMetadataRecordL();
   649     LoadMetadataRecordL();
   664     LoadNetworkRecordL();
   650     LoadNetworkRecordL();
   665 
   651 
   666     // This is a connectionmethodinfo instance, that has no
   652     LoadServiceRecordL();
   667     // service and proxy setting.
   653     LoadProxyRecordL();
   668     if ( KDummyBearerType != iBearerType )
       
   669         {
       
   670         LoadServiceRecordL();
       
   671         LoadProxyRecordL();
       
   672         }
       
   673 
   654 
   674     LoadBearerRecordsL();
   655     LoadBearerRecordsL();
   675 
   656 
   676     OstTraceFunctionExit0( CCMPLUGINBASEENG_DOLOADL_EXIT );
   657     OstTraceFunctionExit0( CCMPLUGINBASEENG_DOLOADL_EXIT );
   677     }
   658     }
   893 
   874 
   894         CopyAttributes( iapRecord, iIapRecord );
   875         CopyAttributes( iapRecord, iIapRecord );
   895         CheckIfNameModifiedL( iapRecord, iIapRecord );
   876         CheckIfNameModifiedL( iapRecord, iIapRecord );
   896 
   877 
   897         iIapRecord->StoreL( iSession );
   878         iIapRecord->StoreL( iSession );
       
   879         // Have to be "reloaded" to get possible default values 
       
   880         // from template records.
       
   881         iIapRecord->LoadL( iSession );
   898 
   882 
   899         iCmId = iIapRecord->RecordId();
   883         iCmId = iIapRecord->RecordId();
   900         aClientPluginInstance->iIapId = iCmId;
   884         aClientPluginInstance->iIapId = iCmId;
   901 
   885 
   902         CCDIAPRecord* tempIapRecord = static_cast<CCDIAPRecord*>(
   886         CCDIAPRecord* tempIapRecord = static_cast<CCDIAPRecord*>(
   972             iProxyRecord->iProtocolName.SetL( KDefProxyProtocolName );
   956             iProxyRecord->iProtocolName.SetL( KDefProxyProtocolName );
   973             }
   957             }
   974 
   958 
   975         iProxyRecord->SetRecordId( KCDNewRecordRequest );
   959         iProxyRecord->SetRecordId( KCDNewRecordRequest );
   976         iProxyRecord->StoreL( iSession );
   960         iProxyRecord->StoreL( iSession );
   977         CopyRecordFieldsL( *iProxyRecord, *proxyRecord );
   961         // Have to be "reloaded" to get possible default values from template records.
       
   962         iProxyRecord->LoadL( iSession );
       
   963 
   978         proxyRecord->SetElementId( iProxyRecord->ElementId() );
   964         proxyRecord->SetElementId( iProxyRecord->ElementId() );
   979         }
   965         }
   980     else
   966     else
   981         // Already existing record -> update only.
   967         // Already existing record -> update only.
   982         {
   968         {
   983         iProxyRecord->ModifyL( iSession );
   969         iProxyRecord->ModifyL( iSession );
   984         }
   970         }
       
   971     CopyRecordFieldsL( *iProxyRecord, *proxyRecord );
   985 
   972 
   986     OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATEPROXYRECORDL_EXIT );
   973     OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATEPROXYRECORDL_EXIT );
   987     }
   974     }
   988 
   975 
   989 // ---------------------------------------------------------------------------
   976 // ---------------------------------------------------------------------------
  1007 
   994 
  1008     // Make a copy of client's metadata record and save to database.
   995     // Make a copy of client's metadata record and save to database.
  1009     delete iMetaDataRecord;
   996     delete iMetaDataRecord;
  1010     iMetaDataRecord = NULL;
   997     iMetaDataRecord = NULL;
  1011     iMetaDataRecord = new( ELeave ) CCDIAPMetadataRecord( iMetadataTableId );
   998     iMetaDataRecord = new( ELeave ) CCDIAPMetadataRecord( iMetadataTableId );
       
   999 
  1012     CopyRecordFieldsL( *clientMetadataRecord, *iMetaDataRecord );
  1000     CopyRecordFieldsL( *clientMetadataRecord, *iMetaDataRecord );
       
  1001 
  1013     iMetaDataRecord->SetElementId( clientMetadataRecord->ElementId() );
  1002     iMetaDataRecord->SetElementId( clientMetadataRecord->ElementId() );
  1014 
  1003 
  1015     if ( !iMetaDataRecord->RecordId() )
  1004     if ( !iMetaDataRecord->RecordId() )
  1016         {
  1005         {
  1017         iMetaDataRecord->iIAP = IAPRecordElementId();
  1006         iMetaDataRecord->iIAP = IAPRecordElementId();
  1018         iMetaDataRecord->SetRecordId( KCDNewRecordRequest );
  1007         iMetaDataRecord->SetRecordId( KCDNewRecordRequest );
  1019         iMetaDataRecord->StoreL( iSession );
  1008         iMetaDataRecord->StoreL( iSession );
       
  1009         // Have to be "reloaded" to get possible default values from template records.
       
  1010         iMetaDataRecord->LoadL( iSession );
       
  1011 
  1020         clientMetadataRecord->SetElementId( iMetaDataRecord->ElementId() );
  1012         clientMetadataRecord->SetElementId( iMetaDataRecord->ElementId() );
  1021         }
  1013         }
  1022     else
  1014     else
  1023         {
  1015         {
  1024         iMetaDataRecord->ModifyL( iSession );
  1016         iMetaDataRecord->ModifyL( iSession );
  1025         }
  1017         }
       
  1018     CopyRecordFieldsL( *iMetaDataRecord, *clientMetadataRecord );
  1026 
  1019 
  1027     OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATEMETADATARECORDL_EXIT );
  1020     OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATEMETADATARECORDL_EXIT );
  1028     }
  1021     }
  1029 
  1022 
  1030 // ---------------------------------------------------------------------------
  1023 // ---------------------------------------------------------------------------
  1081 
  1074 
  1082     if ( !iNetworkRecord->RecordId() )
  1075     if ( !iNetworkRecord->RecordId() )
  1083         {
  1076         {
  1084         iNetworkRecord->SetRecordId( KCDNewRecordRequest );
  1077         iNetworkRecord->SetRecordId( KCDNewRecordRequest );
  1085         iNetworkRecord->StoreL( iSession );
  1078         iNetworkRecord->StoreL( iSession );
       
  1079         // Have to be "reloaded" to get possible default values from template records.
       
  1080         iNetworkRecord->LoadL( iSession );
       
  1081 
  1086         networkRecord->SetElementId( iNetworkRecord->ElementId() );
  1082         networkRecord->SetElementId( iNetworkRecord->ElementId() );
  1087         }
  1083         }
  1088     else
  1084     else
  1089         {
  1085         {
  1090         iNetworkRecord->ModifyL( iSession );
  1086         iNetworkRecord->ModifyL( iSession );
  1091         }
  1087         }
       
  1088     CopyRecordFieldsL( *iNetworkRecord, *networkRecord );
  1092 
  1089 
  1093     OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATENETWORKRECORDL_EXIT );
  1090     OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATENETWORKRECORDL_EXIT );
  1094     }
  1091     }
  1095 
  1092 
  1096 // ---------------------------------------------------------------------------
  1093 // ---------------------------------------------------------------------------
  1236     CopyAttributes( iapRecord, wapIPBearerRecord );
  1233     CopyAttributes( iapRecord, wapIPBearerRecord );
  1237 
  1234 
  1238     CheckIfNameModifiedL( iapRecord, wapAPRecord );
  1235     CheckIfNameModifiedL( iapRecord, wapAPRecord );
  1239     CheckIfNameModifiedL( iapRecord, wapIPBearerRecord );
  1236     CheckIfNameModifiedL( iapRecord, wapIPBearerRecord );
  1240 
  1237 
       
  1238     // WAP AP record
  1241     iWapAPRecord = static_cast<CCDWAPAccessPointRecord*>(
  1239     iWapAPRecord = static_cast<CCDWAPAccessPointRecord*>(
  1242             CCDRecordBase::CreateCopyRecordL( *wapAPRecord ) );//TODO, convert to generic copy
  1240             CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) );
       
  1241     CopyRecordFieldsL( *wapAPRecord, *iWapAPRecord );
  1243     iWapAPRecord->SetElementId( wapAPRecord->ElementId() );
  1242     iWapAPRecord->SetElementId( wapAPRecord->ElementId() );
  1244 
  1243 
  1245     iWapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
  1244     // WAP IP Bearer record
  1246             CCDRecordBase::CreateCopyRecordL( *wapIPBearerRecord ) );//TODO, convert to generic copy
  1245     iWapIPBearerRecord =static_cast<CCDWAPIPBearerRecord*>(
       
  1246             CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) );
       
  1247     CopyRecordFieldsL( *wapIPBearerRecord, *iWapIPBearerRecord );
  1247     iWapIPBearerRecord->SetElementId( wapIPBearerRecord->ElementId() );
  1248     iWapIPBearerRecord->SetElementId( wapIPBearerRecord->ElementId() );
  1248 
  1249 
  1249     if ( !iWapAPRecord->RecordId() )
  1250     if ( !iWapAPRecord->RecordId() )
  1250         {
  1251         {
  1251         iWapAPRecord->SetRecordId( KCDNewRecordRequest );
  1252         iWapAPRecord->SetRecordId( KCDNewRecordRequest );
  1252         iWapAPRecord->StoreL(iSession );
  1253         iWapAPRecord->StoreL(iSession );
       
  1254         // Have to be "reloaded" to get possible default values from template records.
       
  1255         iWapAPRecord->LoadL(iSession );
       
  1256 
  1253         wapAPRecord->SetElementId( iWapAPRecord->ElementId() );
  1257         wapAPRecord->SetElementId( iWapAPRecord->ElementId() );
  1254         }
  1258         }
  1255     else
  1259     else
  1256         {
  1260         {
  1257         iWapAPRecord->ModifyL( iSession );
  1261         iWapAPRecord->ModifyL( iSession );
  1258         }
  1262         }
       
  1263     CopyRecordFieldsL( *iWapAPRecord, *wapAPRecord );
  1259 
  1264 
  1260     if ( !iWapIPBearerRecord->RecordId() )
  1265     if ( !iWapIPBearerRecord->RecordId() )
  1261         {
  1266         {
  1262         iWapIPBearerRecord->iWAPAccessPointId = iWapAPRecord->RecordId();
  1267         iWapIPBearerRecord->iWAPAccessPointId = iWapAPRecord->RecordId();
  1263         iWapIPBearerRecord->iWAPIAP = iapRecord->RecordId();
  1268         iWapIPBearerRecord->iWAPIAP = iapRecord->RecordId();
  1264 
  1269 
  1265         iWapIPBearerRecord->SetRecordId( KCDNewRecordRequest );
  1270         iWapIPBearerRecord->SetRecordId( KCDNewRecordRequest );
  1266         iWapIPBearerRecord->StoreL( iSession );
  1271         iWapIPBearerRecord->StoreL( iSession );
       
  1272         // Have to be "reloaded" to get possible default values from template records.
       
  1273         iWapIPBearerRecord->LoadL( iSession );
       
  1274 
  1267         wapIPBearerRecord->SetElementId( iWapIPBearerRecord->ElementId() );
  1275         wapIPBearerRecord->SetElementId( iWapIPBearerRecord->ElementId() );
  1268 
       
  1269         wapIPBearerRecord->iWAPAccessPointId = iWapAPRecord->RecordId();
       
  1270         wapIPBearerRecord->iWAPIAP = iapRecord->RecordId();
       
  1271         }
  1276         }
  1272     else
  1277     else
  1273         {
  1278         {
  1274         iWapIPBearerRecord->ModifyL( iSession );
  1279         iWapIPBearerRecord->ModifyL( iSession );
  1275         }
  1280         }
       
  1281     CopyRecordFieldsL( *iWapIPBearerRecord, *wapIPBearerRecord );
  1276 
  1282 
  1277     OstTraceFunctionExit0( DUP1_CCMPLUGINBASEENG_UPDATEWAPRECORDL_EXIT );
  1283     OstTraceFunctionExit0( DUP1_CCMPLUGINBASEENG_UPDATEWAPRECORDL_EXIT );
  1278     }
  1284     }
  1279 
  1285 
  1280 // ---------------------------------------------------------------------------
  1286 // ---------------------------------------------------------------------------
  2105         }
  2111         }
  2106 
  2112 
  2107     if ( iWapAPRecord )
  2113     if ( iWapAPRecord )
  2108         {
  2114         {
  2109         CCDWAPAccessPointRecord* wapAPRecord = static_cast<CCDWAPAccessPointRecord*>(
  2115         CCDWAPAccessPointRecord* wapAPRecord = static_cast<CCDWAPAccessPointRecord*>(
  2110                 CCDRecordBase::CreateCopyRecordL( *iWapAPRecord ) );//TODO, convert to generic copy
  2116                 CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) );
       
  2117         CleanupStack::PushL( wapAPRecord );
       
  2118         CopyRecordFieldsL( *iWapAPRecord, *wapAPRecord );
  2111         wapAPRecord->SetElementId( iWapAPRecord->ElementId() );
  2119         wapAPRecord->SetElementId( iWapAPRecord->ElementId() );
  2112         CleanupStack::PushL( wapAPRecord );
       
  2113         aClientPluginInstance->iGenRecordArray.AppendL(
  2120         aClientPluginInstance->iGenRecordArray.AppendL(
  2114                 static_cast<CommsDat::CCDRecordBase*>( wapAPRecord ) );
  2121                 static_cast<CommsDat::CCDRecordBase*>( wapAPRecord ) );
  2115         CleanupStack::Pop( wapAPRecord );
  2122         CleanupStack::Pop( wapAPRecord );
  2116         }
  2123         }
  2117     else
  2124     else
  2120         }
  2127         }
  2121 
  2128 
  2122     if ( iWapIPBearerRecord )
  2129     if ( iWapIPBearerRecord )
  2123         {
  2130         {
  2124         CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
  2131         CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
  2125                 CCDRecordBase::CreateCopyRecordL( *iWapIPBearerRecord ) );//TODO, convert to generic copy
  2132                 CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) );
       
  2133         CleanupStack::PushL( wapIPBearerRecord );
       
  2134         CopyRecordFieldsL( *iWapIPBearerRecord, *wapIPBearerRecord );
  2126         wapIPBearerRecord->SetElementId( iWapIPBearerRecord->ElementId() );
  2135         wapIPBearerRecord->SetElementId( iWapIPBearerRecord->ElementId() );
  2127         CleanupStack::PushL( wapIPBearerRecord );
       
  2128         aClientPluginInstance->iGenRecordArray.AppendL(
  2136         aClientPluginInstance->iGenRecordArray.AppendL(
  2129                 static_cast<CommsDat::CCDRecordBase*>( wapIPBearerRecord ) );
  2137                 static_cast<CommsDat::CCDRecordBase*>( wapIPBearerRecord ) );
  2130         CleanupStack::Pop( wapIPBearerRecord );
  2138         CleanupStack::Pop( wapIPBearerRecord );
  2131         }
  2139         }
  2132     else
  2140     else
  2337                         aClientPluginInstance->iGenRecordArray,
  2345                         aClientPluginInstance->iGenRecordArray,
  2338                         aClientPluginInstance->iBearerSpecRecordArray );
  2346                         aClientPluginInstance->iBearerSpecRecordArray );
  2339                 }
  2347                 }
  2340             else
  2348             else
  2341                 {
  2349                 {
  2342                 retVal = IsProtected();
  2350                 CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
       
  2351                         aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
       
  2352                 retVal = iapRecord->Attributes() & ECDProtectedWrite;
  2343                 }
  2353                 }
  2344             }
  2354             }
  2345             break;
  2355             break;
  2346         case ECmHidden:
  2356         case ECmHidden:
  2347             {
  2357             {