You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ro...@apache.org on 2004/06/14 16:15:34 UTC
cvs commit: ws-axis/c/src/soap SoapDeSerializer.cpp SoapHeader.cpp SoapSerializer.cpp
roshan 2004/06/14 07:15:34
Modified: c/include/axis/server IHandlerSoapDeSerializer.h
IHandlerSoapSerializer.h ISoapHeader.h SoapHeader.h
SoapSerializer.h
c/src/soap SoapDeSerializer.cpp SoapHeader.cpp
SoapSerializer.cpp
Log:
Added support to the code to allow handler writers to retrieve Header Blocks (which are already set in to the Serializer) from the Serialzer
Revision Changes Path
1.9 +10 -2 ws-axis/c/include/axis/server/IHandlerSoapDeSerializer.h
Index: IHandlerSoapDeSerializer.h
===================================================================
RCS file: /home/cvs/ws-axis/c/include/axis/server/IHandlerSoapDeSerializer.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- IHandlerSoapDeSerializer.h 30 Apr 2004 05:38:30 -0000 1.8
+++ IHandlerSoapDeSerializer.h 14 Jun 2004 14:15:34 -0000 1.9
@@ -26,15 +26,23 @@
* @brief interface for the IHandlerSoapDeSerializer class.
*
*
- * @author Roshan Weerasuriya (roshan@jkcs.slt.lk, roshan@opensource.lk)
+ * @author Roshan Weerasuriya (roshan@opensource.lk, roshanw@jkcsworld.com)
*/
+
+/*
+ * Revision 1.1 2004/06/14 roshan
+ * Removed virtual int AXISCALL addHeaderBlock(IHeaderBlock* pBlk)=0; method
+ * from this interface, because a user should not be able to add any thing
+ * to the DeSerialzer.
+ */
+
#ifdef __cplusplus
class IHandlerSoapDeSerializer : public IWrapperSoapDeSerializer
{
public:
virtual ~IHandlerSoapDeSerializer() {};
- virtual int AXISCALL addHeaderBlock(IHeaderBlock* pBlk)=0;
+
/*
* The soap body may be encrypted/compressed and a
* handler in the request message
1.9 +4 -2 ws-axis/c/include/axis/server/IHandlerSoapSerializer.h
Index: IHandlerSoapSerializer.h
===================================================================
RCS file: /home/cvs/ws-axis/c/include/axis/server/IHandlerSoapSerializer.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- IHandlerSoapSerializer.h 14 Jun 2004 08:00:44 -0000 1.8
+++ IHandlerSoapSerializer.h 14 Jun 2004 14:15:34 -0000 1.9
@@ -37,8 +37,10 @@
virtual int AXISCALL addHeaderBlock(IHeaderBlock* pBlk)=0;
virtual int setSoapHeader(SoapHeader* pSoapHeader)=0;
virtual int setSoapVersion(SOAP_VERSION)=0;
-
-
+ virtual IHeaderBlock* getHeaderBlock() = 0;
+ virtual IHeaderBlock* getHeaderBlock(const AxisChar *pcName,
+ const AxisChar *pcNamespace) = 0;
+
/*
* A handler may get the entire soap body and encrypt/compress
* it and encode to either base64Binary or hexBinary before
1.6 +4 -1 ws-axis/c/include/axis/server/ISoapHeader.h
Index: ISoapHeader.h
===================================================================
RCS file: /home/cvs/ws-axis/c/include/axis/server/ISoapHeader.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ISoapHeader.h 30 Apr 2004 05:38:30 -0000 1.5
+++ ISoapHeader.h 14 Jun 2004 14:15:34 -0000 1.6
@@ -26,7 +26,10 @@
class ISoapHeader
{
public:
- virtual IHeaderBlock* getHeaderBlock()=0;
+ virtual IHeaderBlock* getHeaderBlock(const AxisChar *pName,
+ const AxisChar *pNamespace,
+ bool bRemoveOrNot) = 0;
+ virtual IHeaderBlock* getHeaderBlock(bool bRemoveOrNot)=0;
virtual ~ISoapHeader() {};
};
1.10 +2 -2 ws-axis/c/include/axis/server/SoapHeader.h
Index: SoapHeader.h
===================================================================
RCS file: /home/cvs/ws-axis/c/include/axis/server/SoapHeader.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- SoapHeader.h 13 Jun 2004 14:19:23 -0000 1.9
+++ SoapHeader.h 14 Jun 2004 14:15:34 -0000 1.10
@@ -76,7 +76,7 @@
* list of Header Blocks of this Soap Header, before returning a pointer.
*/
IHeaderBlock* getHeaderBlock(const AxisChar* pName,
- const AxisChar* pNamespace);
+ const AxisChar* pNamespace, bool bRemoveOrNot);
/**
* Sets the Prefix of the Header Block.
@@ -90,7 +90,7 @@
* But will not delete it.
* @return The removed HeaderBlock of the list.
*/
- IHeaderBlock* getHeaderBlock();
+ IHeaderBlock* getHeaderBlock(bool bRemoveOrNot);
/**
* Sets the namespace declaration of the Soap Header.
1.22 +2 -0 ws-axis/c/include/axis/server/SoapSerializer.h
Index: SoapSerializer.h
===================================================================
RCS file: /home/cvs/ws-axis/c/include/axis/server/SoapSerializer.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- SoapSerializer.h 14 Jun 2004 08:00:44 -0000 1.21
+++ SoapSerializer.h 14 Jun 2004 14:15:34 -0000 1.22
@@ -171,6 +171,8 @@
BasicTypeSerializer m_BTSZ;
SOAPTransport* m_pOutputStream;
public:
+ IHeaderBlock* getHeaderBlock(const AxisChar* pcName, const AxisChar* pcNamespace);
+ IHeaderBlock* getHeaderBlock();
int setSOAPMethodAttribute(Attribute* pAttribute);
SoapMethod* getSOAPMethod();
IHeaderBlock* createHeaderBlock(AxisChar *pachLocalName,
1.63 +2 -2 ws-axis/c/src/soap/SoapDeSerializer.cpp
Index: SoapDeSerializer.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/SoapDeSerializer.cpp,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -r1.62 -r1.63
--- SoapDeSerializer.cpp 14 Jun 2004 11:09:28 -0000 1.62
+++ SoapDeSerializer.cpp 14 Jun 2004 14:15:34 -0000 1.63
@@ -157,7 +157,7 @@
if (!m_pHeader) return NULL; /* there has been no <Header> element so there
* can be no Header blocks */
- return m_pHeader->getHeaderBlock(pName, pNamespace);
+ return m_pHeader->getHeaderBlock(pName, pNamespace, true);
}
int SoapDeSerializer::getHeader()
@@ -3336,7 +3336,7 @@
{
if (!m_pHeader) return NULL;
- return (HeaderBlock*)m_pHeader->getHeaderBlock();
+ return (HeaderBlock*)m_pHeader->getHeaderBlock(true);
}
/*
* Used probably by a handler to add a header block to the Deserializer.
1.19 +9 -4 ws-axis/c/src/soap/SoapHeader.cpp
Index: SoapHeader.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/SoapHeader.cpp,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- SoapHeader.cpp 14 Jun 2004 08:00:46 -0000 1.18
+++ SoapHeader.cpp 14 Jun 2004 14:15:34 -0000 1.19
@@ -155,7 +155,7 @@
return AXIS_SUCCESS;
}
-IHeaderBlock* SoapHeader::getHeaderBlock()
+IHeaderBlock* SoapHeader::getHeaderBlock(bool bRemoveOrNot)
{
HeaderBlock* tmpHeaderBlock = NULL;
@@ -164,7 +164,9 @@
if(itCurrHeaderBlock != m_headerBlocks.end())
{
tmpHeaderBlock = (*itCurrHeaderBlock);
- m_headerBlocks.pop_front();
+ if (bRemoveOrNot == true) {
+ m_headerBlocks.pop_front();
+ }
}
return tmpHeaderBlock;
@@ -179,7 +181,8 @@
}
IHeaderBlock* SoapHeader::getHeaderBlock(const AxisChar *pName,
- const AxisChar *pNamespace)
+ const AxisChar *pNamespace,
+ bool bRemoveOrNot)
{
HeaderBlock* tmpHeaderBlock = NULL;
@@ -194,7 +197,9 @@
(strcmp(((tmpHeaderBlock)->m_uri).c_str(), pNamespace) == 0))
{
blnFoundStatus = true;
- m_headerBlocks.remove(tmpHeaderBlock);
+ if (bRemoveOrNot == true) {
+ m_headerBlocks.remove(tmpHeaderBlock);
+ }
break;
}
else
1.59 +17 -0 ws-axis/c/src/soap/SoapSerializer.cpp
Index: SoapSerializer.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/SoapSerializer.cpp,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -r1.58 -r1.59
--- SoapSerializer.cpp 14 Jun 2004 11:09:28 -0000 1.58
+++ SoapSerializer.cpp 14 Jun 2004 14:15:34 -0000 1.59
@@ -906,3 +906,20 @@
return AXIS_SUCCESS;
}
+
+IHeaderBlock* SoapSerializer::getHeaderBlock()
+{
+ if ((!m_pSoapEnvelope) || (!m_pSoapEnvelope->m_pSoapHeader)) return NULL;
+
+ return (HeaderBlock*)m_pSoapEnvelope->m_pSoapHeader->getHeaderBlock(false);
+}
+
+IHeaderBlock* SoapSerializer::getHeaderBlock(const AxisChar *pcName,
+ const AxisChar *pcNamespace)
+{
+ if ((!m_pSoapEnvelope) || (!m_pSoapEnvelope->m_pSoapHeader)) return NULL;
+ /* there has been no <Header> element so there
+ can be no Header blocks */
+
+ return m_pSoapEnvelope->m_pSoapHeader->getHeaderBlock(pcName, pcNamespace, false);
+}