xdmprotocols/XcapProtocol/XcapAppUsage/XCapCommonPolicyCapsUsage/src/XcapOmaCPUsage.cpp
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:23:14 +0100
branchRCL_3
changeset 18 fbd2e7cec7ef
parent 0 c8caa15ef882
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201027 Kit: 201035

/*
* Copyright (c) 2005 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:  CXcapOmaCommonPolicyUsage
*
*/




// Used specifications
// OMA-TS-XDM_Core-V1_0-20060612, 12 June 2006

#include <XdmDocumentNode.h>
#include <XdmNodeAttribute.h>
#include "XcapOmaCommonPolicyUsage.h"

// ----------------------------------------------------
// CXcapOmaCommonPolicyUsage::CXcapOmaCommonPolicyUsage
// 
// ----------------------------------------------------
//
CXcapOmaCommonPolicyUsage::CXcapOmaCommonPolicyUsage( const CXdmEngine& aXdmEngine ) :
CXcapAppUsage( aXdmEngine )
    {
    }

// ----------------------------------------------------
// CXcapOmaCommonPolicyUsage::NewL
// 
// ----------------------------------------------------
//
CXcapOmaCommonPolicyUsage* CXcapOmaCommonPolicyUsage::NewL( const TXcapAppUsageParams& aParameters )
    {
    CXcapOmaCommonPolicyUsage* self = new ( ELeave ) CXcapOmaCommonPolicyUsage( aParameters.iXdmEngine );
    CleanupStack::PushL( self );    // << self
    self->ConstructL();
    CleanupStack::Pop( self );      // >> self
    return self;
    }

// ----------------------------------------------------
// CXcapOmaCommonPolicyUsage::~CXcapOmaCommonPolicyUsage
// 
// ----------------------------------------------------
//
CXcapOmaCommonPolicyUsage::~CXcapOmaCommonPolicyUsage()
    {
    }
        
// ----------------------------------------------------
// CXcapOmaCommonPolicyUsage::ConstructL
// 
// ----------------------------------------------------
//
void CXcapOmaCommonPolicyUsage::ConstructL()
    {
    }

// ----------------------------------------------------
// CXcapOmaCommonPolicyUsage::AUID
// 
// ----------------------------------------------------
//
TPtrC8 CXcapOmaCommonPolicyUsage::AUID() const
    {
    return TPtrC8( KXdmOmaCommonPolicyUsageAUID );
    }
                
// ----------------------------------------------------
// CXcapOmaCommonPolicyUsage::ContentType
// 
// ----------------------------------------------------
//
TPtrC8 CXcapOmaCommonPolicyUsage::ContentType() const
    {
    return TPtrC8( KXdmOmaCommonPolicyUsageContType );
    }

// ----------------------------------------------------
// CXcapOmaCommonPolicyUsage::DefaultNamespace
// 
// ----------------------------------------------------
//
TPtrC8 CXcapOmaCommonPolicyUsage::DefaultNamespace() const
    {
    return TPtrC8( KXdmOmaCommonPolicyNamespace );
    }   
    
// ----------------------------------------------------
// CXcapOmaCommonPolicyUsage::ValidateNodeL
// 
// ----------------------------------------------------
//
TBool CXcapOmaCommonPolicyUsage::ValidateNodeL( CXdmDocumentNode& aXdmNode )
    {
    // This method is called by base class for each element
    // in document, here we have to declare every element, check element 
    // datatype, restrictions for values and also do all checking that concerns  
    // the structure of the element. If the datatype is some of
    // the common datatypes defined in xcapappusage.h, the node
    // can pe passed to the base class for value validation.
    // If the node belongs to this namespace, the return value
    // should be true, false otherwise.
    
    TBool found( EFalse );
    TDataType dataType ( EDataTypeUndefined );
    TPtrC element = aXdmNode.NodeName();
            
    // <other-identity> 
    if ( Match( element, KXdmOtherIdentity ) )
        {
        dataType = EDataTypeEmpty;
        found = ETrue;
        }
    // <external-list>
    else if ( Match( element, KXdmExternalList ) )
        {
        found = ETrue;
        }
    // <entry> 
    else if ( Match( element, KXdmEntry ) )
        {
        // should we check the parent's namespace here
        found = ETrue;
        }
    // <anonymous-request> 
    else if ( Match( element, KXdmAnonymousRequest ) )
        {
        dataType = EDataTypeEmpty;
        found = ETrue;
        }
        
    // if the node is some of the basic types,
    // pass it to the base class for data validation
    if ( dataType != EDataTypeUndefined )
        {
        ValidateDataL( dataType, aXdmNode );
        }
    return found;   
    }
    
// ----------------------------------------------------
// CXcapOmaCommonPolicyUsage::ValidateAttributeL
// 
// ----------------------------------------------------
//
void CXcapOmaCommonPolicyUsage::ValidateAttributeL( const CXdmNodeAttribute& aXdmNodeAttr )
    {
    // This method is called by base class for each attribute
    // in document, here we have to define data types
    // for attributes, and pass them to the base class
    // for the actual data checking.

    // anc 
    if ( Match( aXdmNodeAttr.NodeName(), KXdmAnc ) )
        {
        // pass to base class for data validation
        ValidateDataL( EDataTypeAnyURI, aXdmNodeAttr );
        }   
    }
                            
// ----------------------------------------------------
// CXcapOmaCommonPolicyUsage::AddNamespaceInformationL
// 
// ----------------------------------------------------
//
void CXcapOmaCommonPolicyUsage::AddNamespaceInformationL( CXdmDocument& aXdmDocument )
    {
    aXdmDocument.AppendNamespaceL( KXdmOmaCommonPolicyNamespace, KNullDesC8 );
    }

// End of File