--- a/deviceupdatesui/omadmadapters/connmoadapter/src/ProxyBranch.cpp Tue Jul 13 03:44:34 2010 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1112 +0,0 @@
-/*
- * ==============================================================================
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:
- *
- * ==============================================================================
- */
-
-#include <e32base.h>
-#include <cmconnectionmethoddef.h>
-#include <nsmldmtreedbclient.h>
-
-#include "ProxyBranch.h"
-#include "Utils.h"
-
-#include "OstTraceDefinitions.h"
-#ifdef OST_TRACE_COMPILER_IN_USE
-#include "ProxyBranchTraces.h"
-#endif
-
-// ------------------------------------------------------------------------------------------------
-// Constants
-// ------------------------------------------------------------------------------------------------
-_LIT8( KCMProxyDdf, "Proxy" );
-_LIT8( KCMProxyDdfProxyId, "ProxyId" );
-_LIT8( KCMProxyDdfName, "Name" );
-_LIT8( KCMProxyDdfAddr, "Addr" );
-_LIT8( KCMProxyDdfToConRef, "ToConRef" );
-_LIT8( KCMProxyDdfConRef, "ConRef" );
-_LIT8( KCMProxyDdfPorts, "Ports" );
-_LIT8( KCMProxyDdfPortNbr, "PortNbr" );
-_LIT8( KCMProxyDdfProxyParams, "ProxyParams" );
-_LIT8( KCMProxyDdfProxyType, "ProxyType" );
-_LIT8( KCMProxyDdfWap, "WAP" );
-_LIT8( KCMProxyDdfStartpg, "Startpg" );
-
-_LIT8( KCMProxyFields, "ProxyId/Addr/ToConRef/Ports/ProxyType/ProxyParams" );
-_LIT8( KCMProxyParamsFields, "WAP" );
-_LIT8( KCMProxyWapFields, "Startpg" );
-_LIT8( KCMProxyNodeSeparator, "/" );
-
-_LIT8( KDynamicProxyNodePattern, "Proxy/*" );
-_LIT8( KDynamicProxyNodeChildUri, "Proxy/*/*" );
-_LIT8( KDynamicToConrefNode, "Proxy/*/ToConRef" );
-_LIT8( KDynamicToConrefNodeChildUri, "Proxy/*/ToConRef/*" );
-_LIT8( KDynamicToConrefNodeChildUriNodes, "Proxy/*/ToConRef/*/*" );
-_LIT8( KDynamicPortsNode, "Proxy/*/Ports" );
-_LIT8( KDynamicPortsNodeChildUri, "Proxy/*/Ports/*" );
-_LIT8( KDynamicPortsNodeChildUriNodes, "Proxy/*/Ports/*/*" );
-_LIT8( KDynamicProxyParamsNode, "Proxy/*/ProxyParams" );
-_LIT8( KDynamicProxyParamsNodeChildUri, "Proxy/*/ProxyParams/*" );
-_LIT8( KDynamicProxyParamsWapNode, "Proxy/*/ProxyParams/WAP" );
-
-_LIT8( KProxyAddrUri, "Proxy/*/Addr");
-_LIT8( KProxyConrefUri, "Proxy/*/ConRef");
-
-_LIT8( KRoot, "./");
-
-TInt const KBufferExpandSize = 128;
-TInt const KNumOfProxyNodes = 8;
-
-_LIT8( KDynamicNodePrefix, "ProxyId");
-
-// ======== LOCAL FUNCTIONS =========
-
-//-----------------------------------------------------------------------------
-// CSmlDmAdapter::TError CProxyBranch::FetchLeafObjectL()
-//-----------------------------------------------------------------------------
-CSmlDmAdapter::TError CProxyBranch::FetchLeafObjectL( const TDesC8& aURI,
- const TDesC8& aLUID,
- CBufBase& aLeafObject )
- {
- OstTraceExt1( TRACE_NORMAL, CPROXYBRANCH_FETCHLEAFOBJECTL_ENTRY,
- "ENTRY: CProxyBranch::FetchLeafObjectL;aURI=%s", aURI );
-
- RCmConnectionMethodExt cm;
- CSmlDmAdapter::TError status = CSmlDmAdapter::ENotAllowed;
- TPtrC8 leafNode = CUtils::GetLastURISeg( aURI );
- TInt cmId( KErrNotFound );
- if ( aLUID.Length() > 0 )
- {
- cmId = CUtils::IntLUID( aLUID );
- }
- else
- {
- // If this is for pre-defined node then get CM id xxx from URI (NAP/NAPIdxxx)
- cmId = GetCmIdFromURIL( aURI );
- }
-
- if ( cmId == KErrNotFound || !GetConnectionMethodLC( *iCmManager, cm, cmId ) ||
- !cm.GetBoolAttributeL(CMManager::ECmProxyUsageEnabled) )
- {
- if ( cmId != KErrNotFound )
- {
- CleanupStack::PopAndDestroy( &cm );
- }
- status = CSmlDmAdapter::ENotFound;
-
- OstTrace1( TRACE_NORMAL, CPROXYBRANCH_FETCHLEAFOBJECTL_NOT_FOUND,
- "CProxyBranch::FetchLeafObjectL;status=%{TError}", status );
-
- return status;
- }
-
- if ( leafNode.Compare( KCMProxyDdfAddr ) == 0 )
- {
- HBufC* serverName = cm.GetStringAttributeL( CMManager::ECmProxyServerName );
-
- CleanupStack::PushL( serverName );
- aLeafObject.InsertL( 0, CUtils::ConvertTo8LC( *serverName ) );
-
- CleanupStack::PopAndDestroy(); // CUtils::ConvertTo8LC
- CleanupStack::PopAndDestroy( serverName );
-
- status = CSmlDmAdapter::EOk;
- }
- else if ( leafNode.Compare( KCMProxyDdfConRef ) == 0 )
- {
- TBuf8<KBufferExpandSize> conRef;
- TBuf8<KBufferExpandSize> napChildList;
- CBufBase* napChildListBuf = CBufFlat::NewL( KSmlMaxURISegLen );
- CleanupStack::PushL( napChildListBuf );
-
- // Get all NAP node childs
- iCallback->FetchLinkL( _L8("./NAP"), *napChildListBuf, status );
- napChildListBuf->Read( 0, napChildList, napChildListBuf->Size() );
-
- if ( status == CSmlDmAdapter::EOk)
- {
- // Reset operation end status
- status = CSmlDmAdapter::EError;
-
- // Find correct Uri
- while ( napChildList.Length() > 0 && status != CSmlDmAdapter::EOk )
- {
- conRef.Append( _L("NAP/") );
- CUtils::AppendFirstURISeg( napChildList, conRef );
- HBufC8* napLuid = iCallback->GetLuidAllocL( conRef );
- if ( cmId == CUtils::IntLUID( *napLuid ) )
- {
- status = CSmlDmAdapter::EOk;
- aLeafObject.InsertL( 0, conRef );
- }
- delete napLuid;
- conRef.Delete( 0, conRef.Length() );
- }
- }
-
- CleanupStack::PopAndDestroy( napChildListBuf );
- }
- else if ( leafNode.Compare( KCMProxyDdfPortNbr ) == 0 )
- {
- TInt proxyPort = cm.GetIntAttributeL( CMManager::ECmProxyPortNumber );
-
- aLeafObject.InsertL( 0, CUtils::IntToCharL( proxyPort ) );
- CleanupStack::PopAndDestroy();
-
- status = CSmlDmAdapter::EOk;
- }
- else if ( leafNode.Compare( KCMProxyDdfStartpg ) == 0 )
- {
- HBufC* startPage = cm.GetStringAttributeL( CMManager::ECmStartPage );
-
- CleanupStack::PushL( startPage );
- aLeafObject.InsertL( 0, CUtils::ConvertTo8LC( *startPage ) );
-
- CleanupStack::PopAndDestroy(); // CUtils::ConvertTo8LC
- CleanupStack::PopAndDestroy( startPage );
-
- status = CSmlDmAdapter::EOk;
- }
- else if ( leafNode.Compare( KCMProxyDdfProxyType ) == 0 )
- {
- HBufC* protocolName = cm.GetStringAttributeL( CMManager::ECmProxyProtocolName );
-
- CleanupStack::PushL( protocolName );
- aLeafObject.InsertL( 0, CUtils::ConvertTo8LC( *protocolName ) );
-
- CleanupStack::PopAndDestroy(); // CUtils::ConvertTo8LC
- CleanupStack::PopAndDestroy( protocolName );
-
- status = CSmlDmAdapter::EOk;
- }
- else if ( leafNode.Compare( KCMProxyDdfProxyId ) == 0 )
- {
- TPtrC8 dynamicNode = GetDynamicProxyNodeUri( aURI );
- aLeafObject.InsertL( 0, dynamicNode );
- status = CSmlDmAdapter::EOk;
- }
-
- CleanupStack::PopAndDestroy( &cm );
-
- OstTrace1( TRACE_NORMAL, CPROXYBRANCH_FETCHLEAFOBJECTL_EXIT,
- "EXIT: CProxyBranch::FetchLeafObjectL;status=%{TError}", status );
- return status;
- }
-
-//-----------------------------------------------------------------------------
-// TUint32 CProxyBranch::CheckForUnmodifiableField()
-//-----------------------------------------------------------------------------
-CSmlDmAdapter::TError CProxyBranch::CheckForUnmodifiableField(const TDesC8& aUri)
- {
- OstTraceExt1( TRACE_NORMAL, CPROXYBRANCH_CHECKFORUNMODIFIABLEFIELD_ENTRY,
- "ENTRY: CProxyBranch::CheckForUnmodifiableField;aUri=%s", aUri );
-
- CSmlDmAdapter::TError retval(CSmlDmAdapter::ENotFound);
- TPtrC8 nodeName = CUtils::GetLastURISeg(aUri);
-
- if ( nodeName.Match(KCMProxyDdfName) != KErrNotFound ||
- nodeName.Match(KCMProxyDdfConRef) != KErrNotFound )
- {
- retval = CSmlDmAdapter::EOk;
- }
-
- OstTrace1( TRACE_NORMAL, CPROXYBRANCH_CHECKFORUNMODIFIABLEFIELD_EXIT,
- "EXIT: CProxyBranch::CheckForUnmodifiableField;retval=%{TError}", retval );
-
- return retval;
- }
-//-----------------------------------------------------------------------------
-// TBool CProxyBranch::MapUriToCmAttribute()
-//-----------------------------------------------------------------------------
-TUint32 CProxyBranch::MapUriToCmAttribute( const TDesC8& aUri )
- {
- OstTraceExt1( TRACE_NORMAL, CPROXYBRANCH_MAPURITOCMATTRIBUTE_ENTRY,
- "ENTRY: CProxyBranch::MapUriToCmAttribute;aUri=%s", aUri );
-
- TUint32 retval(0);
-
- TPtrC8 nodeName = CUtils::GetLastURISeg( aUri );
-
- if ( nodeName.Match( KCMProxyDdfAddr )!= KErrNotFound )
- {
- retval = CMManager::ECmProxyServerName;
- }
- else if ( nodeName.Match( KCMProxyDdfPortNbr ) != KErrNotFound )
- {
- retval = CMManager::ECmProxyPortNumber;
- }
- else if ( nodeName.Match( KCMProxyDdfStartpg ) != KErrNotFound )
- {
- retval = CMManager::ECmStartPage;
- }
- else if ( nodeName.Match( KCMProxyDdfProxyType ) != KErrNotFound )
- {
- retval = CMManager::ECmProxyProtocolName;
- }
-
- OstTrace1( TRACE_NORMAL, CPROXYBRANCH_MAPURITOCMATTRIBUTE_EXIT,
- "EXIT: CProxyBranch::MapUriToCmAttribute;retval=%{TConnectionMethodCommonAttributes}",
- retval );
-
- return retval;
- }
-//-----------------------------------------------------------------------------
-// TInt32 CProxyBranch::FindConnectionMethodL()
-//-----------------------------------------------------------------------------
-TInt32 CProxyBranch::FindConnectionMethodL()
- {
- OstTrace0( TRACE_NORMAL, CPROXYBRANCH_FINDCONNECTIONMETHODL_ENTRY,
- "ENTRY: CProxyBranch::FindConnectionMethod" );
-
- TInt32 retval = KErrNotFound;
-
- CConnMoNodeElement* processNode = iBuffer->CacheFind( KProxyConrefUri );
-
- if ( processNode )
- {
-
- HBufC8* luid;
-
- // Ignore root part ("./") of the URI if present in the beginning
- if ( processNode->iObject.Mid( 0, 2 ).Match( KRoot ) != KErrNotFound )
- {
- luid = iCallback->GetLuidAllocL( processNode->iObject.Mid( 2 ) );
- }
- else
- {
- luid = iCallback->GetLuidAllocL( processNode->iObject );
- }
-
- retval = CUtils::IntLUID( *luid );
-
- delete luid;
-
- }
-
- OstTrace1( TRACE_NORMAL, CPROXYBRANCH_FINDCONNECTIONMETHODL_EXIT,
- "EXIT: CProxyBranch::FindConnectionMethod;CmId=%d", retval );
-
- return retval;
- }
-//-----------------------------------------------------------------------------
-// TBool CProxyBranch::AllMandatoryProxyFieldsFound()
-//-----------------------------------------------------------------------------
-TBool CProxyBranch::AllMandatoryProxyFieldsFound()
- {
- OstTrace0( TRACE_NORMAL, CPROXYBRANCH_ALLMANDATORYPROXYFIELDSFOUND_ENTRY,
- "ENTRY: CProxyBranch::AllMandatoryProxyFieldsFound" );
-
- TBool retval = ETrue;
-
- // Check that NAP Address addition is found
- if ( !iBuffer->CacheFind(KProxyAddrUri) )
- {
- retval = EFalse;
- }
- if ( !iBuffer->CacheFind(KProxyConrefUri) )
- {
- retval = EFalse;
- }
- // Check that dynamic nap node addition is found
- if ( !iBuffer->CacheFindDynamicNode(KDynamicProxyNodePattern) )
- {
- retval = EFalse;
- }
- OstTrace1( TRACE_NORMAL, CPROXYBRANCH_ALLMANDATORYPROXYFIELDSFOUND_EXIT,
- "EXIT: CProxyBranch::AllMandatoryProxyFieldsFound;retval=%d", retval );
-
- return retval;
- }
-//-----------------------------------------------------------------------------
-// TBool CProxyBranch::SetLeafData()
-//-----------------------------------------------------------------------------
-void CProxyBranch::SetLeafDataL(const TDesC8& aURI,
- const TDesC8& /*aLUID*/,
- const TDesC8& aObject,
- TInt aStatusRef,
- RCmConnectionMethodExt& aCm)
- {
- OstTraceExt1( TRACE_NORMAL, CPROXYBRANCH_SETLEAFDATAL_ENTRY,
- "ENTRY: CProxyBranch::SetLeafDataL;aURI=%s", aURI );
-
- TUint32 attributeRef = ( 0 );
- TLex8 lex( aObject );
- TInt value = 0;
- CSmlDmAdapter::TError status = CSmlDmAdapter::EOk;
-
- attributeRef = MapUriToCmAttribute( aURI );
-
- switch ( attributeRef )
- {
- case CMManager::ECmProxyServerName:
- case CMManager::ECmStartPage:
- case CMManager::ECmProxyProtocolName:
- aCm.SetStringAttributeL( attributeRef, CUtils::ConvertTo16LC( aObject ) );
- CleanupStack::PopAndDestroy(); // CUtils::ConvertTo16LC
- break;
- case CMManager::ECmProxyPortNumber:
- if ( lex.Val( value ) == KErrNone )
- {
- aCm.SetIntAttributeL( attributeRef, value );
- }
- else
- {
- status = CSmlDmAdapter::EInvalidObject;
- }
- break;
- default:
- status = CheckForUnmodifiableField( aURI );
- break;
- }
- iCallback->SetStatusL( aStatusRef, status );
-
- OstTrace1( TRACE_NORMAL, CPROXYBRANCH_SETLEAFDATAL_EXIT,
- "EXIT: CProxyBranch::SetLeafDataL;status=%{TError}", status );
- }
-//-----------------------------------------------------------------------------
-// TBool CProxyBranch::SetNodeData()
-//-----------------------------------------------------------------------------
-void CProxyBranch::SetNodeDataL(CConnMoNodeElement* aNode, RCmConnectionMethodExt& aCm)
- {
- OstTraceExt1( TRACE_NORMAL, CPROXYBRANCH_SETNODEDATAL_ENTRY, "ENTRY: CProxyBranch::SetNodeDataL;aNode->iUri=%s", aNode->iUri );
-
- if ( aNode->iParentLUID.Length() == 0 )
- {
- TBuf8<16> addLUID;
- _LIT8( KFormat, "%d" );
- addLUID.Format( KFormat, aCm.GetIntAttributeL( CMManager::ECmId ) );
-
- iCallback->SetMappingL( aNode->iUri, addLUID );
- iCallback->SetStatusL( aNode->iStatusRef, CSmlDmAdapter::EOk );
- }
- else
- {
- iCallback->SetStatusL( aNode->iStatusRef, CSmlDmAdapter::EAlreadyExists );
- }
- OstTrace0( TRACE_NORMAL, CPROXYBRANCH_SETNODEDATAL_EXIT, "EXIT: CProxyBranch::SetNodeDataL" );
-
- }
-//------------------------------------------------------------------------------
-// void CProxyBranch::GetAllDynamicProxyNodes()
-//------------------------------------------------------------------------------
-void CProxyBranch::GetAllDynamicProxyNodesL( const TDesC8& aURI,
- const CArrayFix<TSmlDmMappingInfo>& aPreviousURISegmentList,
- TInt aResultsRef,
- TInt aStatusRef,
- CBufBase& aCurrentURISegmentList )
- {
- OstTraceExt1( TRACE_NORMAL, CPROXYBRANCH_GETALLDYNAMICPROXYNODESL_ENTRY,
- "ENTRY: CProxyBranch::GetAllDynamicProxyNodesL;aURI=%s", aURI );
-
- // Array for connection methods
- RArray <TUint32> cmArray;
-
- CleanupClosePushL( cmArray );
- cmArray.Reset();
-
- GetAllConnectionMethodsL( cmArray, *iCmManager );
-
- // Loop through all connection methods
- for ( TInt i = 0; i < cmArray.Count(); i++ )
- {
- RCmConnectionMethodExt cm = iCmManager->ConnectionMethodL( cmArray[i] );
- CleanupClosePushL( cm );
-
- // If proxy is enabled for connection method
- if ( cm.GetBoolAttributeL( CMManager::ECmProxyUsageEnabled ) )
- {
- OstTrace1( TRACE_NORMAL, CPROXYBRANCH_GETALLDYNAMICPROXYNODESL_PROXY,
- "CProxyBranch::GetAllDynamicProxyNodesL;Proxy enabled for Cm Id=%u",
- cmArray[i] );
-
- TBuf8<KSmlMaxURISegLen>addCmName;
- // Check if node exists in aPreviousURISegmentList
- if ( !CheckPreviousURIList( aPreviousURISegmentList, cmArray[i], addCmName ) )
- {
- // Connection Method not found in previous URI list
- addCmName.Append( aURI );
- addCmName.Append( KCMProxyNodeSeparator );
- addCmName.Append( KDynamicNodePrefix );
-
- addCmName.AppendNumFixedWidth( cmArray[i], EDecimal, 3);
-
- TBuf8<16> addLUID;
- _LIT8( KFormat, "%d" );
- addLUID.Format( KFormat, cmArray[i] );
-
- OstTraceExt1( TRACE_NORMAL,
- CPROXYBRANCH_GETALLDYNAMICPROXYNODES_ADDED_TO_LIST,
- "CProxyBranch::GetAllDynamicProxyNodesL;Added to list: URI=%s", addCmName );
-
- iCallback->SetMappingL( addCmName, addLUID );
- }
- aCurrentURISegmentList.InsertL( aCurrentURISegmentList.Size(), CUtils::GetLastURISeg( addCmName ) );
- aCurrentURISegmentList.InsertL( aCurrentURISegmentList.Size(), KCMProxyNodeSeparator );
- }
- CleanupStack::PopAndDestroy( &cm );
- }
-
- iCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
- iCallback->SetResultsL( aResultsRef, aCurrentURISegmentList, KNullDesC8 );
-
- CleanupStack::PopAndDestroy( &cmArray );
-
- OstTrace0( TRACE_NORMAL, CPROXYBRANCH_GETALLDYNAMICPROXYNODESL_EXIT,
- "EXI: CProxyBranch::GetAllDynamicProxyNodesLT" );
- }
-
-// ======== MEMBER FUNCTIONS ========
-//-----------------------------------------------------------------------------
-// CProxyBranch* CProxyBranch::NewL( )
-//-----------------------------------------------------------------------------
-CProxyBranch* CProxyBranch::NewL(MSmlDmCallback* aDmCallback,
- CAddBuffer* aBuffer,
- RCmManagerExt* aCmManagerExt )
- {
- OstTraceFunctionEntry1( CPROXYBRANCH_NEWL_ENTRY, ( TUint )( aDmCallback ) );
-
- CProxyBranch* self = new (ELeave) CProxyBranch(aDmCallback, aBuffer, aCmManagerExt );
-
- OstTraceFunctionExit1( CPROXYBRANCH_NEWL_EXIT, ( TUint )( self ) );
- return self;
- }
-
-//------------------------------------------------------------------------------
-// CProxyBranch::CProxyBranch()
-//------------------------------------------------------------------------------
-CProxyBranch::CProxyBranch(MSmlDmCallback* aDmCallback,
- CAddBuffer* aBuffer,
- RCmManagerExt* aCmManagerExt )
- : CBranchBase( aDmCallback )
- {
- OstTraceFunctionEntry1( CPROXYBRANCH_CONSTRUCTOR_ENTRY, this );
-
- iCallback = aDmCallback;
- iBuffer = aBuffer;
- iCmManager = aCmManagerExt;
-
- OstTraceFunctionExit1( CPROXYBRANCH_CONSTRUCTOR_EXIT, this );
- }
-
-//------------------------------------------------------------------------------
-// CProxyBranch::~CProxyBranch()
-//------------------------------------------------------------------------------
-CProxyBranch::~CProxyBranch()
- {
- OstTraceFunctionEntry1( CPROXYBRANCH_DESTRUCTOR_ENTRY, this );
-
- OstTraceFunctionExit1( CPROXYBRANCH_DESTRUCTOR_EXIT, this );
- }
-
-//------------------------------------------------------------------------------
-// void CProxyBranch::DDFStructureL()
-//------------------------------------------------------------------------------
-void CProxyBranch::DDFStructureL( MSmlDmDDFObject& aDDF )
- {
- OstTraceFunctionEntry0( CPROXYBRANCH_DDFSTRUCTUREL_ENTRY );
-
- //
- // Set rest acceptable operations for data itself
- //
- TSmlDmAccessTypes aclTypesNoDelete;
- aclTypesNoDelete.SetGet();
- aclTypesNoDelete.SetReplace();
- aclTypesNoDelete.SetAdd();
-
- TSmlDmAccessTypes aclTypesAddGet;
- aclTypesAddGet.SetGet();
- aclTypesAddGet.SetAdd();
-
- TSmlDmAccessTypes aclTypesOnlyGet;
- aclTypesOnlyGet.SetGet();
-
- MSmlDmDDFObject& nProxyIdDDF = aDDF.AddChildObjectL( KCMProxyDdfProxyId ); // ProxyId
- CUtils::FillNodeInfoL( nProxyIdDDF,
- aclTypesOnlyGet,
- MSmlDmDDFObject::EOne,
- MSmlDmDDFObject::EDynamic,
- MSmlDmDDFObject::EChr,
- KNullDesC8 );
-
- MSmlDmDDFObject& nAddrDDF = aDDF.AddChildObjectL( KCMProxyDdfAddr ); // Addr
- CUtils::FillNodeInfoL( nAddrDDF,
- aclTypesNoDelete,
- MSmlDmDDFObject::EOne,
- MSmlDmDDFObject::EDynamic,
- MSmlDmDDFObject::EChr,
- KNullDesC8 );
-
- MSmlDmDDFObject& nToConRefDDF = aDDF.AddChildObjectL( KCMProxyDdfToConRef ); // ToConRef
- CUtils::FillNodeInfoL( nToConRefDDF,
- aclTypesNoDelete,
- MSmlDmDDFObject::EZeroOrOne,
- MSmlDmDDFObject::EDynamic,
- MSmlDmDDFObject::ENode,
- KNullDesC8 );
-
- MSmlDmDDFObject& nToConRefRootDDF = nToConRefDDF.AddChildObjectGroupL(); // ToConRef/<x>
- CUtils::FillNodeInfoL( nToConRefRootDDF,
- aclTypesNoDelete,
- MSmlDmDDFObject::EOneOrMore,
- MSmlDmDDFObject::EDynamic,
- MSmlDmDDFObject::ENode,
- KNullDesC8 );
-
- MSmlDmDDFObject& nConRefDDF = nToConRefRootDDF.AddChildObjectL( KCMProxyDdfConRef ); // ToConRef/<x>/ConRef
- CUtils::FillNodeInfoL( nConRefDDF,
- aclTypesAddGet,
- MSmlDmDDFObject::EOne,
- MSmlDmDDFObject::EDynamic,
- MSmlDmDDFObject::EChr,
- KNullDesC8 );
-
- MSmlDmDDFObject& nPortsDDF = aDDF.AddChildObjectL( KCMProxyDdfPorts ); // Ports
- CUtils::FillNodeInfoL( nPortsDDF,
- aclTypesNoDelete,
- MSmlDmDDFObject::EZeroOrOne,
- MSmlDmDDFObject::EDynamic,
- MSmlDmDDFObject::ENode,
- KNullDesC8 );
-
- MSmlDmDDFObject& nPortsRootDDF = nPortsDDF.AddChildObjectGroupL(); // Ports/<x>
- CUtils::FillNodeInfoL( nPortsRootDDF,
- aclTypesNoDelete,
- MSmlDmDDFObject::EOneOrMore,
- MSmlDmDDFObject::EDynamic,
- MSmlDmDDFObject::ENode,
- KNullDesC8 );
-
- MSmlDmDDFObject& nPortNbrDDF = nPortsRootDDF.AddChildObjectL( KCMProxyDdfPortNbr ); // Ports/<x>/PortNbr
- CUtils::FillNodeInfoL( nPortNbrDDF,
- aclTypesNoDelete,
- MSmlDmDDFObject::EOne,
- MSmlDmDDFObject::EDynamic,
- MSmlDmDDFObject::EInt,
- KNullDesC8 );
-
- MSmlDmDDFObject& nProxyParamsDDF = aDDF.AddChildObjectL( KCMProxyDdfProxyParams ); // ProxyParams
- CUtils::FillNodeInfoL( nProxyParamsDDF,
- aclTypesNoDelete,
- MSmlDmDDFObject::EZeroOrOne,
- MSmlDmDDFObject::EDynamic,
- MSmlDmDDFObject::ENode,
- KNullDesC8 );
-
- MSmlDmDDFObject& nProxyTypeDDF = aDDF.AddChildObjectL( KCMProxyDdfProxyType ); // ProxyType
- CUtils::FillNodeInfoL( nProxyTypeDDF,
- aclTypesNoDelete,
- MSmlDmDDFObject::EZeroOrOne,
- MSmlDmDDFObject::EDynamic,
- MSmlDmDDFObject::EChr,
- KNullDesC8 );
-
-
- MSmlDmDDFObject& nWapDDF = nProxyParamsDDF.AddChildObjectL( KCMProxyDdfWap ); // WAP
- CUtils::FillNodeInfoL( nWapDDF,
- aclTypesNoDelete,
- MSmlDmDDFObject::EZeroOrOne,
- MSmlDmDDFObject::EDynamic,
- MSmlDmDDFObject::ENode,
- KNullDesC8 );
-
- MSmlDmDDFObject& nStartpgDDF = nWapDDF.AddChildObjectL( KCMProxyDdfStartpg ); // Startpg
- CUtils::FillNodeInfoL( nStartpgDDF,
- aclTypesNoDelete,
- MSmlDmDDFObject::EZeroOrOne,
- MSmlDmDDFObject::EDynamic,
- MSmlDmDDFObject::EChr,
- KNullDesC8 );
-
- OstTraceFunctionEntry0( CPROXYBRANCH_DDFSTRUCTUREL_EXIT );
- }
-
-//------------------------------------------------------------------------------
-// void CProxyBranch::UpdateLeafObjectL()
-//------------------------------------------------------------------------------
-void CProxyBranch::UpdateLeafObjectL( const TDesC8& aURI,
- const TDesC8& aLUID,
- const TDesC8& aObject,
- const TDesC8& /*aType*/,
- TInt aStatusRef )
- {
- OstTraceExt1( TRACE_NORMAL, CPROXYBRANCH_UPDATELEAFOBJECTL_ENTRY,
- "ENTRY: CProxyBranch::UpdateLeafObjectL;aURI=%s", aURI );
-
- // If this is for pre-defined node then get CM id xxx from URI (NAP/NAPIdxxx)
- TInt cmId = GetCmIdFromURIL( aURI );
-
- if ( aLUID.Length() == 0 && cmId == KErrNotFound )
- {
- // New node, add to buffer
- iBuffer->AddNodeToBufferL( aURI, aLUID, aObject, aStatusRef);
- }
- else
- {
- // Existing node, update data immediately
- TInt err( KErrNone );
- RCmConnectionMethodExt cm;
- if ( cmId == KErrNotFound )
- {
- cmId = CUtils::IntLUID( aLUID );
- }
-
- TRAP( err, cm = iCmManager->ConnectionMethodL( cmId ) );
- CleanupClosePushL( cm );
-
- if ( !err )
- {
- OstTrace0( TRACE_NORMAL, DUP1_CPROXYBRANCH_UPDATELEAFOBJECTL, "CProxyBranch::UpdateLeafObjectL; Existing connection method - write value immediately." );
- SetLeafDataL( aURI, aLUID, aObject, aStatusRef, cm );
- cm.UpdateL();
- }
- else
- {
- //iCallback->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
- OstTrace0( TRACE_NORMAL, CPROXYBRANCH_UPDATELEAFOBJECTL, "CProxyBranch::UpdateLeafObjectL; Stale LUID - buffer setting." );
- iBuffer->AddNodeToBufferL(aURI,KNullDesC8,aObject,aStatusRef);
- }
-
- CleanupStack::PopAndDestroy( &cm );
- }
- OstTrace0( TRACE_NORMAL, CPROXYBRANCH_UPDATELEAFOBJECTL_EXIT,
- "EXIT: CProxyBranch::UpdateLeafObjectL" );
-
- }
-
-//------------------------------------------------------------------------------
-// void CProxyBranch::DeleteObjectL()
-//------------------------------------------------------------------------------
-void CProxyBranch::DeleteObjectL( const TDesC8& /*aURI*/,
- const TDesC8& /*aLUID*/,
- TInt /*aStatusRef*/ )
- {
-
- }
-
-//------------------------------------------------------------------------------
-// void CProxyBranch::FetchLeafObjectL()
-//------------------------------------------------------------------------------
-void CProxyBranch::FetchLeafObjectL( const TDesC8& aURI,
- const TDesC8& aLUID,
- const TDesC8& aType,
- TInt aResultsRef,
- TInt aStatusRef )
- {
- OstTraceExt1( TRACE_NORMAL, CPROXYBRANCH_FETCHLEAFOBJECTL_PUPLIC_ENTRY,
- "ENTRY: CProxyBranch::FetchLeafObjectL;aURI=%s", aURI );
-
- CSmlDmAdapter::TError status = CSmlDmAdapter::ENotFound;
-
- CBufBase *leafObject = CBufFlat::NewL( KBufferExpandSize );
- CleanupStack::PushL( leafObject );
- leafObject->Reset();
-
- status = FetchLeafObjectL( aURI, aLUID, *leafObject );
-
- if ( status == CSmlDmAdapter::EOk )
- {
- iCallback->SetResultsL( aResultsRef, *leafObject, aType );
- OstTrace0( TRACE_NORMAL, CPROXYBRANCH_FETCHLEAFOBJECT_OK,
- "CProxyBranch::FetchLeafObjectL; EOk" );
- }
-
- CleanupStack::PopAndDestroy( leafObject );
-
- iCallback->SetStatusL( aStatusRef, status );
- OstTrace1( TRACE_NORMAL, CPROXYBRANCH_FETCHLEAFOBJECTL_PUPLIC_EXIT,
- "EXIT: CProxyBranch::FetchLeafObjectL;status=%{TError}", status );
-
- }
-
-//------------------------------------------------------------------------------
-// void CProxyBranch::FetchLeafObjectSizeL()
-//------------------------------------------------------------------------------
-void CProxyBranch::FetchLeafObjectSizeL( const TDesC8& aURI,
- const TDesC8& aLUID,
- const TDesC8& aType,
- TInt aResultsRef,
- TInt aStatusRef )
- {
- OstTraceExt1( TRACE_NORMAL, CPROXYBRANCH_FETCHLEAFOBJECTSIZEL_ENTRY,
- "ENTRY: CProxyBranch::FetchLeafObjectSizeL;aURI=%s", aURI );
-
- CSmlDmAdapter::TError status = CSmlDmAdapter::ENotFound;
-
- CBufBase *leafObject = CBufFlat::NewL( KSmlMaxURISegLen );
- CleanupStack::PushL( leafObject );
- leafObject->Reset();
-
- status = FetchLeafObjectL( aURI, aLUID, *leafObject );
-
- if ( status == CSmlDmAdapter::EOk )
- {
- leafObject->Compress();
- TBuf8<8> size;
- size.Num( leafObject->Size() );
- leafObject->Reset();
- leafObject->InsertL(0, size );
- iCallback->SetResultsL( aResultsRef, *leafObject, aType );
- }
-
- CleanupStack::PopAndDestroy( leafObject );
-
- iCallback->SetStatusL( aStatusRef, status );
- OstTrace1( TRACE_NORMAL, CPROXYBRANCH_FETCHLEAFOBJECTSIZEL_EXIT,
- "EXIT: CProxyBranch::FetchLeafObjectSizeL;status=%{TError}", status );
-
- }
-
-//------------------------------------------------------------------------------
-// void CProxyBranch::ChildURIListL()
-//------------------------------------------------------------------------------
-void CProxyBranch::ChildURIListL( const TDesC8& aURI,
- const TDesC8& aLUID,
- const CArrayFix<TSmlDmMappingInfo>& aPreviousURISegmentList,
- TInt aResultsRef,
- TInt aStatusRef )
- {
- OstTraceExt1( TRACE_NORMAL, CPROXYBRANCH_CHILDURILISTL_ENTRY,
- "ENTRY: CProxyBranch::ChildURIListL;aURI=%s", aURI );
-
- TPtrC8 proxyDdfTree = CUtils::GetEndOfURIFromSeg( aURI, KCMProxyDdf );
-
- CBufBase* currentURISegmentList = CBufFlat::NewL( KSmlMaxURISegLen );
- CleanupStack::PushL( currentURISegmentList );
-
- // Proxy (handle as special case)
- if ( proxyDdfTree.Match( KCMProxyDdf ) != KErrNotFound )
- {
- GetAllDynamicProxyNodesL( aURI,
- aPreviousURISegmentList,
- aResultsRef,
- aStatusRef,
- *currentURISegmentList );
- CleanupStack::PopAndDestroy( currentURISegmentList );
- return;
- }
- // Then check if the CM exists. Use LUID or predefined ID
- TInt cmId( KErrNotFound );
- if ( aLUID.Length() > 0 )
- {
- cmId = CUtils::IntLUID( aLUID );
- }
- else
- {
- // If this is for pre-defined node then get CM id xxx from URI (NAP/NAPIdxxx)
- cmId = GetCmIdFromURIL( aURI );
- }
- // If after this cmId is still not found then the branch does not exist
- if ( cmId == KErrNotFound )
- {
- iCallback->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
- CleanupStack::PopAndDestroy( currentURISegmentList );
- OstTrace0( TRACE_NORMAL, DUP1_CPROXYBRANCH_CHILDURILISTL, "CNapBranch::ChildURIListL; CSmlDmAdapter::ENotFound" );
- return;
- }
-
- RCmConnectionMethodExt cm;
- // Check it the method actually can be found
- if ( !GetConnectionMethodLC( *iCmManager, cm, cmId ) || !cm.GetBoolAttributeL(CMManager::ECmProxyUsageEnabled ) )
- {
- iCallback->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
- CleanupStack::PopAndDestroy( &cm );
- CleanupStack::PopAndDestroy( currentURISegmentList );
- OstTrace0( TRACE_NORMAL, DUP2_CPROXYBRANCH_CHILDURILISTL, "CNapBranch::ChildURIListL; CSmlDmAdapter::ENotFound" );
- return;
- }
- CleanupStack::PopAndDestroy( &cm );
-
-
- // Proxy/<x>
- if ( proxyDdfTree.Match( KDynamicProxyNodePattern ) != KErrNotFound &&
- proxyDdfTree.Match( KDynamicProxyNodeChildUri ) == KErrNotFound )
- {
- currentURISegmentList->InsertL( currentURISegmentList->Size(), KCMProxyFields );
- iCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
- iCallback->SetResultsL( aResultsRef, *currentURISegmentList, KNullDesC8 );
- }
-
- // Proxy/<x>/ToConRef/<x>
- else if ( proxyDdfTree.Match( KDynamicToConrefNodeChildUri ) != KErrNotFound &&
- proxyDdfTree.Match( KDynamicToConrefNodeChildUriNodes ) == KErrNotFound )
- {
- currentURISegmentList->InsertL( currentURISegmentList->Size(), KCMProxyDdfConRef );
- iCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
- iCallback->SetResultsL( aResultsRef, *currentURISegmentList, KNullDesC8 );
- }
-
- // Proxy/<x>/ToConRef
- else if ( proxyDdfTree.Match( KDynamicToConrefNode ) != KErrNotFound )
- {
- GetAllDynamicNodesL( aURI,
- aLUID,
- aPreviousURISegmentList,
- aResultsRef,
- aStatusRef,
- *iCmManager,
- *currentURISegmentList,
- KCMProxyDdfToConRef,
- 1,
- iCallback );
- }
-
- // Proxy/<x>/Ports/<x>
- else if ( proxyDdfTree.Match( KDynamicPortsNodeChildUri ) != KErrNotFound &&
- proxyDdfTree.Match( KDynamicPortsNodeChildUriNodes ) == KErrNotFound )
- {
- currentURISegmentList->InsertL( currentURISegmentList->Size(), KCMProxyDdfPortNbr );
- iCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
- iCallback->SetResultsL( aResultsRef, *currentURISegmentList, KNullDesC8 );
- }
-
- // Proxy/<x>/Ports
- else if ( proxyDdfTree.Match( KDynamicPortsNode ) != KErrNotFound )
- {
- GetAllDynamicNodesL( aURI,
- aLUID,
- aPreviousURISegmentList,
- aResultsRef,
- aStatusRef,
- *iCmManager,
- *currentURISegmentList,
- KCMProxyDdfPorts,
- 1,
- iCallback );
- }
-
- // Proxy/<x>/ProxyParams
- else if ( proxyDdfTree.Match( KDynamicProxyParamsNode ) != KErrNotFound &&
- proxyDdfTree.Match( KDynamicProxyParamsNodeChildUri ) == KErrNotFound )
- {
- currentURISegmentList->InsertL( currentURISegmentList->Size(), KCMProxyParamsFields );
- iCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
- iCallback->SetResultsL( aResultsRef, *currentURISegmentList, KNullDesC8 );
- }
-
- // Proxy/<x>/ProxyParams/WAP
- else if ( proxyDdfTree.Match( KDynamicProxyParamsWapNode ) != KErrNotFound )
- {
- currentURISegmentList->InsertL( currentURISegmentList->Size(), KCMProxyWapFields );
- iCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
- iCallback->SetResultsL( aResultsRef, *currentURISegmentList, KNullDesC8 );
- }
-
- // Not found
- else
- {
- iCallback->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound );
- OstTrace0( TRACE_NORMAL, CPROXYBRANCH_CHILDURILISTL_NOT_FOUND,
- "CProxyBranch::ChildURIListL;CSmlDmAdapter::ENotFound" );
-
- }
-
- CleanupStack::PopAndDestroy( currentURISegmentList );
- OstTrace0( TRACE_NORMAL, CPROXYBRANCH_CHILDURILISTL_EXIT,
- "EXIT: CProxyBranch::ChildURIListL" );
-
- }
-
-//------------------------------------------------------------------------------
-// void CProxyBranch::AddNodeObjectL()
-//------------------------------------------------------------------------------
-void CProxyBranch::AddNodeObjectL( const TDesC8& aURI,
- const TDesC8& aParentLUID,
- TInt aStatusRef )
- {
- OstTraceExt1( TRACE_NORMAL, CPROXYBRANCH_ADDNODEOBJECTL_ENTRY,
- "ENTRY: CProxyBranch::AddNodeObjectL;aURI=%s", aURI );
-
- if ( aParentLUID.Length() == 0 )
- {
- // If this is for pre-defined node then get CM id xxx from URI (Proxy/ProxyIdxxx)
- TInt cmId = GetCmIdFromURIL( aURI );
- RCmConnectionMethodExt cm;
- // Check if CM exists
- if ( cmId != KErrNotFound && GetConnectionMethodLC( *iCmManager, cm, cmId )
- && cm.GetBoolAttributeL(CMManager::ECmProxyUsageEnabled))
- {
- CleanupStack::PopAndDestroy( &cm );
- // Pre-defined CM already exists for this ID.
- iCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EAlreadyExists );
- return;
- }
- if ( cmId != KErrNotFound )
- {
- CleanupStack::PopAndDestroy( &cm );
- }
- // New node, add to buffer
- iBuffer->AddNodeToBufferL( aURI, aParentLUID, aStatusRef );
- OstTrace0( TRACE_NORMAL, CPROXYBRANCH_ADDNODEOBJECTL_NEW_NODE,
- "CProxyBranch::AddNodeObjectL;New node -> Add to buffer." );
- }
- else
- {
- // Sanity check: If the dynamic name of the Proxy node has is the same as deleted previously and
- // DM Framework hasn't updated the tree, it will give the LUID when calling this method. Thus,
- // it's needed to check that the connection method really exists.
- RCmConnectionMethodExt cm;
-
-
- if ( !GetConnectionMethodLC( *iCmManager, cm, CUtils::IntLUID( aParentLUID ) ) )
- {
- // New node, add to buffer
- iBuffer->AddNodeToBufferL( aURI, KNullDesC8, aStatusRef );
- OstTrace0( TRACE_NORMAL, CPROXYBRANCH_ADDNODEOBJECTL_NEW_NODE2,
- "CProxyBranch::AddNodeObjectL;New node -> Add to buffer." );
- }
- else
- {
- // Proxies must be added in one message. If luid is given add is done to existing AP or node
- iCallback->SetStatusL( aStatusRef, CSmlDmAdapter::EAlreadyExists );
- OstTrace0( TRACE_NORMAL, CPROXYBRANCH_ADDNODEOBJECTL_ALREADY_EXISTS,
- "CProxyBranch::AddNodeObjectL;CSmlDmAdapter::EAlreadyExists" );
- }
-
- CleanupStack::PopAndDestroy( &cm );
- }
-
- OstTrace0( TRACE_NORMAL, CPROXYBRANCH_ADDNODEOBJECTL_EXIT, "EXIT: CProxyBranch::AddNodeObjectL" );
- }
-
-// -------------------------------------------------------------------------------------
-// CProxyBranch::ProcessNodeBufferL()
-// -------------------------------------------------------------------------------------
-void CProxyBranch::ProcessBufferL()
- {
- OstTrace0( TRACE_NORMAL, CPROXYBRANCH_PROCESSBUFFERL_ENTRY, "ENTRY: CProxyBranch::ProcessBufferL" );
-
- RPointerArray<CConnMoNodeElement> proxyNodes( KNumOfProxyNodes );
- CleanupClosePushL( proxyNodes );
- while ( iBuffer->GetGroup( KCMDdfProxy, &proxyNodes ) != KErrNotFound )
- {
- TInt32 cmId = FindConnectionMethodL();
-
- if ( AllMandatoryProxyFieldsFound() && cmId != KErrNotFound )
- {
- // Open connection method, enable proxy and update nodes
- RCmConnectionMethodExt cm;
- TRAPD( err, cm = iCmManager->ConnectionMethodL( cmId ) );
- CleanupClosePushL( cm );
-
- if ( !err )
- {
- cm.SetBoolAttributeL( CMManager::ECmProxyUsageEnabled, ETrue );
-
- for ( TInt i = 0; i < proxyNodes.Count(); ++i )
- {
- if ( proxyNodes[i]->iLeaf )
- {
- // Leaf data found
- SetLeafDataL( proxyNodes[i]->iUri,
- proxyNodes[i]->iParentLUID,
- proxyNodes[i]->iObject,
- proxyNodes[i]->iStatusRef, cm );
- proxyNodes[i]->iProcessed = ETrue;
- }
- else
- {
- // Node has no leaf data
- SetNodeDataL( proxyNodes[i], cm );
- proxyNodes[i]->iProcessed = ETrue;
- }
- }
- cm.UpdateL();
- }
- else
- {
- for ( TInt i = 0; i < proxyNodes.Count(); ++i )
- {
- iCallback->SetStatusL( proxyNodes[i]->iStatusRef, CSmlDmAdapter::EError );
- proxyNodes[i]->iProcessed = ETrue;
- }
- }
- CleanupStack::PopAndDestroy( &cm );
- }
- else
- {
- for ( TInt i = 0; i < proxyNodes.Count(); ++i )
- {
- iCallback->SetStatusL( proxyNodes[i]->iStatusRef, CSmlDmAdapter::EError );
- proxyNodes[i]->iProcessed = ETrue;
- }
- }
- proxyNodes.Reset();
- }
- CleanupStack::Pop( &proxyNodes );
- proxyNodes.Close();
-
- OstTrace0( TRACE_NORMAL, CPROXYBRANCH_PROCESSBUFFERL_EXIT, "EXIT: CProxyBranch::ProcessBufferL" );
- }
-
-
-//------------------------------------------------------------------------------
-// TPtrC8 CUtils::GetDynamicAPNodeUri( const TDesC8& aURI )
-// returns NAP/xxx URI
-//------------------------------------------------------------------------------
-TPtrC8 CProxyBranch::GetDynamicProxyNodeUri( const TDesC8& aURI )
- {
- OstTraceExt1( TRACE_NORMAL, CPROXYBRANCH_GETDYNAMICPROXYNODEURI, "CProxyBranch::GetDynamicProxyNodeUri;aURI=%s", aURI );
- TInt i= 0;
- for ( i = aURI.Find( KCMDdfProxy ) + 6; i < aURI.Length(); i++ )
- {
- if( aURI[i] == '/' )
- {
- break;
- }
- }
- OstTraceExt1( TRACE_NORMAL, DUP1_CPROXYRANCH_GETDYNAMICPROXYNODEURI, "CProxyBranch::GetDynamicProxyNodeUri;return URI=%s", aURI.Left( i ) );
- return aURI.Left( i );
- }
-
-//--------------------------------------------------------------------
-//TInt CProxyBranch::IsNAPUriFormatMatchPredefined(const TDesC8 & aURI)
-//
-//-------------------------------------------------------------------
-
-
-TBool CProxyBranch::IsProxyUriFormatMatchPredefined(const TDesC8 & aURI)
-{
- if( aURI.Match( _L8( "Proxy/ProxyId*" ) ) != KErrNotFound )
- {
- return ETrue;
- }
- else
- {
- return EFalse;
- }
-}
-//------------------------------------------------------------------------------
-// TUint32 CProxyBranch::GetAPIdFromURIL(const TDesC8& aURI)
-// Get NAP id for given aURI
-//------------------------------------------------------------------------------
-TInt CProxyBranch::GetCmIdFromURIL(const TDesC8& aURI)
- {
- TInt ret(KErrNotFound);
-
- if( !IsProxyUriFormatMatchPredefined( aURI ) )
- {
- // Cannot get CmIds from any other format URIs than predefined
- return ret;
- }
-
- TLex8 lex;
- // Find xxx from ./Proxy/ProxyIdxxx/...
- TInt start = aURI.Find( KDynamicNodePrefix ) + KDynamicNodePrefix().Length();
- lex = aURI.Mid( start, 3 );
- lex.Val( ret );
-
- return ret;
- }