williamr@2: /* williamr@2: * Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@2: * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: * which accompanies this distribution, and is available williamr@2: * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: CSenSoapMessage is an utility class offering capability to williamr@2: * parse XML SOAP envelope and manipulation methods to alter its williamr@2: * contents. williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: #ifndef SEN_SOAP_MESSAGE2_H williamr@2: #define SEN_SOAP_MESSAGE2_H williamr@2: williamr@2: // INCLUDES williamr@2: #include williamr@2: #include williamr@2: williamr@2: class MSenMessageContext; williamr@2: williamr@2: // CLASS DECLARATION williamr@2: williamr@2: /** williamr@2: * CSenSoapMessage extends basic SOAP envelope functionality by williamr@2: * offering methods to set the security header and security token. williamr@2: * @lib SenUtils.lib williamr@2: * @since Series60 4.0 williamr@2: */ williamr@2: class CSenSoapMessage2 : public CSenSoapEnvelope2 williamr@2: { williamr@2: public: // Constructors and destructor williamr@2: williamr@2: /** williamr@2: * Two-phase constructor. williamr@2: */ williamr@2: IMPORT_C static CSenSoapMessage2* NewL(); williamr@2: williamr@2: /** williamr@2: * Two-phase constructor. williamr@2: */ williamr@2: IMPORT_C static CSenSoapMessage2* NewLC(); williamr@2: williamr@2: /** williamr@2: * Two-phase constructor. williamr@2: */ williamr@2: IMPORT_C static CSenSoapMessage2* NewL(TSOAPVersion aVersion); williamr@2: williamr@2: /** williamr@2: * Two-phase constructor. williamr@2: */ williamr@2: IMPORT_C static CSenSoapMessage2* NewLC(TSOAPVersion aVersion); williamr@2: williamr@2: /** williamr@2: * Two-phase constructor. williamr@2: */ williamr@2: IMPORT_C static CSenSoapMessage2* NewL(TSOAPVersion aVersion, const TDesC8& aSecurityNs); williamr@2: williamr@2: /** williamr@2: * Two-phase constructor. williamr@2: */ williamr@2: IMPORT_C static CSenSoapMessage2* NewLC(TSOAPVersion aVersion, const TDesC8& aSecurityNs); williamr@2: williamr@2: /** williamr@2: * Two-phase constructor. williamr@2: */ williamr@2: IMPORT_C static CSenSoapMessage2* NewL(MSenMessageContext& aContext); williamr@2: williamr@2: /** williamr@2: * Two-phase constructor. williamr@2: */ williamr@2: IMPORT_C static CSenSoapMessage2* NewLC(MSenMessageContext& aContext); williamr@2: williamr@2: /** williamr@2: * Two-phase constructor. williamr@2: */ williamr@2: IMPORT_C static CSenSoapMessage2* NewL(MSenMessageContext& aContext, williamr@2: TSOAPVersion aVersion); williamr@2: williamr@2: /** williamr@2: * Two-phase constructor. williamr@2: */ williamr@2: IMPORT_C static CSenSoapMessage2* NewLC(MSenMessageContext& aContext, williamr@2: TSOAPVersion aVersion); williamr@2: williamr@2: /** williamr@2: * Two-phase constructor. williamr@2: */ williamr@2: IMPORT_C static CSenSoapMessage2* NewL(MSenMessageContext& aContext, williamr@2: TSOAPVersion aVersion, williamr@2: const TDesC8& aSecurityNs); williamr@2: williamr@2: /** williamr@2: * Two-phase constructor. williamr@2: */ williamr@2: IMPORT_C static CSenSoapMessage2* NewLC(MSenMessageContext& aContext, williamr@2: TSOAPVersion aVersion, williamr@2: const TDesC8& aSecurityNs); williamr@2: williamr@2: /** williamr@2: * Two-phased copy constructor. williamr@2: */ williamr@2: IMPORT_C static CSenSoapMessage2* NewL(CSenSoapMessage2& aMessage); williamr@2: williamr@2: /** williamr@2: * Two-phased copy constructor. williamr@2: */ williamr@2: IMPORT_C static CSenSoapMessage2* NewLC(CSenSoapMessage2& aMessage); williamr@2: williamr@2: /** williamr@2: * Destructor. williamr@2: */ williamr@2: IMPORT_C virtual ~CSenSoapMessage2(); williamr@2: williamr@2: // New functions williamr@2: williamr@2: /** williamr@2: * Sets a new security header for the soap message. If existant, the williamr@2: * old security header is deleted and new one with given data is added. williamr@2: * @since Series60 4.0 williamr@2: * @param aData Data to be used in the security header. williamr@2: */ williamr@2: IMPORT_C void SetSecurityHeaderL(const TDesC8& aData); williamr@2: williamr@2: /** williamr@2: * Adds new token (content) to current security header, williamr@2: * appending to existing. The token is appended after the williamr@2: * current content of security token. Method instantiates williamr@2: * and adds default security header (without data), if williamr@2: * such was not set in beforehand. williamr@2: * @since Series60 4.0 williamr@2: * @param aNewToken Token to be inserted. williamr@2: * @return KErrNone or some system-wide Symbian error codes. williamr@2: */ williamr@2: IMPORT_C TInt AddSecurityTokenL(const TDesC8& aNewToken); williamr@2: williamr@2: public: // From MSenMessage williamr@2: IMPORT_C virtual TClass Type(); williamr@2: IMPORT_C virtual MSenMessage* CloneL(); williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * C++ default constructor. williamr@2: */ williamr@2: IMPORT_C CSenSoapMessage2::CSenSoapMessage2(); williamr@2: williamr@2: // New functions williamr@2: williamr@2: /** williamr@2: * Helper function to make a new security header. williamr@2: * @since Series60 4.0 williamr@2: * @param aData Default=NULL. Data to be set in the security header. williamr@2: * @return new security header, which is located in the cleanup stack. williamr@2: * Caller takes ownership. williamr@2: */ williamr@2: IMPORT_C virtual CSenWsSecurityHeader2* NewSecurityHeaderLC( williamr@2: const TDesC8* aData, williamr@2: RSenDocument aDocument, williamr@2: TXmlEngElement element); williamr@2: williamr@2: // Functions from base classes williamr@2: williamr@2: // From CSenSoapEnvelope williamr@2: IMPORT_C virtual void ParseHeaderL(const RTagInfo& aElement, williamr@2: const RAttributeArray& aAttributes); williamr@2: williamr@2: /** williamr@2: * This method should be called from the deriving classes ConstructL() methods. williamr@2: * @since Series60 4.0 williamr@2: */ williamr@2: IMPORT_C void BaseConstructL(); williamr@2: williamr@2: /** williamr@2: * This method should be called from the deriving classes ConstructL() methods. williamr@2: * @since Series60 4.0 williamr@2: */ williamr@2: IMPORT_C void BaseConstructL(TSOAPVersion aVersion); williamr@2: williamr@2: /** williamr@2: * This method should be called from the deriving classes ConstructL() methods. williamr@2: * @since Series60 4.0 williamr@2: */ williamr@2: IMPORT_C void BaseConstructL(TSOAPVersion aVersion, const TDesC8& aSecurityNs); williamr@2: williamr@2: /** williamr@2: * This method should be called from the deriving classes ConstructL() methods. williamr@2: * @since Series60 4.0 williamr@2: */ williamr@2: IMPORT_C void BaseConstructL(MSenMessageContext& aContext); williamr@2: williamr@2: /** williamr@2: * This method should be called from the deriving classes ConstructL() methods. williamr@2: * @since Series60 4.0 williamr@2: */ williamr@2: IMPORT_C void BaseConstructL(MSenMessageContext& aContext, williamr@2: TSOAPVersion aVersion); williamr@2: williamr@2: /** williamr@2: * This method should be called from the deriving classes ConstructL() methods. williamr@2: * @since Series60 4.0 williamr@2: */ williamr@2: IMPORT_C void BaseConstructL(MSenMessageContext& aContext, williamr@2: TSOAPVersion aVersion, williamr@2: const TDesC8& aSecurityNs); williamr@2: williamr@2: /** williamr@2: * This method should be called from the deriving williamr@2: * classes ConstructL() methods. williamr@2: * @since Series60 4.0 williamr@2: */ williamr@2: IMPORT_C void BaseConstructL(CSenSoapMessage2& aMessage); williamr@2: williamr@2: protected: // Data williamr@2: // Owned, but element not owned williamr@2: CSenWsSecurityHeader2* ipSecurityHeader; williamr@2: }; williamr@2: williamr@2: #endif // SEN_SOAP_MESSAGE_H williamr@2: williamr@2: // End of File williamr@2: williamr@2: