roshan 2003/07/26 23:56:39
Modified: c/src/soap SoapSerializer.h SoapSerializer.cpp SoapMethod.h
SoapMethod.cpp HeaderBlock.h
Log:
after introducing new Serializer interfaces IWrapperSoapSerializer and
IHandlerSoapSerializer
Revision Changes Path
1.7 +10 -3 xml-axis/c/src/soap/SoapSerializer.h
Index: SoapSerializer.h
===================================================================
RCS file: /home/cvs/xml-axis/c/src/soap/SoapSerializer.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- SoapSerializer.h 23 Jul 2003 10:04:46 -0000 1.6
+++ SoapSerializer.h 27 Jul 2003 06:56:39 -0000 1.7
@@ -72,7 +72,9 @@
#pragma once
#endif // _MSC_VER > 1000
-#include "../common/ISoapSerializer.h"
+#include "../common/IWrapperSoapSerializer.h"
+#include "../common/IHandlerSoapSerializer.h"
+//#include "../common/ISoapSerializer.h"
#include "SoapEnvVersions.h"
class SoapEnvelope;
@@ -80,8 +82,9 @@
class SoapMethod;
class SoapBody;
class SoapFault;
+class HeaderBlock;
-class SoapSerializer : public ISoapSerializer
+class SoapSerializer : public virtual IWrapperSoapSerializer, public virtual
IHandlerSoapSerializer /*: public ISoapSerializer*/
{
private:
static int iCounter;
@@ -93,7 +96,8 @@
public:
ISoapMethod* createSoapMethod();
int flushSerializedBuffer();
- ISoapSerializer& operator<<(const char *cSerialized);
+ IWrapperSoapSerializer& operator<<(const char *cSerialized);
+ //ISoapSerializer& operator<<(const char *cSerialized);
const char* getNewNamespacePrefix();
int setSoapVersion(SOAP_VERSION);
void init();
@@ -108,6 +112,9 @@
IParam* setResponseParam(XSDTYPE nType, uParamValue Value);
IArrayBean* makeArrayBean(XSDTYPE nType, void* pArray);
public: //Basic Type Serializing methods
+ int removeSoapHeader();
+ int setHeaderBlock(HeaderBlock* pHeaderBlock);
+ IHeaderBlock* createHeaderBlock();
string& SerializeBasicType(const string& sName, string& sValue, XSDTYPE
type=XSD_STRING);
string& SerializeBasicType(const string& sName, float fValue);
string& SerializeBasicType(const string& sName, int nValue);
1.10 +48 -3 xml-axis/c/src/soap/SoapSerializer.cpp
Index: SoapSerializer.cpp
===================================================================
RCS file: /home/cvs/xml-axis/c/src/soap/SoapSerializer.cpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- SoapSerializer.cpp 24 Jul 2003 09:57:04 -0000 1.9
+++ SoapSerializer.cpp 27 Jul 2003 06:56:39 -0000 1.10
@@ -69,6 +69,7 @@
#include "SoapEnvelope.h"
#include "SoapSerializer.h"
+#include "HeaderBlock.h"
#include "../common/GDefine.h"
#include "../common/Packet.h"
#include "../common/ArrayBean.h"
@@ -104,8 +105,14 @@
int intStatus= FAIL;
if(m_pSoapEnvelope) {
- m_pSoapEnvelope->setSoapHeader(pSoapHeader);
- intStatus= SUCCESS;
+
+ if((m_pSoapEnvelope)&& (m_pSoapEnvelope->m_pSoapHeader)) {
+ //no need to create a SOAP Header, it already exists
+ intStatus= OBJECT_ALREADY_EXISTS;
+ } else {
+ m_pSoapEnvelope->setSoapHeader(pSoapHeader);
+ intStatus= SUCCESS;
+ }
}
return intStatus;
@@ -218,7 +225,7 @@
return cCounter;
}
-ISoapSerializer& SoapSerializer::operator <<(const char *cSerialized)
+IWrapperSoapSerializer& SoapSerializer::operator <<(const char *cSerialized)
{
int iTmpSerBufferSize= strlen(cSerialized);
if((m_iCurrentSerBufferSize+iTmpSerBufferSize)>1023) {
@@ -274,4 +281,42 @@
string& SoapSerializer::SerializeBasicType(const string& sName, int nValue)
{
return BasicTypeSerializer::serialize(sName, nValue);
+}
+
+IHeaderBlock* SoapSerializer::createHeaderBlock()
+{
+ HeaderBlock* pHeaderBlock= new HeaderBlock();
+ setHeaderBlock(pHeaderBlock);
+ return pHeaderBlock;
+}
+
+int SoapSerializer::setHeaderBlock(HeaderBlock *pHeaderBlock)
+{
+ int intStatus= FAIL;
+
+ if((m_pSoapEnvelope)&& (m_pSoapEnvelope->m_pSoapHeader)) {
+ //no need to create a SOAP Header, it already exists
+ } else {
+ SoapHeader* pSoapHeader= new SoapHeader();
+ setSoapHeader(pSoapHeader);
+ }
+
+ m_pSoapEnvelope->m_pSoapHeader->addHeaderBlock(pHeaderBlock);
+ intStatus= SUCCESS;
+
+ return intStatus;
+}
+
+/*
+ *This method not only removes the existing SoapHeader, but also removes
+ * all the existing HeaderBlocks which are associated with this SoapHeader.
+ * Therefore the caller of this method has to be exactly sure whether he wants to
+ * do this.
+ */
+int SoapSerializer::removeSoapHeader()
+{
+ delete m_pSoapEnvelope->m_pSoapHeader;
+ m_pSoapEnvelope->m_pSoapHeader= NULL;
+
+ return SUCCESS;
}
1.6 +1 -2 xml-axis/c/src/soap/SoapMethod.h
Index: SoapMethod.h
===================================================================
RCS file: /home/cvs/xml-axis/c/src/soap/SoapMethod.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- SoapMethod.h 16 Jul 2003 14:21:08 -0000 1.5
+++ SoapMethod.h 27 Jul 2003 06:56:39 -0000 1.6
@@ -130,8 +130,7 @@
void setLocalName(const string &localname);
void setPrefix(const string &prefix);
SoapMethod();
- virtual ~SoapMethod();
-
+ virtual ~SoapMethod();
};
#endif //
!defined(AFX_SOAPMETHOD_H__85B1A3F0_CD15_4607_AAAB_665A66AA8546__INCLUDED_)
1.7 +1 -1 xml-axis/c/src/soap/SoapMethod.cpp
Index: SoapMethod.cpp
===================================================================
RCS file: /home/cvs/xml-axis/c/src/soap/SoapMethod.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- SoapMethod.cpp 21 Jul 2003 14:21:09 -0000 1.6
+++ SoapMethod.cpp 27 Jul 2003 06:56:39 -0000 1.7
@@ -283,4 +283,4 @@
return SUCCESS;
}
-*/
\ No newline at end of file
+*/
1.5 +2 -1 xml-axis/c/src/soap/HeaderBlock.h
Index: HeaderBlock.h
===================================================================
RCS file: /home/cvs/xml-axis/c/src/soap/HeaderBlock.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- HeaderBlock.h 15 Jul 2003 07:07:17 -0000 1.4
+++ HeaderBlock.h 27 Jul 2003 06:56:39 -0000 1.5
@@ -79,6 +79,7 @@
using namespace std;
class BasicNode;
+#include "../common/IHeaderBlock.h"
/**
* The Header block of a SOAP Header according to SOAP 1.2 specification.
@@ -104,7 +105,7 @@
* @brief The Header block of a SOAP Header according to SOAP 1.2 specification.
*/
-class HeaderBlock
+class HeaderBlock : public IHeaderBlock
{
private: