diff -r 000000000000 -r 094583676ce7 PECengine/ListLibrary2/AuthSrc/CPEngAuthorizationTransactionOut.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/PECengine/ListLibrary2/AuthSrc/CPEngAuthorizationTransactionOut.cpp Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,409 @@
+/*
+* Copyright (c) 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: Authorization out transaction handler.
+*
+*/
+
+// INCLUDE FILES
+#include "CPEngAuthorizationTransactionOut.h"
+
+#include "CPEngAuthorizationResponse.h"
+#include "MPEngAuthorizationEngine.h"
+
+#include "MPEngXMLSerializer.h"
+#include "MPEngXMLParser.h"
+
+#include "MPEngPresenceAttrManager.h"
+#include "PEngAttrLibFactory.h"
+
+#include "CPEngTransactionStatus.h"
+#include "PEngWVPresenceErrors2.h"
+#include "PresenceDebugPrint.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationTransactionOut::CPEngAuthorizationTransactionOut()
+// -----------------------------------------------------------------------------
+//
+CPEngAuthorizationTransactionOut::CPEngAuthorizationTransactionOut(
+ MPEngAuthorizationEngine& aAuthEngine,
+ MPEngPresenceAttrManager& aAttrManager,
+ MPEngXMLParser& aXMLParser,
+ TPEngWVCspVersion& aCSPVersion,
+ TInt aOperationId )
+ : iAuthEngine( aAuthEngine ),
+ iAttributeManager( aAttrManager ),
+ iXMLParser( aXMLParser ),
+ iCSPVersion( aCSPVersion ),
+ iTransCompleted( EFalse ),
+ iOperationId( aOperationId )
+ {
+ PENG_DP( D_PENG_LIT( "CPEngAuthorizationTransactionOut::CPEngAuthorizationTransactionOut()" ) );
+ iAuthEngine.LockForNetworkPublishing();
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationTransactionOut::ConstructL()
+// -----------------------------------------------------------------------------
+//
+void CPEngAuthorizationTransactionOut::ConstructL()
+ {
+ iTransactionStatus = CPEngTransactionStatus::NewL();
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationTransactionOut::NewLC()
+// -----------------------------------------------------------------------------
+//
+CPEngAuthorizationTransactionOut* CPEngAuthorizationTransactionOut::NewLC(
+ MPEngAuthorizationEngine& aAuthEngine,
+ MPEngPresenceAttrManager& aAttrManager,
+ MPEngXMLParser& aXMLParser,
+ TPEngWVCspVersion& aCSPVersion,
+ TInt aOperationId )
+ {
+ CPEngAuthorizationTransactionOut* self =
+ new ( ELeave ) CPEngAuthorizationTransactionOut(
+ aAuthEngine,
+ aAttrManager,
+ aXMLParser,
+ aCSPVersion,
+ aOperationId );
+ CleanupStack::PushL( self );
+ self->ConstructL( );
+
+ return self;
+ }
+
+
+// Destructor
+CPEngAuthorizationTransactionOut::~CPEngAuthorizationTransactionOut()
+ {
+ iAuthEngine.UnLockForNetworkPublishing();
+ delete iResponse;
+ delete iTransactionStatus;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationTransactionOut::RequestL()
+// -----------------------------------------------------------------------------
+//
+void CPEngAuthorizationTransactionOut::RequestL( TDes8& aSendBuffer )
+ {
+ aSendBuffer.Zero();
+ MPEngXMLSerializer* xmlSerializer = CreateXmlSerializerL( aSendBuffer );
+ CleanupClosePushL( *xmlSerializer );
+
+
+ //
+ if ( iCSPVersion == EWVCspV11 )
+ {
+ xmlSerializer->StartTagL( KTransactionContent );
+ xmlSerializer->AttributeL( KXmlXmlns, KTransactionContentNS );
+ }
+ else
+ {
+ xmlSerializer->StartTagL( KTransactionContent );
+ xmlSerializer->AttributeL( KXmlXmlns, KTransactionContentNS_CSP12 );
+ }
+
+
+ switch ( iResponse->AuthorizationStatus() )
+ {
+ case MPEngAuthorizationRequest::EPEngAuthAccepted: // fall through
+ case MPEngAuthorizationRequest::EPEngAuthDenied:
+ {
+ AppendXMLPresenceAuthUserL( *xmlSerializer );
+ break;
+ }
+
+ case MPEngAuthorizationRequest::EPEngAuthCanceled:
+ {
+ AppendXMLCancelAuthorizationL( *xmlSerializer );
+ }
+
+ default:
+ {
+ User::Leave( KErrNotSupported );
+ break;
+ }
+ }
+
+
+ // end of transaction
+ //
+ xmlSerializer->EndTagL( KTransactionContent );
+ CleanupStack::PopAndDestroy( ); // xmlSerializer
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationTransactionOut::LastRunningTransactionHandler()
+// -----------------------------------------------------------------------------
+//
+void CPEngAuthorizationTransactionOut::LastRunningTransactionHandler()
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationTransactionOut::ProcessResponseL()
+// -----------------------------------------------------------------------------
+//
+void CPEngAuthorizationTransactionOut::ProcessResponseL(
+ const TDesC8& aResponse,
+ TRequestStatus& /* aStatus */ )
+ {
+ PENG_DP( D_PENG_LIT( "CPEngAuthorizationTransactionOut::ProcessResponseL()" ) );
+
+
+ // check if we have some answer from the server
+ TInt err ( iXMLParser.ParseResultL( aResponse,
+ iOperationId,
+ *iTransactionStatus ) );
+ // how did transaction go
+ switch ( err )
+ {
+ case KErrNone: // transaction OK
+ {
+ // Authorization response went fine, store it
+ iAuthEngine.UpdateAuthorizationStateL( *iResponse,
+ ( iCSPVersion == EWVCspV12 ) );
+ break;
+ }
+
+ case KPEngNwErrUnrespondedPresenceRequest:
+ case KPEngNwErrUnknownUser:
+ case KPEngNwErrBadParameter:
+ {
+ // unknown user id,or bad param, remove Authorization request
+ iAuthEngine.RemoveAuthorizationRequestL( *iResponse );
+ break;
+ }
+
+ default:
+ {
+ }
+ }
+
+ iTransCompleted = ETrue;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationTransactionOut::CancelProcessing()
+// -----------------------------------------------------------------------------
+//
+void CPEngAuthorizationTransactionOut::CancelProcessing( )
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationTransactionOut::NewTransactionHandlersL()
+// -----------------------------------------------------------------------------
+//
+void CPEngAuthorizationTransactionOut::NewTransactionHandlersL(
+ RPointerArray& /* aTransactionsArray*/ )
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationTransactionOut::TransactionCompleted()
+// -----------------------------------------------------------------------------
+//
+TBool CPEngAuthorizationTransactionOut::TransactionCompleted()
+ {
+ return iTransCompleted;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationTransactionOut::TransactionResult()
+// -----------------------------------------------------------------------------
+//
+CPEngTransactionStatus* CPEngAuthorizationTransactionOut::TransactionResult()
+ {
+ CPEngTransactionStatus* temp = iTransactionStatus;
+ iTransactionStatus = NULL;
+ return temp;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationTransactionOut::ReleaseHandler()
+// -----------------------------------------------------------------------------
+//
+void CPEngAuthorizationTransactionOut::ReleaseHandler()
+ {
+ iTransCompleted = ETrue;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationTransactionOut::SetAuthResponse()
+// -----------------------------------------------------------------------------
+//
+void CPEngAuthorizationTransactionOut::SetAuthResponse(
+ CPEngAuthorizationResponse* aResponse )
+ {
+ delete iResponse;
+ iResponse = aResponse;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationTransactionOut::AppendXMLPresenceAuthUserL()
+// -----------------------------------------------------------------------------
+//
+void CPEngAuthorizationTransactionOut::AppendXMLPresenceAuthUserL(
+ MPEngXMLSerializer& aXmlSerializer )
+ {
+ //
+ aXmlSerializer.StartTagL( KPresenceAuthUser );
+ AppendXMLUserIdL( aXmlSerializer );
+
+ //
+ aXmlSerializer.StartTagL( KAcceptance );
+
+
+ if ( iResponse->AuthorizationStatus() == MPEngAuthorizationRequest::EPEngAuthAccepted )
+ {
+ aXmlSerializer.RawValueL( KXMLValueTrue );
+ }
+ else
+ {
+ aXmlSerializer.RawValueL( KXMLValueFalse );
+ }
+ //
+ aXmlSerializer.EndTagL( KAcceptance );
+
+
+ // if CSP 1.2 we also append list of attributes to accept
+ if ( iCSPVersion == EWVCspV12 )
+ {
+ const RArray& attributes = iResponse->AuthorizedAttributes();
+ TInt count( attributes.Count() );
+ // xmlns="Name space"
+ // append attribute's namespace according to attributes on the list
+ // Append Attribute name space
+ TPtrC8 attributeName;
+ TPtrC8 attributeNameSpace;
+ User::LeaveIfError(
+ iAttributeManager.GetAttributeXmlNameAndNameSpace( attributes[0],
+ attributeName,
+ attributeNameSpace ) );
+
+ //
+ aXmlSerializer.StartTagL( KPresenceSubList );
+ aXmlSerializer.AttributeL( KXmlXmlns, attributeNameSpace );
+
+ // Append attributes one by one
+ for ( TInt x( 0 ) ; x < count ; x++ )
+ {
+ User::LeaveIfError(
+ iAttributeManager.GetAttributeXmlNameAndNameSpace( attributes[ x ],
+ attributeName,
+ attributeNameSpace ) );
+
+ aXmlSerializer.StartTagL( attributeName
+ ).EndTagL( attributeName );
+ }
+
+ //
+ aXmlSerializer.EndTagL( KPresenceSubList );
+ }
+
+ //
+ aXmlSerializer.EndTagL( KPresenceAuthUser );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationTransactionOut::AppendXMLCancelAuthorizationL()
+// -----------------------------------------------------------------------------
+//
+void CPEngAuthorizationTransactionOut::AppendXMLCancelAuthorizationL(
+ MPEngXMLSerializer& aXmlSerializer )
+ {
+ //
+ aXmlSerializer.StartTagL( KCancelAuthRequest );
+
+ AppendXMLUserIdL( aXmlSerializer );
+
+ //
+ aXmlSerializer.EndTagL( KCancelAuthRequest );
+ }
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationTransactionOut::AppendXMLUserIdL()
+// -----------------------------------------------------------------------------
+//
+void CPEngAuthorizationTransactionOut::AppendXMLUserIdL(
+ MPEngXMLSerializer& aXmlSerializer )
+ {
+ aXmlSerializer.StartTagL( KUserIDXMLTag
+ ).WvAddressL( iResponse->Id()
+ ).EndTagL( KUserIDXMLTag );
+ }
+
+// End of File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+