axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From susan...@apache.org
Subject cvs commit: xml-axis/c/src/xml QName.h
Date Mon, 01 Sep 2003 07:28:30 GMT
susantha    2003/09/01 00:28:30

  Modified:    c/src/common ArrayBean.cpp ArrayBean.h AxisUtils.h
                        BasicHandler.h BasicTypeSerializer.h IArrayBean.h
                        IHandlerSoapDeSerializer.h IHandlerSoapSerializer.h
                        IHeaderBlock.h IParam.h ISoapHeader.h ISoapMethod.h
                        IWrapperSoapDeSerializer.h IWrapperSoapSerializer.h
                        MessageData.h Packet.cpp Packet.h Param.cpp Param.h
                        TypeMapping.h
               c/src/engine AppScopeHandlerPool.h Axis.cpp AxisEngine.cpp
                        DeserializerPool.h HandlerChain.h HandlerPool.h
                        Main.c RequestScopeHandlerPool.h SerializerPool.h
                        SessionScopeHandlerPool.h SharedObject.h
               c/src/server/samples/webservice WebService.cpp WebService.h
               c/src/server/samples/webservicewrapper WebServiceWrapper.cpp
                        WebServiceWrapper.h
               c/src/soap Attribute.h BasicNode.h CharacterElement.h
                        ComplexElement.h HeaderBlock.h SoapBody.h
                        SoapDeSerializer.cpp SoapDeSerializer.h
                        SoapEnvelope.h SoapFault.h SoapHeader.h
                        SoapKeywordMapping.h SoapMethod.h
                        SoapSerializer.cpp SoapSerializer.h URIMapping.h
                        XMLStreamHandler.cpp XMLStreamHandler.h
               c/src/wsdd WSDDDeployment.h WSDDDocument.cpp WSDDHandler.h
                        WSDDService.cpp WSDDService.h WSDDTransport.h
               c/src/xml QName.h
  Log:
  Changed code base to support wrapping C web services.
  Also new mechanism removes the restrictions we had when writing complex types.
  Added 2 new samples too.
  
  Revision  Changes    Path
  1.6       +41 -93    xml-axis/c/src/common/ArrayBean.cpp
  
  Index: ArrayBean.cpp
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/ArrayBean.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ArrayBean.cpp	27 Aug 2003 12:16:34 -0000	1.5
  +++ ArrayBean.cpp	1 Sep 2003 07:28:28 -0000	1.6
  @@ -58,13 +58,12 @@
    * @author Susantha Kumara (skumara@virtusa.com)
    *
    */
  -// ArrayBean.cpp: implementation of the ArrayBeanI class.
  +// ArrayBean.cpp: implementation of the ArrayBean class.
   //
   //////////////////////////////////////////////////////////////////////
  -#include "AccessBean.h"
  +#include "Param.h"
   #include "ArrayBean.h"
   #include "BasicTypeSerializer.h"
  -#include "Param.h"
   
   //////////////////////////////////////////////////////////////////////
   // Construction/Destruction
  @@ -102,15 +101,22 @@
   		//continue this for all basic types
   	case USER_TYPE: //array of user types
   		{
  -			AccessBean* pItem;
  -			int itemsize = m_value.cta->GetSize();
  -			list<int>::iterator it = m_size.begin();
  -			int blocksize = GetArrayBlockSize(it);
  -			unsigned long ptrval = reinterpret_cast<unsigned long>(m_value.cta);
  -			for (int x=0; x<blocksize; x++)
  +			if (m_value.cta)
   			{
  -				pItem = reinterpret_cast<AccessBean*>(ptrval+x*itemsize);
  -				delete pItem;
  +				list<int>::iterator it = m_size.begin();
  +				int blocksize = GetArrayBlockSize(it);
  +/*
  +				void* pItem;
  +				int itemsize = m_value.cta->pSizeFunct();
  +				unsigned long ptrval = reinterpret_cast<unsigned long>(m_value.cta->pObject);
  +				for (int x=0; x<blocksize; x++)
  +				{
  +					pItem = reinterpret_cast<void*>(ptrval+x*itemsize);
  +					m_value.cta->pDelFunct(pItem);
  +				}
  +*/			
  +				m_value.cta->pDelFunct(m_value.cta->pObject, true, blocksize);
  +				delete m_value.cta;
   			}
   		}
   		break;
  @@ -137,29 +143,7 @@
   		return size;
   	}
   }
  -/*
  -void ArrayBean::DeleteArray(list<int>::iterator it, int nItemOffset, int nItemSize, int nDim)
  -{
  -	AccessBean* p;
  -	nDim--;
  -	if (nDim > 0)
  -	{	
  -		int curdim = *it;
  -		it++;
  -		for (int d=0; d<curdim; d++) //do for each dimension
  -		{
  -			DeleteArray(it,nItemOffset + GetArrayBlockSize(it)*d,nItemSize,nDim);
  -		}
  -		return;
  -	}
  -	unsigned long ptrval = reinterpret_cast<unsigned long>(m_value.cta) + nItemOffset*nItemSize;
  -	for (int x=0; x<*it; x++)
  -	{
  -		p = reinterpret_cast<AccessBean*>(ptrval+x*nItemSize);
  -		delete p;
  -	}
  -}
  -*/
  +
   int ArrayBean::DeSerialize(IWrapperSoapDeSerializer *pDZ)
   {
   	Param* p;
  @@ -208,16 +192,16 @@
   		//continue this for all basic types
   	case USER_TYPE: //array of user types
   		{
  -			IAccessBean* pItem;
  -			int itemsize = m_value.cta->GetSize();
  +			void* pItem;
  +			int itemsize = m_value.cta->pSizeFunct();
   			list<int>::iterator it = m_size.begin();
   			int blocksize = GetArrayBlockSize(it);
  -			unsigned long ptrval = reinterpret_cast<unsigned long>(m_value.cta);
  +			unsigned long ptrval = reinterpret_cast<unsigned long>(m_value.cta->pObject);
   			for (int x=0; x<blocksize; x++)
   			{
   				pDZ->GetParam(); //discard outer param corresponding to custom type - get only inner members
  -				pItem = reinterpret_cast<IAccessBean*>(ptrval+x*itemsize);
  -				pItem->DeSerialize(pDZ);
  +				pItem = reinterpret_cast<void*>(ptrval+x*itemsize);
  +				m_value.cta->pDZFunct(pItem, pDZ);
   			}
   		}
   		break;
  @@ -225,30 +209,7 @@
   	}
   	return SUCCESS;
   }
  -/*
  -int ArrayBean::DeSerializeArray(list<int>::iterator it, int nItemOffset, int nItemSize, int nDim, SoapDeSerializer *pDZ)
  -{
  -	AccessBean* p;
  -	nDim--;
  -	if (nDim > 0)
  -	{	
  -		int curdim = *it;
  -		it++;
  -		for (int d=0; d<curdim; d++) //do for each dimension
  -		{
  -			DeSerializeArray(it,nItemOffset + GetArrayBlockSize(it)*d,nItemSize,nDim,pDZ);
  -		}
  -		return SUCCESS;
  -	}
  -	unsigned long ptrval = reinterpret_cast<unsigned long>(m_value.cta) + nItemOffset*nItemSize;
  -	for (int x=0; x<*it; x++)
  -	{
  -		p = reinterpret_cast<AccessBean*>(ptrval+x*nItemSize);
  -		p->DeSerialize(pDZ);
  -	}
  -	return SUCCESS;
  -}
  -*/
  +
   int ArrayBean::Serialize(IWrapperSoapSerializer& pSZ)
   {	
   	switch (m_type)
  @@ -291,15 +252,15 @@
   		break;
   	case USER_TYPE:
   		{
  -			AccessBean* pItem;
  -			int itemsize = m_value.cta->GetSize();
  +			void* pItem;
  +			int itemsize = m_value.cta->pSizeFunct();
   			list<int>::iterator it = m_size.begin();
   			int blocksize = GetArrayBlockSize(it);
  -			unsigned long ptrval = reinterpret_cast<unsigned long>(m_value.cta);
  +			unsigned long ptrval = reinterpret_cast<unsigned long>(m_value.cta->pObject);
   			for (int x=0; x<blocksize; x++)
   			{
  -				pItem = reinterpret_cast<AccessBean*>(ptrval+x*itemsize);
  -				pItem->Serialize(pSZ);
  +				pItem = reinterpret_cast<void*>(ptrval+x*itemsize);
  +				m_value.cta->pSZFunct(pItem, pSZ, true);
   			}
   		}
   		break;
  @@ -307,30 +268,7 @@
   	}
   	return SUCCESS;
   }
  -/*
  -int ArrayBean::SerializeArray(list<int>::iterator it, int nItemOffset, int nItemSize, int nDim, string& sSerialized)
  -{
  -	AccessBean* p;
  -	nDim--;
  -	if (nDim > 0)
  -	{	
  -		int curdim = *it;
  -		it++;
  -		for (int d=0; d<curdim; d++) //do for each dimension
  -		{
  -			SerializeArray(it,nItemOffset + GetArrayBlockSize(it)*d,nItemSize,nDim,sSerialized);
  -		}
  -		return SUCCESS;
  -	}
  -	unsigned long ptrval = reinterpret_cast<unsigned long>(m_value.cta) + nItemOffset*nItemSize;
  -	for (int x=0; x<*it; x++)
  -	{
  -		p = reinterpret_cast<AccessBean*>(ptrval+x*nItemSize);
  -		p->Serialize(sSerialized);
  -	}
  -	return SUCCESS;
  -}
  -*/
  +
   void ArrayBean::AddDimension(int nDim)
   {
   	m_size.push_back(nDim);
  @@ -339,4 +277,14 @@
   void ArrayBean::SetItemName(const AxisChar* sName)
   {
   	m_ItemName = sName;
  -}
  \ No newline at end of file
  +}
  +
  +void ArrayBean::SetTypeName(const AxisChar* sName)
  +{
  +	m_TypeName = sName;
  +}
  +
  +void ArrayBean::SetUri(const AxisChar* sURI)
  +{
  +	m_URI = sURI;
  +}
  
  
  
  1.6       +4 -6      xml-axis/c/src/common/ArrayBean.h
  
  Index: ArrayBean.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/ArrayBean.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ArrayBean.h	27 Aug 2003 12:16:34 -0000	1.5
  +++ ArrayBean.h	1 Sep 2003 07:28:28 -0000	1.6
  @@ -66,17 +66,13 @@
   #if !defined(AFX_ARRAYBEAN_H__374BEDCF_E850_4907_9CF0_F2EBC61E54CF__INCLUDED_)
   #define AFX_ARRAYBEAN_H__374BEDCF_E850_4907_9CF0_F2EBC61E54CF__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "IArrayBean.h"
  +#include "IParam.h"
   #include "BasicTypeSerializer.h"
   
   #include <list>
   using namespace std;
   
  -class AccessBean;
   //This class is used inside Param class and wrapper classes only.
   class ArrayBean : public IArrayBean
   {
  @@ -99,13 +95,15 @@
   	union uAValue //this is useful only when Param is used as a return parameter
   	{
   		void* sta; //simple type array
  -		AccessBean* cta; //complex type array
  +		ComplexObjectHandler* cta; //complex type array
   	}m_value;	
   	AxisString m_TypeName;
   	AxisString m_URI;
   public: //IArrayBean Interface
   	void AddDimension(int nDim);
   	void SetItemName(const AxisChar* sName);
  +	void SetTypeName(const AxisChar* sName);
  +	void SetUri(const AxisChar* sURI);
   private:
   	BasicTypeSerializer m_BTSZ;
   };
  
  
  
  1.2       +0 -4      xml-axis/c/src/common/AxisUtils.h
  
  Index: AxisUtils.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/AxisUtils.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AxisUtils.h	27 Aug 2003 12:18:39 -0000	1.1
  +++ AxisUtils.h	1 Sep 2003 07:28:28 -0000	1.2
  @@ -65,10 +65,6 @@
   #if !defined(AFX_AXISUTILS_H__B5175A8C_0210_417D_BA43_6AAAF7E03551__INCLUDED_)
   #define AFX_AXISUTILS_H__B5175A8C_0210_417D_BA43_6AAAF7E03551__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "GDefine.h"
   
   #include <string>
  
  
  
  1.6       +0 -4      xml-axis/c/src/common/BasicHandler.h
  
  Index: BasicHandler.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/BasicHandler.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- BasicHandler.h	13 Aug 2003 14:07:19 -0000	1.5
  +++ BasicHandler.h	1 Sep 2003 07:28:28 -0000	1.6
  @@ -68,10 +68,6 @@
   #if !defined(AFX_BASICHANDLER_H__FFF77AB5_015C_4B48_9BAC_D84A7C493015__INCLUDED_)
   #define AFX_BASICHANDLER_H__FFF77AB5_015C_4B48_9BAC_D84A7C493015__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "IMessageData.h"
   #include "GDefine.h"
   
  
  
  
  1.11      +0 -4      xml-axis/c/src/common/BasicTypeSerializer.h
  
  Index: BasicTypeSerializer.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/BasicTypeSerializer.h,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- BasicTypeSerializer.h	27 Aug 2003 12:16:34 -0000	1.10
  +++ BasicTypeSerializer.h	1 Sep 2003 07:28:28 -0000	1.11
  @@ -67,10 +67,6 @@
   #if !defined(AFX_BASICTYPESERIALIZER_H__7ECDFED3_F3D5_48A1_A7EF_1E30B93BDB2C__INCLUDED_)
   #define AFX_BASICTYPESERIALIZER_H__7ECDFED3_F3D5_48A1_A7EF_1E30B93BDB2C__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "TypeMapping.h"
   
   #include <string>
  
  
  
  1.3       +3 -3      xml-axis/c/src/common/IArrayBean.h
  
  Index: IArrayBean.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/IArrayBean.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- IArrayBean.h	27 Aug 2003 12:16:34 -0000	1.2
  +++ IArrayBean.h	1 Sep 2003 07:28:28 -0000	1.3
  @@ -65,9 +65,7 @@
   #if !defined(AFX_IARRAYBEAN_H__6E27008D_DCA0_4F28_AC82_FEEBE1A1CBBB__INCLUDED_)
   #define AFX_IARRAYBEAN_H__6E27008D_DCA0_4F28_AC82_FEEBE1A1CBBB__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  +#include "GDefine.h"
   
   class IArrayBean  
   {
  @@ -77,6 +75,8 @@
   	//API needed for the Wrapper class to manipulate ArrayBeans
   	virtual void AddDimension(int nDim)=0;
   	virtual void SetItemName(const AxisChar* sName)=0;
  +	virtual void SetTypeName(const AxisChar* sName)=0;
  +	virtual void SetUri(const AxisChar* sURI)=0;
   };
   
   #endif // !defined(AFX_IARRAYBEAN_H__6E27008D_DCA0_4F28_AC82_FEEBE1A1CBBB__INCLUDED_)
  
  
  
  1.3       +0 -4      xml-axis/c/src/common/IHandlerSoapDeSerializer.h
  
  Index: IHandlerSoapDeSerializer.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/IHandlerSoapDeSerializer.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- IHandlerSoapDeSerializer.h	5 Aug 2003 08:18:54 -0000	1.2
  +++ IHandlerSoapDeSerializer.h	1 Sep 2003 07:28:28 -0000	1.3
  @@ -67,10 +67,6 @@
   #if !defined(AFX_IHANDLERSOAPDESERIALIZER_H__EAD744F9_FEB3_4885_9510_D7BAD8C5AD1C__INCLUDED_)
   #define AFX_IHANDLERSOAPDESERIALIZER_H__EAD744F9_FEB3_4885_9510_D7BAD8C5AD1C__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "ISoapDeSerializer.h"
   class ISoapHeader;
   
  
  
  
  1.4       +0 -4      xml-axis/c/src/common/IHandlerSoapSerializer.h
  
  Index: IHandlerSoapSerializer.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/IHandlerSoapSerializer.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- IHandlerSoapSerializer.h	5 Aug 2003 08:18:54 -0000	1.3
  +++ IHandlerSoapSerializer.h	1 Sep 2003 07:28:28 -0000	1.4
  @@ -68,10 +68,6 @@
   #if !defined(AFX_IHANDLERSOAPSERIALIZER_H__DE308D72_BC3E_407A_9252_649D0399C90F__INCLUDED_)
   #define AFX_IHANDLERSOAPSERIALIZER_H__DE308D72_BC3E_407A_9252_649D0399C90F__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "ISoapSerializer.h"
   class IHeaderBlock;
   
  
  
  
  1.5       +0 -4      xml-axis/c/src/common/IHeaderBlock.h
  
  Index: IHeaderBlock.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/IHeaderBlock.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- IHeaderBlock.h	27 Aug 2003 12:16:34 -0000	1.4
  +++ IHeaderBlock.h	1 Sep 2003 07:28:28 -0000	1.5
  @@ -68,10 +68,6 @@
   #if !defined(AFX_IHEADERBLOCK_H__1FFF90C8_3E12_4EFD_8D97_61E2E92A0BB7__INCLUDED_)
   #define AFX_IHEADERBLOCK_H__1FFF90C8_3E12_4EFD_8D97_61E2E92A0BB7__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "../soap/BasicNode.h"
   
   class IHeaderBlock
  
  
  
  1.4       +31 -8     xml-axis/c/src/common/IParam.h
  
  Index: IParam.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/IParam.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- IParam.h	27 Aug 2003 12:16:34 -0000	1.3
  +++ IParam.h	1 Sep 2003 07:28:28 -0000	1.4
  @@ -65,15 +65,35 @@
   #if !defined(AFX_IPARAM_H__25C278BB_5875_49E6_A3EC_B6AD3E543D69__INCLUDED_)
   #define AFX_IPARAM_H__25C278BB_5875_49E6_A3EC_B6AD3E543D69__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
  -#include "IAccessBean.h"
   #include "TypeMapping.h"
  +#include "IWrapperSoapDeSerializer.h"
  +#include "IWrapperSoapSerializer.h"
  +
   #include <string>
   using namespace std;
   
  +typedef int (* AXIS_DESERIALIZE_FUNCT)(void*, IWrapperSoapDeSerializer*);
  +//bArray is true if void* is a pointer to an array. Then nSize is the size of that array.
  +typedef void (* AXIS_OBJECT_DELETE_FUNCT)(void*, bool bArray=false, int nSize=0);
  +//bArray indicates that the object in void* is an element of an array (note that void* is not itself an array).
  +typedef int (* AXIS_SERIALIZE_FUNCT)(void*, IWrapperSoapSerializer&, bool bArray=false);
  +typedef int (* AXIS_OBJECT_SIZE_FUNCT)(void);
  +
  +class ComplexObjectHandler
  +{
  +public:
  +	void* pObject;
  +	AXIS_SERIALIZE_FUNCT pSZFunct;
  +	AXIS_OBJECT_DELETE_FUNCT pDelFunct;
  +	AXIS_DESERIALIZE_FUNCT pDZFunct;
  +	AXIS_OBJECT_SIZE_FUNCT pSizeFunct;
  +	AxisString m_TypeName;
  +	AxisString m_URI;
  +public:
  +	ComplexObjectHandler();
  +	void Init();
  +};
  +
   typedef union uParamValue
   {
   	int nValue;
  @@ -82,8 +102,9 @@
   	//all basic types should come here
   	class ArrayBean* pArray; //this is used to hold arrays
   	class IArrayBean* pIArray; //used by wrapper classes
  -	class AccessBean* pBean; //this is used to hold user types
  -	class IAccessBean* pIBean; //used by wrapper classes
  +//	class AccessBean* pBean; //this is used to hold user types
  +//	class IAccessBean* pIBean; //used by wrapper classes
  +	ComplexObjectHandler* pCplxObj;
   	//following is used by the wrapper class to set return value in case of strings	
   	const AxisChar* pStrValue; 
   } uParamValue;
  @@ -100,7 +121,9 @@
   	virtual const AxisString& GetBase64String()=0;
   	virtual int GetArraySize()=0;
   	virtual int SetArrayElements(void* pElements)=0;
  -	virtual int SetUserType(IAccessBean* pObject)=0;
  +	virtual int SetArrayElements(void* pObject, AXIS_DESERIALIZE_FUNCT pDZFunct, AXIS_OBJECT_DELETE_FUNCT pDelFunct, AXIS_OBJECT_SIZE_FUNCT pSizeFunct)=0;
  +//	virtual int SetUserType(IAccessBean* pObject)=0;
  +	virtual int SetUserType(void* pObject, AXIS_DESERIALIZE_FUNCT pDZFunct, AXIS_OBJECT_DELETE_FUNCT pDelFunct)=0;
   	virtual void SetName(const AxisChar* sName)=0;
   };
   
  
  
  
  1.3       +0 -4      xml-axis/c/src/common/ISoapHeader.h
  
  Index: ISoapHeader.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/ISoapHeader.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ISoapHeader.h	5 Aug 2003 08:18:54 -0000	1.2
  +++ ISoapHeader.h	1 Sep 2003 07:28:28 -0000	1.3
  @@ -68,10 +68,6 @@
   #if !defined(AFX_ISOAPHEADER_H__1BE21FFC_8BDE_4455_A2BE_E6B2A0204899__INCLUDED_)
   #define AFX_ISOAPHEADER_H__1BE21FFC_8BDE_4455_A2BE_E6B2A0204899__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   class ISoapHeader  
   {
   public:
  
  
  
  1.5       +0 -4      xml-axis/c/src/common/ISoapMethod.h
  
  Index: ISoapMethod.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/ISoapMethod.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ISoapMethod.h	27 Aug 2003 12:16:34 -0000	1.4
  +++ ISoapMethod.h	1 Sep 2003 07:28:28 -0000	1.5
  @@ -67,10 +67,6 @@
   #if !defined(AFX_SOAPMETHODBASE_H__B8E08E22_3337_442C_A0DF_19DFA020E4D5__INCLUDED_)
   #define AFX_SOAPMETHODBASE_H__B8E08E22_3337_442C_A0DF_19DFA020E4D5__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include <string>
   using namespace std;
   
  
  
  
  1.4       +0 -4      xml-axis/c/src/common/IWrapperSoapDeSerializer.h
  
  Index: IWrapperSoapDeSerializer.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/IWrapperSoapDeSerializer.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- IWrapperSoapDeSerializer.h	27 Aug 2003 12:16:34 -0000	1.3
  +++ IWrapperSoapDeSerializer.h	1 Sep 2003 07:28:28 -0000	1.4
  @@ -67,10 +67,6 @@
   #if !defined(AFX_IWRAPPERSOAPDESERIALIZER_H__A6C89D23_4098_4A73_BFD7_D8F115AD9BA0__INCLUDED_)
   #define AFX_IWRAPPERSOAPDESERIALIZER_H__A6C89D23_4098_4A73_BFD7_D8F115AD9BA0__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "ISoapDeSerializer.h"
   #include <string>
   using namespace std;
  
  
  
  1.5       +4 -5      xml-axis/c/src/common/IWrapperSoapSerializer.h
  
  Index: IWrapperSoapSerializer.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/IWrapperSoapSerializer.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- IWrapperSoapSerializer.h	27 Aug 2003 12:16:34 -0000	1.4
  +++ IWrapperSoapSerializer.h	1 Sep 2003 07:28:28 -0000	1.5
  @@ -68,10 +68,6 @@
   #if !defined(AFX_IWRAPPERSOAPSERIALIZER_H__D3E794EC_8A67_4E0E_BE28_583DCDCE1C42__INCLUDED_)
   #define AFX_IWRAPPERSOAPSERIALIZER_H__D3E794EC_8A67_4E0E_BE28_583DCDCE1C42__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   class ISoapMethod;
   class IArrayBean;
   class IParam;
  @@ -83,11 +79,14 @@
   {
   public:	
   	virtual IParam* setResponseParam(XSDTYPE nType, uParamValue Value)=0;
  +	virtual IParam* setResponseParam(IArrayBean* pArrayBean)=0;
  +	virtual IParam* setResponseParam(void* pObject, void* pDZFunct, void* pDelFunct)=0;
   	virtual ISoapMethod* createSoapMethod()=0;
   	virtual IWrapperSoapSerializer& operator<<(const char *cSerialized)=0;
   	virtual IWrapperSoapSerializer& operator<<(const AxisChar* cSerialized)=0;
  -	virtual const char* getNewNamespacePrefix()=0;
  +	virtual const AxisChar* getNewNamespacePrefix()=0;
   	virtual IArrayBean* makeArrayBean(XSDTYPE nType, void* pArray)=0;
  +	virtual IArrayBean* makeArrayBean(void* pObject, void* pSZFunct, void* pDelFunct, void* pSizeFunct)=0;
   public: //Basic Type Serializing methods
   	virtual const AxisChar* SerializeBasicType(const AxisChar* sName, const AxisChar* sValue, XSDTYPE type=XSD_STRING)=0;
   	virtual const AxisChar* SerializeBasicType(const AxisChar* sName, float fValue)=0;
  
  
  
  1.10      +0 -4      xml-axis/c/src/common/MessageData.h
  
  Index: MessageData.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/MessageData.h,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- MessageData.h	13 Aug 2003 14:07:19 -0000	1.9
  +++ MessageData.h	1 Sep 2003 07:28:28 -0000	1.10
  @@ -68,10 +68,6 @@
   #if !defined(AFX_MESSAGEDATA_H__8B839E07_3D23_46C6_8743_543B4917D202__INCLUDED_)
   #define AFX_MESSAGEDATA_H__8B839E07_3D23_46C6_8743_543B4917D202__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "GDefine.h"
   #include "IMessageData.h"
   #include "../wsdd/WSDDService.h"
  
  
  
  1.5       +28 -2     xml-axis/c/src/common/Packet.cpp
  
  Index: Packet.cpp
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/Packet.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Packet.cpp	27 Aug 2003 12:16:34 -0000	1.4
  +++ Packet.cpp	1 Sep 2003 07:28:28 -0000	1.5
  @@ -64,9 +64,9 @@
   
   #include <stdio.h>
   
  -char* getheader(Ax_soapstream* soap, char* pchkey)
  +const char* get_header(const Ax_soapstream* soap,const char* pchkey)
   {
  -	Ax_header* hdrs = NULL;
  +	const Ax_header* hdrs = NULL;
   	int count = 0;
   	switch (soap->trtype)
   	{
  @@ -96,6 +96,32 @@
   			return (hdrs+ix)->headervalue;
   		}
   
  +	}
  +	return NULL;
  +}
  +
  +const char* get_service_from_uri(const Ax_soapstream* soap)
  +{
  +	const char* uri = NULL;
  +	switch (soap->trtype)
  +	{
  +	case APTHTTP:
  +		uri = soap->so.http.uri_path;
  +		break;
  +	case APTFTP:
  +		//TODO
  +		break;
  +	case APTSMTP:
  +		//TODO
  +		break;
  +	default:; //some error condition
  +	}
  +	
  +	const char* service;
  +	if (uri)
  +	{
  +		service = strstr(uri, AXIS_URI_EXTENSION) + strlen(AXIS_URI_EXTENSION);
  +		return service;
   	}
   	return NULL;
   }
  
  
  
  1.9       +4 -2      xml-axis/c/src/common/Packet.h
  
  Index: Packet.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/Packet.h,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Packet.h	27 Aug 2003 12:16:34 -0000	1.8
  +++ Packet.h	1 Sep 2003 07:28:28 -0000	1.9
  @@ -66,6 +66,8 @@
   
   #include "GDefine.h"
   
  +#define AXIS_URI_EXTENSION "/axis/"
  +
   typedef struct 
   {
   	const void* ip_stream;
  @@ -121,8 +123,8 @@
   	AXIS_PROTOCOL_TYPE trtype;
   } Ax_soapstream;
   
  -char* getheader(Ax_soapstream* soap, char* pchkey);
  -
  +const char* get_header(const Ax_soapstream* soap, const char* pchkey);
  +const char* get_service_from_uri(const Ax_soapstream* soap);
   
   //This function is implemented in axis
   //int initialize_process();
  
  
  
  1.12      +76 -19    xml-axis/c/src/common/Param.cpp
  
  Index: Param.cpp
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/Param.cpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- Param.cpp	27 Aug 2003 12:16:34 -0000	1.11
  +++ Param.cpp	1 Sep 2003 07:28:28 -0000	1.12
  @@ -67,16 +67,12 @@
   
   #include "Param.h"
   #include "ArrayBean.h"
  -#include "AccessBean.h"
   #include "BasicTypeSerializer.h"
   #include <stdlib.h>
   
   //////////////////////////////////////////////////////////////////////
   // Construction/Destruction
   //////////////////////////////////////////////////////////////////////
  -//string Param::m_sSZ = "";
  -//string ArrayBean::m_sSZ = "";
  -char Param::m_Buf[64];
   
   Param::Param(const Param& param)
   {
  @@ -85,9 +81,9 @@
   	m_Type = param.m_Type;	
   	if (m_Type == USER_TYPE) 
   	{
  -		m_Value.pBean = new AccessBean();
  -		m_Value.pBean->m_TypeName = param.m_Value.pBean->m_TypeName;
  -		m_Value.pBean->m_URI = param.m_Value.pBean->m_URI;
  +		m_Value.pCplxObj = new ComplexObjectHandler;
  +		m_Value.pCplxObj->m_TypeName = param.m_Value.pCplxObj->m_TypeName;
  +		m_Value.pCplxObj->m_URI = param.m_Value.pCplxObj->m_URI;
   	}
   	else if(m_Type == XSD_ARRAY)
   	{
  @@ -146,7 +142,8 @@
   		if (m_Value.pArray) delete m_Value.pArray;
   		break;
   	case USER_TYPE:
  -		if (m_Value.pBean) delete m_Value.pBean;
  +		if (m_Value.pCplxObj->pObject) m_Value.pCplxObj->pDelFunct(m_Value.pCplxObj->pObject);
  +		delete m_Value.pCplxObj;
   		break;
   	default:;
   	}
  @@ -235,7 +232,7 @@
   
   int Param::serialize(IWrapperSoapSerializer& pSZ)
   {
  -	string ATprefix;
  +	AxisString ATprefix;
   	switch (m_Type){
   	case XSD_INT:
   		pSZ << m_BTSZ.serialize(m_sName.c_str(), m_Value.nValue);
  @@ -270,10 +267,10 @@
   		ATprefix = pSZ.getNewNamespacePrefix();
   
   		pSZ << " xmlns:enc"; 
  -		pSZ << "=\"http://www.w3.org/2001/06/soap-encoding\"";
  +		pSZ << "=\"http://www.w3.org/2001/06/soap-encoding\" ";
   		if (m_Value.pArray->m_type == USER_TYPE)
   		{
  -			pSZ << " xmlns:" << ATprefix.c_str() << "=" << m_Value.pArray->m_URI.c_str(); 
  +			pSZ << "xmlns:" << ATprefix.c_str() << "=" << m_Value.pArray->m_URI.c_str() << " "; 
   		}
   		pSZ << "enc:arrayType=";
   		if (m_Value.pArray->m_type == USER_TYPE)
  @@ -286,10 +283,11 @@
   			pSZ << m_BTSZ.BasicTypeStr(m_Value.pArray->m_type);
   		}
   		{
  +			char Buf[10]; //maximum array dimension is 99999999
   			for (list<int>::iterator it=m_Value.pArray->m_size.begin(); it!=m_Value.pArray->m_size.end(); it++)
   			{
  -				sprintf(m_Buf,"[%d]", *it);
  -				pSZ << m_Buf;
  +				sprintf(Buf,"[%d]", *it);
  +				pSZ << Buf;
   			}
   		}
   		pSZ << ">";
  @@ -306,7 +304,7 @@
   		pSZ << ">";
   		break;
   	case USER_TYPE:
  -		m_Value.pBean->Serialize(pSZ);
  +		m_Value.pCplxObj->pSZFunct(m_Value.pCplxObj->pObject, pSZ);
   		break;
   	default:;
   	}
  @@ -365,7 +363,7 @@
   		m_Value.pArray = Value.pArray;
   		break;
   	case USER_TYPE:
  -		m_Value.pBean = Value.pBean;
  +		m_Value.pCplxObj = Value.pCplxObj;
   		break;
   	default:
   		return FAIL; //this is an unexpected situation
  @@ -390,7 +388,7 @@
   	m_Type = param.m_Type;	
   	if (m_Type == USER_TYPE) 
   	{
  -		m_Value.pBean = param.m_Value.pBean;
  +		m_Value.pCplxObj = param.m_Value.pCplxObj;
   	}
   	else if(m_Type == XSD_ARRAY)
   	{
  @@ -408,25 +406,84 @@
   	return m_Value.pArray->GetArraySize();
   }
   
  +/*
   int Param::SetUserType(IAccessBean* pObject)
   {
   	if (m_Type != USER_TYPE) return FAIL;
   	m_Value.pIBean = pObject;
   	return SUCCESS;
   }
  +*/
  +
  +int Param::SetUserType(void* pObject, AXIS_DESERIALIZE_FUNCT pDZFunct, AXIS_OBJECT_DELETE_FUNCT pDelFunct)
  +{
  +	if (m_Type != USER_TYPE) return FAIL;
  +	m_Value.pCplxObj = new ComplexObjectHandler;
  +	m_Value.pCplxObj->pObject = pObject;
  +	m_Value.pCplxObj->pDZFunct = pDZFunct;
  +	m_Value.pCplxObj->pDelFunct = pDelFunct;
  +	return SUCCESS;
  +}
   
   int Param::SetArrayElements(void* pElements)
   {
   	if (m_Type != XSD_ARRAY) return FAIL;
   	if (m_Value.pArray)
   	{
  -		m_Value.pArray->m_value.sta = pElements;
  -		return SUCCESS;
  +		if (m_Value.pArray->m_type != USER_TYPE)
  +		{
  +			m_Value.pArray->m_value.sta = pElements;
  +			return SUCCESS;
  +		}
  +		else //unexpected situation
  +		{
  +			return FAIL;
  +		}
   	}
   	return FAIL;
   }
   
  +//following function is called to set array of user types.
  +int Param::SetArrayElements(void* pObject, AXIS_DESERIALIZE_FUNCT pDZFunct, AXIS_OBJECT_DELETE_FUNCT pDelFunct, AXIS_OBJECT_SIZE_FUNCT pSizeFunct)
  +{
  +	if (m_Type != XSD_ARRAY) return FAIL;
  +	if (m_Value.pArray)
  +	{
  +		if (m_Value.pArray->m_type == USER_TYPE)
  +		{
  +			m_Value.pArray->m_value.cta = new ComplexObjectHandler;
  +			m_Value.pArray->m_value.cta->pDZFunct = pDZFunct;
  +			m_Value.pArray->m_value.cta->pDelFunct = pDelFunct;
  +			m_Value.pArray->m_value.cta->pSizeFunct = pSizeFunct;
  +			m_Value.pArray->m_value.cta->pObject = pObject;
  +			return SUCCESS;
  +		}
  +		else //unexpected situation
  +		{
  +			return FAIL;
  +		}
  +	}
  +	return FAIL;	
  +}
  +
   void Param::SetName(const AxisChar* sName)
   {
   	m_sName = sName;
  -}
  \ No newline at end of file
  +}
  +
  +// ComplexObjectHandler functions
  +ComplexObjectHandler::ComplexObjectHandler()
  +{
  +	Init();
  +}
  +
  +void ComplexObjectHandler::Init()
  +{
  +	pObject = NULL;
  +	pSZFunct = NULL;
  +	pDelFunct = NULL; 
  +	pDZFunct = NULL;
  +	pSizeFunct = NULL;
  +	m_TypeName = L"";
  +	m_URI = L"";	
  +}
  
  
  
  1.11      +4 -9      xml-axis/c/src/common/Param.h
  
  Index: Param.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/Param.h,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Param.h	27 Aug 2003 12:16:34 -0000	1.10
  +++ Param.h	1 Sep 2003 07:28:28 -0000	1.11
  @@ -69,22 +69,18 @@
   #if !defined(AFX_PARAM_H__351B13BB_5D03_40C5_93F5_56D17295A8BD__INCLUDED_)
   #define AFX_PARAM_H__351B13BB_5D03_40C5_93F5_56D17295A8BD__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "IParam.h"
   #include "BasicTypeSerializer.h"
   
   #include <string>
   using namespace std;
   
  -class AccessBean;
   class ArrayBean;
   
   class Param : public IParam
   {
   	friend class SoapDeSerializer;
  +	friend class SoapSerializer;
   	friend class XMLStreamHandler;
   public:
   	Param(){ m_Type = USER_TYPE;}; //if there is no attribute that says the type
  @@ -102,9 +98,6 @@
   	AxisString m_sName; //Name of the parameter
   	XSDTYPE m_Type; //Type of the parameter
   
  -//	static string m_sSZ; //Used for serialization
  -	static char m_Buf[64]; //Used for conversions using sprintf
  -
   private:
   	AxisString m_strPrefix; //needed in serialization only
   	AxisString m_strUri; //needed in serialization only
  @@ -125,7 +118,9 @@
   	void setUri(const AxisChar* uri);
   	int GetArraySize();
   	int SetArrayElements(void* pElements);
  -	int SetUserType(IAccessBean* pObject);
  +	int SetArrayElements(void* pObject, AXIS_DESERIALIZE_FUNCT pDZFunct, AXIS_OBJECT_DELETE_FUNCT pDelFunct, AXIS_OBJECT_SIZE_FUNCT pSizeFunct);
  +//	int SetUserType(IAccessBean* pObject);
  +	int SetUserType(void* pObject, AXIS_DESERIALIZE_FUNCT pDZFunct, AXIS_OBJECT_DELETE_FUNCT pDelFunct);
   	void SetName(const AxisChar* sName);
   private:
   	BasicTypeSerializer m_BTSZ;
  
  
  
  1.4       +0 -4      xml-axis/c/src/common/TypeMapping.h
  
  Index: TypeMapping.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/TypeMapping.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TypeMapping.h	27 Aug 2003 12:16:34 -0000	1.3
  +++ TypeMapping.h	1 Sep 2003 07:28:28 -0000	1.4
  @@ -68,10 +68,6 @@
   #if !defined(AFX_TYPEMAPPING_H__B09703CE_154D_400E_A4E6_ED01901B33A0__INCLUDED_)
   #define AFX_TYPEMAPPING_H__B09703CE_154D_400E_A4E6_ED01901B33A0__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include <map>
   #include <string>
   #include "GDefine.h"
  
  
  
  1.3       +0 -4      xml-axis/c/src/engine/AppScopeHandlerPool.h
  
  Index: AppScopeHandlerPool.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/engine/AppScopeHandlerPool.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- AppScopeHandlerPool.h	27 Aug 2003 12:16:34 -0000	1.2
  +++ AppScopeHandlerPool.h	1 Sep 2003 07:28:28 -0000	1.3
  @@ -66,10 +66,6 @@
   #if !defined(AFX_APPSCOPEHANDLERPOOL_H__A94BE166_F35A_40B9_8B17_9ED3D1886503__INCLUDED_)
   #define AFX_APPSCOPEHANDLERPOOL_H__A94BE166_F35A_40B9_8B17_9ED3D1886503__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "SharedObject.h"
   #include "../common/BasicHandler.h"
   
  
  
  
  1.10      +2 -2      xml-axis/c/src/engine/Axis.cpp
  
  Index: Axis.cpp
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/engine/Axis.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Axis.cpp	27 Aug 2003 12:16:34 -0000	1.9
  +++ Axis.cpp	1 Sep 2003 07:28:28 -0000	1.10
  @@ -160,9 +160,9 @@
   				string sServiceName;
   				bool bNoSlash = false;
   
  -				if (sUri.find("/axis/") != string::npos)
  +				if (sUri.find(AXIS_URI_EXTENSION) != string::npos)
   				{
  -					sUriWOAxis = sUri.substr(sUri.find("/axis/") + 6);
  +					sUriWOAxis = sUri.substr(sUri.find(AXIS_URI_EXTENSION) + 6);
   				}
   				else
   				{	
  
  
  
  1.18      +6 -2      xml-axis/c/src/engine/AxisEngine.cpp
  
  Index: AxisEngine.cpp
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/engine/AxisEngine.cpp,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- AxisEngine.cpp	27 Aug 2003 12:16:34 -0000	1.17
  +++ AxisEngine.cpp	1 Sep 2003 07:28:28 -0000	1.18
  @@ -92,8 +92,8 @@
   
   AxisEngine::~AxisEngine()
   {
  -	if (m_pSZ) g_pSerializerPool->PutInstance(m_pSZ);
   	if (m_pDZ) g_pDeserializerPool->PutInstance(m_pDZ);
  +	if (m_pSZ) g_pSerializerPool->PutInstance(m_pSZ);
   }
   
   int AxisEngine::Process(Ax_soapstream* soap) 
  @@ -130,7 +130,11 @@
   				break; //do .. while(0)
   			}
   
  -			char* cService= getheader(soap, SOAPACTIONHEADER);
  +			const char* cService = get_header(soap, SOAPACTIONHEADER);
  +			if (!cService) //get from URL if http
  +			{
  +				cService = get_service_from_uri(soap);
  +			}
   			AxisString service;
   			AxisUtils::convert(service, (cService == NULL)? "" : cService);
   		  
  
  
  
  1.3       +0 -4      xml-axis/c/src/engine/DeserializerPool.h
  
  Index: DeserializerPool.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/engine/DeserializerPool.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DeserializerPool.h	27 Aug 2003 12:16:34 -0000	1.2
  +++ DeserializerPool.h	1 Sep 2003 07:28:28 -0000	1.3
  @@ -65,10 +65,6 @@
   #if !defined(AFX_DESERIALIZERPOOL_H__702116EF_3134_4ED4_8252_BEC1FC30E825__INCLUDED_)
   #define AFX_DESERIALIZERPOOL_H__702116EF_3134_4ED4_8252_BEC1FC30E825__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "SharedObject.h"
   #include "../soap/SoapDeSerializer.h"
   #include "../common/GDefine.h"
  
  
  
  1.6       +0 -4      xml-axis/c/src/engine/HandlerChain.h
  
  Index: HandlerChain.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/engine/HandlerChain.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- HandlerChain.h	13 Aug 2003 14:07:47 -0000	1.5
  +++ HandlerChain.h	1 Sep 2003 07:28:28 -0000	1.6
  @@ -68,10 +68,6 @@
   #if !defined(AFX_HANDLERCHAIN_H__675E51BF_2FD7_4860_B3DE_F8B5A978EB99__INCLUDED_)
   #define AFX_HANDLERCHAIN_H__675E51BF_2FD7_4860_B3DE_F8B5A978EB99__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "../common/BasicHandler.h"
   #include "../common/Handler.h"
   #include <list>
  
  
  
  1.3       +0 -4      xml-axis/c/src/engine/HandlerPool.h
  
  Index: HandlerPool.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/engine/HandlerPool.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- HandlerPool.h	13 Aug 2003 14:07:47 -0000	1.2
  +++ HandlerPool.h	1 Sep 2003 07:28:28 -0000	1.3
  @@ -69,10 +69,6 @@
   #if !defined(AFX_HANDLERPOOL_H__6C2A4C96_7115_43C6_9EFA_CDAC9247D109__INCLUDED_)
   #define AFX_HANDLERPOOL_H__6C2A4C96_7115_43C6_9EFA_CDAC9247D109__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "../wsdd/WSDDHandler.h"
   #include "../wsdd/WSDDService.h"
   #include "../common/BasicHandler.h"
  
  
  
  1.11      +50 -9     xml-axis/c/src/engine/Main.c
  
  Index: Main.c
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/engine/Main.c,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Main.c	27 Aug 2003 12:16:35 -0000	1.10
  +++ Main.c	1 Sep 2003 07:28:28 -0000	1.11
  @@ -79,7 +79,7 @@
   			soapenv:mustUnderstand=\"true\" >Hello Req Header Val</t:Transaction></soapenv:Header> \
   			<soapenv:Body><add soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"><op1 xsi:type=\"xsd:int\">3</op1><op2 xsi:type=\"xsd:int\">4</op2></add></soapenv:Body></soapenv:Envelope>";
   
  -char* ip = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><soapenv:Body><add soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"><op1 xsi:type=\"xsd:int\">3</op1><op2 xsi:type=\"xsd:int\">4</op2></add></soapenv:Body></soapenv:Envelope>";
  +char* ip = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><soapenv:Body><Add soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"><op1 xsi:type=\"xsd:int\">3</op1><op2 xsi:type=\"xsd:int\">4</op2></Add></soapenv:Body></soapenv:Envelope>";
   //AxisChar* ip = L"<?xml version=\"1.0\" encoding=\"UTF-8\"?><soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><soapenv:Body><add soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"><op1 xsi:type=\"xsd:int\">3</op1><op2 xsi:type=\"xsd:int\">4</op2></add></soapenv:Body></soapenv:Envelope>";
   
   //	char* ip = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><soapenv:Body><echo soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"><op1 xsi:type=\"xsd:string\">Hello World!</op1></echo></soapenv:Body></soapenv:Envelope>";
  @@ -161,8 +161,25 @@
   		</soapenv:Body>\
   		</soapenv:Envelope>";
   
  +	//Add Distance between two Points
  +//	char* ip = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\
  +		<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\
  +		<soapenv:Body>\
  +		<Distance soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">\
  +		<Point1 xsi:type=\"ns1:Point\" xmlns:ns1=\"http://www.opensource.lk/Axis/\">\
  +		<x xsi:type=\"xsd:int\">23</x>\
  +		<y xsi:type=\"xsd:int\">77</y>\
  +		</Point1>\
  +		<Point2 xsi:type=\"ns2:Point\" xmlns:ns2=\"http://www.opensource.lk/Axis/\">\
  +		<x xsi:type=\"xsd:int\">77</x>\
  +		<y xsi:type=\"xsd:int\">23</y>\
  +		</Point2>\
  +		</Distance>\
  +		</soapenv:Body>\
  +		</soapenv:Envelope>";
  +
   	//Array of Point
  -	//char* ip = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><soapenv:Envelope xmlns:soapenv=\"\
  +//	char* ip = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><soapenv:Envelope xmlns:soapenv=\"\
   		http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\
   		xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><soapenv:Body><EchoPointArray \
   		soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"><enc:Array xmlns:def=\"\
  @@ -181,6 +198,29 @@
   		<y xsi:type=\"xsd:int\">66</y>\
   		</Point>\
   		</enc:Array> </EchoPointArray></soapenv:Body></soapenv:Envelope>";
  +	//Get Perimeter of a Triangle
  +//	char* ip = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><soapenv:Envelope xmlns:soapenv=\"\
  +		http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\
  +		xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"> \
  +		<soapenv:Body> \
  +		<Perimeter soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"> \
  +		<Triangle xsi:type=\"ns1:Triangle\" xmlns:ns1=\"http://www.opensource.lk/Axis/\"> \
  +		<Point>\
  +		<x xsi:type=\"xsd:int\">11</x>\
  +		<y xsi:type=\"xsd:int\">22</y>\
  +		</Point>\
  +		<Point>\
  +		<x xsi:type=\"xsd:int\">33</x>\
  +		<y xsi:type=\"xsd:int\">44</y>\
  +		</Point>\
  +		<Point>\
  +		<x xsi:type=\"xsd:int\">55</x>\
  +		<y xsi:type=\"xsd:int\">66</y>\
  +		</Point>\
  +		</Triangle> \
  +		</Perimeter> \
  +		</soapenv:Body> \
  +		</soapenv:Envelope>";
   
   int main() 
   {		
  @@ -192,19 +232,20 @@
   	str->str.ip_stream = "is";
   	str->str.op_stream = "os";
   	str->so.http.ip_headers = (Ax_header*)malloc(sizeof(Ax_header));
  -	str->so.http.ip_headers->headername = SOAPACTIONHEADER;
  -	str->so.http.ip_headers->headervalue = "\"Calculator\"";	
  -	str->so.http.ip_headercount = 1;
  +//	str->so.http.ip_headers->headername = SOAPACTIONHEADER;
  +//	str->so.http.ip_headers->headervalue = "\"Calculator\"";	
  +	str->so.http.ip_headercount = 0;
  +	str->so.http.uri_path = "http://someurl/axis/Calculator";
   
  -//	printf("soap request :\n %s\n", ip);
  +	printf("soap request :\n %s\n", ip);
   //	wprintf(L"soap request :\n %s\n", ip);
   
   	initialize_module();
  -	for (xx =0; xx < 1000 ; xx++)
  +	for (xx =0; xx < 10 ; xx++)
   	{
  -	//	printf("Sending Soap Response :\n");
  +		printf("Sending Soap Response :\n");
   		process_request(str);
  -	//	printf("\n");
  +		printf("\n");
   	}
   	uninitialize_module();
   	free(str->so.http.ip_headers);
  
  
  
  1.3       +0 -4      xml-axis/c/src/engine/RequestScopeHandlerPool.h
  
  Index: RequestScopeHandlerPool.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/engine/RequestScopeHandlerPool.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- RequestScopeHandlerPool.h	27 Aug 2003 12:16:35 -0000	1.2
  +++ RequestScopeHandlerPool.h	1 Sep 2003 07:28:28 -0000	1.3
  @@ -65,10 +65,6 @@
   #if !defined(AFX_REQUESTSCOPEHANDLERPOOL_H__310FD607_517E_4644_8922_0B1CFDE9E5BE__INCLUDED_)
   #define AFX_REQUESTSCOPEHANDLERPOOL_H__310FD607_517E_4644_8922_0B1CFDE9E5BE__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "SharedObject.h"
   #include "../common/BasicHandler.h"
   
  
  
  
  1.3       +0 -4      xml-axis/c/src/engine/SerializerPool.h
  
  Index: SerializerPool.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/engine/SerializerPool.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SerializerPool.h	27 Aug 2003 12:16:35 -0000	1.2
  +++ SerializerPool.h	1 Sep 2003 07:28:28 -0000	1.3
  @@ -65,10 +65,6 @@
   #if !defined(AFX_SERIALIZERPOOL_H__45283A27_9196_4ACF_952F_88C564A4BD40__INCLUDED_)
   #define AFX_SERIALIZERPOOL_H__45283A27_9196_4ACF_952F_88C564A4BD40__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "SharedObject.h"
   #include "../soap/SoapSerializer.h"
   #include "../common/GDefine.h"
  
  
  
  1.3       +0 -4      xml-axis/c/src/engine/SessionScopeHandlerPool.h
  
  Index: SessionScopeHandlerPool.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/engine/SessionScopeHandlerPool.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SessionScopeHandlerPool.h	27 Aug 2003 12:16:35 -0000	1.2
  +++ SessionScopeHandlerPool.h	1 Sep 2003 07:28:28 -0000	1.3
  @@ -66,10 +66,6 @@
   #if !defined(AFX_SESSIONSCOPEHANDLERPOOL_H__8F0188D8_B30B_43F9_8F06_8E209D7B8ABE__INCLUDED_)
   #define AFX_SESSIONSCOPEHANDLERPOOL_H__8F0188D8_B30B_43F9_8F06_8E209D7B8ABE__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #define SESSIONLESSHANDLERS	"0aaaaa"
   
   #include "SharedObject.h"
  
  
  
  1.4       +0 -4      xml-axis/c/src/engine/SharedObject.h
  
  Index: SharedObject.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/engine/SharedObject.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SharedObject.h	27 Aug 2003 12:16:35 -0000	1.3
  +++ SharedObject.h	1 Sep 2003 07:28:28 -0000	1.4
  @@ -66,10 +66,6 @@
   #if !defined(AFX_SHAREDOBJECT_H__0805D25C_2F7E_4B19_BECE_0A8BFE9F0830__INCLUDED_)
   #define AFX_SHAREDOBJECT_H__0805D25C_2F7E_4B19_BECE_0A8BFE9F0830__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "../common/GDefine.h"
   
   class SharedObject  
  
  
  
  1.4       +4 -2      xml-axis/c/src/server/samples/webservice/WebService.cpp
  
  Index: WebService.cpp
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/server/samples/webservice/WebService.cpp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- WebService.cpp	27 Aug 2003 12:16:35 -0000	1.3
  +++ WebService.cpp	1 Sep 2003 07:28:29 -0000	1.4
  @@ -81,7 +81,7 @@
   
   }
   
  -AxisString WebService::Echo(AxisString msg) // exposed web service method
  +wstring WebService::Echo(wstring msg) // exposed web service method
   {
   	msg += L"- This string Appended by the web service &<< >>&&<<\"''\"\"";
   	return msg;
  @@ -122,8 +122,10 @@
   
   Point* WebService::EchoPointArray(int size, Point array[], int*retsize)
   {
  +	Point* pNew = new Point[size];
  +	memcpy(pNew, array, sizeof(Point)*size);
   	*retsize = size;
  -	return array;
  +	return pNew;
   }
   
   
  
  
  
  1.4       +2 -8      xml-axis/c/src/server/samples/webservice/WebService.h
  
  Index: WebService.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/server/samples/webservice/WebService.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- WebService.h	27 Aug 2003 12:16:35 -0000	1.3
  +++ WebService.h	1 Sep 2003 07:28:29 -0000	1.4
  @@ -68,21 +68,15 @@
   #if !defined(AFX_WS_H__B3B59E87_9A9C_4DD8_8209_F8EBFCB6A1BA__INCLUDED_)
   #define AFX_WS_H__B3B59E87_9A9C_4DD8_8209_F8EBFCB6A1BA__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
  -#include "../../../common/IAccessBean.h"
   #include <string>
   
   using namespace std;
   
  -class Point : public IAccessBean
  +class Point
   {
   public:
   	int x;
   	int y;
  -	ACCESSBEAN_SERIALIZABLE
   };
   
   class WebService  
  @@ -92,7 +86,7 @@
   	virtual ~WebService();
   public:
   	int* EchoIntArray(int size, int array[], int* retsize);
  -	AxisString Echo(AxisString msg); // exposed web service method
  +	wstring Echo(wstring msg); // exposed web service method
   	int Add(int a, int b); // exposed web service method
   	Point* AddPoint(Point* p1, Point* p2);
   	Point* EchoPointArray(int size, Point array[], int*retsize);
  
  
  
  1.10      +69 -121   xml-axis/c/src/server/samples/webservicewrapper/WebServiceWrapper.cpp
  
  Index: WebServiceWrapper.cpp
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/server/samples/webservicewrapper/WebServiceWrapper.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- WebServiceWrapper.cpp	27 Aug 2003 12:16:35 -0000	1.9
  +++ WebServiceWrapper.cpp	1 Sep 2003 07:28:29 -0000	1.10
  @@ -70,13 +70,54 @@
   #include "../../../common/IWrapperSoapSerializer.h"
   #include "../../../common/ISoapMethod.h"
   #include "../../../common/IParam.h"
  -#include "../../../common/IAccessBean.h"
   #include "../../../common/IArrayBean.h"
   
   //////////////////////////////////////////////////////////////////////
   // Construction/Destruction
   //////////////////////////////////////////////////////////////////////
   
  +static const AxisChar* Axis_URI_Point = L"http://www.opensource.lk/Point";
  +static const AxisChar* Axis_TypeName_Point = L"Point";
  +
  +int Axis_DeSerialize_Point(Point* p, IWrapperSoapDeSerializer *pDZ)
  +{
  +	p->x = pDZ->GetParam()->GetInt();
  +	p->y = pDZ->GetParam()->GetInt();
  +	return SUCCESS;
  +}
  +
  +void Axis_Delete_Point(Point* p, bool bArray = false, int nSize=0)
  +{
  +	if (bArray)
  +		delete [] p;
  +	else
  +		delete p;
  +}
  +
  +int Axis_Serialize_Point(Point* p, IWrapperSoapSerializer& pSZ, bool bArray = false)
  +{
  +	if (bArray)
  +	{
  +		pSZ << "<" << Axis_TypeName_Point << ">";
  +	}
  +	else
  +	{
  +		AxisString sPrefix = pSZ.getNewNamespacePrefix();
  +		pSZ << "<" << Axis_TypeName_Point << " xsi:type=\"" << sPrefix.c_str() <<":" 
  +			<< Axis_TypeName_Point << " xmlns:" << sPrefix.c_str() << "=\"" 
  +			<< Axis_URI_Point << "\">";
  +	}
  +	pSZ << pSZ.SerializeBasicType(L"x", p->x);
  +	pSZ << pSZ.SerializeBasicType(L"y", p->y);
  +	pSZ << "</" << Axis_TypeName_Point << ">";
  +	return SUCCESS;
  +}
  +
  +int Axis_GetSize_Point(Point* p)
  +{
  +	return sizeof(Point);
  +}
  +
   webservicewrapper::webservicewrapper()
   {
   	pWs = new WebService(); //Create actual web service object here
  @@ -119,15 +160,10 @@
   int webservicewrapper::SetResponseMethod(IMessageData* mc, const AxisChar* name)
   {
   	AxisString method = name;	
  -	/*
  -	comm by Roshan on 26Jul2003 4.00pm
  -	ISoapMethod* pMethod= mc->getSoapSerializer()->createSoapMethod();
  -	*/
  -	//-----------added by roshan--------
  -	IWrapperSoapSerializer* pIWSz;
  +	IWrapperSoapSerializer* pIWSz = NULL;
   	mc->getSoapSerializer(&pIWSz);
  +	if (!pIWSz) return FAIL;
   	ISoapMethod* pMethod= pIWSz->createSoapMethod();
  -	//---------end of added by roshan--------
   	pMethod->setLocalName(method + L"Response");
   	pMethod->setPrefix(L"m");
   	pMethod->setUri(L"http://www.opensource.lk");
  @@ -135,7 +171,6 @@
   }
   // Methods that wraps actual web methods
   
  -
   int webservicewrapper::Echo(IMessageData* mc)
   {
   	SetResponseMethod(mc, L"Echo");
  @@ -148,15 +183,9 @@
   	AxisString strRet = pWs->Echo(str);
   	uParamValue value;
   	value.pStrValue = strRet.c_str();
  -
  -	//--roshan--	
   	IWrapperSoapSerializer* pIWSz;
   	mc->getSoapSerializer(&pIWSz);
  -
   	IParam* pRetParam = pIWSz->setResponseParam(XSD_STRING, value);
  -	//--end ros
  -
  -
   	pRetParam->SetName(L"EchoReturn");
   	return SUCCESS;
   }
  @@ -175,17 +204,9 @@
   	int ret = pWs->Add(i1, i2);
   	uParamValue value;
   	value.nValue = ret;
  -	/* comm ro
  -	IParam* pRetParam = mc->getSoapSerializer()->setResponseParam(XSD_INT, value);
  -	*/
  -
  -	//--ro
   	IWrapperSoapSerializer* pIWSz;
   	mc->getSoapSerializer(&pIWSz);
   	IParam* pRetParam = pIWSz->setResponseParam(XSD_INT, value);
  -	//--ro
  -
  -
   	pRetParam->SetName(L"AddReturn");
   	return SUCCESS;	
   }
  @@ -204,146 +225,73 @@
   	int * arr = new int[size];
   	param1->SetArrayElements((void*)arr);
   	pIWrapperSoapDeSerializer->Deserialize(param1,0);
  -
   	int retarrsize = 0;
   	int * retarr;
  -	
   	retarr = pWs->EchoIntArray(size,arr,&retarrsize);
  -	delete [] arr;
  -
  -	/*
  -	comm by ro
  -	IArrayBean* pAb = mc->getSoapSerializer()->makeArrayBean(XSD_INT, (void*)retarr);
  -	*/
  -
  -
  -	//--roshan--	
   	IWrapperSoapSerializer* pIWSz;
   	mc->getSoapSerializer(&pIWSz);
   	IArrayBean* pAb = pIWSz->makeArrayBean(XSD_INT, (void*)retarr);
  -	//--ro
  -
  -
   	pAb->AddDimension(retarrsize);
   	pAb->SetItemName(L"item");
   	uParamValue value;
   	value.pIArray = pAb;
  -	/*
  -	ro
  -	IParam* pRetParam = mc->getSoapSerializer()->setResponseParam(XSD_ARRAY, value);
  -	*/
  -
  -
  -	//--roshan--	
   	IParam* pRetParam = pIWSz->setResponseParam(XSD_ARRAY, value);
  -	//ro
  -
  -
   	pRetParam->SetName(L"EchoIntArrayReturn");
   	return SUCCESS;	
   }
   
   int webservicewrapper::AddPoint(IMessageData *mc)
   {
  +	IWrapperSoapSerializer* pIWSSZ = NULL;
  +	mc->getSoapSerializer(&pIWSSZ);
  +	if (!pIWSSZ) return FAIL;
  +	IWrapperSoapDeSerializer* pIWSDZ = NULL;
  +	mc->getSoapDeSerializer(&pIWSDZ);
  +	if (!pIWSDZ) return FAIL;
   	SetResponseMethod(mc, L"AddPoint");
   
  -	IWrapperSoapDeSerializer* pIWrapperSoapDeSerializer;
  -	mc->getSoapDeSerializer(&pIWrapperSoapDeSerializer);
  -	IParam *param1 = pIWrapperSoapDeSerializer->GetParam();
  -	Point* p1 = new Point();
  -	param1->SetUserType(p1);
  -	pIWrapperSoapDeSerializer->Deserialize(param1,0);
  -	
  -	IParam *param2 = pIWrapperSoapDeSerializer->GetParam();
  -	Point* p2 = new Point();
  -	param2->SetUserType(p2);
  -	pIWrapperSoapDeSerializer->Deserialize(param2,0);
  -	
  -	Point* pRet = pWs->AddPoint(p1, p2);
  +	IParam *param0 = pIWSDZ->GetParam();
  +	Point* v0 = new Point();
   
  -	uParamValue value;
  -	value.pIBean = pRet;
  -	/*
  -	ro
  -	IParam* pRetParam = mc->getSoapSerializer()->setResponseParam(USER_TYPE, value);
  -	*/
  +	param0->SetUserType(v0, (AXIS_DESERIALIZE_FUNCT)Axis_DeSerialize_Point, (AXIS_OBJECT_DELETE_FUNCT)Axis_Delete_Point);
  +	pIWSDZ->Deserialize(param0,0);
   
  -	//--roshan--	
  -	IWrapperSoapSerializer* pIWSz;
  -	mc->getSoapSerializer(&pIWSz);
  -	IParam* pRetParam = pIWSz->setResponseParam(USER_TYPE, value);
  -	//ro
  -	
  +	IParam *param1 = pIWSDZ->GetParam();
  +	Point* v1 = new Point();
   
  -	pRetParam->SetName(L"EchoIntArrayReturn");
  +	param1->SetUserType(v1, (AXIS_DESERIALIZE_FUNCT)Axis_DeSerialize_Point, (AXIS_OBJECT_DELETE_FUNCT)Axis_Delete_Point);
  +	pIWSDZ->Deserialize(param1,0);
  +
  +	//Call actual web service method with appropriate parameters
  +	Point* ret = pWs->AddPoint(v0, v1);
  +
  +	IParam* pRetParam = pIWSSZ->setResponseParam(ret, (AXIS_SERIALIZE_FUNCT)Axis_Serialize_Point, (AXIS_OBJECT_DELETE_FUNCT)Axis_Delete_Point);
  +	pRetParam->SetName(L"AddPointReturn");
   	return SUCCESS;
   }
   
   int webservicewrapper::EchoPointArray(IMessageData *mc)
   {
   	SetResponseMethod(mc, L"EchoPointArray");
  -
   	IWrapperSoapDeSerializer* pIWrapperSoapDeSerializer;
   	mc->getSoapDeSerializer(&pIWrapperSoapDeSerializer);
   	IParam *param1 = pIWrapperSoapDeSerializer->GetParam();
   	int size = param1->GetArraySize(); //gets full array size 
   	Point* arr = new Point[size];
  -	param1->SetArrayElements((void*)arr);
  +	param1->SetArrayElements((void*)arr, (AXIS_DESERIALIZE_FUNCT)Axis_DeSerialize_Point, (AXIS_OBJECT_DELETE_FUNCT)Axis_Delete_Point, (AXIS_OBJECT_SIZE_FUNCT)Axis_GetSize_Point);
   	pIWrapperSoapDeSerializer->Deserialize(param1,0);
  -	
   	Point* pRet = pWs->EchoPointArray(size, arr,&size);
  -	//delete [] arr;
  -
  -	/*
  -	ro
  -	IArrayBean* pAb = mc->getSoapSerializer()->makeArrayBean(USER_TYPE, (void*)pRet);
  -	*/
  -
  -	//--roshan--	
   	IWrapperSoapSerializer* pIWSz;
   	mc->getSoapSerializer(&pIWSz);
  -	IArrayBean* pAb = pIWSz->makeArrayBean(USER_TYPE, (void*)pRet);
  -	//ro
  -
  +	IArrayBean* pAb = pIWSz->makeArrayBean((void*)pRet, (AXIS_SERIALIZE_FUNCT)Axis_Serialize_Point, (AXIS_OBJECT_DELETE_FUNCT)Axis_Delete_Point, (AXIS_OBJECT_SIZE_FUNCT)Axis_GetSize_Point);
   	pAb->AddDimension(size);
   	pAb->SetItemName(L"item");
  +	pAb->SetTypeName(L"Point");
  +	pAb->SetUri(L"http://www.opensource.lk/Point");
   	uParamValue value;
   	value.pIArray = pAb;
  -	/*
  -	ro
  -	IParam* pRetParam = mc->getSoapSerializer()->setResponseParam(XSD_ARRAY, value);
  -	*/
  -
  -	//--roshan--		
  -	IParam* pRetParam = pIWSz->setResponseParam(XSD_ARRAY, value);
  -	//ro
  -
  +	IParam* pRetParam = pIWSz->setResponseParam(pAb);
   	pRetParam->SetName(L"EchoPointArrayReturn");
   	return SUCCESS;	
   }
   
  -int Point::DeSerialize(IWrapperSoapDeSerializer *pDZ)
  -{
  -	x = pDZ->GetParam()->GetInt();
  -	y = pDZ->GetParam()->GetInt();
  -	return SUCCESS;
  -}
  -
  -int Point::Serialize(IWrapperSoapSerializer& pSZ)
  -{
  -	m_URI = L"http://www.opensource.lk/Axis/";
  -	m_TypeName = L"Point";
  -	pSZ << "<" << m_TypeName.c_str() << " xsi:type=\"ns1:" << m_TypeName.c_str() << " xmlns:ns1=\"" << m_URI.c_str() << "\">";
  -
  -	pSZ << pSZ.SerializeBasicType(L"x", x);
  -	pSZ << pSZ.SerializeBasicType(L"y", y);
  -
  -	pSZ << "</" << m_TypeName.c_str() << ">";
  -
  -	return SUCCESS;
  -}
  -
  -int Point::GetSize()
  -{
  -	return sizeof(Point);
  -}
  \ No newline at end of file
  
  
  
  1.4       +1 -17     xml-axis/c/src/server/samples/webservicewrapper/WebServiceWrapper.h
  
  Index: WebServiceWrapper.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/server/samples/webservicewrapper/WebServiceWrapper.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- WebServiceWrapper.h	27 Aug 2003 12:16:35 -0000	1.3
  +++ WebServiceWrapper.h	1 Sep 2003 07:28:29 -0000	1.4
  @@ -68,31 +68,15 @@
   #if !defined(AFX_WSSERVICE1_H__03F0FC70_6AA9_4D69_A387_6BDEAE1C9459__INCLUDED_)
   #define AFX_WSSERVICE1_H__03F0FC70_6AA9_4D69_A387_6BDEAE1C9459__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "../webservice/WebService.h"
   #include "../../../common/WrapperClassHandler.h"
   #include "../../../common/IMessageData.h"
   #include "../../../common/GDefine.h"
  -#include "../../../common/AccessBean.h"
   
   #include <string>
   
   using namespace std;
  -/*
  -class PointWrapper : public Point, public AccessBean
  -{
  -public:
  -	PointWrapper(){ m_TypeName = "Point";};
  -	int DeSerialize(SoapDeSerializer *pDZ);
  -	string& Serialize();
  -	void operator=(Point& p);
  -private:
  -	string m_sSZ;
  -};
  -*/
  +
   class webservicewrapper : public WrapperClassHandler 
   {
   public:
  
  
  
  1.7       +0 -4      xml-axis/c/src/soap/Attribute.h
  
  Index: Attribute.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/soap/Attribute.h,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Attribute.h	27 Aug 2003 12:16:35 -0000	1.6
  +++ Attribute.h	1 Sep 2003 07:28:29 -0000	1.7
  @@ -68,10 +68,6 @@
   #if !defined(AFX_ATTRIBUTE_H__10ABD25E_AF15_4DE7_AA27_6AB96102087C__INCLUDED_)
   #define AFX_ATTRIBUTE_H__10ABD25E_AF15_4DE7_AA27_6AB96102087C__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include <string>
   #include "../common/GDefine.h"
   
  
  
  
  1.6       +0 -4      xml-axis/c/src/soap/BasicNode.h
  
  Index: BasicNode.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/soap/BasicNode.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- BasicNode.h	27 Aug 2003 12:16:35 -0000	1.5
  +++ BasicNode.h	1 Sep 2003 07:28:29 -0000	1.6
  @@ -68,10 +68,6 @@
   #if !defined(AFX_BASICNODE_H__623900B8_2737_4E36_8F26_97898C5BD47D__INCLUDED_)
   #define AFX_BASICNODE_H__623900B8_2737_4E36_8F26_97898C5BD47D__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include <string>
   #include "../common/GDefine.h"
   
  
  
  
  1.5       +0 -4      xml-axis/c/src/soap/CharacterElement.h
  
  Index: CharacterElement.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/soap/CharacterElement.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- CharacterElement.h	27 Aug 2003 12:16:35 -0000	1.4
  +++ CharacterElement.h	1 Sep 2003 07:28:29 -0000	1.5
  @@ -68,10 +68,6 @@
   #if !defined(AFX_HARACTERELEMENT_H__55176899_E8B1_40ED_BA39_CB8C5590B4D2__INCLUDED_)
   #define AFX_HARACTERELEMENT_H__55176899_E8B1_40ED_BA39_CB8C5590B4D2__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "BasicNode.h"
   
   class CharacterElement : public BasicNode
  
  
  
  1.5       +0 -4      xml-axis/c/src/soap/ComplexElement.h
  
  Index: ComplexElement.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/soap/ComplexElement.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ComplexElement.h	27 Aug 2003 12:16:36 -0000	1.4
  +++ ComplexElement.h	1 Sep 2003 07:28:29 -0000	1.5
  @@ -68,10 +68,6 @@
   #if !defined(AFX_COMPLEXELEMENT_H__558543B0_B076_404C_A7FE_830E13C1785A__INCLUDED_)
   #define AFX_COMPLEXELEMENT_H__558543B0_B076_404C_A7FE_830E13C1785A__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include <string>
   #include <list>
   #include "BasicNode.h"
  
  
  
  1.8       +0 -4      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.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- HeaderBlock.h	27 Aug 2003 12:16:36 -0000	1.7
  +++ HeaderBlock.h	1 Sep 2003 07:28:29 -0000	1.8
  @@ -68,10 +68,6 @@
   #if !defined(AFX_HEADERBLOCK_H__F21C94A8_40D1_4CFC_9240_DD617494CF40__INCLUDED_)
   #define AFX_HEADERBLOCK_H__F21C94A8_40D1_4CFC_9240_DD617494CF40__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "Attribute.h"
   #include <string>
   #include <list>
  
  
  
  1.5       +0 -4      xml-axis/c/src/soap/SoapBody.h
  
  Index: SoapBody.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/soap/SoapBody.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SoapBody.h	15 Jul 2003 07:07:17 -0000	1.4
  +++ SoapBody.h	1 Sep 2003 07:28:29 -0000	1.5
  @@ -68,10 +68,6 @@
   #if !defined(AFX_SOAPBODY_H__D1A60F04_287F_4688_A8F0_10BE0EA25775__INCLUDED_)
   #define AFX_SOAPBODY_H__D1A60F04_287F_4688_A8F0_10BE0EA25775__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "SoapMethod.h"
   #include "SoapFault.h"
   #include "SoapEnvVersions.h"
  
  
  
  1.9       +3 -2      xml-axis/c/src/soap/SoapDeSerializer.cpp
  
  Index: SoapDeSerializer.cpp
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/soap/SoapDeSerializer.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SoapDeSerializer.cpp	27 Aug 2003 12:16:36 -0000	1.8
  +++ SoapDeSerializer.cpp	1 Sep 2003 07:28:29 -0000	1.9
  @@ -157,9 +157,10 @@
   			return FAIL;
   		break;
   	case USER_TYPE:
  -		if (pParam->m_Value.pBean)
  +		if (pParam->m_Value.pCplxObj)
   		{
  -			pParam->m_Value.pBean->DeSerialize(this);
  +			if (pParam->m_Value.pCplxObj->pObject && pParam->m_Value.pCplxObj->pDZFunct)
  +				pParam->m_Value.pCplxObj->pDZFunct(pParam->m_Value.pCplxObj->pObject, this);
   		}
   		else
   			return FAIL;
  
  
  
  1.11      +0 -4      xml-axis/c/src/soap/SoapDeSerializer.h
  
  Index: SoapDeSerializer.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/soap/SoapDeSerializer.h,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- SoapDeSerializer.h	27 Aug 2003 12:16:36 -0000	1.10
  +++ SoapDeSerializer.h	1 Sep 2003 07:28:29 -0000	1.11
  @@ -67,10 +67,6 @@
   #if !defined(AFX_SOAPDESERIALIZER_H__FD0E7C3B_B887_480A_9E2A_20736A88B09B__INCLUDED_)
   #define AFX_SOAPDESERIALIZER_H__FD0E7C3B_B887_480A_9E2A_20736A88B09B__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "../common/IWrapperSoapDeSerializer.h"
   #include "../common/IHandlerSoapDeSerializer.h"
   #include "XMLStreamHandler.h"
  
  
  
  1.6       +0 -4      xml-axis/c/src/soap/SoapEnvelope.h
  
  Index: SoapEnvelope.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/soap/SoapEnvelope.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SoapEnvelope.h	27 Aug 2003 12:16:36 -0000	1.5
  +++ SoapEnvelope.h	1 Sep 2003 07:28:29 -0000	1.6
  @@ -68,10 +68,6 @@
   #if !defined(AFX_SOAPENVELOPE_H__285E1A2E_AC87_4F69_BAF2_4D556F43EC7C__INCLUDED_)
   #define AFX_SOAPENVELOPE_H__285E1A2E_AC87_4F69_BAF2_4D556F43EC7C__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "SoapHeader.h"
   #include "SoapBody.h"
   #include "SoapEnvVersions.h"
  
  
  
  1.5       +0 -4      xml-axis/c/src/soap/SoapFault.h
  
  Index: SoapFault.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/soap/SoapFault.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SoapFault.h	13 Aug 2003 14:11:10 -0000	1.4
  +++ SoapFault.h	1 Sep 2003 07:28:29 -0000	1.5
  @@ -69,10 +69,6 @@
   #if !defined(AFX_SOAPFAULT_H__1E4329DF_59B2_4C55_971D_4B84B0FED7FF__INCLUDED_)
   #define AFX_SOAPFAULT_H__1E4329DF_59B2_4C55_971D_4B84B0FED7FF__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include <string>
   #include <map>
   #include "SoapFaults.h"
  
  
  
  1.6       +0 -4      xml-axis/c/src/soap/SoapHeader.h
  
  Index: SoapHeader.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/soap/SoapHeader.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SoapHeader.h	5 Aug 2003 08:18:55 -0000	1.5
  +++ SoapHeader.h	1 Sep 2003 07:28:29 -0000	1.6
  @@ -68,10 +68,6 @@
   #if !defined(AFX_SOAPHEADER_H__9EFB8E6F_A23B_4DC7_AB92_1E572A26B09C__INCLUDED_)
   #define AFX_SOAPHEADER_H__9EFB8E6F_A23B_4DC7_AB92_1E572A26B09C__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "HeaderBlock.h"
   #include "SoapEnvVersions.h"
   #include "../common/ISoapHeader.h"
  
  
  
  1.2       +0 -4      xml-axis/c/src/soap/SoapKeywordMapping.h
  
  Index: SoapKeywordMapping.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/soap/SoapKeywordMapping.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SoapKeywordMapping.h	27 Aug 2003 12:18:39 -0000	1.1
  +++ SoapKeywordMapping.h	1 Sep 2003 07:28:29 -0000	1.2
  @@ -65,10 +65,6 @@
   #if !defined(AFX_SOAPKEYWORDMAPPING_H__7ED17E2B_F729_4256_985A_0D8F70D55D2A__INCLUDED_)
   #define AFX_SOAPKEYWORDMAPPING_H__7ED17E2B_F729_4256_985A_0D8F70D55D2A__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "SoapEnvVersions.h"
   #include <map>
   
  
  
  
  1.8       +0 -4      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.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SoapMethod.h	27 Aug 2003 12:16:36 -0000	1.7
  +++ SoapMethod.h	1 Sep 2003 07:28:29 -0000	1.8
  @@ -68,10 +68,6 @@
   #if !defined(AFX_SOAPMETHOD_H__85B1A3F0_CD15_4607_AAAB_665A66AA8546__INCLUDED_)
   #define AFX_SOAPMETHOD_H__85B1A3F0_CD15_4607_AAAB_665A66AA8546__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "../common/Param.h"
   #include "../common/ISoapMethod.h"
   #include "SoapSerializer.h"
  
  
  
  1.16      +38 -2     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.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- SoapSerializer.cpp	27 Aug 2003 12:16:36 -0000	1.15
  +++ SoapSerializer.cpp	1 Sep 2003 07:28:29 -0000	1.16
  @@ -147,12 +147,36 @@
   {
   	Param* pParam = new Param();
   	pParam->SetValue(nType, Value);
  +	if(m_pSoapEnvelope && (m_pSoapEnvelope->m_pSoapBody) && (m_pSoapEnvelope->m_pSoapBody->m_pSoapMethod)) 
  +	{
  +		m_pSoapEnvelope->m_pSoapBody->m_pSoapMethod->setOutputParam(pParam);
  +	}
  +	return pParam;
  +}
   
  +IParam* SoapSerializer::setResponseParam(IArrayBean* pArrayBean)
  +{
  +	Param* pParam = new Param();
  +	pParam->m_Value.pIArray = pArrayBean;
  +	pParam->m_Type = XSD_ARRAY;
   	if(m_pSoapEnvelope && (m_pSoapEnvelope->m_pSoapBody) && (m_pSoapEnvelope->m_pSoapBody->m_pSoapMethod)) 
   	{
   		m_pSoapEnvelope->m_pSoapBody->m_pSoapMethod->setOutputParam(pParam);
   	}
  +	return pParam;
  +}
   
  +IParam* SoapSerializer::setResponseParam(void* pObject, void* pSZFunct, void* pDelFunct)
  +{ 
  +	Param* pParam = new Param();
  +	pParam->m_Value.pCplxObj = new ComplexObjectHandler;
  +	pParam->m_Value.pCplxObj->pObject = pObject;
  +	pParam->m_Value.pCplxObj->pSZFunct = (AXIS_SERIALIZE_FUNCT)pSZFunct;
  +	pParam->m_Value.pCplxObj->pDelFunct = (AXIS_OBJECT_DELETE_FUNCT)pDelFunct;
  +	if(m_pSoapEnvelope && (m_pSoapEnvelope->m_pSoapBody) && (m_pSoapEnvelope->m_pSoapBody->m_pSoapMethod)) 
  +	{
  +		m_pSoapEnvelope->m_pSoapBody->m_pSoapMethod->setOutputParam(pParam);
  +	}
   	return pParam;
   }
   
  @@ -238,10 +262,10 @@
   	return SUCCESS;
   }
   
  -const char* SoapSerializer::getNewNamespacePrefix()
  +const AxisChar* SoapSerializer::getNewNamespacePrefix()
   {
   	iCounter++;
  -	sprintf(cCounter, "ns%d", iCounter);
  +	swprintf(cCounter, L"ns%d", iCounter);
   	return cCounter;
   }
   
  @@ -293,6 +317,18 @@
   	ArrayBean* pAb = new ArrayBean();
   	pAb->m_type = nType;
   	pAb->m_value.sta = pArray;
  +	return pAb;
  +}
  +
  +IArrayBean* SoapSerializer::makeArrayBean(void* pObject, void* pSZFunct, void* pDelFunct, void* pSizeFunct)
  +{
  +	ArrayBean* pAb = new ArrayBean();
  +	pAb->m_type = USER_TYPE;
  +	pAb->m_value.cta = new ComplexObjectHandler;
  +	pAb->m_value.cta->pSZFunct = (AXIS_SERIALIZE_FUNCT)pSZFunct;
  +	pAb->m_value.cta->pDelFunct = (AXIS_OBJECT_DELETE_FUNCT)pDelFunct;
  +	pAb->m_value.cta->pSizeFunct = (AXIS_OBJECT_SIZE_FUNCT)pSizeFunct;
  +	pAb->m_value.cta->pObject = pObject;
   	return pAb;
   }
   
  
  
  
  1.14      +5 -6      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.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- SoapSerializer.h	27 Aug 2003 12:16:36 -0000	1.13
  +++ SoapSerializer.h	1 Sep 2003 07:28:29 -0000	1.14
  @@ -68,10 +68,6 @@
   #if !defined(AFX_SOAPSERIALIZER_H__C37229AD_BD54_430D_9619_E4574CF95334__INCLUDED_)
   #define AFX_SOAPSERIALIZER_H__C37229AD_BD54_430D_9619_E4574CF95334__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "../common/IWrapperSoapSerializer.h"
   #include "../common/IHandlerSoapSerializer.h"
   #include "../common/BasicTypeSerializer.h"
  @@ -90,7 +86,7 @@
   {
   private:
   	int iCounter;
  -	char cCounter[64];
  +	AxisChar cCounter[64];
   	SoapEnvelope* m_pSoapEnvelope;	
   	int m_iSoapVersion;
   	char m_cSerializedBuffer[SERIALIZE_BUFFER_SIZE];
  @@ -101,7 +97,7 @@
   	IWrapperSoapSerializer& operator<<(const char* cSerialized);
   	IWrapperSoapSerializer& operator<<(const AxisChar* cSerialized);
   	//ISoapSerializer& operator<<(const char *cSerialized);
  -	const char* getNewNamespacePrefix();
  +	const AxisChar* getNewNamespacePrefix();
   	int setSoapVersion(SOAP_VERSION);
   	int Init();
   	int SetOutputStream(const void* pStream);
  @@ -113,7 +109,10 @@
   	SoapSerializer();
   	virtual ~SoapSerializer();
   	IParam* setResponseParam(XSDTYPE nType, uParamValue Value);
  +	IParam* setResponseParam(IArrayBean* pArrayBean);
  +	IParam* setResponseParam(void* pObject, void* pDZFunct, void* pDelFunct);
   	IArrayBean* makeArrayBean(XSDTYPE nType, void* pArray);
  +	IArrayBean* makeArrayBean(void* pObject, void* pSZFunct, void* pDelFunct, void* pSizeFunct);
   public: //Basic Type Serializing methods
   	int removeSoapHeader();
   	int setHeaderBlock(HeaderBlock* pHeaderBlock);
  
  
  
  1.4       +0 -4      xml-axis/c/src/soap/URIMapping.h
  
  Index: URIMapping.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/soap/URIMapping.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- URIMapping.h	27 Aug 2003 12:16:36 -0000	1.3
  +++ URIMapping.h	1 Sep 2003 07:28:29 -0000	1.4
  @@ -68,10 +68,6 @@
   #if !defined(AFX_URIMAPPING_H__D5B347DD_E7B0_4C76_BCB2_A7C73CFE367D__INCLUDED_)
   #define AFX_URIMAPPING_H__D5B347DD_E7B0_4C76_BCB2_A7C73CFE367D__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   enum URITYPE { URI_XSI, URI_XSD, URI_ENC, URI_ENVELOPE, URI_UNKNOWN};
   #include <map>
   #include <string>
  
  
  
  1.7       +14 -9     xml-axis/c/src/soap/XMLStreamHandler.cpp
  
  Index: XMLStreamHandler.cpp
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/soap/XMLStreamHandler.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- XMLStreamHandler.cpp	27 Aug 2003 12:16:36 -0000	1.6
  +++ XMLStreamHandler.cpp	1 Sep 2003 07:28:29 -0000	1.7
  @@ -79,6 +79,7 @@
   	m_pBody = NULL;
   	m_pFault = NULL;
   	m_pMethod = NULL;
  +	m_pHeaderBlock = NULL;
   	m_it = NULL;
   }
   
  @@ -89,6 +90,7 @@
   	if (m_pBody) delete m_pBody;
   	if (m_pFault) delete m_pFault;
   	if (m_pMethod) delete m_pMethod;
  +	if (m_pHeaderBlock) delete m_pHeaderBlock;
   }
   /*
    * Please do a bench test with following parameter inside soap method
  @@ -223,7 +225,7 @@
   		break;
   	case SOAP_HEADER_BLOCK: //enf of a HeaderBlock
   		//Add HeaderBlock to Header
  -		m_pHead->addHeaderBlock(pHeaderBlock);
  +		m_pHead->addHeaderBlock(m_pHeaderBlock);
   
   		m_PL1= SOAP_UNKNOWN;
   		break;
  @@ -242,7 +244,7 @@
   	{
   		//Get the value of the header entry
   		CharacterElement* pCharacterElement= new CharacterElement(chars);
  -		pHeaderBlock->addChild(pCharacterElement);
  +		m_pHeaderBlock->addChild(pCharacterElement);
   	}
   }
   
  @@ -307,9 +309,9 @@
   						{
   							//custom data type
   							m_Param.m_Type = USER_TYPE;
  -							m_Param.m_Value.pBean = &m_AccessBean; //ArrayBean can be used as an AccessBean;
  -							m_Param.m_Value.pBean->m_TypeName = sType;
  -							m_Param.m_Value.pBean->m_URI = m_NsStack[sPrefix];
  +							m_Param.m_Value.pCplxObj = &m_AccessBean; //ArrayBean can be used as an AccessBean;
  +							m_Param.m_Value.pCplxObj->m_TypeName = sType;
  +							m_Param.m_Value.pCplxObj->m_URI = m_NsStack[sPrefix];
   						}
   					}
   					else
  @@ -437,6 +439,9 @@
   	if (m_pBody) delete m_pBody;
   	if (m_pFault) delete m_pFault;
   	if (m_pMethod) delete m_pMethod;
  +	m_ArrayBean.m_size.clear();
  +	m_AccessBean.Init();
  +	m_sLastElement = L"";
   	m_pEnv = NULL;
   	m_pHead = NULL;
   	m_pBody = NULL;
  @@ -559,14 +564,14 @@
   
   void XMLStreamHandler::createHeaderBlock(const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname, const Attributes &attrs)
   {
  -	pHeaderBlock= new HeaderBlock();
  +	m_pHeaderBlock= new HeaderBlock();
   	AxisString str;	
   	str = qname;
   	if (str.find(L':') != AxisString::npos) 
   	{
   		str = str.substr(0, str.find(L':'));
  -		pHeaderBlock->setPrefix(str.c_str());		
  +		m_pHeaderBlock->setPrefix(str.c_str());		
   	}
  -	pHeaderBlock->setLocalName(localname);
  -	pHeaderBlock->setUri(uri);
  +	m_pHeaderBlock->setLocalName(localname);
  +	m_pHeaderBlock->setUri(uri);
   }
  
  
  
  1.5       +2 -4      xml-axis/c/src/soap/XMLStreamHandler.h
  
  Index: XMLStreamHandler.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/soap/XMLStreamHandler.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XMLStreamHandler.h	27 Aug 2003 12:16:36 -0000	1.4
  +++ XMLStreamHandler.h	1 Sep 2003 07:28:29 -0000	1.5
  @@ -73,7 +73,6 @@
   #include <xercesc/framework/MemBufInputSource.hpp>
   
   #include "../common/Param.h"
  -#include "../common/AccessBean.h"
   #include "../common/ArrayBean.h"
   #include "SoapEnvelope.h"
   #include "SoapHeader.h"
  @@ -117,14 +116,13 @@
   	int Success();
   	Param m_Param; //Param to which each parameter data is extracted
   	ArrayBean m_ArrayBean;
  -	AccessBean m_AccessBean;
  +	ComplexObjectHandler m_AccessBean;
   	int m_Success;
   	SOAP_PARSE_LEVEL m_PL0;
   	SOAP_PARSE_LEVEL m_PL1;
   	SOAP_PARSE_LEVEL m_PL2;
   	AxisString m_sLastElement;
  -
  -	HeaderBlock* pHeaderBlock;
  +	HeaderBlock* m_pHeaderBlock;
   private:
   	void createHeaderBlock(const XMLCh *const uri,const XMLCh *const localname,const XMLCh *const qname,const Attributes &attrs);
   	int m_nParamNestingLevel;
  
  
  
  1.6       +0 -4      xml-axis/c/src/wsdd/WSDDDeployment.h
  
  Index: WSDDDeployment.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/wsdd/WSDDDeployment.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- WSDDDeployment.h	27 Aug 2003 12:16:37 -0000	1.5
  +++ WSDDDeployment.h	1 Sep 2003 07:28:30 -0000	1.6
  @@ -69,10 +69,6 @@
   #if !defined(AFX_WSDDDEPLOYMENT_H__2B3E0205_06F3_47C1_8D9C_479CBFB8ACC2__INCLUDED_)
   #define AFX_WSDDDEPLOYMENT_H__2B3E0205_06F3_47C1_8D9C_479CBFB8ACC2__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "WSDDService.h"
   #include "WSDDHandler.h"
   #include "WSDDTransport.h"
  
  
  
  1.9       +6 -6      xml-axis/c/src/wsdd/WSDDDocument.cpp
  
  Index: WSDDDocument.cpp
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/wsdd/WSDDDocument.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- WSDDDocument.cpp	27 Aug 2003 12:16:37 -0000	1.8
  +++ WSDDDocument.cpp	1 Sep 2003 07:28:30 -0000	1.9
  @@ -348,10 +348,10 @@
   		do 
   		{
   			pos = value.find(ROLENAME_SEPARATOR, prepos);
  -//			cout << value.substr(prepos, pos) << endl;
  -			m_pService->AddAllowedRole(value.substr(prepos, pos));
  +			if (AxisString::npos == pos) break;
  +			m_pService->AddAllowedRole(value.substr(prepos, pos-prepos));
   			prepos = pos + 1;
  -		} while (AxisString::npos != pos);
  +		} while (true);
   	}
   }
   
  @@ -363,10 +363,10 @@
   		do 
   		{
   			pos = value.find(METHODNAME_SEPARATOR, prepos);
  -//			cout << value.substr(prepos, pos) << endl;
  -			m_pService->AddAllowedMethod(value.substr(prepos, pos));
  +			if (AxisString::npos == pos) break;
  +			m_pService->AddAllowedMethod(value.substr(prepos, pos-prepos));
   			prepos = pos + 1;
  -		} while (AxisString::npos != pos);
  +		} while (true);
   	}
   }
   
  
  
  
  1.7       +0 -4      xml-axis/c/src/wsdd/WSDDHandler.h
  
  Index: WSDDHandler.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/wsdd/WSDDHandler.h,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- WSDDHandler.h	27 Aug 2003 12:16:37 -0000	1.6
  +++ WSDDHandler.h	1 Sep 2003 07:28:30 -0000	1.7
  @@ -69,10 +69,6 @@
   #if !defined(AFX_WSDDHANDLER_H__51DC7642_033D_443B_9D97_5825C38B23DB__INCLUDED_)
   #define AFX_WSDDHANDLER_H__51DC7642_033D_443B_9D97_5825C38B23DB__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "../common/GDefine.h"
   #include <string>
   #include <map>
  
  
  
  1.6       +3 -1      xml-axis/c/src/wsdd/WSDDService.cpp
  
  Index: WSDDService.cpp
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/wsdd/WSDDService.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- WSDDService.cpp	27 Aug 2003 12:16:37 -0000	1.5
  +++ WSDDService.cpp	1 Sep 2003 07:28:30 -0000	1.6
  @@ -122,10 +122,12 @@
   	m_AllowedMethods.push_back(sMethodName);
   }
   
  +#include <xercesc/util/XMLString.hpp>
  +XERCES_CPP_NAMESPACE_USE
  +
   bool WSDDService::IsAllowedMethod(const AxisString& sServiceName) const
   {
   	list<AxisString>::const_iterator iter;
  -
   	for(iter = m_AllowedMethods.begin();iter != m_AllowedMethods.end();iter++)
   	{
   		if((*iter) == sServiceName)
  
  
  
  1.5       +0 -4      xml-axis/c/src/wsdd/WSDDService.h
  
  Index: WSDDService.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/wsdd/WSDDService.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- WSDDService.h	27 Aug 2003 12:16:37 -0000	1.4
  +++ WSDDService.h	1 Sep 2003 07:28:30 -0000	1.5
  @@ -68,10 +68,6 @@
   #if !defined(AFX_WSDDSERVICE_H__F5F6BB58_0733_445B_97E3_B7488446AC47__INCLUDED_)
   #define AFX_WSDDSERVICE_H__F5F6BB58_0733_445B_97E3_B7488446AC47__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "WSDDHandler.h"
   
   #include <string>
  
  
  
  1.3       +0 -4      xml-axis/c/src/wsdd/WSDDTransport.h
  
  Index: WSDDTransport.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/wsdd/WSDDTransport.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- WSDDTransport.h	13 Aug 2003 13:31:42 -0000	1.2
  +++ WSDDTransport.h	1 Sep 2003 07:28:30 -0000	1.3
  @@ -68,10 +68,6 @@
   #if !defined(AFX_WSDDTRANSPORT_H__A7F3A046_7764_4EAB_8867_B26A18F1A931__INCLUDED_)
   #define AFX_WSDDTRANSPORT_H__A7F3A046_7764_4EAB_8867_B26A18F1A931__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include "WSDDHandler.h"
   #include <map>
   
  
  
  
  1.2       +0 -4      xml-axis/c/src/xml/QName.h
  
  Index: QName.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/xml/QName.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- QName.h	27 Jun 2003 04:56:16 -0000	1.1
  +++ QName.h	1 Sep 2003 07:28:30 -0000	1.2
  @@ -68,10 +68,6 @@
   #if !defined(AFX_QNAME_H__7E4E7E7B_F051_4989_89A6_F0248109C410__INCLUDED_)
   #define AFX_QNAME_H__7E4E7E7B_F051_4989_89A6_F0248109C410__INCLUDED_
   
  -#if _MSC_VER > 1000
  -#pragma once
  -#endif // _MSC_VER > 1000
  -
   #include <string>
   
   using namespace std;
  
  
  

Mime
View raw message