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);
  +}