diff -r 000000000000 -r 62f9d29f7211 webservices/wsmessages/src/sensoapfault2.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webservices/wsmessages/src/sensoapfault2.cpp Thu Jan 07 16:19:19 2010 +0200 @@ -0,0 +1,399 @@ +/* +* Copyright (c) 2002-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: +* +*/ + + + + + + + + + + + +/******************************************************* + * SOAP 1.1 | SOAP 1.2 * + *-----------------------------------------------------* + * env:Fault | env:Fault * + *-----------------------------------------------------* + * faultcode | env:Code, env:Subcode, env:Value * + *-----------------------------------------------------* + * faultstring | env:Reason, env:Text * + *-----------------------------------------------------* + * faultactor | env:Node, (env:Role) * + *-----------------------------------------------------* + * detail | env:Detail * + *******************************************************/ + +/**************************************************************************** + * SOAP 1.2 Example * + **************************************************************************** + * * + * * + * * + * * + * * + * env:Sender * + * * + * m:MessageTimeout * + * * + * * + * * + * Sender Timeout * + * * + * http://MyServer:80/sql * + * http://schemas.microsoft.com/sqlserver/2004/SOAP * + * * + * P5M * + * * + * * + * * + * * + * * + ****************************************************************************/ + +/**************************************************************************** + * SOAP (older than 1.2) Example * + **************************************************************************** + * * + * * + * * + * * + * env:MustUnderstand * + * Mandatory Header error. * + * http://www.wrox.com/heroes/endpoint.asp * + * * + * * + * endpoint.asp * + * 203 * + * * + * * + * * + * * + * * + * * + ****************************************************************************/ + +// INCLUDE FILES +#include "SenSoapFault2.h" +#include "SenSoapEnvelope2.h" + +#include + +EXPORT_C CSenSoapFault2* CSenSoapFault2::NewL( + const TDesC8& aNsUri, + const TDesC8& aLocalName, + const TDesC8& aPrefix, + const RAttributeArray& aAttributes, + TXmlEngElement& aElement, + RSenDocument& aDocument) + { + CSenSoapFault2* pNew = new (ELeave) CSenSoapFault2; + CleanupStack::PushL(pNew); + pNew->ConstructL(aNsUri, aLocalName, aPrefix, aAttributes, + aElement, aDocument); + CleanupStack::Pop(pNew); + return pNew; + } + +EXPORT_C CSenSoapFault2* CSenSoapFault2::NewL(TXmlEngElement& aElement) + { + CSenSoapFault2* pNew = new (ELeave) CSenSoapFault2; + CleanupStack::PushL(pNew); + pNew->ConstructL(aElement); + CleanupStack::Pop(pNew); + return pNew; + } + +EXPORT_C CSenSoapFault2* CSenSoapFault2::NewL(TXmlEngElement& aElement, + RSenDocument& aDocument) + { + CSenSoapFault2* pNew = new (ELeave) CSenSoapFault2; + CleanupStack::PushL(pNew); + pNew->ConstructL(aElement, aDocument); + CleanupStack::Pop(pNew); + return pNew; + } + +EXPORT_C CSenSoapFault2::~CSenSoapFault2() + { + } + +EXPORT_C CSenSoapFault2::CSenSoapFault2() + { + } + +EXPORT_C void CSenSoapFault2::ConstructL(TXmlEngElement& aElement) + { + BaseConstructL(aElement); + } + +EXPORT_C void CSenSoapFault2::ConstructL(TXmlEngElement& aElement, + RSenDocument& aDocument) + { + iDocument = aDocument.Copy(); + iElement = aElement; + } + +EXPORT_C void CSenSoapFault2::ConstructL(const TDesC8& aNsUri, + const TDesC8& aLocalName, + const TDesC8& aPrefix, + const RAttributeArray& aAttributes, + TXmlEngElement& aElement, + RSenDocument& aDocument) + { + BaseConstructL(aNsUri, aLocalName, aPrefix, aAttributes, + aElement, aDocument); + } + +EXPORT_C TPtrC8 CSenSoapFault2::FaultCode() + { + TInt err(KErrNone); + TXmlEngElement element; + TXmlEngElement* pElement = NULL; + TRAP( + err, + element = AsElementL(); + pElement = &(element); + ) + if( !err && pElement ) + { + TXmlEngNamespace ns = pElement->NamespaceDeclaration(); + if ( ns.Uri() != KSenSoap12EnvelopeXmlns) + { + RXmlEngNodeList list; + TRAP( err, pElement->GetElementsByTagNameL(list, KFaultCodeLocalname); ) + if ( !err && list.HasNext() ) + { + TXmlEngElement child = list.Next(); + list.Close(); + return child.Text(); + } + list.Close(); + } + + else + { + RXmlEngNodeList list1; + TRAP( err, pElement->GetElementsByTagNameL( list1, KFault12CodeLocalname, NsUri() ); ) + if ( !err && list1.HasNext() ) + { + TXmlEngElement child = list1.Next(); + RXmlEngNodeList list2; + TRAP( err, child.GetElementsByTagNameL( list2, KFault12ValueLocalname, NsUri()); ) + if ( !err && list2.HasNext() ) + { + TXmlEngElement value = list2.Next(); + list2.Close(); + list1.Close(); + return value.Text(); + } + list2.Close(); + } + list1.Close(); + } + } + + return KNullDesC8(); + + } + +EXPORT_C TPtrC8 CSenSoapFault2::FaultSubcode() + { + TInt err( KErrNone ); + TXmlEngElement element; + TXmlEngElement* pElement = NULL; + TRAP( + err, + element = AsElementL(); + pElement = &(element); + ) + if( !err && pElement) + { + TXmlEngNamespace ns = pElement->NamespaceDeclaration(); + if ( ns.Uri() == KSenSoap12EnvelopeXmlns) + { + RXmlEngNodeList list1; + TRAP( err, pElement->GetElementsByTagNameL( list1, KFault12CodeLocalname, NsUri()); ) + if ( !err && list1.HasNext() ) + { + TXmlEngElement child = list1.Next(); + RXmlEngNodeList list2; + TRAP( err, child.GetElementsByTagNameL(list2, KFault12SubcodeLocalname, NsUri()); ) + if ( !err && list2.HasNext() ) + { + TXmlEngElement subcode = list2.Next(); + RXmlEngNodeList list3; + TRAP( err, subcode.GetElementsByTagNameL(list3, KFault12ValueLocalname, NsUri()); ) + if ( !err && list3.HasNext() ) + { + TXmlEngElement value = list3.Next(); + list3.Close(); + list2.Close(); + list1.Close(); + return value.Text(); + } + list3.Close(); + } + list2.Close(); + } + list1.Close(); + } + } + // else { // AsElementL() -method leaved(!) } + return KNullDesC8(); + } + + +EXPORT_C TPtrC8 CSenSoapFault2::FaultString() + { + TInt err( KErrNone ); + TXmlEngElement element; + TXmlEngElement* pElement = NULL; + TRAP( + err, + element = AsElementL(); + pElement = &(element); + ) + if( !err && pElement ) + { + TXmlEngNamespace ns = pElement->NamespaceDeclaration(); + if ( ns.Uri() != KSenSoap12EnvelopeXmlns) + { + RXmlEngNodeList list; + TRAP( err, pElement->GetElementsByTagNameL(list, KFaultStringLocalname); ) + if ( !err && list.HasNext() ) + { + TXmlEngElement child = list.Next(); + list.Close(); + return child.Text(); + } + list.Close(); + } + else + { + RXmlEngNodeList list1; + TRAP( err, pElement->GetElementsByTagNameL( list1, KFault12ReasonLocalname, NsUri()); ) + if ( !err && list1.HasNext() ) + { + TXmlEngElement child = list1.Next(); + RXmlEngNodeList list2; + TRAP( err, child.GetElementsByTagNameL( list2, KFault12TextLocalname, NsUri()); ) + if ( !err && list2.HasNext() ) + { + TXmlEngElement value = list2.Next(); + list2.Close(); + list1.Close(); + return value.Text(); + } + list2.Close(); + } + list1.Close(); + } + } + // else { // AsElementL -method leaved(!) } + return KNullDesC8(); + } + +EXPORT_C TPtrC8 CSenSoapFault2::FaultActor() + { + TInt err( KErrNone ); + TXmlEngElement element; + TXmlEngElement* pElement = NULL; + TRAP( + err, + element = AsElementL(); + pElement = &(element); + ) + if( !err && pElement ) + { + TXmlEngNamespace ns = pElement->NamespaceDeclaration(); + if ( ns.Uri() != KSenSoap12EnvelopeXmlns) + { + RXmlEngNodeList list; + TRAP( err, pElement->GetElementsByTagNameL(list, KFaultActorLocalname); ) + if ( !err && list.HasNext() ) + { + TXmlEngElement child = list.Next(); + list.Close(); + return child.Text(); + } + list.Close(); + } + else + { + RXmlEngNodeList list; + TRAP( err, pElement->GetElementsByTagNameL(list, KFault12NodeLocalname, NsUri()); ) + if ( !err && list.HasNext() ) + { + TXmlEngElement value = list.Next(); + list.Close(); + return value.Text(); + } + list.Close(); + } + } + // else { // AsElementL -method leaved(!) } + return KNullDesC8(); + } + +EXPORT_C TPtrC8 CSenSoapFault2::Detail() + { + TInt err( KErrNone ); + TXmlEngElement element; + TXmlEngElement* pElement = NULL; + TRAP( + err, + element = AsElementL(); + pElement = &(element); + ) + if( !err && pElement ) + { + TXmlEngNamespace ns = pElement->NamespaceDeclaration(); + if ( ns.Uri() != KSenSoap12EnvelopeXmlns) + { + RXmlEngNodeList list; + TRAP( err, pElement->GetElementsByTagNameL(list, KDetailLocalname); ) + if ( !err && list.HasNext() ) + { + TXmlEngElement child = list.Next(); + list.Close(); + return child.Text(); + } + list.Close(); + } + else + { + RXmlEngNodeList list; + TRAP( err, pElement->GetElementsByTagNameL( list, KFault12DetailLocalname, NsUri() ); ) + if ( !err && list.HasNext() ) + { + TXmlEngElement child = list.Next(); + list.Close(); + return child.Text(); + } + list.Close(); + } + } + // else { // AsElementL -method leaved(!) } + return KNullDesC8(); + } + +// End of File