ANSC_STATUS
AnscXmlDomNodeInsertChild
    (
        ANSC_HANDLE                 hThisObject,
        ANSC_HANDLE                 hChildNode,
        ANSC_HANDLE                 hAfterChild
    )
{
    ANSC_STATUS                     returnStatus  = ANSC_STATUS_SUCCESS;
    PANSC_XML_DOM_NODE_OBJECT       pXmlNode      = (PANSC_XML_DOM_NODE_OBJECT)hThisObject;
    PANSC_XML_DOM_NODE_OBJECT       pChildNode    = (PANSC_XML_DOM_NODE_OBJECT)hChildNode;
    PANSC_XML_DOM_NODE_OBJECT       pAfterChild   = (PANSC_XML_DOM_NODE_OBJECT)hAfterChild;

    if ( pAfterChild )
    {
        AnscAcquireXmlLock(&pXmlNode->ChildNodeQueueLock);
        AnscQueuePushEntryAfter(&pXmlNode->ChildNodeQueue, &pChildNode->Linkage, &pAfterChild->Linkage);
        AnscReleaseXmlLock(&pXmlNode->ChildNodeQueueLock);
    }
    else
    {
        AnscAcquireXmlLock(&pXmlNode->ChildNodeQueueLock);
        AnscQueuePushEntryAtFront(&pXmlNode->ChildNodeQueue, &pChildNode->Linkage);
        AnscReleaseXmlLock(&pXmlNode->ChildNodeQueueLock);
    }

    AnscXmlDomNodeSetParentNode((ANSC_HANDLE)pChildNode, (ANSC_HANDLE)pXmlNode);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_HANDLE
SlapOmoGetObjBroker
    (
        ANSC_HANDLE                 hThisObject,
        ANSC_HANDLE                 hTokenChain
    )
{
    ANSC_STATUS                     returnStatus    = ANSC_STATUS_SUCCESS;
    PSLAP_OBJ_MAPPER_OBJECT         pMyObject       = (PSLAP_OBJ_MAPPER_OBJECT  )hThisObject;
    PSLAP_OBJ_MAPPER_PROPERTY       pProperty       = (PSLAP_OBJ_MAPPER_PROPERTY)&pMyObject->Property;
    PSLAP_OBJ_BROKER_OBJECT         pRootObjBroker  = (PSLAP_OBJ_BROKER_OBJECT  )pMyObject->hRootObjBroker;
    PSLAP_OBJ_BROKER_OBJECT         pThisObjBroker  = (PSLAP_OBJ_BROKER_OBJECT  )pRootObjBroker;
    PSLAP_OBJ_BROKER_OBJECT         pNextObjBroker  = (PSLAP_OBJ_BROKER_OBJECT  )NULL;
    PANSC_TOKEN_CHAIN               pPathTokenChain = (PANSC_TOKEN_CHAIN        )hTokenChain;
    PANSC_STRING_TOKEN              pPathToken      = NULL;
    PSINGLE_LINK_ENTRY              pSLinkEntry     = NULL;

    pSLinkEntry = AnscQueuePopEntry(&pPathTokenChain->TokensQueue);

    while ( pSLinkEntry && pThisObjBroker )
    {
        pPathToken     = ACCESS_ANSC_STRING_TOKEN(pSLinkEntry);
        pNextObjBroker =
            (PSLAP_OBJ_BROKER_OBJECT)pThisObjBroker->GetObjBroker
                (
                    (ANSC_HANDLE)pThisObjBroker,
                    pPathToken->Name
                );

        if ( pNextObjBroker )
        {
            AnscFreeMemory(pPathToken);
        }
        else
        {
            AnscQueuePushEntryAtFront(&pPathTokenChain->TokensQueue, &pPathToken->Linkage);

            break;
        }

        pThisObjBroker = pNextObjBroker;
        pSLinkEntry    = AnscQueuePopEntry(&pPathTokenChain->TokensQueue);
    }

    if ( pSLinkEntry )
    {
        return  (ANSC_HANDLE)NULL;
    }

    return  (ANSC_HANDLE)pThisObjBroker;
}
ANSC_HANDLE
SlapOmoGetObjProxy2
    (
        ANSC_HANDLE                 hThisObject,
        ANSC_HANDLE                 hTokenChain
    )
{
    ANSC_STATUS                     returnStatus    = ANSC_STATUS_SUCCESS;
    PSLAP_OBJ_MAPPER_OBJECT         pMyObject       = (PSLAP_OBJ_MAPPER_OBJECT  )hThisObject;
    PSLAP_OBJ_MAPPER_PROPERTY       pProperty       = (PSLAP_OBJ_MAPPER_PROPERTY)&pMyObject->Property;
    PSLAP_OBJ_BROKER_OBJECT         pRootObjBroker  = (PSLAP_OBJ_BROKER_OBJECT  )pMyObject->hRootObjBroker;
    PSLAP_OBJ_BROKER_OBJECT         pThisObjBroker  = (PSLAP_OBJ_BROKER_OBJECT  )pRootObjBroker;
    PSLAP_OBJ_BROKER_OBJECT         pNextObjBroker  = (PSLAP_OBJ_BROKER_OBJECT  )NULL;
    PSLAP_OBJ_PROXY_OBJECT          pObjProxy       = (PSLAP_OBJ_PROXY_OBJECT   )NULL;
    PANSC_TOKEN_CHAIN               pPathTokenChain = (PANSC_TOKEN_CHAIN        )hTokenChain;
    PANSC_STRING_TOKEN              pPathToken      = NULL;
    PSINGLE_LINK_ENTRY              pSLinkEntry     = NULL;

    if(pThisObjBroker) /*RDKB-6244, CID-24128, null check before use*/
    {
        pObjProxy = (PSLAP_OBJ_PROXY_OBJECT	)pThisObjBroker->hSlapObjProxy;
    }

    if ( AnscQueueQueryDepth(&pPathTokenChain->TokensQueue) == 0 )
    {
        pObjProxy = (PSLAP_OBJ_PROXY_OBJECT)NULL;
    }
    else
    {
        pSLinkEntry = AnscQueuePopEntry(&pPathTokenChain->TokensQueue);

        while ( pSLinkEntry && pThisObjBroker )
        {
            pPathToken     = ACCESS_ANSC_STRING_TOKEN(pSLinkEntry);
            pNextObjBroker =
                (PSLAP_OBJ_BROKER_OBJECT)pThisObjBroker->GetObjBroker
                    (
                        (ANSC_HANDLE)pThisObjBroker,
                        pPathToken->Name
                    );

            if ( pNextObjBroker )
            {
                if ( pNextObjBroker->hSlapObjProxy )
                {
                    pObjProxy = (PSLAP_OBJ_PROXY_OBJECT)pNextObjBroker->hSlapObjProxy;
                }

                AnscFreeMemory(pPathToken);
            }
            else
            {
                AnscQueuePushEntryAtFront(&pPathTokenChain->TokensQueue, &pPathToken->Linkage);

                break;
            }

            pThisObjBroker = pNextObjBroker;
            pSLinkEntry    = AnscQueuePopEntry(&pPathTokenChain->TokensQueue);
        }

        if ( AnscQueueQueryDepth(&pPathTokenChain->TokensQueue) > 0 )
        {
            pObjProxy = (PSLAP_OBJ_PROXY_OBJECT)NULL;
        }
    }

    return  (ANSC_HANDLE)pObjProxy;
}