diff -r 000000000000 -r ba25891c3a9e ncdengine/provider/protocol/src/ncdrequestconfiguration.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ncdengine/provider/protocol/src/ncdrequestconfiguration.cpp Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,201 @@ +/* +* Copyright (c) 2006 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: CNcdRequestBrowseSearch implementation +* +*/ + + +#include "ncdrequestconfiguration.h" +#include "ncdrequestbase.h" +#include "ncdrequestconfigurationdata.h" +#include "ncdprotocolutils.h" +#include "ncdprotocolwords.h" +#include "catalogsdebug.h" + +CNcdRequestConfiguration* CNcdRequestConfiguration::NewL() + { + //DLTRACEIN(( _L("NewL"))); + CNcdRequestConfiguration* self = + CNcdRequestConfiguration::NewLC( ); + CleanupStack::Pop(); + //DLTRACEOUT(( _L("NewL"))); + return self; + } + +CNcdRequestConfiguration* CNcdRequestConfiguration::NewLC() + { + //DLTRACEIN(( _L("NewLC"))); + CNcdRequestConfiguration* self = + new (ELeave) CNcdRequestConfiguration(); + CleanupStack::PushL( self ); + self->ConstructL(); + //DLTRACEOUT(( _L("NewLC"))); + return self; + } + +void CNcdRequestConfiguration::ConstructL() + { + DLTRACEIN(("")); +// iRootName.SetL(); + CNcdRequestBase::ConstructL( KTagConfigurationRequest ); + iNamespaceUri.SetL( KCdpNamespaceUri ); + iPrefix.SetL( KNullDesC8 ); + iVersion.SetL( KConfigurationReqVersion ); + iType.SetL( KDefaultRequestType ); + DLTRACEOUT(("")); + } + +CNcdRequestConfiguration::CNcdRequestConfiguration() + : CNcdRequestBase() + { + } + +CNcdRequestConfiguration::~CNcdRequestConfiguration() + { + DLTRACEIN(("")); + iType.Free(); + iNamespaceUri.Free(); + iPrefix.Free(); + delete iBundles; + DLTRACEOUT(("")); + } + +void CNcdRequestConfiguration::AddCatalogBundleRequestL( TDesC8& aBundleId ) + { + if ( !iBundles ) + { + iBundles = new (ELeave) CDesC8ArrayFlat(1); + } + iBundles->AppendL( aBundleId ); + } + +// generates the dom nodes +HBufC8* CNcdRequestConfiguration::CreateRequestL() + { + // generate browse part of the request + DLTRACEIN((_L("entry"))); + + // override request root element name and namespace +#ifndef RD_XML_ENGINE_API_CHANGE + TXmlEngString configurationRequest; + NcdProtocolUtils::DesToStringL( configurationRequest, KTagConfigurationRequest ); + iRoot = iDocument.CreateDocumentElementL( configurationRequest ); + configurationRequest.Free(); + + TXmlEngString cdpUri; + NcdProtocolUtils::DesToStringL( cdpUri, KCdpNamespaceUri ); + TXmlEngString cdpPrefix; + NcdProtocolUtils::DesToStringL( cdpPrefix, KCdpNamespacePrefix); + iRoot.SetDefaultNamespaceL( cdpUri ); + iCdpNamespace = iRoot.AddNamespaceDeclarationL( cdpUri, cdpPrefix ); + cdpUri.Free(); + cdpPrefix.Free(); + + TXmlEngString xsUri; + TXmlEngString xsPrefix; + NcdProtocolUtils::DesToStringL( xsUri, KXsNamespaceUri ); + NcdProtocolUtils::DesToStringL( xsPrefix, KXsNamespacePrefix ); + iXsNamespace = iRoot.AddNamespaceDeclarationL( xsUri, xsPrefix ); + xsUri.Free(); + xsPrefix.Free(); + + TXmlEngString xsiUri; + TXmlEngString xsiPrefix; + NcdProtocolUtils::DesToStringL( xsiUri, KXsiNamespaceUri ); + NcdProtocolUtils::DesToStringL( xsiPrefix, KXsiNamespacePrefix ); + iXsiNamespace = iRoot.AddNamespaceDeclarationL( xsiUri, xsiPrefix ); + xsiUri.Free(); + xsiPrefix.Free(); + +#else + iRoot = iDocument.CreateDocumentElementL( KTagConfigurationRequest ); + iRoot.SetDefaultNamespaceL( KCdpNamespaceUri ); + iCdpNamespace = iRoot.AddNamespaceDeclarationL( KCdpNamespaceUri, KCdpNamespacePrefix ); + iXsNamespace = iRoot.AddNamespaceDeclarationL( KXsNamespaceUri, KXsNamespacePrefix ); + iXsiNamespace = iRoot.AddNamespaceDeclarationL( KXsiNamespaceUri, KXsiNamespacePrefix ); +#endif + + NcdProtocolUtils::NewAttributeL( iRoot, KAttrVersion, iVersion); + NcdProtocolUtils::NewAttributeL( iRoot, KAttrType, iType); + + // no request if there is no configuration data + if ( !iConfiguration ) + { + DLTRACEOUT(( "exit with null" )); + return NULL; + } + + // prefix not needed in configuration request + iConfiguration->SetNamespacePrefixL( KNullDesC8 ); + + // network + TXmlEngElement network = + iConfiguration->GetNetworkConfigurationElementL( iDocument ); + if ( network.NotNull() ) + iRoot.AppendChildL( network ); + + DLTRACE(("Adding %d client-infos", + iConfiguration->ClientConfigurationCount() )); + + for ( TInt clientIndex = 0; + clientIndex < iConfiguration->ClientConfigurationCount(); + ++clientIndex ) + { + // client + TXmlEngElement client = + iConfiguration->GetClientConfigurationElementL( + iDocument, clientIndex ); + + if ( client.NotNull() ) + iRoot.AppendChildL( client ); + } + + // cookies + TXmlEngElement cookies = iConfiguration->GetCookiesElementL( iDocument ); + if ( cookies.NotNull() ) + iRoot.AppendChildL( cookies ); + + + // queryResponse + TXmlEngElement queryResponses = GetQueryResponsesElementL( KNullDesC8 ); + if ( queryResponses.NotNull() ) + iRoot.AppendChildL( queryResponses ); + + // details + TXmlEngElement details = GetDetailsElementL( KNullDesC8 ); + if ( details.NotNull() ) + iRoot.AppendChildL( details ); + // catalog bundle requests + if ( iBundles && iBundles->MdcaCount() > 0 ) + { + if ( details.IsNull() ) + { + details = + NcdProtocolUtils::NewElementL( iDocument, iRoot, KTagDetails ); + } + for ( TInt i = 0; i < iBundles->MdcaCount(); ++i ) + { + TPtrC8 ptr = iBundles->MdcaPoint( i ); + TXmlEngElement detail = + NcdProtocolUtils::NewElementL( iDocument, details, KTagDetail ); + NcdProtocolUtils::NewAttributeL( detail, KAttrId, KValueCatalogRequest ); + NcdProtocolUtils::NewAttributeL( detail, KAttrValue, ptr ); + } + } + + DLTRACEOUT((_L("exit"))); + // base class CreateRequestL not needed + return CNcdRequestBase::ExternalizeL(); + } +