diff -r 000000000000 -r 62f9d29f7211 webservices/wsstar/wsstarmessagehandlers/src/wsstarenveloperhandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webservices/wsstar/wsstarmessagehandlers/src/wsstarenveloperhandler.cpp Thu Jan 07 16:19:19 2010 +0200 @@ -0,0 +1,132 @@ +/* +* Copyright (c) 2006-2006 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 "wsstarenveloperhandler.h" +#include "senlogger.h" + +// Create instance of concrete ECOM interface implementation +CWSStarEnveloperHandler* CWSStarEnveloperHandler::NewL(TAny* aHandlerCtx) + { + + MSenHandlerContext* handlerCtx = + reinterpret_cast(aHandlerCtx); + CWSStarEnveloperHandler* self = new (ELeave) CWSStarEnveloperHandler(*handlerCtx); + CleanupStack::PushL (self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +// Constructor +CWSStarEnveloperHandler::CWSStarEnveloperHandler(MSenHandlerContext& aCtx):CSenMessageHandler(aCtx) + { + } + +// Destructor +CWSStarEnveloperHandler::~CWSStarEnveloperHandler() + { + TLSLOG(KSenCoreServiceManagerLogChannelBase , KMinLogLevel,(_L("CWSStarEnveloperHandler::~CWSStarEnveloperHandler()"))); + } + +// Second phase construction. +void CWSStarEnveloperHandler::ConstructL() + { + } + +TInt CWSStarEnveloperHandler::InvokeL(MSenMessageContext& aCtx) + { + TLSLOG(KSenCoreServiceManagerLogChannelBase , KMinLogLevel,(_L("CWSStarEnveloperHandler::InvokeL(MSenMessageContext& aCtx)"))); + const TInt* soapVersion = aCtx.GetIntL(WSStarContextKeys::KSoapVersion); + const TDesC8* securityVersion = iHandlerContext.GetDesC8L(HandlerContextKey::KVersion); + CSenSoapMessage* message; + TPtrC8 secVersion(KSecurityXmlNs); + if (securityVersion + && (*securityVersion == KSecuritySchemeXmlNs || *securityVersion == KSecurityXmlNs)) + { + secVersion.Set(*securityVersion); + } + if (soapVersion) + { + //old SOAP version force to use old sec spec + if ((TSOAPVersion)*soapVersion == ESOAP11) + { + secVersion.Set(KSecuritySchemeXmlNs); + } + message = CSenSoapMessage::NewL((TSOAPVersion)*soapVersion, secVersion); + } + else + { + message = CSenSoapMessage::NewL(ESOAP12, secVersion); + ((MSenContext&)aCtx).Add(WSStarContextKeys::KSoapVersion,ESOAP12); + } + CleanupStack::PushL(message); + CSenElement* elemBody = + const_cast(aCtx.GetSenElementL(WSStarContextKeys::KBodyElement)); + if (elemBody) + { + message->BodyL().AddElementL(*elemBody); + aCtx.Remove(WSStarContextKeys::KBodyElement); + } + else + { + const TDesC8* content = aCtx.GetDesC8L(WSStarContextKeys::KBody); + if (content) + { + message->SetBodyL(*content); + } + } + CleanupStack::Pop(message); + aCtx.Update(SenContext::KSenCurrentSoapMessageCtxKey, message); + return KErrNone; + } + +SenHandler::THandlerDirection CWSStarEnveloperHandler::Direction() const + { + TLSLOG(KSenCoreServiceManagerLogChannelBase , KMinLogLevel,(_L("CWSStarEnveloperHandler::Direction()"))); + return SenHandler::EOutgoing; + }; +SenHandler::THandlerPhase CWSStarEnveloperHandler::Phase() + { + TLSLOG(KSenCoreServiceManagerLogChannelBase , KMinLogLevel,(_L("CWSStarEnveloperHandler::Phase()"))); + return SenHandler::EMessage; + }; + +TInt CWSStarEnveloperHandler::InitL(MSenHandlerContext& aCtx) + { + iHandlerContext = aCtx; + return KErrNone; + } +RFileLogger* CWSStarEnveloperHandler::Log() const + { + RFileLogger* pLog = NULL; + TRAP_IGNORE( pLog = (RFileLogger*)iHandlerContext.GetAnyL(HandlerContextKey::KLogger); ) + return pLog; + } +// END OF FILE +