diff -r 4490afcb47b1 -r a5fecba4b1e4 omadm/omadmextensions/adapters/syncmldm12/src/NSmlDmSettingsAdapter12.cpp --- a/omadm/omadmextensions/adapters/syncmldm12/src/NSmlDmSettingsAdapter12.cpp Thu Jan 07 12:39:15 2010 +0200 +++ b/omadm/omadmextensions/adapters/syncmldm12/src/NSmlDmSettingsAdapter12.cpp Mon Jan 18 20:09:30 2010 +0200 @@ -1000,6 +1000,16 @@ iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EAlreadyExists ); return; } + else + { + TInt ret = iCallBack->RemoveMappingL(KNSmlDMSettingsAdapterImplUid, + GetDynamicDMNodeUri( aURI ), ETrue ); + if(ret != KErrNone) + { + iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError ); + return; + } + } } iNewProfile = ETrue; AddNodeBufferL (aURI, aStatusRef); @@ -3961,5 +3971,23 @@ return ImplementationTable; } +//------------------------------------------------------------------------------ +// TPtrC8 CNSmlDMSettingsAdapter12::GetDynamicDMNodeUri( const TDesC8& aURI ) +// returns DM/xxx URI +//------------------------------------------------------------------------------ +TPtrC8 CNSmlDMSettingsAdapter12::GetDynamicDMNodeUri(const TDesC8& aURI) + { + TInt i= 0; + TBuf8<50> DmAccRoot(KNSmlDefDMAcc); + for ( i = aURI.Find( KNSmlDefDMAcc ) + DmAccRoot.Length() + 1; i < aURI.Length(); i++ ) + { + if( aURI[i] == '/' ) + { + break; + } + } + + return aURI.Left( i ); + } // End of File