xdmprotocols/XcapProtocol/XcapOperations/src/XcapAddition.cpp
branchGCC_SURGE
changeset 28 d9861ae9169c
parent 23 77cb48a03620
parent 26 04ca1926b01c
--- a/xdmprotocols/XcapProtocol/XcapOperations/src/XcapAddition.cpp	Thu Jul 01 14:09:06 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,286 +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:   CXcapAddition
-*
-*/
-
-
-
-
-// INCLUDES
-#include "XcapCache.h"
-#include "XcapAppUsage.h"
-#include "XcapProtocol.h"
-#include "XcapDocument.h"
-#include "XcapAddition.h"
-#include "XdmXmlParser.h"
-#include "XcapUriParser.h"
-#include "CommonDefines.h"
-#include "XcapHttpReqPut.h"
-#include "XcapHttpOperation.h"
-#include "XcapHttpTransport.h"
-#include "XcapOperationFactory.h"
-       
-// ---------------------------------------------------------
-// CXcapAddition::CXcapAddition
-//
-// ---------------------------------------------------------
-//
-CXcapAddition::CXcapAddition( CXcapDocument& aParentDoc,
-                              CXcapDocumentNode* aDocumentSubset,
-                              CXcapOperationFactory& aOperationFactory ) :
-                              CXcapHttpOperation( aParentDoc, aDocumentSubset, aOperationFactory ),
-                              iOperationType( aDocumentSubset == NULL ?
-                              EXdmDocument : EXdmPartialDocument )
-                                                      
-    {
-    }
-
-// ---------------------------------------------------------
-// CXcapAddition::NewL
-//
-// ---------------------------------------------------------
-//
-CXcapAddition* CXcapAddition::NewL( CXcapDocument& aParentDoc,
-                                    CXcapDocumentNode* aDocumentSubset,
-                                    CXcapOperationFactory& aOperationFactory )
-    {
-    CXcapAddition* self = new ( ELeave ) CXcapAddition( aParentDoc, aDocumentSubset, aOperationFactory );
-    CleanupStack::PushL( self );
-    self->BaseConstructL();
-    self->ConstructL();
-    CleanupStack::Pop();
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CXcapAddition::ConstructL
-//
-// ---------------------------------------------------------
-//
-void CXcapAddition::ConstructL()
-    {
-    CXcapHttpReqPut* request = Transport().PutL( iTargetDoc.Name() );
-    CleanupStack::PushL( request );
-    User::LeaveIfError( iRequestQueue.Append( request ) );
-    request->SetExpiryTimeL( NULL, KDefaultHttpRequestTimeout * 1000000 );
-    CleanupStack::Pop();  //request
-    //If they point to the same node, we're dealing with a complete document
-    if( iDocumentSubset != NULL && iTargetDoc.DocumentRoot() != iDocumentSubset )
-        iUriParser->SetDocumentSubset( iDocumentSubset );
-    }
-    
-// ---------------------------------------------------------
-// CXcapAddition::FormatModRequestL
-//
-// ---------------------------------------------------------
-//
-TInt CXcapAddition::FormatModRequestL( const CXdmDocumentNode* aDocumentNode )
-    {
-    #ifdef _DEBUG
-        iOperationFactory.WriteToLog( _L8( "CXcapAddition::FormatModRequestL()" ) );
-        iOperationFactory.WriteToLog( _L8( "  Operation type:  %d" ), iOperationType );
-        iOperationFactory.WriteToLog( _L8( "  Document subset: %x" ), iDocumentSubset );
-    #endif
-    TInt validation = CXcapHttpOperation::FormatModRequestL( aDocumentNode );
-    if( validation == KErrNone )
-        {
-        //Then set the properties particular to this type of request
-        iOperationType = DetermineOperationType();
-        if( iOperationType == EXdmDocument )
-            iActiveRequest->SetHeaderL( KHttpHeaderContentType, iTargetDoc.ApplicationUsage().ContentType() );
-        }
-    else
-        {
-        #ifdef _DEBUG
-            iOperationFactory.WriteToLog( _L8( " AppUsage reported the following error: %d" ), validation );
-        #endif
-        }
-    return validation;
-    }
-
-// ---------------------------------------------------------
-// CXcapAddition::DetermineOperationType
-//
-// ---------------------------------------------------------
-//
-TXdmOperationType CXcapAddition::DetermineOperationType()
-    {
-    #ifdef _DEBUG
-        iOperationFactory.WriteToLog( _L8( "CXcapAddition::DetermineDocType()" ) );
-        iOperationFactory.WriteToLog( _L8( "  Operation type:  %d" ), iOperationType );
-        iOperationFactory.WriteToLog( _L8( "  Document subset: %x" ), iDocumentSubset );
-        iOperationFactory.WriteToLog( _L8( "  Document root:   %x" ), iTargetDoc.DocumentRoot() ); 
-    #endif
-    return iOperationType == EXdmDocument || ( EXdmPartialDocument &&
-                             iDocumentSubset == iTargetDoc.DocumentRoot() ) ?
-                             EXdmDocument : EXdmPartialDocument;
-    }
-      
-// ---------------------------------------------------------
-// CXcapAddition::ExecuteL
-//
-// ---------------------------------------------------------
-//
-void CXcapAddition::ExecuteL()
-    {
-    #ifdef _DEBUG
-        iOperationFactory.WriteToLog( _L8( "CXcapAddition::ExecuteL()" ) );  
-    #endif
-    CXcapHttpOperation::ExecuteL( iActiveRequest, iDocumentSubset );
-    }
-        
-// ---------------------------------------------------------
-// CXcapAddition::OperationCompleteL
-//
-// ---------------------------------------------------------
-//
-void CXcapAddition::OperationCompleteL()
-    {
-    #ifdef _DEBUG
-        iOperationFactory.WriteToLog( _L8( "CXcapAddition::OperationCompleteL()" ) );  
-    #endif
-    TPtrC8 root = Transport().RootUri();
-    iRequestData = iActiveRequest->ResponseData();
-    TPtrC name = iTargetDoc.Name();
-    switch( iRequestData->iHttpStatus )
-        {
-        case 200:           //Replaced, the document was already there
-        case 201:           //"Created" -> Put operation was successful
-            {
-            #ifdef _DEBUG
-                iOperationFactory.WriteToLog( _L8( " Status %d" ), iRequestData->iHttpStatus );  
-            #endif
-            iResult = KErrNone;
-            TPtrC8 eTag = Descriptor( iRequestData->iETag );
-            iTargetDoc.SetETag( eTag );
-            RXcapCache* cache = iTargetDoc.Protocol().Cache();
-            if( cache != NULL )
-                {
-                CXcapHttpContSupplier* request = ( CXcapHttpContSupplier* )iActiveRequest;
-                TPtrC8 payload = request->RequestBody();
-                iOperationType == EXdmDocument ? cache->Store( eTag, name, root, payload ) :
-                                                 UpdatePartialToCacheL( cache, payload );
-                }
-            iCompleted = ETrue;
-            }
-            break;
-        default:
-            #ifdef _DEBUG
-                iOperationFactory.WriteToLog( _L8( " Default case - Status: %d" ),
-                                                   iRequestData->iHttpStatus ); 
-            #endif
-            TInt status = iRequestData->iHttpStatus;
-            iResult = ReinterpretStatus( status );
-            iCompleted = ETrue;
-            break;
-        }
-    }
-
-// ---------------------------------------------------------
-// CXcapAddition::UpdatePartialToCacheL
-//
-// ---------------------------------------------------------
-//
-void CXcapAddition::UpdatePartialToCacheL( RXcapCache* aCache, const TDesC8& aNewData )
-    {
-    #ifdef _DEBUG
-        iOperationFactory.WriteToLog( _L8( "CXcapAddition::UpdatePartialToCacheL()" ) );  
-    #endif
-    HBufC8* newData = NULL;
-    TPtrC name = iTargetDoc.Name();
-    TPtrC8 root = Transport().RootUri();
-    if( iOptionFlags & KFetchMasterFromCache )
-        {
-        TInt length = iTargetDoc.DataLength();
-        //Do nothing, if the document is not in cache
-        if( length > 0 )
-            {
-            HBufC8* data = HBufC8::NewLC( length );
-            TPtr8 desc( data->Des() );
-            aCache->FetchDocumentContent( desc, name, root );
-            CXcapDocument* copy = iTargetDoc.TempCopyL();
-            CleanupStack::PushL( copy );
-            iXmlParser->ParseDocumentL( copy, desc );
-            RPointerArray<CXdmDocumentNode> array;
-            CleanupClosePushL( array );
-            copy->Find( *iDocumentSubset, array );
-            //If the element the subset points to is not present
-            //in the original document, the new data must be
-            //appended to the the subset element parent, instead.
-            CXdmDocumentNode* node = array.Count() > 0 ?
-                iDocumentSubset : iDocumentSubset->Parent();
-            newData = iXmlParser->FormatToXmlLC( aNewData, copy, node );
-            CleanupStack::Pop();  //newData
-            CleanupStack::PopAndDestroy( 3 );  //array, tempCopy, data
-            CleanupStack::PushL( newData );
-            }           
-        }
-    else
-        {
-        CXdmDocumentNode* root = iTargetDoc.DocumentRoot();
-        newData = iXmlParser->FormatToXmlLC( ETrue, &iTargetDoc, root );
-        }
-    if( newData )
-        {
-        aCache->Store( iTargetDoc.ETag(), name, root, newData->Des() );
-        CleanupStack::PopAndDestroy();  //newData
-        }
-    }
-
-// ---------------------------------------------------------
-// CXcapAddition::OperationFailedL
-//
-// ---------------------------------------------------------
-//
-void CXcapAddition::OperationFailedL()
-    {
-    #ifdef _DEBUG
-        iOperationFactory.WriteToLog( _L8( "CXcapRetrieval::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;
-    }
-
-// ---------------------------------------------------------
-// CXcapAddition::Result
-//
-// ---------------------------------------------------------
-//
-TBool CXcapAddition::Result() const
-    {
-    return ETrue;
-    }
-
-// ---------------------------------------------------------
-// CXcapAddition::~CXcapAddition
-//
-// ---------------------------------------------------------
-//
-CXcapAddition::~CXcapAddition()
-    {
-    #ifdef _DEBUG
-        iOperationFactory.WriteToLog( _L8( "CXcapAddition::~CXcapAddition()" ) );  
-    #endif
-    }
-
-//  End of File  
-