--- /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 <SenCredential2.h>
+#include <SenFacet.h>
+#include <SenDateUtils.h>
+#include <SenXmlElement.h> // check if this include is needed(?)
+#include <SenXmlUtils.h>
+#include <SenXmlServiceDescription.h>
+
+
+#ifdef SYMBIAN_SECURE_ECOM
+ // for S60 FP3 (2.8) platform or newer (3.0 and above)
+ #include <xml/attribute.h> // 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