diff -r 000000000000 -r 62f9d29f7211 webservices/wsdescription/src/sencredential2.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webservices/wsdescription/src/sencredential2.cpp Thu Jan 07 16:19:19 2010 +0200 @@ -0,0 +1,335 @@ +/* +* 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 +#include // check if this include is needed(?) +#include +#include + + +#ifdef SYMBIAN_SECURE_ECOM + // for S60 FP3 (2.8) platform or newer (3.0 and above) + #include // needed for RAttributeArray +//#else // for S60 FP2 platform (2.6) or older + //#include "Attribute.h" +#endif + +using namespace Xml; + +namespace + { +// _LIT8(KSenCredentialIdentifierLocalname, "CredentialIdentifier"); + + // Identifiers which are accepted (and searched after) + _LIT8(KId, "ID"); + _LIT8(Kwsu_ns_plus_Id, "wsu:Id"); + _LIT8(KAssertionId, "AssertionID"); + + _LIT8(KConditions, "Conditions"); + _LIT8(KVal_NotOnOrAfter, "NotOnOrAfter"); + +// _LIT8(KSenCredentialId, "SenCredentialId"); +// _LIT8(KProviderIdLocalName, "ProviderID"); + +// const TInt KCredIdBufSize = 128; + } + +EXPORT_C CSenCredential2* CSenCredential2::NewL() + { + CSenCredential2* pNew = NewLC(); + CleanupStack::Pop(); // pNew; + return pNew; + } + +EXPORT_C CSenCredential2* CSenCredential2::NewLC() + { + CSenCredential2* pNew = new (ELeave) CSenCredential2; + CleanupStack::PushL(pNew); + pNew->ConstructL(KNullDesC8); + return pNew; + } + +EXPORT_C CSenCredential2* CSenCredential2::NewL( + const TDesC8& aNsUri, + const TDesC8& aLocalName, + const TDesC8& aQName, + const RAttributeArray& aAttributes) + { + CSenCredential2* pNew = NewLC(aNsUri, aLocalName, aQName, aAttributes); + CleanupStack::Pop(); // pNew; + return pNew; + } + +EXPORT_C CSenCredential2* CSenCredential2::NewLC( + const TDesC8& aNsUri, + const TDesC8& aLocalName, + const TDesC8& aQName, + const RAttributeArray& aAttributes) + { + CSenCredential2* pNew = new (ELeave) CSenCredential2; + CleanupStack::PushL(pNew); + pNew->BaseConstructL(aNsUri, aLocalName, aQName, aAttributes); + return pNew; + } + +EXPORT_C CSenCredential2* CSenCredential2::NewL( + const TDesC8& aNsUri, + const TDesC8& aLocalName, + const TDesC8& aQName, + const RAttributeArray& aAttributes, + TXmlEngElement& aParent) + { + CSenCredential2* pNew = NewLC(aNsUri, aLocalName, + aQName, aAttributes, aParent); + CleanupStack::Pop(); // pNew; + return pNew; + } + +EXPORT_C CSenCredential2* CSenCredential2::NewLC( + const TDesC8& aNsUri, + const TDesC8& aLocalName, + const TDesC8& aQName, + const RAttributeArray& aAttributes, + TXmlEngElement& aParent) + { + CSenCredential2* pNew = new (ELeave) CSenCredential2; + CleanupStack::PushL(pNew); + pNew->BaseConstructL(aNsUri, aLocalName, aQName, aAttributes, aParent); + return pNew; + } + +EXPORT_C CSenCredential2* CSenCredential2::NewL( + const TDesC8& aNsUri, + const TDesC8& aLocalName, + const TDesC8& aQName, + const RAttributeArray& aAttributes, + TXmlEngElement& aParent, + RSenDocument& aOwnerDocument) + { + CSenCredential2* pNew = NewLC(aNsUri, aLocalName, + aQName, aAttributes, + aParent, aOwnerDocument); + CleanupStack::Pop(); // pNew; + return pNew; + } + +EXPORT_C CSenCredential2* CSenCredential2::NewLC( + const TDesC8& aNsUri, + const TDesC8& aLocalName, + const TDesC8& aQName, + const RAttributeArray& aAttributes, + TXmlEngElement& aParent, + RSenDocument& aOwnerDocument) + { + CSenCredential2* pNew = new (ELeave) CSenCredential2; + CleanupStack::PushL(pNew); + pNew->BaseConstructL(aNsUri, aLocalName, aQName, aAttributes, aParent, + aOwnerDocument); + return pNew; + } + +EXPORT_C CSenCredential2* CSenCredential2::NewL( + const CSenCredential2& aCredential) + { + CSenCredential2* pNew = NewLC(aCredential); + CleanupStack::Pop(); // pNew; + return pNew; + } + +EXPORT_C CSenCredential2* CSenCredential2::NewLC( + const CSenCredential2& aCredential) + { + CSenCredential2* pNew = new (ELeave) CSenCredential2; + CleanupStack::PushL(pNew); + pNew->BaseConstructL((CSenCredential2&)aCredential); + return pNew; + } + +EXPORT_C void CSenCredential2::ConstructL(const TDesC8& aLocalName) + { + CSenFragmentBase::BaseConstructL(aLocalName); + } + +EXPORT_C void CSenCredential2::BaseConstructL(CSenCredential2& aCredential) + { + CSenFragmentBase::BaseConstructL(aCredential.AsElementL()); + if (aCredential.ValidUntil() != Time::NullTTime()) + { + SetValidUntil(aCredential.ValidUntil()); + } + SetIdL(aCredential.Id()); + } + +EXPORT_C void CSenCredential2::BaseConstructL( + const TDesC8& aNsUri, + const TDesC8& aLocalName, + const TDesC8& aQName, + const RAttributeArray& aAttributes, + TXmlEngElement& aParent) + { + CSenFragmentBase::BaseConstructL(aNsUri, aLocalName, aQName, aAttributes, + aParent); + + // we want to save its ID and validity + TPtrC8 identifier = SenXmlUtils::AttrValue(aAttributes, KId); + if(identifier.Length()>0) + { + SetIdL(identifier); + } + + TPtrC8 identifier2 = SenXmlUtils::AttrValue(aAttributes, Kwsu_ns_plus_Id); + if(identifier2.Length()>0) + { + SetIdL(identifier2); + } + + TPtrC8 identifier3 = SenXmlUtils::AttrValue(aAttributes, KAssertionId); + if(identifier3.Length()>0) + { + SetIdL(identifier3); + } + } + +EXPORT_C void CSenCredential2::BaseConstructL(const TDesC8& aNsUri, + const TDesC8& aLocalName, + const TDesC8& aQName, + const RAttributeArray& aAttributes, + TXmlEngElement& aParent, + RSenDocument& aOwnerDocument) + { + CSenFragmentBase::BaseConstructL(aNsUri, aLocalName, aQName, aAttributes, + aParent, aOwnerDocument); + + // we want to save its ID and validity + TPtrC8 identifier = SenXmlUtils::AttrValue(aAttributes, KId); + if(identifier.Length()>0) + { + SetIdL(identifier); + } + + TPtrC8 identifier2 = SenXmlUtils::AttrValue(aAttributes, Kwsu_ns_plus_Id); + if(identifier2.Length()>0) + { + SetIdL(identifier2); + } + + TPtrC8 identifier3 = SenXmlUtils::AttrValue(aAttributes, KAssertionId); + if(identifier3.Length()>0) + { + SetIdL(identifier3); + } + } + +EXPORT_C void CSenCredential2::BaseConstructL(const TDesC8& aNsUri, + const TDesC8& aLocalName, + const TDesC8& aQName, + const RAttributeArray& aAttributes) + { + CSenFragmentBase::BaseConstructL(aNsUri, aLocalName, aQName, aAttributes); + + TPtrC8 identifier = SenXmlUtils::AttrValue(aAttributes, KId); + if(identifier.Length()>0) + { + SetIdL(identifier); + } + + TPtrC8 identifier2 = SenXmlUtils::AttrValue(aAttributes, Kwsu_ns_plus_Id); + if(identifier2.Length()>0) + { + SetIdL(identifier2); + } + + TPtrC8 identifier3 = SenXmlUtils::AttrValue(aAttributes, KAssertionId); + if(identifier3.Length()>0) + { + SetIdL(identifier3); + } + } + +EXPORT_C CSenCredential2::CSenCredential2() +: + iId(NULL), + iNotOnOrAfter(Time::NullTTime()) + { + } + +EXPORT_C CSenCredential2::~CSenCredential2() + { + delete iId; + } + +EXPORT_C void CSenCredential2::SetIdL(const TDesC8& aNewId) + { + HBufC8* pNew = aNewId.AllocL(); + delete iId; + iId = pNew; + } + +EXPORT_C const TDesC8& CSenCredential2::Id() + { + if(iId) + { + return *iId; + } + else + { + return KNullDesC8(); + } + } + + +EXPORT_C void CSenCredential2::OnStartElementL(const RTagInfo& aElement, + const RAttributeArray& aAttributes, + TInt aErrorCode) + { + if ( aElement.LocalName().DesC().Compare(KConditions) == 0) + { + // we should save the notOnOrAfter attribute value + TPtrC8 ptr = SenXmlUtils::AttrValue(aAttributes, KVal_NotOnOrAfter ); + + // Convert dateTime (from XML schema) to Symbian TTime. + // The returned time will be in UTC. + if (ptr.Length() > 0) + { + iNotOnOrAfter = SenDateUtils::FromXmlDateTimeL(ptr); + } + } + CSenFragmentBase::OnStartElementL(aElement, aAttributes, aErrorCode); + } + +EXPORT_C TTime& CSenCredential2::ValidUntil() + { + return iNotOnOrAfter; + } + + +EXPORT_C void CSenCredential2::SetValidUntil(TTime& aTime) + { + iNotOnOrAfter = aTime; + } + +// END OF FILE