diff -r 000000000000 -r 62f9d29f7211 webservices/wsoviplugin/src/wsovimessagecontext.cpp --- /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 +