diff -r bbb64eb3bdee -r a0c4ceac30d0 cmmanager/cmmgr/cmmpluginbase/src/ccmpluginbaseeng.cpp --- a/cmmanager/cmmgr/cmmpluginbase/src/ccmpluginbaseeng.cpp Thu Jun 24 11:36:05 2010 +0300 +++ b/cmmanager/cmmgr/cmmpluginbase/src/ccmpluginbaseeng.cpp Fri Jul 09 10:25:55 2010 +0300 @@ -427,15 +427,19 @@ // CCmPluginBaseEng::GetGenericTableIdsToBeObserved // --------------------------------------------------------------------------- // -EXPORT_C void CCmPluginBaseEng::GetGenericTableIdsToBeObserved( +EXPORT_C void CCmPluginBaseEng::GetGenericTableIdsToBeObservedL( RArray& aTableIdArray ) const { + OstTraceFunctionEntry0( CCMPLUGINBASEENG_GETGENERICTABLEIDSTOBEOBSERVED_ENTRY ); + // Service and bearer records should be added by plugins. - - aTableIdArray.Append( KCDTIdIAPRecord ); - aTableIdArray.Append( KCDTIdWAPAccessPointRecord ); - aTableIdArray.Append( KCDTIdProxiesRecord ); - aTableIdArray.Append( iMetadataTableId ); + aTableIdArray.AppendL( KCDTIdIAPRecord ); + aTableIdArray.AppendL( KCDTIdWAPAccessPointRecord ); + aTableIdArray.AppendL( KCDTIdWAPIPBearerRecord ); + aTableIdArray.AppendL( KCDTIdProxiesRecord ); + aTableIdArray.AppendL( iMetadataTableId ); + + OstTraceFunctionExit0( CCMPLUGINBASEENG_GETGENERICTABLEIDSTOBEOBSERVED_EXIT ); } // --------------------------------------------------------------------------- @@ -495,12 +499,9 @@ { case KIapRecordIndex: { - CCDIAPRecord* iapRecord = static_cast( + aCopyInstance->iIapRecord = static_cast( CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) ); - CleanupStack::PushL( iapRecord ); - CopyRecordFieldsL( *iIapRecord, *iapRecord ); - CleanupStack::Pop( iapRecord ); - aCopyInstance->iIapRecord = iapRecord; + CopyRecordFieldsL( *iIapRecord, *aCopyInstance->iIapRecord ); } break; case KServiceRecordIndex: @@ -512,46 +513,39 @@ break; case KNetworkRecordIndex: { - CCDNetworkRecord* networkRecord = static_cast( + aCopyInstance->iNetworkRecord = static_cast( CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) ); - CleanupStack::PushL( networkRecord ); - CopyRecordFieldsL( *iNetworkRecord, *networkRecord ); - CleanupStack::Pop( networkRecord ); - aCopyInstance->iNetworkRecord = networkRecord; + CopyRecordFieldsL( *iNetworkRecord, *aCopyInstance->iNetworkRecord ); } break; case KWAPAPRecordIndex: { aCopyInstance->iWapAPRecord = static_cast( - CCDRecordBase::CreateCopyRecordL( *iWapAPRecord ) );//TODO, convert to generic copy + CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) ); + CopyRecordFieldsL( *iWapAPRecord, *aCopyInstance->iWapAPRecord ); } break; case KWAPBearerRecordIndex: { aCopyInstance->iWapIPBearerRecord = static_cast( - CCDRecordBase::CreateCopyRecordL( *iWapIPBearerRecord ) );//TODO, convert to generic copy + CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) ); + CopyRecordFieldsL( *iWapIPBearerRecord, *aCopyInstance->iWapIPBearerRecord ); } break; case KMetaDataRecordIndex: { - CCDIAPMetadataRecord* metadataRecord = - new( ELeave ) CCDIAPMetadataRecord( iMetadataTableId ); - CleanupStack::PushL( metadataRecord ); - CopyRecordFieldsL( *iMetaDataRecord, *metadataRecord ); - CleanupStack::Pop( metadataRecord ); - aCopyInstance->iMetaDataRecord = metadataRecord; + aCopyInstance->iMetaDataRecord = new( ELeave ) CCDIAPMetadataRecord( + iMetadataTableId ); + CopyRecordFieldsL( *iMetaDataRecord, *aCopyInstance->iMetaDataRecord ); } break; case KProxyRecordIndex: { if ( iProxyRecord ) { - CCDProxiesRecord* proxyRecord = static_cast( + aCopyInstance->iProxyRecord = static_cast( CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) ); - CleanupStack::PushL( proxyRecord ); - CopyRecordFieldsL( *iProxyRecord, *proxyRecord ); - CleanupStack::Pop( proxyRecord ); - aCopyInstance->iProxyRecord = proxyRecord; + CopyRecordFieldsL( *iProxyRecord, *aCopyInstance->iProxyRecord ); } } break; @@ -591,57 +585,49 @@ 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 ) + if ( !( ptrSource->IsNull() ) ) { - case CommsDat::EInt: - case CommsDat::EBool: + // Make sure we see only basic type info. Masks out any additional info + // on links (CommsDat internal stuff). + switch ( recordInfo->iValType & 0x000000ff ) { - if ( !( ptrSource->IsNull() ) ) + case CommsDat::EInt: + case CommsDat::EBool: { static_cast&>( *ptrDest ).SetL( static_cast&>( *ptrSource ) ); } - } - break; - case CommsDat::EUint32: - case CommsDat::ELink: - { - if ( !( ptrSource->IsNull() ) ) + break; + case CommsDat::EUint32: + case CommsDat::ELink: { static_cast&>( *ptrDest ).SetL( static_cast&>( *ptrSource ) ); } - } - break; - case CommsDat::EDesC8: - { - if ( !( ptrSource->IsNull() ) ) + break; + case CommsDat::EDesC8: { static_cast&>( *ptrDest ).SetL( static_cast&>( *ptrSource ) ); } - } - break; - case CommsDat::EText: - case CommsDat::EMedText: - case CommsDat::ELongText: - { - if ( !( ptrSource->IsNull() ) ) + break; + case CommsDat::EText: + case CommsDat::EMedText: + case CommsDat::ELongText: { static_cast&>( *ptrDest ).SetL( static_cast&>( *ptrSource ) ); } + break; + default: + { + User::Leave( KErrCorrupt ); + } + break; } - break; - default: - { - User::Leave( KErrCorrupt ); - } - break; + ptrDest->ClearAttributes( ptrDest->Attributes() ); + ptrDest->SetAttributes( ptrSource->Attributes() ); } - ptrDest->SetAttributes( ptrSource->Attributes() ); recordInfo++; } @@ -663,13 +649,8 @@ LoadMetadataRecordL(); LoadNetworkRecordL(); - // This is a connectionmethodinfo instance, that has no - // service and proxy setting. - if ( KDummyBearerType != iBearerType ) - { - LoadServiceRecordL(); - LoadProxyRecordL(); - } + LoadServiceRecordL(); + LoadProxyRecordL(); LoadBearerRecordsL(); @@ -895,6 +876,9 @@ CheckIfNameModifiedL( iapRecord, iIapRecord ); iIapRecord->StoreL( iSession ); + // Have to be "reloaded" to get possible default values + // from template records. + iIapRecord->LoadL( iSession ); iCmId = iIapRecord->RecordId(); aClientPluginInstance->iIapId = iCmId; @@ -974,7 +958,9 @@ iProxyRecord->SetRecordId( KCDNewRecordRequest ); iProxyRecord->StoreL( iSession ); - CopyRecordFieldsL( *iProxyRecord, *proxyRecord ); + // Have to be "reloaded" to get possible default values from template records. + iProxyRecord->LoadL( iSession ); + proxyRecord->SetElementId( iProxyRecord->ElementId() ); } else @@ -982,6 +968,7 @@ { iProxyRecord->ModifyL( iSession ); } + CopyRecordFieldsL( *iProxyRecord, *proxyRecord ); OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATEPROXYRECORDL_EXIT ); } @@ -1009,7 +996,9 @@ delete iMetaDataRecord; iMetaDataRecord = NULL; iMetaDataRecord = new( ELeave ) CCDIAPMetadataRecord( iMetadataTableId ); + CopyRecordFieldsL( *clientMetadataRecord, *iMetaDataRecord ); + iMetaDataRecord->SetElementId( clientMetadataRecord->ElementId() ); if ( !iMetaDataRecord->RecordId() ) @@ -1017,12 +1006,16 @@ iMetaDataRecord->iIAP = IAPRecordElementId(); iMetaDataRecord->SetRecordId( KCDNewRecordRequest ); iMetaDataRecord->StoreL( iSession ); + // Have to be "reloaded" to get possible default values from template records. + iMetaDataRecord->LoadL( iSession ); + clientMetadataRecord->SetElementId( iMetaDataRecord->ElementId() ); } else { iMetaDataRecord->ModifyL( iSession ); } + CopyRecordFieldsL( *iMetaDataRecord, *clientMetadataRecord ); OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATEMETADATARECORDL_EXIT ); } @@ -1083,12 +1076,16 @@ { iNetworkRecord->SetRecordId( KCDNewRecordRequest ); iNetworkRecord->StoreL( iSession ); + // Have to be "reloaded" to get possible default values from template records. + iNetworkRecord->LoadL( iSession ); + networkRecord->SetElementId( iNetworkRecord->ElementId() ); } else { iNetworkRecord->ModifyL( iSession ); } + CopyRecordFieldsL( *iNetworkRecord, *networkRecord ); OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATENETWORKRECORDL_EXIT ); } @@ -1238,24 +1235,32 @@ CheckIfNameModifiedL( iapRecord, wapAPRecord ); CheckIfNameModifiedL( iapRecord, wapIPBearerRecord ); + // WAP AP record iWapAPRecord = static_cast( - CCDRecordBase::CreateCopyRecordL( *wapAPRecord ) );//TODO, convert to generic copy + CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) ); + CopyRecordFieldsL( *wapAPRecord, *iWapAPRecord ); iWapAPRecord->SetElementId( wapAPRecord->ElementId() ); - iWapIPBearerRecord = static_cast( - CCDRecordBase::CreateCopyRecordL( *wapIPBearerRecord ) );//TODO, convert to generic copy + // WAP IP Bearer record + iWapIPBearerRecord =static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) ); + CopyRecordFieldsL( *wapIPBearerRecord, *iWapIPBearerRecord ); iWapIPBearerRecord->SetElementId( wapIPBearerRecord->ElementId() ); if ( !iWapAPRecord->RecordId() ) { iWapAPRecord->SetRecordId( KCDNewRecordRequest ); iWapAPRecord->StoreL(iSession ); + // Have to be "reloaded" to get possible default values from template records. + iWapAPRecord->LoadL(iSession ); + wapAPRecord->SetElementId( iWapAPRecord->ElementId() ); } else { iWapAPRecord->ModifyL( iSession ); } + CopyRecordFieldsL( *iWapAPRecord, *wapAPRecord ); if ( !iWapIPBearerRecord->RecordId() ) { @@ -1264,15 +1269,16 @@ iWapIPBearerRecord->SetRecordId( KCDNewRecordRequest ); iWapIPBearerRecord->StoreL( iSession ); + // Have to be "reloaded" to get possible default values from template records. + iWapIPBearerRecord->LoadL( iSession ); + wapIPBearerRecord->SetElementId( iWapIPBearerRecord->ElementId() ); - - wapIPBearerRecord->iWAPAccessPointId = iWapAPRecord->RecordId(); - wapIPBearerRecord->iWAPIAP = iapRecord->RecordId(); } else { iWapIPBearerRecord->ModifyL( iSession ); } + CopyRecordFieldsL( *iWapIPBearerRecord, *wapIPBearerRecord ); OstTraceFunctionExit0( DUP1_CCMPLUGINBASEENG_UPDATEWAPRECORDL_EXIT ); } @@ -2107,9 +2113,10 @@ if ( iWapAPRecord ) { CCDWAPAccessPointRecord* wapAPRecord = static_cast( - CCDRecordBase::CreateCopyRecordL( *iWapAPRecord ) );//TODO, convert to generic copy + CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) ); + CleanupStack::PushL( wapAPRecord ); + CopyRecordFieldsL( *iWapAPRecord, *wapAPRecord ); wapAPRecord->SetElementId( iWapAPRecord->ElementId() ); - CleanupStack::PushL( wapAPRecord ); aClientPluginInstance->iGenRecordArray.AppendL( static_cast( wapAPRecord ) ); CleanupStack::Pop( wapAPRecord ); @@ -2122,9 +2129,10 @@ if ( iWapIPBearerRecord ) { CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast( - CCDRecordBase::CreateCopyRecordL( *iWapIPBearerRecord ) );//TODO, convert to generic copy + CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) ); + CleanupStack::PushL( wapIPBearerRecord ); + CopyRecordFieldsL( *iWapIPBearerRecord, *wapIPBearerRecord ); wapIPBearerRecord->SetElementId( iWapIPBearerRecord->ElementId() ); - CleanupStack::PushL( wapIPBearerRecord ); aClientPluginInstance->iGenRecordArray.AppendL( static_cast( wapIPBearerRecord ) ); CleanupStack::Pop( wapIPBearerRecord ); @@ -2339,7 +2347,9 @@ } else { - retVal = IsProtected(); + CCDIAPRecord* iapRecord = static_cast( + aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); + retVal = iapRecord->Attributes() & ECDProtectedWrite; } } break;