diff -r 000000000000 -r 62f9d29f7211 webservices/idwsfplugin/src/idwsfsiuheader.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webservices/idwsfplugin/src/idwsfsiuheader.cpp Thu Jan 07 16:19:19 2010 +0200 @@ -0,0 +1,191 @@ +/* +* 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: +* +*/ + + + + + + + + +// INCLUDE FILES +#include +#include +#include // check if this include is needed(?) +#include "senwsdescription.h" // state constants for credentials + +#include "idwsfsiuheader.h" + +CIdWsfSiuHeader* CIdWsfSiuHeader::NewL() + { + CIdWsfSiuHeader* pNew = new (ELeave) CIdWsfSiuHeader; + CleanupStack::PushL(pNew); + pNew->ConstructL(); + CleanupStack::Pop(); // pNew; + return pNew; + } + +CIdWsfSiuHeader::CIdWsfSiuHeader() + { + } + +void CIdWsfSiuHeader::ConstructL() + { + BaseConstructL(KSiuXmlns, KSiuName); + iNotOnOrAfter = Time::NullTTime(); + } + +CIdWsfSiuHeader::~CIdWsfSiuHeader() + { + delete ipCredential; + } + +TPtrC8 CIdWsfSiuHeader::Endpoint() + { + MSenElement* pElement = this->AsElement().Element(KEndpointName); + if(!pElement) + { + return KNullDesC8(); + } + else + { + return pElement->Content(); + } + } + +TPtrC8 CIdWsfSiuHeader::SecurityMechId() + { + MSenElement* pElement = this->AsElement().Element(KSecurityMechIdName); + if(!pElement) + { + return KNullDesC8(); + } + else + { + return pElement->Content(); + } + } + +const TTime& CIdWsfSiuHeader::NotOnOrAfter() + { + return iNotOnOrAfter; + } + +TBool CIdWsfSiuHeader::IsNotOnOrAfterSet() + { + return (iNotOnOrAfter.Int64() != 0); + } + +CSenCredential* CIdWsfSiuHeader::Credential() + { + return ipCredential; + } + +void CIdWsfSiuHeader::StartElementL( + const TDesC8& aNsUri, + const TDesC8& aLocalName, + const TDesC8& aQName, + const RAttributeArray& aAttributes + ) + { + switch (iState) + { + case KStateParsingCredentials: + { + // change to even state which ignores and does not save content + iState = KStateParsingSingleCredential; + + CSenCredential* pCredential = CSenCredential::NewL(aNsUri, + aLocalName, aQName, aAttributes, AsElement()); + delete ipCredential; + ipCredential = pCredential; + if (iNotOnOrAfter != Time::NullTTime()) + { + ipCredential->SetValidUntil(iNotOnOrAfter); + } + DelegateParsingL(*ipCredential); + break; + } + default: + { + if ((aLocalName == KEndpointName) || + (aLocalName == KSecurityMechIdName)) + { + DelegateParsingL(aNsUri, aLocalName, aQName, aAttributes); + } + else if (aLocalName == KCredentialElementLocalNameName || + aLocalName == KCredentialsName) + { + TPtrC8 notOnOrAfter = + SenXmlUtils::AttrValue(aAttributes, KNotOnOrAfterName); + if (notOnOrAfter.Length() > 0) + { + iNotOnOrAfter = + SenDateUtils::FromXmlDateTimeL(notOnOrAfter); + } + else + { + iNotOnOrAfter = Time::NullTTime(); + } + + // even state stops saving content + iState = KStateParsingCredentials; + CSenBaseFragment::StartElementL(aNsUri, aLocalName, + aQName, aAttributes); + } + else + { + CSenBaseFragment::StartElementL(aNsUri, aLocalName, + aQName, aAttributes); + } + break; + } + } + } + +void CIdWsfSiuHeader::EndElementL( + const TDesC8& aNsUri, + const TDesC8& aLocalName, + const TDesC8& aQName + ) + { + switch (iState) + { + // this is due the SAX parsing nature of CXMLReader: + // in start element delegateparsing(), + // AO is blocked, and thats why the state really is + // PARSING single CREDENTIAL, + // when we arrive to the end element + case KStateParsingSingleCredential: + { + + if (aLocalName == KCredentialElementLocalNameName || + aLocalName == KCredentialsName) + + { + iState = KStateIgnore; + } + break; + } + default: + break; + } + CSenBaseFragment::EndElementL(aNsUri, aLocalName, aQName); + } + +// End of File +