diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapOperations/src/XcapDeletion.cpp --- a/xdmprotocols/XcapProtocol/XcapOperations/src/XcapDeletion.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,248 +0,0 @@ -/* -* 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: CXcapDeletion -* -*/ - - - - -// INCLUDES -#include "XcapCache.h" -#include "XcapProtocol.h" -#include "XcapDeletion.h" -#include "XcapAppUsage.h" -#include "XcapDocument.h" -#include "XcapUriParser.h" -#include "XdmXmlParser.h" -#include "XcapDocumentNode.h" -#include "XcapHttpTransport.h" -#include "XcapHttpOperation.h" -#include "XcapHttpReqDelete.h" -#include "XcapOperationFactory.h" - -// ================= MEMBER FUNCTIONS ======================= - -// --------------------------------------------------------- -// CXcapDeletion::CXcapDeletion -// -// --------------------------------------------------------- -// -CXcapDeletion::CXcapDeletion( CXcapDocument& aParentDoc, - CXcapDocumentNode* aDocumentSubset, - CXcapOperationFactory& aOperationFactory ) : - CXcapHttpOperation( aParentDoc, aDocumentSubset, aOperationFactory ), - iOperationType( iDocumentSubset == NULL ? - EXdmDocument : EXdmPartialDocument ) - { - } - -// --------------------------------------------------------- -// CXcapDeletion::NewL -// -// --------------------------------------------------------- -// -CXcapDeletion* CXcapDeletion::NewL( CXcapDocument& aParentDoc, - CXcapDocumentNode* aDocumentSubset, - CXcapOperationFactory& aOperationFactory ) - { - CXcapDeletion* self = new ( ELeave ) CXcapDeletion( aParentDoc, aDocumentSubset, aOperationFactory ); - CleanupStack::PushL( self ); - self->BaseConstructL(); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------- -// CXcapDeletion::ConstructL -// -// --------------------------------------------------------- -// -void CXcapDeletion::ConstructL() - { - CXcapHttpReqDelete* request = Transport().DeleteL( iTargetDoc.Name() ); - CleanupStack::PushL( request ); - User::LeaveIfError( iRequestQueue.Append( request ) ); - request->SetExpiryTimeL( NULL, KDefaultHttpRequestTimeout * 1000000 ); - CleanupStack::Pop(); //request - if( iOperationType != EXdmDocument && iDocumentSubset != NULL ) - { - iUriParser->SetDocumentSubset( iDocumentSubset ); - //Add namespace mappings - User::LeaveIfError( iTargetDoc.ApplicationUsage().Validate( - *iDocumentSubset, iUriParser, ETrue ) ); - } - } - -// --------------------------------------------------------- -// CXcapDeletion::ExecuteL -// -// --------------------------------------------------------- -// -void CXcapDeletion::ExecuteL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapDeletion::ExecuteL()" ) ); - #endif - TPtrC8 eTag = iTargetDoc.ETag(); - if( eTag.Length() > 0 ) - iActiveRequest->SetHeaderL( KHttpHeaderIfMatch, eTag ); - TRAPD( error, iUriParser->ParseL( iActiveRequest->RequestUriL() ) ); - if( error == KErrNone ) - { - TPtrC8 uri = iUriParser->DesC8(); - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " New URI: %S" ), &uri ); - #endif - HBufC8* escape = CXcapHttpOperation::EscapeLC( uri ); - iActiveRequest->UpdateRequestUriL( escape->Des() ); - CleanupStack::PopAndDestroy(); //escape - } - } - -// --------------------------------------------------------- -// CXcapDeletion::OperationCompleteL -// -// --------------------------------------------------------- -// -void CXcapDeletion::OperationCompleteL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapDeletion::OperationCompleteL()" ) ); - #endif - switch( iRequestData->iHttpStatus ) - { - case 200: //Document was deleted - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Status 200 - Document deleted" ) ); - #endif - iOperationType == EXdmDocument ? - HandleDocDeletion() : - HandlePartialDeletion(); - iCompleted = ETrue; - } - break; - case 404: //Document was not found - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Status 404 - Document not found" ) ); - #endif - iCompleted = ETrue; - iResult = KErrNotFound; - } - break; - default: - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Default case - Status: %d" ), - iRequestData->iHttpStatus ); - #endif - iCompleted = ETrue; - break; - } - iResult = ReinterpretStatus( iRequestData->iHttpStatus ); - } - -// --------------------------------------------------------- -// CXcapDeletion::HandleDocDeletion -// -// --------------------------------------------------------- -// -void CXcapDeletion::HandleDocDeletion() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapDeletion::HandleDocDeletion()" ) ); - #endif - TPtrC name = iTargetDoc.Name(); - TPtrC8 root = Transport().RootUri(); - RXcapCache* cache = iTargetDoc.Protocol().Cache(); - if( cache != NULL ) - { - TInt error = cache->Delete( name, root ); - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Document deleted from the cache" ) ); - #endif - } - } - -// --------------------------------------------------------- -// CXcapDeletion::HandlePartialDeletion -// -// --------------------------------------------------------- -// -void CXcapDeletion::HandlePartialDeletion() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapDeletion::HandlePartialDeletion()" ) ); - #endif - TPtrC name = iTargetDoc.Name(); - TPtrC8 root = Transport().RootUri(); - iTargetDoc.RemoveFromModelL( iDocumentSubset ); - TPtrC8 eTag = Descriptor( iRequestData->iETag ); - RXcapCache* cache = iTargetDoc.Protocol().Cache(); - if( cache != NULL ) - { - HBufC8* newDoc = iXmlParser->FormatToXmlLC( ETrue, &iTargetDoc, iTargetDoc.DocumentRoot() ); - cache->Store( eTag, name, root, newDoc->Des() ); - CleanupStack::PopAndDestroy(); //newDoc - } - iTargetDoc.SetETag( eTag ); - } - -// --------------------------------------------------------- -// CXcapDeletion::OperationFailedL -// -// --------------------------------------------------------- -// -void CXcapDeletion::OperationFailedL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapDeletion::OperationFailedL() - Error: %d" ), - iStatus.Int() ); - #endif - if( iStatus.Int() >= KErrNone ) - { - TInt status = iActiveRequest->ResponseData()->iHttpStatus; - TInt completion = iActiveRequest->ResponseData()->iCompletion; - iResult = status < KErrNone || completion < KErrNone ? status : ReinterpretStatus( status ); - } - else iResult = iStatus.Int(); - iCompleted = ETrue; - } - -// --------------------------------------------------------- -// CXcapDeletion::Result -// -// --------------------------------------------------------- -// -TBool CXcapDeletion::Result() const - { - return ETrue; - } - -// --------------------------------------------------------- -// CXcapDeletion::~CXcapDeletion -// -// --------------------------------------------------------- -// -CXcapDeletion::~CXcapDeletion() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapDeletion::~CXcapDeletion()" ) ); - #endif - } - -// End of File -