diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XcapProtocol/XcapOperations/src/XcapInsertion.cpp --- a/xdmprotocols/XcapProtocol/XcapOperations/src/XcapInsertion.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,216 +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: CXcapInsertion -* -*/ - - - - -// INCLUDES -//This is only for logging -#include -#include "XcapProtocol.h" -#include "XcapDocument.h" -#include "XcapUriParser.h" -#include "XcapInsertion.h" -#include "XdmXmlParser.h" -#include "XcapHttpReqPut.h" -#include "XdmNodeAttribute.h" -#include "XcapHttpTransport.h" -#include "XcapEngineDefines.h" -#include "XcapOperationFactory.h" - - -// --------------------------------------------------------- -// C++ constructor can NOT contain any code, that -// might leave. -// --------------------------------------------------------- -// -CXcapInsertion::CXcapInsertion( CXcapDocument& aParentDoc, - CXcapDocumentNode* aDocumentSubset, - CXcapOperationFactory& aOperationFactory ) : - CXcapHttpOperation( aParentDoc, aDocumentSubset, aOperationFactory ), - iOperationType( EXdmPartialDocument ) - - { - } - -// --------------------------------------------------------- -// Two-phased constructor. -// -// --------------------------------------------------------- -// -CXcapInsertion* CXcapInsertion::NewL( CXcapDocument& aParentDoc, - CXcapDocumentNode* aDocumentSubset, - CXcapOperationFactory& aOperationFactory ) - { - CXcapInsertion* self = new ( ELeave ) CXcapInsertion( aParentDoc, aDocumentSubset, aOperationFactory ); - CleanupStack::PushL( self ); - self->BaseConstructL(); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------- -// CXcapInsertion::ConstructL -// -// --------------------------------------------------------- -// -void CXcapInsertion::ConstructL() - { - CXcapHttpReqPut* request = Transport().PutL( iTargetDoc.Name() ); - CleanupStack::PushL( request ); - User::LeaveIfError( iRequestQueue.Append( request ) ); - request->SetExpiryTimeL( NULL, KDefaultHttpRequestTimeout * 1000000 ); - CleanupStack::Pop(); //request - iUriParser->SetDocumentSubset( iDocumentSubset ); - } - -// --------------------------------------------------------- -// CXcapAddition::FormatModRequestL -// -// --------------------------------------------------------- -// -TInt CXcapInsertion::FormatModRequestL( const CXdmDocumentNode* aDocumentNode ) - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapInsertion::FormatModRequestL()" ) ); - iOperationFactory.WriteToLog( _L8( " Operation type: %d" ), iOperationType ); - iOperationFactory.WriteToLog( _L8( " Document subset: %x" ), iDocumentSubset ); - #endif - return CXcapHttpOperation::FormatModRequestL( aDocumentNode ); - } - -// --------------------------------------------------------- -// CXcapInsertion::ExecuteL -// -// --------------------------------------------------------- -// -void CXcapInsertion::ExecuteL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapInsertion::ExecuteL()" ) ); - #endif - CXcapHttpOperation::ExecuteL( iActiveRequest, iDocumentSubset ); - iActiveRequest->SetHeaderL( KHttpHeaderIfMatch, _L8( "*" ) ); - } - -// --------------------------------------------------------- -// CXcapInsertion::OperationCompleteL -// -// --------------------------------------------------------- -// -void CXcapInsertion::OperationCompleteL() - { - - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapInsertion::OperationCompleteL()" ) ); - #endif - TPtrC8 root = Transport().RootUri(); - iRequestData = iActiveRequest->ResponseData(); - TPtrC name = iTargetDoc.Name(); - TPtrC8 eTag = Descriptor( iRequestData->iETag ); - switch( iRequestData->iHttpStatus ) - { - case 201: //"Created" -> Put operation was succesful - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Status 201 - Created" ) ); - #endif - iResult = KErrNone; - iTargetDoc.SetETag( eTag ); - CXcapHttpContSupplier* request = ( CXcapHttpContSupplier* )iActiveRequest; - RXcapCache* cache = iTargetDoc.Protocol().Cache(); - if( cache != NULL && iOperationType == EXdmDocument ) - { - TPtrC8 payload = request->RequestBody(); - cache->Store( eTag, name, root, payload ); - } - iCompleted = ETrue; - } - break; - case 412: //"Precondition failed" -> Cache out of date - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Status 412 - Precondition failed" ) ); - #endif - iResult = KXcapErrorHttpPrecondFailed; - //RXcapCache* cache = CXcapProtocol::Cache(); - //if( cache != NULL && iOperationType == EXcapDocument ) - // cache->Delete( name, root ); - iCompleted = ETrue; - iActiveRequest->ResetUriL( _L( "" ) ); - iActiveRequest->ReleaseResponseData(); - iRequestData->iCompletion = KInsertConflict; - } - break; - default: - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( " Default case - Status: %d" ), - iRequestData->iHttpStatus ); - #endif - TInt status = iRequestData->iHttpStatus; - iResult = ReinterpretStatus( status ); - iCompleted = ETrue; - break; - } - } - -// --------------------------------------------------------- -// Symbian OS default constructor may leave. -// -// --------------------------------------------------------- -// -void CXcapInsertion::OperationFailedL() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapInsertion::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; - } - -// --------------------------------------------------------- -// Symbian OS default constructor may leave. -// -// --------------------------------------------------------- -// -TBool CXcapInsertion::Result() const - { - return ETrue; - } - -// --------------------------------------------------------- -// Destructor -// -// --------------------------------------------------------- -// -CXcapInsertion::~CXcapInsertion() - { - #ifdef _DEBUG - iOperationFactory.WriteToLog( _L8( "CXcapInsertion::~CXcapInsertion()" ) ); - #endif - } - -// End of File -