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 su...@apache.org on 2003/10/22 05:40:05 UTC

cvs commit: ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp ArrayParamWriter.java BeanParamWriter.java ClientStubHeaderWriter.java ClientStubWriter.java ParamCPPFileWriter.java ParamWriter.java ParmHeaderFileWriter.java ServiceHeaderWriter.java WrapHeaderWriter.java WrapWriter.java

susantha    2003/10/21 20:40:05

  Modified:    c/include/axis/common AxisWrapperAPI.h IParam.h
               c/src/client Call.cpp
               c/src/common ArrayBean.cpp BasicTypeSerializer.cpp Param.cpp
               c/src/engine HandlerLoader.cpp
               c/src/soap SoapDeSerializer.cpp SoapSerializer.cpp
               c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c
                        WrapHeaderWriter.java WrapWriter.java
               c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp
                        ArrayParamWriter.java BeanParamWriter.java
                        ClientStubHeaderWriter.java ClientStubWriter.java
                        ParamCPPFileWriter.java ParamWriter.java
                        ParmHeaderFileWriter.java ServiceHeaderWriter.java
                        WrapHeaderWriter.java WrapWriter.java
  Log:
  fixed bugs found when doing interop tests specified at www.whitemesa.com/interop.htm
  
  Revision  Changes    Path
  1.2       +25 -0     ws-axis/c/include/axis/common/AxisWrapperAPI.h
  
  Index: AxisWrapperAPI.h
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/include/axis/common/AxisWrapperAPI.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AxisWrapperAPI.h	20 Oct 2003 03:18:19 -0000	1.1
  +++ AxisWrapperAPI.h	22 Oct 2003 03:40:04 -0000	1.2
  @@ -66,7 +66,32 @@
   #define AFX_AXISWRAPPERAPI_H__6E27008D_DCA0_4F28_AC82_FEEBE1A1CBBB__INCLUDED_
   
   #include "GDefine.h"
  +#include "IWrapperSoapDeSerializer.h"
  +#include "IWrapperSoapSerializer.h"
   
  +/**
  + * Function that deserializes a custom type 
  + */
  +typedef int (* AXIS_DESERIALIZE_FUNCT)(void*, IWrapperSoapDeSerializer*);
  +/**
  + * Function used to create a custom type. bArray is true if array of objects to be
  + * created. Then nSize is the size of that array.
  + */
  +typedef void* (* AXIS_OBJECT_CREATE_FUNCT)(bool bArray=false, int nSize=0);
  +/**
  + * Function used to delete a custom type. 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);
  +/**
  + * Function that serializes a custom type. 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);
  +/**
  + * Function that is used to get the size of an object of a custom type.
  + */
  +typedef int (* AXIS_OBJECT_SIZE_FUNCT)(void);
   
   
   #endif // !defined(AFX_AXISWRAPPERAPI_H__6E27008D_DCA0_4F28_AC82_FEEBE1A1CBBB__INCLUDED_)
  
  
  
  1.2       +1 -28     ws-axis/c/include/axis/common/IParam.h
  
  Index: IParam.h
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/include/axis/common/IParam.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- IParam.h	20 Oct 2003 03:18:19 -0000	1.1
  +++ IParam.h	22 Oct 2003 03:40:04 -0000	1.2
  @@ -65,39 +65,12 @@
   #if !defined(AFX_IPARAM_H__25C278BB_5875_49E6_A3EC_B6AD3E543D69__INCLUDED_)
   #define AFX_IPARAM_H__25C278BB_5875_49E6_A3EC_B6AD3E543D69__INCLUDED_
   
  -#include "TypeMapping.h"
  -#include "IWrapperSoapDeSerializer.h"
  -#include "IWrapperSoapSerializer.h"
  -
  +#include "AxisWrapperAPI.h"
   #include "TypeMapping.h"
   #include "time.h"
   
   #include <string>
   using namespace std;
  -
  -/**
  - * Function that deserializes a custom type 
  - */
  -typedef int (* AXIS_DESERIALIZE_FUNCT)(void*, IWrapperSoapDeSerializer*);
  -/**
  - * Function used to create a custom type. bArray is true if array of objects to be
  - * created. Then nSize is the size of that array.
  - */
  -typedef void* (* AXIS_OBJECT_CREATE_FUNCT)(bool bArray=false, int nSize=0);
  -/**
  - * Function used to delete a custom type. 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);
  -/**
  - * Function that serializes a custom type. 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);
  -/**
  - * Function that is used to get the size of an object of a custom type.
  - */
  -typedef int (* AXIS_OBJECT_SIZE_FUNCT)(void);
   
   class ComplexObjectHandler
   {
  
  
  
  1.19      +28 -28    ws-axis/c/src/client/Call.cpp
  
  Index: Call.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/client/Call.cpp,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- Call.cpp	20 Oct 2003 03:25:56 -0000	1.18
  +++ Call.cpp	22 Oct 2003 03:40:04 -0000	1.19
  @@ -104,69 +104,69 @@
   	m_pIWSSZ->createSoapMethod(pchOperation, m_pIWSSZ->getNewNamespacePrefix(), pchNamespace);
   }
   
  -void Call::AddParameter(int nValue,const char* pchName)
  +void Call::AddParameter(int nValue,const char* pchName, XSDTYPE nType)
   {
  -	m_pIWSSZ->AddOutputParam(pchName, nValue);
  +	m_pIWSSZ->AddOutputParam(pchName, nValue, nType);
   }
   
  -void Call::AddParameter(unsigned int unValue,const char* pchName)
  +void Call::AddParameter(unsigned int unValue,const char* pchName, XSDTYPE nType)
   {
  -	m_pIWSSZ->AddOutputParam(pchName, unValue);
  +	m_pIWSSZ->AddOutputParam(pchName, unValue, nType);
   }
   
  -void Call::AddParameter(short sValue,const char* pchName)
  +void Call::AddParameter(short sValue,const char* pchName, XSDTYPE nType)
   {
  -	m_pIWSSZ->AddOutputParam(pchName, sValue);
  +	m_pIWSSZ->AddOutputParam(pchName, sValue, nType);
   }
   
  -void Call::AddParameter(unsigned short usValue,const char* pchName)
  +void Call::AddParameter(unsigned short usValue,const char* pchName, XSDTYPE nType)
   {
  -	m_pIWSSZ->AddOutputParam(pchName, usValue);
  +	m_pIWSSZ->AddOutputParam(pchName, usValue, nType);
   }
   
  -void Call::AddParameter(long lValue,const char* pchName)
  +void Call::AddParameter(long lValue,const char* pchName, XSDTYPE nType)
   {
  -	m_pIWSSZ->AddOutputParam(pchName, lValue);
  +	m_pIWSSZ->AddOutputParam(pchName, lValue, nType);
   }
   
  -void Call::AddParameter(unsigned long ulValue,const char* pchName)
  +void Call::AddParameter(unsigned long ulValue,const char* pchName, XSDTYPE nType)
   {
  -	m_pIWSSZ->AddOutputParam(pchName, ulValue);
  +	m_pIWSSZ->AddOutputParam(pchName, ulValue, nType);
   }
   
  -void Call::AddParameter(char cValue,const char* pchName)
  +void Call::AddParameter(char cValue,const char* pchName, XSDTYPE nType)
   {
  -	m_pIWSSZ->AddOutputParam(pchName, cValue);
  +	m_pIWSSZ->AddOutputParam(pchName, cValue, nType);
   }
   
  -void Call::AddParameter(unsigned char ucValue,const char* pchName)
  +void Call::AddParameter(unsigned char ucValue,const char* pchName, XSDTYPE nType)
   {
  -	m_pIWSSZ->AddOutputParam(pchName, ucValue);
  +	m_pIWSSZ->AddOutputParam(pchName, ucValue, nType);
   }
   
  -void Call::AddParameter(float fValue,const char* pchName)
  +void Call::AddParameter(float fValue,const char* pchName, XSDTYPE nType)
   {
  -	m_pIWSSZ->AddOutputParam(pchName, fValue);
  +	m_pIWSSZ->AddOutputParam(pchName, fValue, nType);
   }
   
  -void Call::AddParameter(double dValue,const char* pchName)
  +void Call::AddParameter(double dValue,const char* pchName, XSDTYPE nType)
   {
  -	m_pIWSSZ->AddOutputParam(pchName, dValue);
  +	m_pIWSSZ->AddOutputParam(pchName, dValue, nType);
   }
   
  -void Call::AddParameter(struct tm tValue,const char* pchName)
  +void Call::AddParameter(struct tm tValue,const char* pchName, XSDTYPE nType)
   {
  -	m_pIWSSZ->AddOutputParam(pchName, tValue);
  +	m_pIWSSZ->AddOutputParam(pchName, tValue, nType);
   }
   
  -void Call::AddParameter(const AxisChar* pStrValue,const char* pchName)
  +void Call::AddParameter(const AxisChar* pStrValue,const char* pchName, XSDTYPE nType)
   {
  -	m_pIWSSZ->AddOutputParam(pchName, pStrValue);
  +	m_pIWSSZ->AddOutputParam(pchName, pStrValue, nType);
   }
   
  -void Call::AddParameter(const AxisString& sStrValue,const char* pchName)
  +void Call::AddParameter(const AxisString& sStrValue,const char* pchName, XSDTYPE nType)
   {
  -	m_pIWSSZ->AddOutputParam(pchName, sStrValue.c_str());	
  +	m_pIWSSZ->AddOutputParam(pchName, sStrValue.c_str(), nType);	
   }
   
   /**
  @@ -336,7 +336,7 @@
   					return SUCCESS;
   				}
   			}
  -			return SUCCESS;
  +			return FAIL;
   		}
   		return FAIL;
   	}
  @@ -436,6 +436,6 @@
   	{
   		m_pArray->m_Array = m_pIWSDZ->CreateArray(m_nArrayType, m_pArray->m_Size); 
   	}
  -	return (NULL != m_pArray->m_Array);
  +	return (NULL != m_pArray->m_Array)?SUCCESS:FAIL;
   }
   
  
  
  
  1.13      +7 -7      ws-axis/c/src/common/ArrayBean.cpp
  
  Index: ArrayBean.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/common/ArrayBean.cpp,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- ArrayBean.cpp	20 Oct 2003 03:24:29 -0000	1.12
  +++ ArrayBean.cpp	22 Oct 2003 03:40:04 -0000	1.13
  @@ -355,7 +355,7 @@
   			int blocksize = GetArrayBlockSize(it);
   			for (int ix=0;ix<blocksize;ix++)
   			{
  -				pSZ << m_BTSZ.serialize(m_ItemName.c_str(), *p);
  +				pSZ << m_BTSZ.serialize(m_ItemName.c_str(), *p, m_type);
   				p++;
   			}
   		}
  @@ -368,7 +368,7 @@
   			int blocksize = GetArrayBlockSize(it);
   			for (int ix=0;ix<blocksize;ix++)
   			{
  -				pSZ << m_BTSZ.serialize(m_ItemName.c_str(), *p);
  +				pSZ << m_BTSZ.serialize(m_ItemName.c_str(), *p, m_type);
   				p++;
   			}
   		}
  @@ -383,7 +383,7 @@
   			int blocksize = GetArrayBlockSize(it);
   			for (int ix=0;ix<blocksize;ix++)
   			{
  -				pSZ << m_BTSZ.serialize(m_ItemName.c_str(), *p);
  +				pSZ << m_BTSZ.serialize(m_ItemName.c_str(), *p, m_type);
   				p++;
   			}
   		}
  @@ -396,7 +396,7 @@
   			int blocksize = GetArrayBlockSize(it);
   			for (int ix=0;ix<blocksize;ix++)
   			{
  -				pSZ << m_BTSZ.serialize(m_ItemName.c_str(), *p);
  +				pSZ << m_BTSZ.serialize(m_ItemName.c_str(), *p, m_type);
   				p++;
   			}
   		}
  @@ -429,7 +429,7 @@
   			int blocksize = GetArrayBlockSize(it);
   			for (int ix=0;ix<blocksize;ix++)
   			{
  -				pSZ << m_BTSZ.serialize(m_ItemName.c_str(), *pInt);
  +				pSZ << m_BTSZ.serialize(m_ItemName.c_str(), *pInt, m_type);
   				pInt++;
   			}
   		}
  @@ -441,7 +441,7 @@
   			int blocksize = GetArrayBlockSize(it);
   			for (int ix=0;ix<blocksize;ix++)
   			{
  -				pSZ << m_BTSZ.serialize(m_ItemName.c_str(), *pFloat);
  +				pSZ << m_BTSZ.serialize(m_ItemName.c_str(), *pFloat, m_type);
   				pFloat++;
   			}
   		}
  @@ -458,7 +458,7 @@
   			int blocksize = GetArrayBlockSize(it);
   			for (int ix=0;ix<blocksize;ix++)
   			{
  -				pSZ << m_BTSZ.serialize(m_ItemName.c_str(), pStr->c_str());
  +				pSZ << m_BTSZ.serialize(m_ItemName.c_str(), pStr->c_str(), m_type);
   				pStr++;
   			}
   		}
  
  
  
  1.15      +22 -16    ws-axis/c/src/common/BasicTypeSerializer.cpp
  
  Index: BasicTypeSerializer.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/common/BasicTypeSerializer.cpp,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- BasicTypeSerializer.cpp	20 Oct 2003 03:24:29 -0000	1.14
  +++ BasicTypeSerializer.cpp	22 Oct 2003 03:40:04 -0000	1.15
  @@ -83,49 +83,49 @@
   
   }
   
  -const AxisChar* BasicTypeSerializer::serialize(const AxisChar* sName, int nValue)
  +const AxisChar* BasicTypeSerializer::serialize(const AxisChar* sName, int nValue, XSDTYPE type)
   {
  -	m_Type = XSD_INT;
  +	m_Type = type;
   	AxisSprintf(m_Buf, BTS_BUFFSIZE, "%d", nValue);
   	HelpSerialize(sName, sName);
   	return m_sSZ.c_str();
   }
   
  -const AxisChar* BasicTypeSerializer::serialize(const AxisChar* sName, unsigned int unValue)
  +const AxisChar* BasicTypeSerializer::serialize(const AxisChar* sName, unsigned int unValue, XSDTYPE type)
   {
  -	m_Type = XSD_UNSIGNEDINT;
  +	m_Type = type;
   	AxisSprintf(m_Buf, BTS_BUFFSIZE, "%d", unValue);
   	HelpSerialize(sName, sName);
   	return m_sSZ.c_str();
   }
   
  -const AxisChar* BasicTypeSerializer::serialize(const AxisChar* sName, char cValue)
  +const AxisChar* BasicTypeSerializer::serialize(const AxisChar* sName, char cValue, XSDTYPE type)
   {
  -	m_Type = XSD_BYTE;
  +	m_Type = type;
   	AxisSprintf(m_Buf, BTS_BUFFSIZE, "%c", cValue);
   	HelpSerialize(sName, sName);
   	return m_sSZ.c_str();
   }
   
  -const AxisChar* BasicTypeSerializer::serialize(const AxisChar* sName, unsigned char ucValue)
  +const AxisChar* BasicTypeSerializer::serialize(const AxisChar* sName, unsigned char ucValue, XSDTYPE type)
   {
  -	m_Type = XSD_UNSIGNEDBYTE;
  +	m_Type = type;
   	AxisSprintf(m_Buf, BTS_BUFFSIZE, "%c", ucValue);
   	HelpSerialize(sName, sName);
   	return m_sSZ.c_str();
   }
   
  -const AxisChar* BasicTypeSerializer::serialize(const AxisChar* sName, short sValue)
  +const AxisChar* BasicTypeSerializer::serialize(const AxisChar* sName, short sValue, XSDTYPE type)
   {
  -	m_Type = XSD_SHORT;
  +	m_Type = type;
   	AxisSprintf(m_Buf, BTS_BUFFSIZE, "%d", sValue);
   	HelpSerialize(sName, sName);
   	return m_sSZ.c_str();
   }
   
  -const AxisChar* BasicTypeSerializer::serialize(const AxisChar* sName, unsigned short usValue)
  +const AxisChar* BasicTypeSerializer::serialize(const AxisChar* sName, unsigned short usValue, XSDTYPE type)
   {
  -	m_Type = XSD_UNSIGNEDSHORT;
  +	m_Type = type;
   	AxisSprintf(m_Buf, BTS_BUFFSIZE, "%d", usValue);
   	HelpSerialize(sName, sName);
   	return m_sSZ.c_str();
  @@ -139,17 +139,17 @@
   	return m_sSZ.c_str();
   }
   
  -const AxisChar* BasicTypeSerializer::serialize(const AxisChar* sName, unsigned long ulValue)
  +const AxisChar* BasicTypeSerializer::serialize(const AxisChar* sName, unsigned long ulValue, XSDTYPE type)
   {
  -	m_Type = XSD_UNSIGNEDLONG;
  +	m_Type = type;
   	AxisSprintf(m_Buf, BTS_BUFFSIZE, "%d", ulValue);
   	HelpSerialize(sName, sName);
   	return m_sSZ.c_str();
   }
   
  -const AxisChar* BasicTypeSerializer::serialize(const AxisChar* sName, float fValue)
  +const AxisChar* BasicTypeSerializer::serialize(const AxisChar* sName, float fValue, XSDTYPE type)
   {
  -	m_Type = XSD_FLOAT;
  +	m_Type = type;
   	AxisSprintf(m_Buf, BTS_BUFFSIZE, "%f", fValue);
   	HelpSerialize(sName, sName);
   	return m_sSZ.c_str();
  @@ -187,6 +187,11 @@
   	switch (m_Type)
   	{
   	case XSD_STRING:
  +	case XSD_HEXBINARY:
  +	case XSD_BASE64BINARY:
  +	case XSD_ANYURI:
  +	case XSD_QNAME:
  +	case XSD_NOTATION:			
   		m_AuxStr = sValue;
   		m_sSZ += GetEntityReferenced(m_AuxStr).c_str();	
   		break;
  @@ -204,6 +209,7 @@
   	switch (type)
   	{
   	case XSD_INT: return "int";
  +	case XSD_BOOLEAN: return "boolean";
       case XSD_UNSIGNEDINT: return "unsignedInt";
       case XSD_SHORT: return "short";
       case XSD_UNSIGNEDSHORT: return "unsignedShort";
  
  
  
  1.23      +17 -12    ws-axis/c/src/common/Param.cpp
  
  Index: Param.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/common/Param.cpp,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- Param.cpp	20 Oct 2003 03:24:29 -0000	1.22
  +++ Param.cpp	22 Oct 2003 03:40:04 -0000	1.23
  @@ -77,7 +77,7 @@
   // Construction/Destruction
   //////////////////////////////////////////////////////////////////////
   
  -bool AxisEngine::m_bServer;
  +int AxisEngine::m_bServer;
   
   Param::Param(const Param& param)
   {
  @@ -619,39 +619,40 @@
   	AxisString ATprefix;
   	switch (m_Type){
   	case XSD_INT:
  -        pSZ << m_BTSZ.serialize(m_sName.c_str(), m_Value.nValue);
  +	case XSD_BOOLEAN:
  +        pSZ << m_BTSZ.serialize(m_sName.c_str(), m_Value.nValue, m_Type);
   		break; 
       case XSD_UNSIGNEDINT:
  -        pSZ << m_BTSZ.serialize(m_sName.c_str(), m_Value.unValue);
  +        pSZ << m_BTSZ.serialize(m_sName.c_str(), m_Value.unValue, m_Type);
   		break;           
       case XSD_SHORT:
  -        pSZ << m_BTSZ.serialize(m_sName.c_str(), m_Value.sValue);
  +        pSZ << m_BTSZ.serialize(m_sName.c_str(), m_Value.sValue, m_Type);
   		break; 
       case XSD_UNSIGNEDSHORT:
  -        pSZ << m_BTSZ.serialize(m_sName.c_str(), m_Value.usValue);
  +        pSZ << m_BTSZ.serialize(m_sName.c_str(), m_Value.usValue, m_Type);
   		break;         
       case XSD_BYTE:
  -        pSZ << m_BTSZ.serialize(m_sName.c_str(), m_Value.cValue);
  +        pSZ << m_BTSZ.serialize(m_sName.c_str(), m_Value.cValue, m_Type);
   		break; 
       case XSD_UNSIGNEDBYTE:
  -        pSZ << m_BTSZ.serialize(m_sName.c_str(), m_Value.ucValue);
  +        pSZ << m_BTSZ.serialize(m_sName.c_str(), m_Value.ucValue, m_Type);
   		break;
       case XSD_LONG:
       case XSD_INTEGER:
  -        pSZ << m_BTSZ.serialize(m_sName.c_str(), m_Value.lValue);
  +        pSZ << m_BTSZ.serialize(m_sName.c_str(), m_Value.lValue, m_Type);
   		break;        
       case XSD_UNSIGNEDLONG:
  -        pSZ << m_BTSZ.serialize(m_sName.c_str(), m_Value.ulValue);
  +        pSZ << m_BTSZ.serialize(m_sName.c_str(), m_Value.ulValue, m_Type);
   		break;
   	case XSD_FLOAT:
  -		pSZ << m_BTSZ.serialize(m_sName.c_str(), m_Value.fValue);
  +		pSZ << m_BTSZ.serialize(m_sName.c_str(), m_Value.fValue, m_Type);
   		break;
       case XSD_DOUBLE:
       case XSD_DECIMAL:
  -		pSZ << m_BTSZ.serialize(m_sName.c_str(), m_Value.dValue);
  +		pSZ << m_BTSZ.serialize(m_sName.c_str(), m_Value.dValue, m_Type);
   		break;              
   	case XSD_STRING:
  -		pSZ << m_BTSZ.serialize(m_sName.c_str(), m_sValue.c_str());
  +		pSZ << m_BTSZ.serialize(m_sName.c_str(), m_sValue.c_str(), m_Type);
   		break;
   	case XSD_HEXBINARY:
   		pSZ << m_BTSZ.serialize(m_sName.c_str(), m_sValue.c_str(), XSD_HEXBINARY);
  @@ -773,6 +774,9 @@
   	case XSD_STRING:
   	case XSD_HEXBINARY:
   	case XSD_BASE64BINARY:
  +	case XSD_ANYURI:
  +	case XSD_QNAME:
  +	case XSD_NOTATION:			
   		m_sValue = sValue;
   		break;
       case XSD_DURATION:
  @@ -798,6 +802,7 @@
   	switch (m_Type)
   	{
   	case XSD_INT:
  +	case XSD_BOOLEAN:
           m_Value.nValue = Value.nValue;
   		break;
   	case XSD_UNSIGNEDINT:
  
  
  
  1.15      +3 -0      ws-axis/c/src/engine/HandlerLoader.cpp
  
  Index: HandlerLoader.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/engine/HandlerLoader.cpp,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- HandlerLoader.cpp	20 Oct 2003 03:22:53 -0000	1.14
  +++ HandlerLoader.cpp	22 Oct 2003 03:40:04 -0000	1.15
  @@ -60,6 +60,9 @@
    * @author Susantha Kumara (skumara@virtusa.com)
    *
    */
  +#ifdef WIN32
  +#pragma warning (disable : 4390) //empty controlled statement found;
  +#endif
   
   #include <axis/engine/HandlerLoader.h>
   #include <stdio.h>
  
  
  
  1.17      +51 -17    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.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- SoapDeSerializer.cpp	20 Oct 2003 03:25:19 -0000	1.16
  +++ SoapDeSerializer.cpp	22 Oct 2003 03:40:05 -0000	1.17
  @@ -84,6 +84,7 @@
       m_pParser->setContentHandler(m_pHandler);
       m_pParser->setErrorHandler(m_pHandler);
   	m_pInputStream = NULL;
  +	m_pLastArrayParam = NULL;
   }
   
   SoapDeSerializer::~SoapDeSerializer()
  @@ -185,6 +186,7 @@
   int SoapDeSerializer::Init()
   {
   	m_hugebuffer[0] = '\0';
  +	m_pLastArrayParam = NULL;
   	m_pHandler->Init();
   	return SUCCESS;
   }
  @@ -245,6 +247,41 @@
   	return Array;
   }
   
  +int SoapDeSerializer::GetArraySize()
  +{
  +	m_pLastArrayParam = (Param*)GetParam();
  +	if (m_pLastArrayParam)
  +		return m_pLastArrayParam->GetArraySize();
  +	else
  +		return 0;
  +}
  +
  +int SoapDeSerializer::GetArray(Axis_Array* pArray, XSDTYPE nType)
  +{
  +	if (!m_pLastArrayParam) 
  +	{ //This cannot happen unless there is something wrong with wrapper
  +		DeleteArray(pArray, nType);
  +		return FAIL;
  +	}
  +	if (XSD_ARRAY != m_pLastArrayParam->GetType())//UNEXPECTED_PARAM_TYPE
  +	{ //This cannot happen unless there is something wrong with wrapper
  +		DeleteArray(pArray, nType);
  +		return FAIL;
  +	}
  +	
  +	if (SUCCESS != m_pLastArrayParam->SetArrayElements((void*)(pArray->m_Array)))
  +	{
  +		DeleteArray(pArray, nType);
  +		return FAIL;
  +	}
  +	if (SUCCESS != Deserialize(m_pLastArrayParam,0))
  +	{
  +		DeleteArray(pArray, nType);
  +		return FAIL;
  +	}
  +	return SUCCESS;
  +}
  +
   Axis_Array SoapDeSerializer::GetArray(XSDTYPE nType)
   {
   	Axis_Array Array = {NULL, 0};
  @@ -266,21 +303,16 @@
   		return Array; //CF_ZERO_ARRAY_SIZE_ERROR
   	if (SUCCESS != param->SetArrayElements((void*)(Array.m_Array)))
   	{
  -		DeleteArray(Array.m_Array, nType);
  -		Array.m_Array = NULL;
  -		Array.m_Size = 0;
  +		DeleteArray(&Array, nType);
   		return Array;
   	}
   	if (SUCCESS != Deserialize(param,0))
   	{
  -		DeleteArray(Array.m_Array, nType);
  -		Array.m_Array = NULL;
  -		Array.m_Size = 0;
  +		DeleteArray(&Array, nType);
   		return Array;
   	}
   	return Array;
   }
  -
   void* SoapDeSerializer::GetObject(void* pDZFunct, void* pCreFunct, void* pDelFunct, const AxisChar* pchTypeName, const AxisChar* pchURI)
   {
   	Param *param = (Param*)GetParam();
  @@ -475,37 +507,37 @@
   	}
   }
   
  -void SoapDeSerializer::DeleteArray(void* pArray, XSDTYPE nType)
  +void SoapDeSerializer::DeleteArray(Axis_Array* pArray , XSDTYPE nType)
   {
   	switch (nType)
   	{
   	case XSD_INT:
   	case XSD_UNSIGNEDINT:
   	case XSD_BOOLEAN:
  -		delete [] ((int*)pArray); return;
  +		delete [] ((int*)pArray->m_Array); break;
   	case XSD_FLOAT:
  -		delete [] ((float*)pArray); return;
  +		delete [] ((float*)pArray->m_Array); break;
   	case XSD_STRING:
   	case XSD_HEXBINARY:
   	case XSD_BASE64BINARY:
   	case XSD_ANYURI:
   	case XSD_QNAME:
   	case XSD_NOTATION:
  -		delete [] ((AxisString*)pArray); return;
  +		delete [] ((AxisString*)pArray->m_Array); break;
   	case XSD_LONG:
   	case XSD_UNSIGNEDLONG:
   	case XSD_INTEGER:
   	case XSD_DURATION:
  -		delete [] ((long*)pArray); return;
  +		delete [] ((long*)pArray->m_Array); break;
   	case XSD_SHORT:
   	case XSD_UNSIGNEDSHORT:
  -		delete [] ((short*)pArray); return;
  +		delete [] ((short*)pArray->m_Array); break;
   	case XSD_BYTE:
   	case XSD_UNSIGNEDBYTE:
  -		delete [] ((char*)pArray); return;
  +		delete [] ((char*)pArray->m_Array); break;
   	case XSD_DOUBLE:
   	case XSD_DECIMAL:
  -		delete [] ((double*)pArray); return;
  +		delete [] ((double*)pArray->m_Array); break;
   	case XSD_DATETIME:
   	case XSD_TIME:
   	case XSD_DATE:
  @@ -514,8 +546,10 @@
   	case XSD_MONTHDAY:
   	case XSD_DAY:
   	case XSD_MONTH:
  -		delete [] ((tm*)pArray); return;
  +		delete [] ((tm*)pArray->m_Array); break;
   	default:
  -		return;
  +		break;
   	}
  +	pArray->m_Array = NULL;
  +	pArray->m_Size = 0;
   }
  
  
  
  1.29      +44 -50    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.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- SoapSerializer.cpp	20 Oct 2003 03:25:19 -0000	1.28
  +++ SoapSerializer.cpp	22 Oct 2003 03:40:05 -0000	1.29
  @@ -60,6 +60,7 @@
    *
    *
    * @author Roshan Weerasuriya (roshan@jkcs.slt.lk)
  + * @author Susantha Kumara (susantha@opensource.lk, skumara@virtusa.com)
    *
    */
   
  @@ -142,18 +143,11 @@
   	return intStatus;
   }
   
  -int SoapSerializer::AddOutputParam(const AxisChar* pchName, XSDTYPE nType, long lValue)
  -{
  -	uParamValue uValue;
  -	uValue.lValue = lValue;
  -	return AddOutputParamHelper(pchName, nType, uValue);
  -}
  -
  -int SoapSerializer::AddOutputParam(const AxisChar* pchName, int nValue)
  +int SoapSerializer::AddOutputParam(const AxisChar* pchName, int nValue, XSDTYPE type)
   {
   	uParamValue uValue;
   	uValue.nValue = nValue;
  -	return AddOutputParamHelper(pchName, XSD_INT, uValue);
  +	return AddOutputParamHelper(pchName, type, uValue);
   }
   
   int SoapSerializer::AddOutputParamHelper(const AxisChar* pchName, XSDTYPE nType, uParamValue uValue)
  @@ -168,88 +162,88 @@
   	return SUCCESS;
   }
   
  -int SoapSerializer::AddOutputParam(const AxisChar* pchName, unsigned int unValue)
  +int SoapSerializer::AddOutputParam(const AxisChar* pchName, unsigned int unValue, XSDTYPE type)
   {
   	uParamValue uValue;
   	uValue.unValue = unValue;
  -	return AddOutputParamHelper(pchName, XSD_UNSIGNEDINT, uValue);
  +	return AddOutputParamHelper(pchName, type, uValue);
   }
   
  -int SoapSerializer::AddOutputParam(const AxisChar* pchName, short sValue)
  +int SoapSerializer::AddOutputParam(const AxisChar* pchName, short sValue, XSDTYPE type)
   {
   	uParamValue uValue;
   	uValue.sValue = sValue;
  -	return AddOutputParamHelper(pchName, XSD_SHORT, uValue);
  +	return AddOutputParamHelper(pchName, type, uValue);
   }
   
  -int SoapSerializer::AddOutputParam(const AxisChar* pchName, unsigned short usValue)
  +int SoapSerializer::AddOutputParam(const AxisChar* pchName, unsigned short usValue, XSDTYPE type)
   {
   	uParamValue uValue;
   	uValue.usValue = usValue;
  -	return AddOutputParamHelper(pchName, XSD_UNSIGNEDSHORT, uValue);
  +	return AddOutputParamHelper(pchName, type, uValue);
   }
   
  -int SoapSerializer::AddOutputParam(const AxisChar* pchName, long lValue)
  +int SoapSerializer::AddOutputParam(const AxisChar* pchName, long lValue, XSDTYPE type)
   {
   	uParamValue uValue;
   	uValue.lValue = lValue;
  -	return AddOutputParamHelper(pchName, XSD_LONG, uValue);
  +	return AddOutputParamHelper(pchName, type, uValue);
   }
   
  -int SoapSerializer::AddOutputParam(const AxisChar* pchName, unsigned long ulValue)
  +int SoapSerializer::AddOutputParam(const AxisChar* pchName, unsigned long ulValue, XSDTYPE type)
   {
   	uParamValue uValue;
   	uValue.ulValue = ulValue;
  -	return AddOutputParamHelper(pchName, XSD_UNSIGNEDLONG, uValue);
  +	return AddOutputParamHelper(pchName, type, uValue);
   }
   
  -int SoapSerializer::AddOutputParam(const AxisChar* pchName, char cValue)
  +int SoapSerializer::AddOutputParam(const AxisChar* pchName, char cValue, XSDTYPE type)
   {
   	uParamValue uValue;
   	uValue.cValue = cValue;
  -	return AddOutputParamHelper(pchName, XSD_BYTE, uValue);
  +	return AddOutputParamHelper(pchName, type, uValue);
   }
   
  -int SoapSerializer::AddOutputParam(const AxisChar* pchName, unsigned char ucValue)
  +int SoapSerializer::AddOutputParam(const AxisChar* pchName, unsigned char ucValue, XSDTYPE type)
   {
   	uParamValue uValue;
   	uValue.ucValue = ucValue;
  -	return AddOutputParamHelper(pchName, XSD_BYTE, uValue);
  +	return AddOutputParamHelper(pchName, type, uValue);
   }
   
  -int SoapSerializer::AddOutputParam(const AxisChar* pchName, float fValue)
  +int SoapSerializer::AddOutputParam(const AxisChar* pchName, float fValue, XSDTYPE type)
   {
   	uParamValue uValue;
   	uValue.fValue = fValue;
  -	return AddOutputParamHelper(pchName, XSD_FLOAT, uValue);
  +	return AddOutputParamHelper(pchName, type, uValue);
   }
   
  -int SoapSerializer::AddOutputParam(const AxisChar* pchName, double dValue)
  +int SoapSerializer::AddOutputParam(const AxisChar* pchName, double dValue, XSDTYPE type)
   {
   	uParamValue uValue;
   	uValue.dValue = dValue;
  -	return AddOutputParamHelper(pchName, XSD_DOUBLE, uValue);
  +	return AddOutputParamHelper(pchName, type, uValue);
   }
   
  -int SoapSerializer::AddOutputParam(const AxisChar* pchName, struct tm tValue)
  +int SoapSerializer::AddOutputParam(const AxisChar* pchName, struct tm tValue, XSDTYPE type)
   {
   	uParamValue uValue;
   	uValue.tValue = tValue;
  -	return AddOutputParamHelper(pchName, XSD_DATETIME, uValue);
  +	return AddOutputParamHelper(pchName, type, uValue);
   }
   
  -int SoapSerializer::AddOutputParam(const AxisChar* pchName, const AxisChar* pStrValue)
  +int SoapSerializer::AddOutputParam(const AxisChar* pchName, const AxisChar* pStrValue, XSDTYPE type)
   {
   	uParamValue uValue;
   	uValue.pStrValue = pStrValue;
  -	return AddOutputParamHelper(pchName, XSD_STRING, uValue);
  +	return AddOutputParamHelper(pchName, type, uValue);
   }
   
  -int SoapSerializer::AddOutputParam(const AxisChar* pchName, const string& sStrValue)
  +int SoapSerializer::AddOutputParam(const AxisChar* pchName, const string& sStrValue, XSDTYPE type)
   {
   	uParamValue uValue;
   	uValue.pStrValue = sStrValue.c_str();
  -	return AddOutputParamHelper(pchName, XSD_STRING, uValue);
  +	return AddOutputParamHelper(pchName, type, uValue);
   }
   
   int SoapSerializer::AddOutputParam(const AxisChar* pchName, const Axis_Array* pArray, XSDTYPE nType)
  @@ -447,40 +441,40 @@
   	return m_BTSZ.serialize(sName, sValue.c_str(), type);
   }
   
  -const AxisChar* SoapSerializer::SerializeBasicType(const AxisChar* sName, int nValue)
  +const AxisChar* SoapSerializer::SerializeBasicType(const AxisChar* sName, int nValue, XSDTYPE type)
   {
  -	return m_BTSZ.serialize(sName, nValue);		
  +	return m_BTSZ.serialize(sName, nValue, type);		
   }
   
  -const AxisChar* SoapSerializer::SerializeBasicType(const AxisChar* sName, struct tm tValue)
  +const AxisChar* SoapSerializer::SerializeBasicType(const AxisChar* sName, struct tm tValue, XSDTYPE type)
   {
       return m_uAxisTime.serialize(sName, tValue).c_str();
       //return NULL;
   }
   
  -const AxisChar* SoapSerializer::SerializeBasicType(const AxisChar* sName, unsigned int unValue)
  +const AxisChar* SoapSerializer::SerializeBasicType(const AxisChar* sName, unsigned int unValue, XSDTYPE type)
   {
  -    return m_BTSZ.serialize(sName, unValue);
  +    return m_BTSZ.serialize(sName, unValue, type);
   }
   
  -const AxisChar* SoapSerializer::SerializeBasicType(const AxisChar* sName, short sValue)
  +const AxisChar* SoapSerializer::SerializeBasicType(const AxisChar* sName, short sValue, XSDTYPE type)
   {
  -    return m_BTSZ.serialize(sName, sValue);
  +    return m_BTSZ.serialize(sName, sValue, type);
   }
   
  -const AxisChar* SoapSerializer::SerializeBasicType(const AxisChar* sName, unsigned short usValue)
  +const AxisChar* SoapSerializer::SerializeBasicType(const AxisChar* sName, unsigned short usValue, XSDTYPE type)
   {
  -    return m_BTSZ.serialize(sName, usValue);
  +    return m_BTSZ.serialize(sName, usValue, type);
   }
   
  -const AxisChar* SoapSerializer::SerializeBasicType(const AxisChar* sName, char cValue)
  +const AxisChar* SoapSerializer::SerializeBasicType(const AxisChar* sName, char cValue, XSDTYPE type)
   {
  -    return m_BTSZ.serialize(sName, cValue);
  +    return m_BTSZ.serialize(sName, cValue, type);
   }
   
  -const AxisChar* SoapSerializer::SerializeBasicType(const AxisChar* sName, unsigned char ucValue)
  +const AxisChar* SoapSerializer::SerializeBasicType(const AxisChar* sName, unsigned char ucValue, XSDTYPE type)
   {
  -    return m_BTSZ.serialize(sName, ucValue);
  +    return m_BTSZ.serialize(sName, ucValue, type);
   }
   
   const AxisChar* SoapSerializer::SerializeBasicType(const AxisChar* sName, long lValue, XSDTYPE type)
  @@ -488,14 +482,14 @@
       return m_BTSZ.serialize(sName, lValue, type);
   }
   
  -const AxisChar* SoapSerializer::SerializeBasicType(const AxisChar* sName, unsigned long ulValue)
  +const AxisChar* SoapSerializer::SerializeBasicType(const AxisChar* sName, unsigned long ulValue, XSDTYPE type)
   {
  -    return m_BTSZ.serialize(sName, ulValue);
  +    return m_BTSZ.serialize(sName, ulValue, type);
   }
   
  -const AxisChar* SoapSerializer::SerializeBasicType(const AxisChar* sName, float fValue)
  +const AxisChar* SoapSerializer::SerializeBasicType(const AxisChar* sName, float fValue, XSDTYPE type)
   {
  -    return m_BTSZ.serialize(sName, fValue);
  +    return m_BTSZ.serialize(sName, fValue, type);
   }
   
   const AxisChar* SoapSerializer::SerializeBasicType(const AxisChar* sName, double dValue, XSDTYPE type)
  
  
  
  1.3       +1 -4      ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/WrapHeaderWriter.java
  
  Index: WrapHeaderWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/WrapHeaderWriter.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- WrapHeaderWriter.java	20 Oct 2003 06:41:14 -0000	1.2
  +++ WrapHeaderWriter.java	22 Oct 2003 03:40:05 -0000	1.3
  @@ -155,10 +155,7 @@
   			writer.write("#include <axis/common/WrapperClassHandler.h>\n");
   			writer.write("#include <axis/common/IMessageData.h>\n");
   			writer.write("#include <axis/common/GDefine.h>\n");
  -			writer.write("#include <axis/common/IWrapperSoapDeSerializer.h>\n");
  -			writer.write("#include <axis/common/IWrapperSoapSerializer.h>\n");
  -			writer.write("#include <axis/common/ISoapMethod.h>\n");
  -			writer.write("#include <axis/common/IParam.h>\n\n");
  +			writer.write("#include <axis/common/AxisWrapperAPI.h>\n\n");
   			//As there is no service header file for C the header files for types should be included here itself
   			Type atype;
   			Iterator types = this.wscontext.getTypemap().getTypes().iterator();
  
  
  
  1.8       +6 -2      ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/WrapWriter.java
  
  Index: WrapWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/WrapWriter.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- WrapWriter.java	17 Oct 2003 08:34:01 -0000	1.7
  +++ WrapWriter.java	22 Oct 2003 03:40:05 -0000	1.8
  @@ -273,7 +273,11 @@
   				String containedType = null;
   				if (CPPUtils.isSimpleType(qname)){
   					containedType = CPPUtils.getclass4qname(qname);
  -					writer.write("\t"+paraTypeName+" v"+i+" = ("+paraTypeName+"&)pIWSDZ->GetArray("+CPPUtils.getXSDTypeForBasicType(containedType)+");\n");
  +					writer.write("\t"+paraTypeName+" v"+i+";\n"); 
  +					writer.write("\tv"+i+".m_Size = pIWSDZ->GetArraySize();\n");
  +					writer.write("\tif (v"+i+".m_Size < 1) return FAIL;\n");
  +					writer.write("\tv"+i+".m_Array = new "+containedType+"[v"+i+".m_Size];\n");
  +					writer.write("\tif (SUCCESS != pIWSDZ->GetArray((Axis_Array*)(&v"+i+"), "+CPPUtils.getXSDTypeForBasicType(containedType)+")) return FAIL;\n");
   				}
   				else{
   					containedType = qname.getLocalPart();
  @@ -301,7 +305,7 @@
   			writer.write(");\n");
   			/* set the result */
   			if (returntypeissimple){
  -				writer.write("\treturn pIWSSZ->AddOutputParam(\""+methodName+"Return\", ret);\n");
  +				writer.write("\treturn pIWSSZ->AddOutputParam(\""+methodName+"Return\", ret, "+CPPUtils.getXSDTypeForBasicType(outparamType)+");\n");
   			}else if(returntypeisarray){
   				QName qname = retType.getTypNameForAttribName("item");
   				String containedType = null;
  
  
  
  1.5       +1 -1      ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ArrayParamWriter.java
  
  Index: ArrayParamWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ArrayParamWriter.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ArrayParamWriter.java	17 Oct 2003 08:50:54 -0000	1.4
  +++ ArrayParamWriter.java	22 Oct 2003 03:40:05 -0000	1.5
  @@ -93,7 +93,7 @@
   				writer.write("#include \""+attribs[0][1]+".h\"\n\n");
   			}
   			else{
  -				writer.write("#include <AxisUserAPI.h>\n\n");
  +				writer.write("#include <axis/common/AxisUserAPI.h>\n\n");
   			}
   			writeArrayStruct();
   			this.writer.write("#endif // !defined(__"+classname.toUpperCase()+"_"+getFileType().toUpperCase()+"_H__INCLUDED_)\n");
  
  
  
  1.8       +5 -2      ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/BeanParamWriter.java
  
  Index: BeanParamWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/BeanParamWriter.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- BeanParamWriter.java	17 Oct 2003 08:34:01 -0000	1.7
  +++ BeanParamWriter.java	22 Oct 2003 03:40:05 -0000	1.8
  @@ -150,7 +150,7 @@
   		for(int i = 0; i< attribs.length;i++){
   			if(CPPUtils.isSimpleType(attribs[i][1])){
   				//if simple type
  -				writer.write("\tpSZ << pSZ.SerializeBasicType(\""+attribs[i][0]+"\", param->"+attribs[i][0]+");\n");
  +				writer.write("\tpSZ << pSZ.SerializeBasicType(\""+attribs[i][0]+"\", param->"+attribs[i][0]+", "+ CPPUtils.getXSDTypeForBasicType(attribs[i][1])+");\n");
   			}else if((t = wscontext.getTypemap().getType(new QName(attribs[i][2],attribs[i][3])))!= null && t.isArray()){
   				//if Array
   				QName qname = t.getTypNameForAttribName("item");
  @@ -197,7 +197,10 @@
   				String arrayType = null;
   				if (CPPUtils.isSimpleType(qname)){
   					arrayType = CPPUtils.getclass4qname(qname);
  -					writer.write("\tparam->"+attribs[i][0]+" = ("+attribs[i][1]+"&)pIWSDZ->GetArray("+CPPUtils.getXSDTypeForBasicType(arrayType)+");\n");
  +					writer.write("\tparam->"+attribs[i][0]+".m_Size = pIWSDZ->GetArraySize();\n");
  +					writer.write("\tif (param->"+attribs[i][0]+".m_Size < 1) return FAIL;\n");
  +					writer.write("\tparam->"+attribs[i][0]+".m_Array = new "+arrayType+"[param->"+attribs[i][0]+".m_Size];\n");
  +					writer.write("\tif (SUCCESS != pIWSDZ->GetArray((Axis_Array*)(&param->"+attribs[i][0]+"), "+CPPUtils.getXSDTypeForBasicType(arrayType)+")) return FAIL;\n");
   				}
   				else{
   					arrayType = qname.getLocalPart();
  
  
  
  1.4       +1 -1      ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubHeaderWriter.java
  
  Index: ClientStubHeaderWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubHeaderWriter.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ClientStubHeaderWriter.java	17 Oct 2003 08:34:01 -0000	1.3
  +++ ClientStubHeaderWriter.java	22 Oct 2003 03:40:05 -0000	1.4
  @@ -183,7 +183,7 @@
   	 */
   	protected void writePreprocssorStatements() throws WrapperFault {
   		try{
  -			writer.write("#include <Call.h>\n");
  +			writer.write("#include <axis/client/Call.h>\n");
   			Type atype;
   			Iterator types = this.wscontext.getTypemap().getTypes().iterator();
   			HashSet typeSet = new HashSet();
  
  
  
  1.13      +2 -3      ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java
  
  Index: ClientStubWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- ClientStubWriter.java	20 Oct 2003 06:41:14 -0000	1.12
  +++ ClientStubWriter.java	22 Oct 2003 03:40:05 -0000	1.13
  @@ -156,8 +156,7 @@
   	protected void writePreprocssorStatements() throws WrapperFault {
   		try{
   			writer.write("#include \""+classname+".h\"\n\n");
  -			writer.write("#include <axis/common/IWrapperSoapDeSerializer.h>\n");
  -			writer.write("#include <axis/common/IWrapperSoapSerializer.h>\n\n");
  +			writer.write("#include <axis/common/AxisWrapperAPI.h>\n\n");
   		}catch(IOException e){
   			throw new WrapperFault(e);
   		}
  @@ -290,7 +289,7 @@
   				}
   			}else if(typeissimple){
   				//for simple types	
  -				writer.write("Value"+i+", \"" + ((ParameterInfo)paramsB.get(i)).getParamName()+"\"");
  +				writer.write("Value"+i+", \"" + ((ParameterInfo)paramsB.get(i)).getParamName()+"\", "+CPPUtils.getXSDTypeForBasicType(paraTypeName));
   			}else{
   				//for complex types 
   				writer.write("Value"+i+", Axis_Serialize_"+paraTypeName+", Axis_Delete_"+paraTypeName+", \"" + ((ParameterInfo)paramsB.get(i)).getParamName()+"\"");
  
  
  
  1.3       +1 -3      ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ParamCPPFileWriter.java
  
  Index: ParamCPPFileWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ParamCPPFileWriter.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ParamCPPFileWriter.java	20 Oct 2003 06:41:14 -0000	1.2
  +++ ParamCPPFileWriter.java	22 Oct 2003 03:40:05 -0000	1.3
  @@ -111,9 +111,7 @@
      protected void writePreprocssorStatements()throws WrapperFault{
   	try {
   		writer.write("#include \""+this.classname + ".h\"\n");
  -		writer.write("#include <axis/common/IWrapperSoapDeSerializer.h>\n");
  -		writer.write("#include <axis/common/IWrapperSoapSerializer.h>\n");
  -		writer.write("#include <axis/common/IParam.h>\n\n");
  +		writer.write("#include <axis/common/AxisWrapperAPI.h>\n\n");
   	} catch (IOException e) {
   		e.printStackTrace();
   		throw new WrapperFault(e);
  
  
  
  1.3       +1 -1      ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ParamWriter.java
  
  Index: ParamWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ParamWriter.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ParamWriter.java	10 Oct 2003 05:13:14 -0000	1.2
  +++ ParamWriter.java	22 Oct 2003 03:40:05 -0000	1.3
  @@ -152,5 +152,5 @@
   		}else
   			return classname;
   	}
  -	
  +
   }
  
  
  
  1.9       +1 -1      ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ParmHeaderFileWriter.java
  
  Index: ParmHeaderFileWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ParmHeaderFileWriter.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ParmHeaderFileWriter.java	17 Oct 2003 08:50:54 -0000	1.8
  +++ ParmHeaderFileWriter.java	22 Oct 2003 03:40:05 -0000	1.9
  @@ -132,7 +132,7 @@
   	  try{
   		Type atype;
   		Iterator types = this.wscontext.getTypemap().getTypes().iterator();
  -		writer.write("#include <AxisUserAPI.h>\n\n");
  +		writer.write("#include <axis/common/AxisUserAPI.h>\n\n");
   		HashSet typeSet = new HashSet();
   		while(types.hasNext()){
   			atype = (Type)types.next();
  
  
  
  1.8       +1 -1      ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceHeaderWriter.java
  
  Index: ServiceHeaderWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceHeaderWriter.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ServiceHeaderWriter.java	17 Oct 2003 08:50:54 -0000	1.7
  +++ ServiceHeaderWriter.java	22 Oct 2003 03:40:05 -0000	1.8
  @@ -180,7 +180,7 @@
   			Type atype;
   			Iterator types = this.wscontext.getTypemap().getTypes().iterator();
   			HashSet typeSet = new HashSet();
  -			writer.write("#include <AxisUserAPI.h>\n\n");
  +			writer.write("#include <axis/common/AxisUserAPI.h>\n\n");
   			while(types.hasNext()){
   				atype = (Type)types.next();
   				typeSet.add(atype.getLanguageSpecificName());
  
  
  
  1.5       +1 -4      ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapHeaderWriter.java
  
  Index: WrapHeaderWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapHeaderWriter.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- WrapHeaderWriter.java	20 Oct 2003 06:41:14 -0000	1.4
  +++ WrapHeaderWriter.java	22 Oct 2003 03:40:05 -0000	1.5
  @@ -153,10 +153,7 @@
   			writer.write("#include <axis/common/WrapperClassHandler.h>\n");
   			writer.write("#include <axis/common/IMessageData.h>\n");
   			writer.write("#include <axis/common/GDefine.h>\n");
  -			writer.write("#include <axis/common/IWrapperSoapDeSerializer.h>\n");
  -			writer.write("#include <axis/common/IWrapperSoapSerializer.h>\n");
  -			writer.write("#include <axis/common/ISoapMethod.h>\n");
  -			writer.write("#include <axis/common/IParam.h>\n\n");
  +			writer.write("#include <axis/common/AxisWrapperAPI.h>\n\n");
   		}catch(IOException e){
   			throw new WrapperFault(e);
   		}
  
  
  
  1.9       +6 -2      ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java
  
  Index: WrapWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- WrapWriter.java	17 Oct 2003 11:00:32 -0000	1.8
  +++ WrapWriter.java	22 Oct 2003 03:40:05 -0000	1.9
  @@ -251,7 +251,11 @@
   				String containedType = null;
   				if (CPPUtils.isSimpleType(qname)){
   					containedType = CPPUtils.getclass4qname(qname);
  -					writer.write("\t"+paraTypeName+" v"+i+" = ("+paraTypeName+"&)pIWSDZ->GetArray("+CPPUtils.getXSDTypeForBasicType(containedType)+");\n");
  +					writer.write("\t"+paraTypeName+" v"+i+";\n"); 
  +					writer.write("\tv"+i+".m_Size = pIWSDZ->GetArraySize();\n");
  +					writer.write("\tif (v"+i+".m_Size < 1) return FAIL;\n");
  +					writer.write("\tv"+i+".m_Array = new "+containedType+"[v"+i+".m_Size];\n");
  +					writer.write("\tif (SUCCESS != pIWSDZ->GetArray((Axis_Array*)(&v"+i+"), "+CPPUtils.getXSDTypeForBasicType(containedType)+")) return FAIL;\n");
   				}
   				else{
   					containedType = qname.getLocalPart();
  @@ -279,7 +283,7 @@
   			writer.write(");\n");
   			/* set the result */
   			if (returntypeissimple){
  -				writer.write("\treturn pIWSSZ->AddOutputParam(\""+methodName+"Return\", ret);\n");
  +				writer.write("\treturn pIWSSZ->AddOutputParam(\""+methodName+"Return\", ret, "+CPPUtils.getXSDTypeForBasicType(outparamType)+");\n");
   			}else if(returntypeisarray){
   				QName qname = retType.getTypNameForAttribName("item");
   				String containedType = null;