webservices/wsframework/src/senhttptransportproperties.cpp
changeset 0 62f9d29f7211
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wsframework/src/senhttptransportproperties.cpp	Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,314 @@
+/*
+* 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:      
+*
+*/
+
+
+
+
+
+
+
+
+#include <s32strm.h> // RWriteStream
+#include <SenXmlReader.h>
+#include "SenHttpTransportProperties.h"
+
+namespace
+    {
+    _LIT8(KIapIdLocalName, "IapId"); 
+    _LIT8(KProxyHostLocalName, "ProxyHost"); 
+    _LIT8(KProxyPortLocalName, "ProxyPort"); 
+    }
+
+EXPORT_C CSenHttpTransportProperties* CSenHttpTransportProperties::NewL()
+    {
+    CSenHttpTransportProperties* pNew = NewLC();
+    CleanupStack::Pop(); // pNew
+    return pNew;
+    }
+
+EXPORT_C CSenHttpTransportProperties* CSenHttpTransportProperties::NewLC()
+    {
+    CSenHttpTransportProperties* pNew = new (ELeave) CSenHttpTransportProperties;
+    CleanupStack::PushL(pNew);
+
+    // omit parsing by passing zero-length descriptor
+    pNew->BaseConstructL(KSenXmlPropertiesLocalname,
+                         KNullDesC8,
+                         NULL);
+    return pNew;
+    }
+
+EXPORT_C CSenHttpTransportProperties* CSenHttpTransportProperties::NewL(const TDesC8& aXmlUtf8,
+                                                               CSenXmlReader& aParser)
+    {
+    CSenHttpTransportProperties* pNew = NewLC(aXmlUtf8, aParser);
+    CleanupStack::Pop(); // pNew
+    return pNew;
+    }
+
+EXPORT_C CSenHttpTransportProperties* CSenHttpTransportProperties::NewLC(const TDesC8& aXmlUtf8,
+                                                                CSenXmlReader& aParser)
+    {
+    CSenHttpTransportProperties* pNew = new (ELeave) CSenHttpTransportProperties;
+    CleanupStack::PushL(pNew);
+
+    // parse the XML document  descriptor into DOM fragment
+    pNew->BaseConstructL(KSenXmlPropertiesLocalname,
+                         aXmlUtf8,
+                         &aParser);
+    return pNew;
+    }
+
+EXPORT_C CSenHttpTransportProperties* CSenHttpTransportProperties::NewL(const CSenElement& aElement)
+    {
+    CSenHttpTransportProperties* pNew = NewLC(aElement);
+    CleanupStack::Pop(); // pNew
+    return pNew;
+    }
+
+EXPORT_C CSenHttpTransportProperties* CSenHttpTransportProperties::NewLC(const CSenElement& aElement)
+    {
+    CSenHttpTransportProperties* pNew = new (ELeave) CSenHttpTransportProperties;
+    CleanupStack::PushL(pNew);
+
+    // parse the XML document  descriptor into DOM fragment
+    pNew->BaseConstructL(aElement);
+    return pNew;
+    }
+
+
+
+/**
+* Get an integer identifying properties class type.
+* All subclasses MUST return use unique integer value.
+* @return unique TInt identifying this properties class type
+*/
+TInt CSenHttpTransportProperties::PropertiesClassType() 
+    { 
+    return KSenPropertiesClassTypeSenHttpTransportProperties; 
+    }
+
+/**
+* Writes this properties object as descriptor into a stream.
+* UTF-8 charset encoding will be used.
+* @since Series60
+* @param aWriteStream The stream to write to.
+*/
+void CSenHttpTransportProperties::WriteToL(RWriteStream& aWriteStream)
+    {
+    CSenTransportProperties::WriteAsXMLToL(aWriteStream);
+    /*
+    WriteAsXMLToL(aWriteStream);
+    */
+    }
+
+/**
+* Get these properties as UTF-8 charset encoded descriptor.
+* @since Series60
+* @return a pointer to UTF-8 encoded descriptor. 
+* Caller takes ownership.
+*/
+HBufC8* CSenHttpTransportProperties::AsUtf8L()
+    {
+    return CSenTransportProperties::AsUtf8L();
+    /*
+    return AsXmlL();
+    */
+    }
+
+
+/**
+* Get these properties as UTF-8 charset encoded descriptor.
+* @since Series60
+* @return a pointer to UTF-8 encoded descriptor, which is
+* has been left on cleanup stack.
+* Caller takes ownership.
+*/
+HBufC8* CSenHttpTransportProperties::AsUtf8LC()
+    {
+    return CSenTransportProperties::AsUtf8LC();
+    /*
+    HBufC8* pAsXml = AsXmlL();
+    CleanupStack::PushL(pAsXml);
+    return pAsXml;
+    */
+    }
+
+/**
+* Destructor.
+*/
+CSenHttpTransportProperties::~CSenHttpTransportProperties()
+    {
+    }
+
+/**
+* Constructs this fragment. Subclasses should call this
+* function in their corresponding 2nd phase constructor.
+*
+* @param aLocalname is used as XML localname for this instance
+* @param aXml is the XML document to be parsed into this DOM tree
+* this properties instance represents.
+* Parsing is omitted iff descriptor is zero-length: KNullDesC8.
+*/
+void CSenHttpTransportProperties::BaseConstructL(const TDesC8& aLocalname, 
+                                                 const TDesC8& aXml,
+                                                 CSenXmlReader* aParser)
+    {
+    CSenTransportProperties::BaseConstructL(aLocalname, aXml, aParser);
+    }
+
+/**
+* Constructs this fragment. Subclasses should call this
+* function in their corresponding 2nd phase constructor.
+*
+* @param aNamespace is the XML namespace
+* @param aLocalname is the XML localname
+* @param aXml is the XML document to be parsed into this DOM tree
+* this properties instance represents.
+* Parsing is omitted iff descriptor is zero-length: KNullDesC8.
+*/
+void CSenHttpTransportProperties::BaseConstructL(const TDesC8& aNamespace, 
+                                                 const TDesC8& aLocalname, 
+                                                 const TDesC8& aXml,
+                                                 CSenXmlReader* aParser)
+    {
+    CSenTransportProperties::BaseConstructL(aNamespace, aLocalname, aXml, aParser);
+    }
+
+/**
+* Constructs this fragment. Subclasses should call this
+* function in their corresponding 2nd phase constructor.
+*
+* @param aNamespace is the XML namespace
+* @param aLocalname is the XML localname
+* @param aLocalname is the XML qualified name
+* @param aXml is the XML document to be parsed into this DOM tree
+* this properties instance represents.
+* Parsing is omitted iff descriptor is zero-length: KNullDesC8.
+*/
+void CSenHttpTransportProperties::BaseConstructL(const TDesC8& aNamespace, 
+                                                 const TDesC8& aLocalname, 
+                                                 const TDesC8& aQualifiedName, 
+                                                 const TDesC8& aXml,
+                                                 CSenXmlReader* aParser)
+    {
+    CSenTransportProperties::BaseConstructL(aNamespace, aLocalname, aQualifiedName, aXml, aParser);
+
+    }
+
+/**
+* 2nd phase constructor:
+*/
+void CSenHttpTransportProperties::BaseConstructL(const CSenElement& aElement)
+    {
+    CSenTransportProperties::BaseConstructL(aElement);
+    }
+
+
+
+
+CSenHttpTransportProperties::CSenHttpTransportProperties()
+    {
+    }
+
+
+// First versions of real HTTP spesific transport methods:
+
+EXPORT_C TInt CSenHttpTransportProperties::IapId(TUint32& aCurrentIapId)
+    {
+    CSenElement* pIapIdElement = AsElement().Element(KIapIdLocalName);
+    if(pIapIdElement && pIapIdElement->HasContent())
+        {
+        TPtrC8 content = pIapIdElement->Content();
+        TLex8 lex(content);
+
+        TInt retVal = lex.Val(aCurrentIapId, EDecimal);
+        return retVal;
+        }
+    return KErrNotFound;
+    }
+
+
+EXPORT_C void CSenHttpTransportProperties::SetIapIdL(TUint32 aIapId)
+    {
+    CSenElement* pIapIdElement = AsElement().Element(KIapIdLocalName);
+    if(!pIapIdElement)
+        {
+        pIapIdElement = &(AsElement().AddElementL(KIapIdLocalName));
+        }
+    TBuf8<128> buf;
+    buf.AppendFormat(_L8("%u"), aIapId);
+    pIapIdElement->SetContentL(buf);
+    }
+
+EXPORT_C TInt CSenHttpTransportProperties::ProxyPort()
+    {
+    CSenElement* pProxyPortElement = AsElement().Element(KProxyPortLocalName);
+    if(pProxyPortElement && pProxyPortElement->HasContent())
+        {
+        TPtrC8 content = pProxyPortElement->Content();
+        TLex8 lex(content);
+
+        TUint proxyPort(0);
+        TInt retVal = lex.Val(proxyPort, EDecimal);
+        if(retVal==KErrNone)
+            {
+            return (TInt)proxyPort;
+            }
+        else
+            {
+            return retVal;
+            }
+        }
+    return KErrNotFound;
+    }
+
+EXPORT_C void CSenHttpTransportProperties::SetProxyPortL(TInt aProxyPort)
+    {
+    CSenElement* pProxyPortElement = AsElement().Element(KProxyPortLocalName);
+    if(!pProxyPortElement)
+        {
+        pProxyPortElement = &(AsElement().AddElementL(KProxyPortLocalName));
+        }
+    TBuf8<128> buf;
+    buf.AppendFormat(_L8("%u"), aProxyPort);
+    pProxyPortElement->SetContentL(buf);
+    }
+
+EXPORT_C TPtrC8 CSenHttpTransportProperties::ProxyHost()
+    {
+    CSenElement* pProxyHostElement = AsElement().Element(KProxyHostLocalName);
+    if(pProxyHostElement && pProxyHostElement->HasContent())
+        {
+        return pProxyHostElement->Content();
+        }
+    else return KNullDesC8();
+    }
+
+EXPORT_C void CSenHttpTransportProperties::SetProxyHostL(const TDesC8& aProxyHost)
+    {
+    CSenElement* pProxyHostElement = AsElement().Element(KProxyHostLocalName);
+    if(!pProxyHostElement)
+        {
+        pProxyHostElement = &(AsElement().AddElementL(KProxyHostLocalName));
+        }
+    pProxyHostElement->SetContentL(aProxyHost);
+    }
+
+// END OF FILEŽ
+
+