webservices/wsoviplugin/src/wsovimessagecontext.cpp
changeset 0 62f9d29f7211
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wsoviplugin/src/wsovimessagecontext.cpp	Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,361 @@
+/*
+* Copyright (c) 2008 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 "SenSoapEnvelope.h"
+#include "wsovimessagecontext.h"
+#include "wsovisessioncontext.h"
+#include "SenXmlReader.h"
+
+
+CWSOviMessageContext* CWSOviMessageContext::NewL(SenContext::TContextDirection aDirection)
+    {
+    CWSOviMessageContext* self = NewLC(aDirection);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+CWSOviMessageContext* CWSOviMessageContext::NewLC(SenContext::TContextDirection aDirection)
+    {
+    CWSOviMessageContext* self = new (ELeave) CWSOviMessageContext(aDirection);
+    CleanupStack::PushL (self);
+    self->ConstructL();
+    return self;
+    }
+
+CWSOviMessageContext* CWSOviMessageContext::NewLC(
+        SenContext::TContextDirection aDirection,
+        CWSOviSessionContext& aSessionContext)
+    {
+    CWSOviMessageContext* self =
+            new (ELeave) CWSOviMessageContext(aDirection);
+    CleanupStack::PushL (self);
+    self->ConstructL(aSessionContext);
+    return self;
+    }
+
+// Constructor
+CWSOviMessageContext::CWSOviMessageContext(SenContext::TContextDirection aDirection)
+    :iDirection(aDirection),
+    iDescs(EFalse, ETrue),
+    iOAuthProperties(EFalse, ETrue),
+    iInts(EFalse, ETrue)
+    {
+    }
+
+// Constructor
+void CWSOviMessageContext::ConstructL()
+    {
+    }
+
+void CWSOviMessageContext::ConstructL(CWSOviSessionContext& aSessionContext)
+    {
+    UpdateFromSessionContextL(aSessionContext);
+    }
+
+// Destructor
+CWSOviMessageContext::~CWSOviMessageContext()
+    {
+    iDescs.Reset();
+    iInts.Reset();
+    iOAuthProperties.Reset();
+    }
+    
+//from SessionContext 
+
+CSenSoapMessage* CWSOviMessageContext::GetCurrentSoapMessage()
+    {
+    return NULL;
+    };
+TPtrC8 CWSOviMessageContext::GetMessageL()
+    {
+    return KNullDesC8();
+    };
+void CWSOviMessageContext::UpdateDesC8L(CWSOviSessionContext& aSessionContext, const TDesC8& aKey)
+    {
+    const TDesC8* ptr =
+            aSessionContext.GetDesC8L(aKey);
+    if (ptr && !GetDesC8L(aKey))
+        {
+        User::LeaveIfError(Update(aKey, *ptr));
+        }
+    }
+void CWSOviMessageContext::UpdateIntL(CWSOviSessionContext& aSessionContext, const TDesC8& aKey)
+    {
+    const TInt* ptr =
+            aSessionContext.GetIntL(aKey);
+    if (ptr &&!GetIntL(aKey))
+        {
+        User::LeaveIfError(Update(aKey, *ptr));    
+        } 
+    }
+    
+void CWSOviMessageContext::UpdateFromSessionContextL(
+        CWSOviSessionContext& aSessionContext)
+    {
+    //because of resending, we need keep message specific info within session ctx
+    // (see ASYNC handleerror)
+    if (Direction() == SenContext::EOutgoing)
+        {
+        UpdateDesC8L(aSessionContext, WSOviContextKeys::KToken);
+        UpdateDesC8L(aSessionContext, WSOviContextKeys::KTokenSecret);
+        UpdateIntL(aSessionContext, WSOviContextKeys::KRetryNeeded);
+        }
+    }
+
+TInt CWSOviMessageContext::Add(const TDesC8& /*aKey*/, CSenSoapEnvelope* /*aValue*/)
+    {
+    return KErrNotSupported;
+    };
+TInt CWSOviMessageContext::Update(const TDesC8& /*aKey*/, CSenSoapEnvelope* /*aValue*/)
+    {
+    return KErrNotSupported;
+    };
+const CSenSoapEnvelope* CWSOviMessageContext::GetSenSoapEnvelopeL(const TDesC8& /*aKey*/)
+    {
+    return NULL;
+    };
+
+
+
+//from MContext       
+SenContext::TContextType CWSOviMessageContext::Type() const
+    {
+    return SenContext::EMessageContext;
+    }
+    
+SenContext::TContextDirection CWSOviMessageContext::Direction() const
+    {
+    return iDirection;
+    }
+const CSenXmlReader* CWSOviMessageContext::GetParser()
+    {
+    return NULL;
+    }
+
+//-----------------descs        
+TInt CWSOviMessageContext::Add(const TDesC8& aKey, const TDesC8& aValue)
+    {
+    if (!aValue.Length()) return KErrUnderflow;
+    HBufC8* newValue = NULL;
+    TInt error(KErrNone);
+    TRAP(error, newValue = aValue.AllocL());
+    if (!error)
+        {
+        error = iDescs.Append(&aKey,newValue);
+        }            
+    return error;
+    }
+
+//it add(if not exist) or update. So , it is like Set
+TInt CWSOviMessageContext::Update(const TDesC8& aKey, const TDesC8& aValue)
+    {
+    TInt error(KErrNone);
+    if (!aValue.Length()) 
+        {
+        error = Remove(aKey);
+        if (error == KErrNotFound)
+                return KErrNone;
+            else
+                return error;
+        }
+    HBufC8* newValue = NULL;
+    TRAP(error, newValue = aValue.AllocL());
+    
+    if (!error)
+        {
+        error = iDescs.UpdateValue(&aKey,newValue);
+        }
+    return error;
+    }
+
+const TDesC8* CWSOviMessageContext::GetDesC8L(const TDesC8& aKey)
+    {
+    TInt index = iDescs.Find(aKey);
+    if (index != KErrNotFound)
+        {
+        return iDescs.ValueAt(index);
+        }
+    else
+        {
+        return NULL;
+        }
+    }
+
+TInt CWSOviMessageContext::Remove(const TDesC8& aKey)
+    {
+    return iDescs.RemoveByKey(aKey);
+    }
+//-------------Ints
+TInt CWSOviMessageContext::Add(const TDesC8& aKey, TInt aValue)
+    {
+    TInt* a = NULL;
+    a = new TInt(aValue);
+    if (a)
+        {
+        return iInts.Append(&aKey, a);
+        }
+    else
+        {
+        return KErrNoMemory;
+        }
+    }
+
+TInt CWSOviMessageContext::Update(const TDesC8& aKey, TInt aValue)
+    {
+    TInt* a = NULL;
+    a = new TInt(aValue);
+    if (a)
+        {
+        return iInts.UpdateValue(&aKey, a);
+        }
+    else
+        {
+        return KErrNoMemory;
+        }
+    }
+
+const TInt* CWSOviMessageContext::GetIntL(const TDesC8& aKey)
+    {
+    TInt index = iInts.Find(aKey);
+    if (index!=KErrNotFound)
+        {
+        return iInts.ValueAt(index);
+        }
+    else
+        {
+        return NULL;
+        };        
+    }
+
+//-----------------elements
+TInt CWSOviMessageContext::Add(const TDesC8& aKey, CSenElement* aValue)
+    {
+    return Update(aKey,aValue);
+    }
+
+TInt CWSOviMessageContext::Update(const TDesC8& /*aKey*/, CSenElement* /*aValue*/)
+    {
+    return KErrNotSupported;
+    }
+
+const CSenElement* CWSOviMessageContext::GetSenElementL(const TDesC8& /*aKey*/)
+    {
+    return NULL;
+    }
+//-----------------TAnys
+TInt CWSOviMessageContext::Add(const TDesC8& /*aKey*/, TAny* /*aValue*/)
+    {
+    return KErrNotSupported;
+    }
+
+TInt CWSOviMessageContext::Update(const TDesC8& /*aKey*/, TAny* /*aValue*/)
+    {
+    return KErrNotSupported;
+    }
+
+TAny* CWSOviMessageContext::GetAnyL(const TDesC8& /*aKey*/)	//codescannerwarnings
+    {
+    return NULL;
+    }
+
+TInt CWSOviMessageContext::Count() const
+    {
+    return KErrNotSupported;
+    }
+
+TPtrC8 CWSOviMessageContext::KeyAtL(TInt /*aIndex*/)
+    {
+    return KNullDesC8();
+    }
+        
+void CWSOviMessageContext::Reset() 
+    {
+    }
+    
+MSenMessage* CWSOviMessageContext::MessageL()	//codescannerwarnigs
+    {
+    return NULL;
+    }
+    
+TInt CWSOviMessageContext::SetMessage(MSenMessage* /* apMessage */, TBool /* aOwned */)
+    {
+    return KErrNotSupported;
+    }
+    
+TInt CWSOviMessageContext::SetProperties(MSenProperties* /* apTransportProperties */, TBool /* aOwned */)
+    {
+    return KErrNotSupported;
+    }
+    
+MSenProperties* CWSOviMessageContext::Properties()
+    {
+    return NULL;    
+    }
+    
+TInt CWSOviMessageContext::Add(const TDesC8& /* aKey */, MSenMessage* /* apMessage */, TBool /* aOwned */)
+    {
+    return KErrNotSupported;
+    }
+    
+TInt CWSOviMessageContext::Update(const TDesC8& /* aKey */, MSenMessage* /* apMessage */, TBool /* aOwned */)
+    {
+    return KErrNotSupported;
+    }
+TInt CWSOviMessageContext::UpdateTP(CSenTransportProperties*& aTP)
+    {
+    iTP = aTP;
+    return KErrNone;
+    }
+RMapDescriptors& CWSOviMessageContext::OAuthProperies()
+    {
+    return iOAuthProperties;
+    }
+CSenTransportProperties* CWSOviMessageContext::TP()
+    {
+    return iTP;
+    }   
+MSenMessage* CWSOviMessageContext::GetMessageL(const TDesC8& /* aKey */)	// codescannerwarnings
+    {
+    return NULL;
+    }
+    
+    
+CSenChunk* CWSOviMessageContext::ChunkL()	//codescannerwarnings
+    {
+    return NULL;
+    }
+    
+TInt CWSOviMessageContext::SetChunk(CSenChunk* /* apMsgAsChunk */, TBool /* aOwned */)
+    {
+    return KErrNotSupported;
+    }
+    
+TInt CWSOviMessageContext::SetDirection( SenContext::TContextDirection /* aDirection */ ) 
+    {
+    return KErrNotSupported; 
+    }
+    
+   
+// END OF FILE
+