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/21 17:09:05 UTC

cvs commit: ws-axis/c/src/server/samples/interoptests/groupC InteropGroupC.wsdl

susantha    2003/10/21 08:09:05

  Added:       c/src/server/samples/interoptests deploy.wsdd
               c/src/server/samples/interoptests/base ArrayOfSOAPStruct.h
                        ArrayOffloat.h ArrayOfint.h ArrayOfstring.h
                        InteropBase.wsdl InteropTestPortType.cpp
                        InteropTestPortType.h
                        InteropTestPortTypeService.cpp
                        InteropTestPortTypeWrapper.cpp
                        InteropTestPortTypeWrapper.h SOAPStruct.cpp
                        SOAPStruct.h
               c/src/server/samples/interoptests/groupB ArrayOfSOAPStruct.h
                        ArrayOfString2D.h ArrayOffloat.h ArrayOfint.h
                        ArrayOfstring.h InteropGroupB.wsdl
                        InteropTestPortTypeB.cpp InteropTestPortTypeB.h
                        InteropTestPortTypeBService.cpp
                        InteropTestPortTypeBWrapper.cpp
                        InteropTestPortTypeBWrapper.h SOAPArrayStruct.cpp
                        SOAPArrayStruct.h SOAPStruct.cpp SOAPStruct.h
                        SOAPStructStruct.cpp SOAPStructStruct.h
               c/src/server/samples/interoptests/groupC InteropGroupC.wsdl
  Log:
  Added server samples for interop tests
  
  Revision  Changes    Path
  1.1                  ws-axis/c/src/server/samples/interoptests/deploy.wsdd
  
  Index: deploy.wsdd
  ===================================================================
  <?xml version="1.0" encoding="UTF-8"?>
  <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
   <service name="InteropBase" provider="C:RPC">
    <parameter name="allowedMethods" value="echoString EchoInt echoStringArray echoInteger echoIntegerArray echoFloat echoFloatArray echoStruct echoStructArray echoVoid echoBase64 echoDate echoHexBinary echoDecimal echoBoolean "/>
    <parameter name="className" value="C:\susantha\ws-axis\InteropBaseServer\InteropBaseServer___Win32_Debug\InteropBaseServer.dll"/>
   </service>
   <service name="InteropGroupB" provider="C:RPC">
    <parameter name="allowedMethods" value="echoSimpleTypesAsStruct echoNestedStruct echoNestedArray "/>
    <parameter name="className" value="C:\susantha\ws-axis\InteropGroupBServer\Release\InteropGroupBServer.dll"/>
   </service>
  </deployment>
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/base/ArrayOfSOAPStruct.h
  
  Index: ArrayOfSOAPStruct.h
  ===================================================================
  ///////////////////////////////////////////////////////////////////////////////////
  //This file is automatically generated by the Axis C++ Wrapper Class Generator
  //Web service wrapper class's implementation generated by Axis WCG
  //Parameters and wrapper methos to manipulate ArrayOfSOAPStruct
  ////////////////////////////////////////////////////////////////////////////////////
  
  #if !defined(__ARRAYOFSOAPSTRUCT_ARRAY_H__INCLUDED_)
  #define __ARRAYOFSOAPSTRUCT_ARRAY_H__INCLUDED_
  
  #include "SOAPStruct.h"
  
  typedef struct ArrayOfSOAPStructTag
  {
  	SOAPStruct* m_Array;
  	int m_Size;
  } ArrayOfSOAPStruct;
  
  #endif // !defined(__ARRAYOFSOAPSTRUCT_ARRAY_H__INCLUDED_)
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/base/ArrayOffloat.h
  
  Index: ArrayOffloat.h
  ===================================================================
  ///////////////////////////////////////////////////////////////////////////////////
  //This file is automatically generated by the Axis C++ Wrapper Class Generator
  //Web service wrapper class's implementation generated by Axis WCG
  //Parameters and wrapper methos to manipulate ArrayOffloat
  ////////////////////////////////////////////////////////////////////////////////////
  
  #if !defined(__ARRAYOFFLOAT_ARRAY_H__INCLUDED_)
  #define __ARRAYOFFLOAT_ARRAY_H__INCLUDED_
  
  #include <axis/common/AxisUserAPI.h>
  
  typedef struct ArrayOffloatTag
  {
  	float* m_Array;
  	int m_Size;
  } ArrayOffloat;
  
  #endif // !defined(__ARRAYOFFLOAT_ARRAY_H__INCLUDED_)
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/base/ArrayOfint.h
  
  Index: ArrayOfint.h
  ===================================================================
  ///////////////////////////////////////////////////////////////////////////////////
  //This file is automatically generated by the Axis C++ Wrapper Class Generator
  //Web service wrapper class's implementation generated by Axis WCG
  //Parameters and wrapper methos to manipulate ArrayOfint
  ////////////////////////////////////////////////////////////////////////////////////
  
  #if !defined(__ARRAYOFINT_ARRAY_H__INCLUDED_)
  #define __ARRAYOFINT_ARRAY_H__INCLUDED_
  
  #include <axis/common/AxisUserAPI.h>
  
  typedef struct ArrayOfintTag
  {
  	int* m_Array;
  	int m_Size;
  } ArrayOfint;
  
  #endif // !defined(__ARRAYOFINT_ARRAY_H__INCLUDED_)
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/base/ArrayOfstring.h
  
  Index: ArrayOfstring.h
  ===================================================================
  ///////////////////////////////////////////////////////////////////////////////////
  //This file is automatically generated by the Axis C++ Wrapper Class Generator
  //Web service wrapper class's implementation generated by Axis WCG
  //Parameters and wrapper methos to manipulate ArrayOfstring
  ////////////////////////////////////////////////////////////////////////////////////
  
  #if !defined(__ARRAYOFSTRING_ARRAY_H__INCLUDED_)
  #define __ARRAYOFSTRING_ARRAY_H__INCLUDED_
  
  #include <axis/common/AxisUserAPI.h>
  
  typedef struct ArrayOfstringTag
  {
  	string* m_Array;
  	int m_Size;
  } ArrayOfstring;
  
  #endif // !defined(__ARRAYOFSTRING_ARRAY_H__INCLUDED_)
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/base/InteropBase.wsdl
  
  Index: InteropBase.wsdl
  ===================================================================
  <?xml version="1.0"?>
  <definitions name="InteropTest" targetNamespace="http://soapinterop.org/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  
  	<types>
  		<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://soapinterop.org/xsd">
  	                <import namespace = "http://schemas.xmlsoap.org/soap/encoding/"/>
  			<complexType name="ArrayOfstring">
  				<complexContent>
  					<restriction base="SOAP-ENC:Array">
  						<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="string[]"/>
  					</restriction>
  				</complexContent>
  			</complexType>
  			<complexType name="ArrayOfint">
  				<complexContent>
  					<restriction base="SOAP-ENC:Array">
  						<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="int[]"/>
  					</restriction>
  				</complexContent>
  			</complexType>
  			<complexType name="ArrayOffloat">
  				<complexContent>
  					<restriction base="SOAP-ENC:Array">
  						<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="float[]"/>
  					</restriction>
  				</complexContent>
  			</complexType>
  			<complexType name="ArrayOfSOAPStruct">
  				<complexContent>
  					<restriction base="SOAP-ENC:Array">
  						<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="s:SOAPStruct[]"/>
  					</restriction>
  				</complexContent>
  			</complexType>
  			<complexType name="SOAPStruct">
  				<all>
  					<element name="varString" type="string"/>
  					<element name="varInt" type="int"/>
  					<element name="varFloat" type="float"/>
  				</all>
  			</complexType>
  		</schema>
  	</types>
  
  	<message name="echoStringRequest">
  		<part name="inputString" type="xsd:string"/>
  	</message>
  	<message name="echoStringResponse">
  		<part name="return" type="xsd:string"/>
  	</message>
  	<message name="echoStringArrayRequest">
  		<part name="inputStringArray" type="s:ArrayOfstring"/>
  	</message>
  	<message name="echoStringArrayResponse">
  		<part name="return" type="s:ArrayOfstring"/>
  	</message>
  	<message name="echoIntegerRequest">
  		<part name="inputInteger" type="xsd:int"/>
  	</message>
  	<message name="echoIntegerResponse">
  		<part name="return" type="xsd:int"/>
  	</message>
  	<message name="echoIntegerArrayRequest">
  		<part name="inputIntegerArray" type="s:ArrayOfint"/>
  	</message>
  	<message name="echoIntegerArrayResponse">
  		<part name="return" type="s:ArrayOfint"/>
  	</message>
  	<message name="echoFloatRequest">
  		<part name="inputFloat" type="xsd:float"/>
  	</message>
  	<message name="echoFloatResponse">
  		<part name="return" type="xsd:float"/>
  	</message>
  	<message name="echoFloatArrayRequest">
  		<part name="inputFloatArray" type="s:ArrayOffloat"/>
  	</message>
  	<message name="echoFloatArrayResponse">
  		<part name="return" type="s:ArrayOffloat"/>
  	</message>
  	<message name="echoStructRequest">
  		<part name="inputStruct" type="s:SOAPStruct"/>
  	</message>
  	<message name="echoStructResponse">
  		<part name="return" type="s:SOAPStruct"/>
  	</message>
  	<message name="echoStructArrayRequest">
  		<part name="inputStructArray" type="s:ArrayOfSOAPStruct"/>
  	</message>
  	<message name="echoStructArrayResponse">
  		<part name="return" type="s:ArrayOfSOAPStruct"/>
  	</message>
  	<message name="echoVoidRequest"/>
  	<message name="echoVoidResponse"/>
  	<message name="echoBase64Request">
  		<part name="inputBase64" type="xsd:base64Binary"/>
  	</message>
  	<message name="echoBase64Response">
  		<part name="return" type="xsd:base64Binary"/>
  	</message>
  	<message name="echoDateRequest">
  		<part name="inputDate" type="xsd:dateTime"/>
  	</message>
  	<message name="echoDateResponse">
  		<part name="return" type="xsd:dateTime"/>
  	</message>
  	<message name="echoHexBinaryRequest">
  		<part name="inputHexBinary" type="xsd:hexBinary"/>
  	</message>
  	<message name="echoHexBinaryResponse">
  		<part name="return" type="xsd:hexBinary"/>
  	</message>
  	<message name="echoDecimalRequest">
  		<part name="inputDecimal" type="xsd:decimal"/>
  	</message>
  	<message name="echoDecimalResponse">
  		<part name="return" type="xsd:decimal"/>
  	</message>
  	<message name="echoBooleanRequest">
  		<part name="inputBoolean" type="xsd:boolean"/>
  	</message>
  	<message name="echoBooleanResponse">
  		<part name="return" type="xsd:boolean"/>
  	</message>
  
  	<portType name="InteropTestPortType">
  		<operation name="echoString" parameterOrder="inputString">
  			<input message="tns:echoStringRequest"/>
  			<output message="tns:echoStringResponse"/>
  		</operation>
  		<operation name="echoStringArray" parameterOrder="inputStringArray">
  			<input message="tns:echoStringArrayRequest"/>
  			<output message="tns:echoStringArrayResponse"/>
  		</operation>
  		<operation name="echoInteger" parameterOrder="inputInteger">
  			<input message="tns:echoIntegerRequest"/>
  			<output message="tns:echoIntegerResponse"/>
  		</operation>
  		<operation name="echoIntegerArray" parameterOrder="inputIntegerArray">
  			<input message="tns:echoIntegerArrayRequest"/>
  			<output message="tns:echoIntegerArrayResponse"/>
  		</operation>
  		<operation name="echoFloat" parameterOrder="inputFloat">
  			<input message="tns:echoFloatRequest"/>
  			<output message="tns:echoFloatResponse"/>
  		</operation>
  		<operation name="echoFloatArray" parameterOrder="inputFloatArray">
  			<input message="tns:echoFloatArrayRequest"/>
  			<output message="tns:echoFloatArrayResponse"/>
  		</operation>
  		<operation name="echoStruct" parameterOrder="inputStruct">
  			<input message="tns:echoStructRequest"/>
  			<output message="tns:echoStructResponse"/>
  		</operation>
  		<operation name="echoStructArray" parameterOrder="inputStructArray">
  			<input message="tns:echoStructArrayRequest"/>
  			<output message="tns:echoStructArrayResponse"/>
  		</operation>
  		<operation name="echoVoid">
  			<input message="tns:echoVoidRequest"/>
  			<output message="tns:echoVoidResponse"/>
  		</operation>
  		<operation name="echoBase64" parameterOrder="inputBase64">
  			<input message="tns:echoBase64Request"/>
  			<output message="tns:echoBase64Response"/>
  		</operation>
  		<operation name="echoDate" parameterOrder="inputDate">
  			<input message="tns:echoDateRequest"/>
  			<output message="tns:echoDateResponse"/>
  		</operation>
  		<operation name="echoHexBinary" parameterOrder="inputHexBinary">
  			<input message="tns:echoHexBinaryRequest"/>
  			<output message="tns:echoHexBinaryResponse"/>
  		</operation>
  		<operation name="echoDecimal" parameterOrder="inputDecimal">
  			<input message="tns:echoDecimalRequest"/>
  			<output message="tns:echoDecimalResponse"/>
  		</operation>
  		<operation name="echoBoolean" parameterOrder="inputBoolean">
  			<input message="tns:echoBooleanRequest"/>
  			<output message="tns:echoBooleanResponse"/>
  		</operation>
  	</portType>
  
  	<binding name="InteropTestSoapBinding" type="tns:InteropTestPortType">
  		<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
  		<operation name="echoString">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoStringArray">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoInteger">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoIntegerArray">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoFloat">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoFloatArray">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoStruct">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoStructArray">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoVoid">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoBase64">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoDate">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoHexBinary">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoDecimal">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoBoolean">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  	</binding>
   	<service name="InteropBase">
      		<port binding="tns:InteropTestSoapBinding" name="InteropBaseTest">
        		<soap:address location="http://localhost/axis/InteropBase"/>
      		</port>
    	</service>
  </definitions>
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/base/InteropTestPortType.cpp
  
  Index: InteropTestPortType.cpp
  ===================================================================
  ///////////////////////////////////////////////////////////////////////
  //This is the Service implementation CPP file genarated by theWSDL2Ws.
  //		InteropTestPortType.cpp: implemtation for the InteropTestPortType.
  //
  //////////////////////////////////////////////////////////////////////
  #include "InteropTestPortType.h"
  
  
  InteropTestPortType::InteropTestPortType()
  {
  }
  
  InteropTestPortType::~InteropTestPortType()
  {
  }
  
  string InteropTestPortType::echoString(string Value0)
  {
  	return Value0;
  }
  ArrayOfstring InteropTestPortType::echoStringArray(ArrayOfstring Value0)
  {
  	return Value0;
  }
  int InteropTestPortType::echoInteger(int Value0)
  {
  	return Value0;
  }
  ArrayOfint InteropTestPortType::echoIntegerArray(ArrayOfint Value0)
  {
  	return Value0;
  }
  float InteropTestPortType::echoFloat(float Value0)
  {
  	return Value0;
  }
  ArrayOffloat InteropTestPortType::echoFloatArray(ArrayOffloat Value0)
  {
  	return Value0;
  }
  SOAPStruct* InteropTestPortType::echoStruct(SOAPStruct* Value0)
  {
  	return Value0;
  }
  ArrayOfSOAPStruct InteropTestPortType::echoStructArray(ArrayOfSOAPStruct Value0)
  {
  	return Value0;
  }
  void  InteropTestPortType::echoVoid()
  {
  }
  Axis_Base64Binary InteropTestPortType::echoBase64(Axis_Base64Binary Value0)
  {
  	return Value0;
  }
  Axis_DateTime InteropTestPortType::echoDate(Axis_DateTime Value0)
  {
  	return Value0;
  }
  Axis_HexBinary InteropTestPortType::echoHexBinary(Axis_HexBinary Value0)
  {
  	return Value0;
  }
  Axis_Decimal InteropTestPortType::echoDecimal(Axis_Decimal Value0)
  {
  	return Value0;
  }
  Axis_Boolean InteropTestPortType::echoBoolean(Axis_Boolean Value0)
  {
  	return Value0;
  }
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/base/InteropTestPortType.h
  
  Index: InteropTestPortType.h
  ===================================================================
  /////////////////////////////////////////////////////////////////////////////
  // This is the Service Class genarated by the tool WSDL2Ws
  //		InteropTestPortType.h: interface for the InteropTestPortTypeclass.
  //
  //////////////////////////////////////////////////////////////////////
  #if !defined(__INTEROPTESTPORTTYPE_SERVERSKELETON_H__INCLUDED_)
  #define __INTEROPTESTPORTTYPE_SERVERSKELETON_H__INCLUDED_
  
  #include <axis/common/AxisUserAPI.h>
  
  #include "SOAPStruct.h"
  #include "ArrayOffloat.h"
  #include "ArrayOfSOAPStruct.h"
  #include "ArrayOfint.h"
  #include "ArrayOfstring.h"
  
  class InteropTestPortType 
  {
  	public:
  		InteropTestPortType();
  	public:
  		virtual ~InteropTestPortType();
  	public: 
  		string echoString(string Value0);
  		ArrayOfstring echoStringArray(ArrayOfstring Value0);
  		int echoInteger(int Value0);
  		ArrayOfint echoIntegerArray(ArrayOfint Value0);
  		float echoFloat(float Value0);
  		ArrayOffloat echoFloatArray(ArrayOffloat Value0);
  		SOAPStruct* echoStruct(SOAPStruct* Value0);
  		ArrayOfSOAPStruct echoStructArray(ArrayOfSOAPStruct Value0);
  		void  echoVoid();
  		Axis_Base64Binary echoBase64(Axis_Base64Binary Value0);
  		Axis_DateTime echoDate(Axis_DateTime Value0);
  		Axis_HexBinary echoHexBinary(Axis_HexBinary Value0);
  		Axis_Decimal echoDecimal(Axis_Decimal Value0);
  		Axis_Boolean echoBoolean(Axis_Boolean Value0);
  };
  
  #endif // !defined(__INTEROPTESTPORTTYPE_SERVERSKELETON_H__INCLUDED_)
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/base/InteropTestPortTypeService.cpp
  
  Index: InteropTestPortTypeService.cpp
  ===================================================================
  //		This file is automatically generated by the Axis C++ Wrapper Class Generator
  //		Service file containing the two export functions of the Web service Library
  #ifdef WIN32
  #define STORAGE_CLASS_INFO __declspec(dllexport)
  #else
  #define STORAGE_CLASS_INFO 
  #endif
  #include "InteropTestPortTypeWrapper.h" 
  extern "C" {
  STORAGE_CLASS_INFO
  int GetClassInstance(BasicHandler **inst)
  {
  	WrapperClassHandler* pWCH = new InteropTestPortTypeWrapper();
  	if (pWCH)
  	{
  		pWCH->Init();
  		*inst = pWCH;
  		return SUCCESS;
  	}
  	return FAIL;
  }
  STORAGE_CLASS_INFO 
  int DestroyInstance(BasicHandler *inst)
  {
  	if (inst)
  	{
  		WrapperClassHandler* pWCH = static_cast<WrapperClassHandler*>(inst);
  		pWCH->Fini();
  		delete pWCH;
  		return SUCCESS;
  	}
  	return FAIL;
  }
  }
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/base/InteropTestPortTypeWrapper.cpp
  
  Index: InteropTestPortTypeWrapper.cpp
  ===================================================================
  ///////////////////////////////////////////////////////////////////////
  //This is the Service implementation CPP file genarated by theWSDL2Ws.
  //		InteropTestPortTypeWrapper.cpp: implemtation for the InteropTestPortTypeWrapper.
  //
  //////////////////////////////////////////////////////////////////////
  
  #include "InteropTestPortTypeWrapper.h"
  
  extern int Axis_DeSerialize_SOAPStruct(SOAPStruct* param, IWrapperSoapDeSerializer *pDZ);
  extern void* Axis_Create_SOAPStruct(bool bArray = false, int nSize=0);
  extern void Axis_Delete_SOAPStruct(SOAPStruct* param, bool bArray = false, int nSize=0);
  extern int Axis_Serialize_SOAPStruct(SOAPStruct* param, IWrapperSoapSerializer& pSZ, bool bArray = false);
  extern int Axis_GetSize_SOAPStruct();
  
  InteropTestPortTypeWrapper::InteropTestPortTypeWrapper()
  {
  	pWs = new InteropTestPortType();
  }
  
  InteropTestPortTypeWrapper::~InteropTestPortTypeWrapper()
  {
  	delete pWs;
  }
  
  //implementation of WrapperClassHandler interface
  void InteropTestPortTypeWrapper::OnFault(IMessageData *pMsg)
  {
  }
  
  int InteropTestPortTypeWrapper::Init()
  {
  	return SUCCESS;
  }
  
  int InteropTestPortTypeWrapper::Fini()
  {
  	return SUCCESS;
  }
  
  
  /////////////////////////////////////////////////////////////////
  // This method invokes the right service method 
  //////////////////////////////////////////////////////////////////
  int InteropTestPortTypeWrapper::Invoke(IMessageData *mc)
  {
  	IWrapperSoapDeSerializer *pIWSDZ = NULL;
  	mc->getSoapDeSerializer(&pIWSDZ);
  	if (!pIWSDZ) return FAIL;
  	const AxisChar *method = pIWSDZ->GetMethodName();
  	if (0 == strcmp(method, "echoString"))
  		return echoString(mc);
  	else if (0 == strcmp(method, "echoStringArray"))
  		return echoStringArray(mc);
  	else if (0 == strcmp(method, "echoInteger"))
  		return echoInteger(mc);
  	else if (0 == strcmp(method, "echoIntegerArray"))
  		return echoIntegerArray(mc);
  	else if (0 == strcmp(method, "echoFloat"))
  		return echoFloat(mc);
  	else if (0 == strcmp(method, "echoFloatArray"))
  		return echoFloatArray(mc);
  	else if (0 == strcmp(method, "echoStruct"))
  		return echoStruct(mc);
  	else if (0 == strcmp(method, "echoStructArray"))
  		return echoStructArray(mc);
  	else if (0 == strcmp(method, "echoVoid"))
  		return echoVoid(mc);
  	else if (0 == strcmp(method, "echoBase64"))
  		return echoBase64(mc);
  	else if (0 == strcmp(method, "echoDate"))
  		return echoDate(mc);
  	else if (0 == strcmp(method, "echoHexBinary"))
  		return echoHexBinary(mc);
  	else if (0 == strcmp(method, "echoDecimal"))
  		return echoDecimal(mc);
  	else if (0 == strcmp(method, "echoBoolean"))
  		return echoBoolean(mc);
  	else return FAIL;
  }
  
  
  //Methods corresponding to the web service methods
  
  /////////////////////////////////////////////////////////////////
  // This method wrap the service method 
  //////////////////////////////////////////////////////////////////
  int InteropTestPortTypeWrapper::echoString(IMessageData* mc)
  {
  	IWrapperSoapSerializer *pIWSSZ = NULL;
  	mc->getSoapSerializer(&pIWSSZ);
  	if (!pIWSSZ) return FAIL;
  	IWrapperSoapDeSerializer *pIWSDZ = NULL;
  	mc->getSoapDeSerializer(&pIWSDZ);
  	if (!pIWSDZ) return FAIL;
  	pIWSSZ->createSoapMethod("echoStringResponse", pIWSSZ->getNewNamespacePrefix(), "http://soapinterop.org/");
  	string v0 = pIWSDZ->GetString();
  	string ret = pWs->echoString(v0);
  	return pIWSSZ->AddOutputParam("echoStringReturn", ret, XSD_STRING);
  }
  
  
  /////////////////////////////////////////////////////////////////
  // This method wrap the service method 
  //////////////////////////////////////////////////////////////////
  int InteropTestPortTypeWrapper::echoStringArray(IMessageData* mc)
  {
  	IWrapperSoapSerializer *pIWSSZ = NULL;
  	mc->getSoapSerializer(&pIWSSZ);
  	if (!pIWSSZ) return FAIL;
  	IWrapperSoapDeSerializer *pIWSDZ = NULL;
  	mc->getSoapDeSerializer(&pIWSDZ);
  	if (!pIWSDZ) return FAIL;
  	pIWSSZ->createSoapMethod("echoStringArrayResponse", pIWSSZ->getNewNamespacePrefix(), "http://soapinterop.org/");
  	ArrayOfstring v0 = (ArrayOfstring&)pIWSDZ->GetArray(XSD_STRING);
  	ArrayOfstring ret = pWs->echoStringArray(v0);
  	return pIWSSZ->AddOutputParam("echoStringArrayReturn", (Axis_Array*)(&ret),XSD_STRING);
  }
  
  
  /////////////////////////////////////////////////////////////////
  // This method wrap the service method 
  //////////////////////////////////////////////////////////////////
  int InteropTestPortTypeWrapper::echoInteger(IMessageData* mc)
  {
  	IWrapperSoapSerializer *pIWSSZ = NULL;
  	mc->getSoapSerializer(&pIWSSZ);
  	if (!pIWSSZ) return FAIL;
  	IWrapperSoapDeSerializer *pIWSDZ = NULL;
  	mc->getSoapDeSerializer(&pIWSDZ);
  	if (!pIWSDZ) return FAIL;
  	pIWSSZ->createSoapMethod("echoIntegerResponse", pIWSSZ->getNewNamespacePrefix(), "http://soapinterop.org/");
  	int v0 = pIWSDZ->GetInt();
  	int ret = pWs->echoInteger(v0);
  	return pIWSSZ->AddOutputParam("echoIntegerReturn", ret, XSD_INT);
  }
  
  
  /////////////////////////////////////////////////////////////////
  // This method wrap the service method 
  //////////////////////////////////////////////////////////////////
  int InteropTestPortTypeWrapper::echoIntegerArray(IMessageData* mc)
  {
  	IWrapperSoapSerializer *pIWSSZ = NULL;
  	mc->getSoapSerializer(&pIWSSZ);
  	if (!pIWSSZ) return FAIL;
  	IWrapperSoapDeSerializer *pIWSDZ = NULL;
  	mc->getSoapDeSerializer(&pIWSDZ);
  	if (!pIWSDZ) return FAIL;
  	pIWSSZ->createSoapMethod("echoIntegerArrayResponse", pIWSSZ->getNewNamespacePrefix(), "http://soapinterop.org/");
  	ArrayOfint v0 = (ArrayOfint&)pIWSDZ->GetArray(XSD_INT);
  	ArrayOfint ret = pWs->echoIntegerArray(v0);
  	return pIWSSZ->AddOutputParam("echoIntegerArrayReturn", (Axis_Array*)(&ret),XSD_INT);
  }
  
  
  /////////////////////////////////////////////////////////////////
  // This method wrap the service method 
  //////////////////////////////////////////////////////////////////
  int InteropTestPortTypeWrapper::echoFloat(IMessageData* mc)
  {
  	IWrapperSoapSerializer *pIWSSZ = NULL;
  	mc->getSoapSerializer(&pIWSSZ);
  	if (!pIWSSZ) return FAIL;
  	IWrapperSoapDeSerializer *pIWSDZ = NULL;
  	mc->getSoapDeSerializer(&pIWSDZ);
  	if (!pIWSDZ) return FAIL;
  	pIWSSZ->createSoapMethod("echoFloatResponse", pIWSSZ->getNewNamespacePrefix(), "http://soapinterop.org/");
  	float v0 = pIWSDZ->GetFloat();
  	float ret = pWs->echoFloat(v0);
  	return pIWSSZ->AddOutputParam("echoFloatReturn", ret, XSD_FLOAT);
  }
  
  
  /////////////////////////////////////////////////////////////////
  // This method wrap the service method 
  //////////////////////////////////////////////////////////////////
  int InteropTestPortTypeWrapper::echoFloatArray(IMessageData* mc)
  {
  	IWrapperSoapSerializer *pIWSSZ = NULL;
  	mc->getSoapSerializer(&pIWSSZ);
  	if (!pIWSSZ) return FAIL;
  	IWrapperSoapDeSerializer *pIWSDZ = NULL;
  	mc->getSoapDeSerializer(&pIWSDZ);
  	if (!pIWSDZ) return FAIL;
  	pIWSSZ->createSoapMethod("echoFloatArrayResponse", pIWSSZ->getNewNamespacePrefix(), "http://soapinterop.org/");
  	ArrayOffloat v0 = (ArrayOffloat&)pIWSDZ->GetArray(XSD_FLOAT);
  	ArrayOffloat ret = pWs->echoFloatArray(v0);
  	return pIWSSZ->AddOutputParam("echoFloatArrayReturn", (Axis_Array*)(&ret),XSD_FLOAT);
  }
  
  
  /////////////////////////////////////////////////////////////////
  // This method wrap the service method 
  //////////////////////////////////////////////////////////////////
  int InteropTestPortTypeWrapper::echoStruct(IMessageData* mc)
  {
  	IWrapperSoapSerializer *pIWSSZ = NULL;
  	mc->getSoapSerializer(&pIWSSZ);
  	if (!pIWSSZ) return FAIL;
  	IWrapperSoapDeSerializer *pIWSDZ = NULL;
  	mc->getSoapDeSerializer(&pIWSDZ);
  	if (!pIWSDZ) return FAIL;
  	pIWSSZ->createSoapMethod("echoStructResponse", pIWSSZ->getNewNamespacePrefix(), "http://soapinterop.org/");
  	SOAPStruct *v0 = (SOAPStruct*)pIWSDZ->GetObject((AXIS_DESERIALIZE_FUNCT)Axis_DeSerialize_SOAPStruct
  		, (AXIS_OBJECT_CREATE_FUNCT)Axis_Create_SOAPStruct, (AXIS_OBJECT_DELETE_FUNCT)Axis_Delete_SOAPStruct
  		, Axis_TypeName_SOAPStruct, Axis_URI_SOAPStruct);
  	SOAPStruct *ret = pWs->echoStruct(v0);
  	return pIWSSZ->AddOutputParam("echoStructReturn", ret, (void*)Axis_Serialize_SOAPStruct, (void*)Axis_Delete_SOAPStruct);
  }
  
  
  /////////////////////////////////////////////////////////////////
  // This method wrap the service method 
  //////////////////////////////////////////////////////////////////
  int InteropTestPortTypeWrapper::echoStructArray(IMessageData* mc)
  {
  	IWrapperSoapSerializer *pIWSSZ = NULL;
  	mc->getSoapSerializer(&pIWSSZ);
  	if (!pIWSSZ) return FAIL;
  	IWrapperSoapDeSerializer *pIWSDZ = NULL;
  	mc->getSoapDeSerializer(&pIWSDZ);
  	if (!pIWSDZ) return FAIL;
  	pIWSSZ->createSoapMethod("echoStructArrayResponse", pIWSSZ->getNewNamespacePrefix(), "http://soapinterop.org/");
  	ArrayOfSOAPStruct v0 = (ArrayOfSOAPStruct&)pIWSDZ->GetArray((AXIS_DESERIALIZE_FUNCT)Axis_DeSerialize_SOAPStruct
  		, (AXIS_OBJECT_CREATE_FUNCT)Axis_Create_SOAPStruct, (AXIS_OBJECT_DELETE_FUNCT)Axis_Delete_SOAPStruct
  		, (AXIS_OBJECT_SIZE_FUNCT)Axis_GetSize_SOAPStruct, Axis_TypeName_SOAPStruct, Axis_URI_SOAPStruct);
  	ArrayOfSOAPStruct ret = pWs->echoStructArray(v0);
  	return pIWSSZ->AddOutputParam("echoStructArrayReturn", (Axis_Array*)(&ret),(void*) Axis_Serialize_SOAPStruct, (void*) Axis_Delete_SOAPStruct, (void*) Axis_GetSize_SOAPStruct, Axis_TypeName_SOAPStruct, Axis_URI_SOAPStruct);
  }
  
  
  /////////////////////////////////////////////////////////////////
  // This method wrap the service method 
  //////////////////////////////////////////////////////////////////
  int InteropTestPortTypeWrapper::echoVoid(IMessageData* mc)
  {
  	IWrapperSoapSerializer *pIWSSZ = NULL;
  	mc->getSoapSerializer(&pIWSSZ);
  	if (!pIWSSZ) return FAIL;
  	IWrapperSoapDeSerializer *pIWSDZ = NULL;
  	mc->getSoapDeSerializer(&pIWSDZ);
  	if (!pIWSDZ) return FAIL;
  	pIWSSZ->createSoapMethod("echoVoidResponse", pIWSSZ->getNewNamespacePrefix(), "http://soapinterop.org/");
  	pWs->echoVoid();
  	return SUCCESS;
  }
  
  
  /////////////////////////////////////////////////////////////////
  // This method wrap the service method 
  //////////////////////////////////////////////////////////////////
  int InteropTestPortTypeWrapper::echoBase64(IMessageData* mc)
  {
  	IWrapperSoapSerializer *pIWSSZ = NULL;
  	mc->getSoapSerializer(&pIWSSZ);
  	if (!pIWSSZ) return FAIL;
  	IWrapperSoapDeSerializer *pIWSDZ = NULL;
  	mc->getSoapDeSerializer(&pIWSDZ);
  	if (!pIWSDZ) return FAIL;
  	pIWSSZ->createSoapMethod("echoBase64Response", pIWSSZ->getNewNamespacePrefix(), "http://soapinterop.org/");
  	Axis_Base64Binary v0 = pIWSDZ->GetBase64String();
  	Axis_Base64Binary ret = pWs->echoBase64(v0);
  	return pIWSSZ->AddOutputParam("echoBase64Return", ret, XSD_BASE64BINARY);
  }
  
  
  /////////////////////////////////////////////////////////////////
  // This method wrap the service method 
  //////////////////////////////////////////////////////////////////
  int InteropTestPortTypeWrapper::echoDate(IMessageData* mc)
  {
  	IWrapperSoapSerializer *pIWSSZ = NULL;
  	mc->getSoapSerializer(&pIWSSZ);
  	if (!pIWSSZ) return FAIL;
  	IWrapperSoapDeSerializer *pIWSDZ = NULL;
  	mc->getSoapDeSerializer(&pIWSDZ);
  	if (!pIWSDZ) return FAIL;
  	pIWSSZ->createSoapMethod("echoDateResponse", pIWSSZ->getNewNamespacePrefix(), "http://soapinterop.org/");
  	Axis_DateTime v0 = pIWSDZ->GetDateTime();
  	Axis_DateTime ret = pWs->echoDate(v0);
  	return pIWSSZ->AddOutputParam("echoDateReturn", ret, XSD_DATETIME);
  }
  
  
  /////////////////////////////////////////////////////////////////
  // This method wrap the service method 
  //////////////////////////////////////////////////////////////////
  int InteropTestPortTypeWrapper::echoHexBinary(IMessageData* mc)
  {
  	IWrapperSoapSerializer *pIWSSZ = NULL;
  	mc->getSoapSerializer(&pIWSSZ);
  	if (!pIWSSZ) return FAIL;
  	IWrapperSoapDeSerializer *pIWSDZ = NULL;
  	mc->getSoapDeSerializer(&pIWSDZ);
  	if (!pIWSDZ) return FAIL;
  	pIWSSZ->createSoapMethod("echoHexBinaryResponse", pIWSSZ->getNewNamespacePrefix(), "http://soapinterop.org/");
  	Axis_HexBinary v0 = pIWSDZ->GetHexString();
  	Axis_HexBinary ret = pWs->echoHexBinary(v0);
  	return pIWSSZ->AddOutputParam("echoHexBinaryReturn", ret, XSD_HEXBINARY);
  }
  
  
  /////////////////////////////////////////////////////////////////
  // This method wrap the service method 
  //////////////////////////////////////////////////////////////////
  int InteropTestPortTypeWrapper::echoDecimal(IMessageData* mc)
  {
  	IWrapperSoapSerializer *pIWSSZ = NULL;
  	mc->getSoapSerializer(&pIWSSZ);
  	if (!pIWSSZ) return FAIL;
  	IWrapperSoapDeSerializer *pIWSDZ = NULL;
  	mc->getSoapDeSerializer(&pIWSDZ);
  	if (!pIWSDZ) return FAIL;
  	pIWSSZ->createSoapMethod("echoDecimalResponse", pIWSSZ->getNewNamespacePrefix(), "http://soapinterop.org/");
  	Axis_Decimal v0 = pIWSDZ->GetDecimal();
  	Axis_Decimal ret = pWs->echoDecimal(v0);
  	return pIWSSZ->AddOutputParam("echoDecimalReturn", ret, XSD_DECIMAL);
  }
  
  
  /////////////////////////////////////////////////////////////////
  // This method wrap the service method 
  //////////////////////////////////////////////////////////////////
  int InteropTestPortTypeWrapper::echoBoolean(IMessageData* mc)
  {
  	IWrapperSoapSerializer *pIWSSZ = NULL;
  	mc->getSoapSerializer(&pIWSSZ);
  	if (!pIWSSZ) return FAIL;
  	IWrapperSoapDeSerializer *pIWSDZ = NULL;
  	mc->getSoapDeSerializer(&pIWSDZ);
  	if (!pIWSDZ) return FAIL;
  	pIWSSZ->createSoapMethod("echoBooleanResponse", pIWSSZ->getNewNamespacePrefix(), "http://soapinterop.org/");
  	Axis_Boolean v0 = pIWSDZ->GetInt();
  	Axis_Boolean ret = pWs->echoBoolean(v0);
  	return pIWSSZ->AddOutputParam("echoBooleanReturn", ret, XSD_BOOLEAN);
  }
  
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/base/InteropTestPortTypeWrapper.h
  
  Index: InteropTestPortTypeWrapper.h
  ===================================================================
  /////////////////////////////////////////////////////////////////////////////
  // This is the Service Class genarated by the tool WSDL2Ws
  //		InteropTestPortTypeWrapper.h: interface for the InteropTestPortTypeWrapperclass.
  //
  //////////////////////////////////////////////////////////////////////
  #if !defined(__INTEROPTESTPORTTYPEWRAPPER_SERVERWRAPPER_H__INCLUDED_)
  #define __INTEROPTESTPORTTYPEWRAPPER_SERVERWRAPPER_H__INCLUDED_
  
  #include "InteropTestPortType.h"
  #include <axis/common/WrapperClassHandler.h>
  #include <axis/common/IMessageData.h>
  #include <axis/common/GDefine.h>
  #include <axis/common/IWrapperSoapDeSerializer.h>
  #include <axis/common/IWrapperSoapSerializer.h>
  #include <axis/common/ISoapMethod.h>
  #include <axis/common/IParam.h>
  
  class InteropTestPortTypeWrapper : public WrapperClassHandler
  {
  private:// Actual web service object
  	InteropTestPortType *pWs;
  public:
  	InteropTestPortTypeWrapper();
  public:
  	virtual ~InteropTestPortTypeWrapper();
  public://implementation of WrapperClassHandler interface
  	int Invoke(IMessageData* mc);
  	void OnFault(IMessageData* pMsg);
  	int Init();
  	int Fini();
  private://Methods corresponding to the web service methods
  	int echoString(IMessageData* mc);
  	int echoStringArray(IMessageData* mc);
  	int echoInteger(IMessageData* mc);
  	int echoIntegerArray(IMessageData* mc);
  	int echoFloat(IMessageData* mc);
  	int echoFloatArray(IMessageData* mc);
  	int echoStruct(IMessageData* mc);
  	int echoStructArray(IMessageData* mc);
  	int echoVoid(IMessageData* mc);
  	int echoBase64(IMessageData* mc);
  	int echoDate(IMessageData* mc);
  	int echoHexBinary(IMessageData* mc);
  	int echoDecimal(IMessageData* mc);
  	int echoBoolean(IMessageData* mc);
  };
  
  #endif // !defined(__INTEROPTESTPORTTYPEWRAPPER_SERVERWRAPPER_H__INCLUDED_)
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/base/SOAPStruct.cpp
  
  Index: SOAPStruct.cpp
  ===================================================================
  ///////////////////////////////////////////////////////////////////////////////////
  //This file is automatically generated by the Axis C++ Wrapper Class Generator
  //Web service wrapper class's implementation generated by Axis WCG
  //Parameters and wrapper methos to manipulate SOAPStruct
  ////////////////////////////////////////////////////////////////////////////////////
  
  #include "SOAPStruct.h"
  #include <axis/common/IWrapperSoapDeSerializer.h>
  #include <axis/common/IWrapperSoapSerializer.h>
  #include <axis/common/IParam.h>
  
  /////////////////////////////////////////////////////////////////////////////
  // This static method serialize a SOAPStruct type of object
  //////////////////////////////////////////////////////////////////////
  int Axis_Serialize_SOAPStruct(SOAPStruct* param, IWrapperSoapSerializer& pSZ, bool bArray = false)
  {
  	if (bArray)
  	{
  		pSZ << "<" << Axis_TypeName_SOAPStruct << ">";
  	}
  	else
  	{
  		const AxisChar* sPrefix = pSZ.getNewNamespacePrefix();
  		pSZ << "<" << Axis_TypeName_SOAPStruct << " xsi:type=\"" << sPrefix <<":"
  			<< Axis_TypeName_SOAPStruct << "\" xmlns:" << sPrefix << "=\""
  			<< Axis_URI_SOAPStruct << "\">";
  	}
  
  	pSZ << pSZ.SerializeBasicType("varString", param->varString, XSD_STRING);
  	pSZ << pSZ.SerializeBasicType("varInt", param->varInt, XSD_INT);
  	pSZ << pSZ.SerializeBasicType("varFloat", param->varFloat, XSD_FLOAT);
  
  	pSZ << "</" << Axis_TypeName_SOAPStruct << ">";
  	return SUCCESS;
  }
  
  /////////////////////////////////////////////////////////////////////////////
  // This static method deserialize a SOAPStruct type of object
  //////////////////////////////////////////////////////////////////////
  int Axis_DeSerialize_SOAPStruct(SOAPStruct* param, IWrapperSoapDeSerializer *pIWSDZ)
  {
  	param->varString = pIWSDZ->GetString();
  	param->varInt = pIWSDZ->GetInt();
  	param->varFloat = pIWSDZ->GetFloat();
  	return SUCCESS;
  }
  void* Axis_Create_SOAPStruct(bool bArray = false, int nSize=0)
  {
  	if (bArray && (nSize > 0))
  		return new SOAPStruct[nSize];
  	else
  		return new SOAPStruct;
  }
  
  /////////////////////////////////////////////////////////////////////////////
  // This static method delete a SOAPStruct type of object
  //////////////////////////////////////////////////////////////////////
  void Axis_Delete_SOAPStruct(SOAPStruct* param, bool bArray = false, int nSize=0)
  {
  	if (bArray)
  	{
  		delete [] param;
  	}
  	else
  	{
  		//delete any pointer members or array members of this struct here
  		delete param;
  	}
  }
  /////////////////////////////////////////////////////////////////////////////
  // This static method gives the size of SOAPStruct type of object
  //////////////////////////////////////////////////////////////////////
  int Axis_GetSize_SOAPStruct()
  {
  	return sizeof(SOAPStruct);
  }
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/base/SOAPStruct.h
  
  Index: SOAPStruct.h
  ===================================================================
  ///////////////////////////////////////////////////////////////////////////////////
  //This file is automatically generated by the Axis C++ Wrapper Class Generator
  //Web service wrapper class's implementation generated by Axis WCG
  //Parameters and wrapper methos to manipulate SOAPStruct
  ////////////////////////////////////////////////////////////////////////////////////
  
  #if !defined(__SOAPSTRUCT_PARAM_H__INCLUDED_)
  #define __SOAPSTRUCT_PARAM_H__INCLUDED_
  
  #include <axis/common/AxisUserAPI.h>
  
  //Local name and the URI for the type
  static const char* Axis_URI_SOAPStruct = "http://soapinterop.org/xsd";
  static const char* Axis_TypeName_SOAPStruct = "SOAPStruct";
  
  class SOAPStruct
  {
  public:
  	string varString;
  	int varInt;
  	float varFloat;
  };
  
  #endif // !defined(__SOAPSTRUCT_PARAM_H__INCLUDED_)
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/groupB/ArrayOfSOAPStruct.h
  
  Index: ArrayOfSOAPStruct.h
  ===================================================================
  ///////////////////////////////////////////////////////////////////////////////////
  //This file is automatically generated by the Axis C++ Wrapper Class Generator
  //Web service wrapper class's implementation generated by Axis WCG
  //Parameters and wrapper methos to manipulate ArrayOfSOAPStruct
  ////////////////////////////////////////////////////////////////////////////////////
  
  #if !defined(__ARRAYOFSOAPSTRUCT_ARRAY_H__INCLUDED_)
  #define __ARRAYOFSOAPSTRUCT_ARRAY_H__INCLUDED_
  
  #include "SOAPStruct.h"
  
  typedef struct ArrayOfSOAPStructTag
  {
  	SOAPStruct* m_Array;
  	int m_Size;
  } ArrayOfSOAPStruct;
  
  #endif // !defined(__ARRAYOFSOAPSTRUCT_ARRAY_H__INCLUDED_)
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/groupB/ArrayOfString2D.h
  
  Index: ArrayOfString2D.h
  ===================================================================
  ///////////////////////////////////////////////////////////////////////////////////
  //This file is automatically generated by the Axis C++ Wrapper Class Generator
  //Web service wrapper class's implementation generated by Axis WCG
  //Parameters and wrapper methos to manipulate ArrayOfString2D
  ////////////////////////////////////////////////////////////////////////////////////
  
  #if !defined(__ARRAYOFSTRING2D_ARRAY_H__INCLUDED_)
  #define __ARRAYOFSTRING2D_ARRAY_H__INCLUDED_
  
  #include <axis/common/AxisUserAPI.h>
  
  typedef struct ArrayOfString2DTag
  {
  	string* m_Array;
  	int m_Size;
  } ArrayOfString2D;
  
  #endif // !defined(__ARRAYOFSTRING2D_ARRAY_H__INCLUDED_)
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/groupB/ArrayOffloat.h
  
  Index: ArrayOffloat.h
  ===================================================================
  ///////////////////////////////////////////////////////////////////////////////////
  //This file is automatically generated by the Axis C++ Wrapper Class Generator
  //Web service wrapper class's implementation generated by Axis WCG
  //Parameters and wrapper methos to manipulate ArrayOffloat
  ////////////////////////////////////////////////////////////////////////////////////
  
  #if !defined(__ARRAYOFFLOAT_ARRAY_H__INCLUDED_)
  #define __ARRAYOFFLOAT_ARRAY_H__INCLUDED_
  
  #include <axis/common/AxisUserAPI.h>
  
  typedef struct ArrayOffloatTag
  {
  	float* m_Array;
  	int m_Size;
  } ArrayOffloat;
  
  #endif // !defined(__ARRAYOFFLOAT_ARRAY_H__INCLUDED_)
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/groupB/ArrayOfint.h
  
  Index: ArrayOfint.h
  ===================================================================
  ///////////////////////////////////////////////////////////////////////////////////
  //This file is automatically generated by the Axis C++ Wrapper Class Generator
  //Web service wrapper class's implementation generated by Axis WCG
  //Parameters and wrapper methos to manipulate ArrayOfint
  ////////////////////////////////////////////////////////////////////////////////////
  
  #if !defined(__ARRAYOFINT_ARRAY_H__INCLUDED_)
  #define __ARRAYOFINT_ARRAY_H__INCLUDED_
  
  #include <axis/common/AxisUserAPI.h>
  
  typedef struct ArrayOfintTag
  {
  	int* m_Array;
  	int m_Size;
  } ArrayOfint;
  
  #endif // !defined(__ARRAYOFINT_ARRAY_H__INCLUDED_)
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/groupB/ArrayOfstring.h
  
  Index: ArrayOfstring.h
  ===================================================================
  ///////////////////////////////////////////////////////////////////////////////////
  //This file is automatically generated by the Axis C++ Wrapper Class Generator
  //Web service wrapper class's implementation generated by Axis WCG
  //Parameters and wrapper methos to manipulate ArrayOfstring
  ////////////////////////////////////////////////////////////////////////////////////
  
  #if !defined(__ARRAYOFSTRING_ARRAY_H__INCLUDED_)
  #define __ARRAYOFSTRING_ARRAY_H__INCLUDED_
  
  #include <axis/common/AxisUserAPI.h>
  
  typedef struct ArrayOfstringTag
  {
  	string* m_Array;
  	int m_Size;
  } ArrayOfstring;
  
  #endif // !defined(__ARRAYOFSTRING_ARRAY_H__INCLUDED_)
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/groupB/InteropGroupB.wsdl
  
  Index: InteropGroupB.wsdl
  ===================================================================
  <?xml version="1.0"?>
  <definitions name="InteropTestB" targetNamespace="http://soapinterop.org/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  	<types>
  		<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://soapinterop.org/xsd">
  	                <import namespace = "http://schemas.xmlsoap.org/soap/encoding/"/>
  			<complexType name="ArrayOfstring">
  				<complexContent>
  					<restriction base="SOAP-ENC:Array">
  						<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="string[]"/>
  					</restriction>
  				</complexContent>
  			</complexType>
  			<complexType name="ArrayOfint">
  				<complexContent>
  					<restriction base="SOAP-ENC:Array">
  						<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="int[]"/>
  					</restriction>
  				</complexContent>
  			</complexType>
  			<complexType name="ArrayOffloat">
  				<complexContent>
  					<restriction base="SOAP-ENC:Array">
  						<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="float[]"/>
  					</restriction>
  				</complexContent>
  			</complexType>
  			<complexType name="ArrayOfSOAPStruct">
  				<complexContent>
  					<restriction base="SOAP-ENC:Array">
  						<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="s:SOAPStruct[]"/>
  					</restriction>
  				</complexContent>
  			</complexType>
  			<complexType name="SOAPStruct">
  				<all>
  					<element name="varString" type="string"/>
  					<element name="varInt" type="int"/>
  					<element name="varFloat" type="float"/>
  				</all>
  			</complexType>
  			<complexType name="SOAPStructStruct">
  				<all>
  					<element name="varString" type="string"/>
  					<element name="varInt" type="int"/>
  					<element name="varFloat" type="float"/>
  					<element name="varStruct" type="s:SOAPStruct"/>
  				</all>
  			</complexType>
  			<complexType name="SOAPArrayStruct">
  				<all>
  					<element name="varString" type="string"/>
  					<element name="varInt" type="int"/>
  					<element name="varFloat" type="float"/>
  					<element name="varArray" type="s:ArrayOfstring"/>
  				</all>
  			</complexType>
              <complexType name="ArrayOfString2D">
                  <complexContent>
  			<restriction base="SOAP-ENC:Array">
  	                    <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd:string[,]"/>
  			</restriction>
                  </complexContent>
              </complexType>
  		</schema>
  	</types>
  
  	<message name="echoStructAsSimpleTypesRequest">
  		<part name="inputStruct" type="s:SOAPStruct"/>
  	</message>
  	<message name="echoStructAsSimpleTypesResponse">
  		<part name="outputString" type="xsd:string"/>
  		<part name="outputInteger" type="xsd:int"/>
  		<part name="outputFloat" type="xsd:float"/>
  	</message>
  	<message name="echoSimpleTypesAsStructRequest">
  		<part name="inputString" type="xsd:string"/>
  		<part name="inputInteger" type="xsd:int"/>
  		<part name="inputFloat" type="xsd:float"/>
  	</message>
  	<message name="echoSimpleTypesAsStructResponse">
  		<part name="return" type="s:SOAPStruct"/>
  	</message>
  	<message name="echo2DStringArrayRequest">
  		<part name="input2DStringArray" type="s:ArrayOfString2D"/>
  	</message>
  	<message name="echo2DStringArrayResponse">
  		<part name="return" type="s:ArrayOfString2D"/>
  	</message>
  	<message name="echoNestedStructRequest">
  		<part name="inputStruct" type="s:SOAPStructStruct"/>
  	</message>
  	<message name="echoNestedStructResponse">
  		<part name="return" type="s:SOAPStructStruct"/>
  	</message>
  		<message name="echoNestedArrayRequest">
  		<part name="inputStruct" type="s:SOAPArrayStruct"/>
  	</message>
  	<message name="echoNestedArrayResponse">
  		<part name="return" type="s:SOAPArrayStruct"/>
  	</message>
  
  	<portType name="InteropTestPortTypeB">
  		<operation name="echoStructAsSimpleTypes" parameterOrder="inputStruct outputString outputInteger outputFloat">
  			<input message="tns:echoStructAsSimpleTypesRequest"/>
  			<output message="tns:echoStructAsSimpleTypesResponse"/>
  		</operation>
  		<operation name="echoSimpleTypesAsStruct" parameterOrder="inputString inputInteger inputFloat">
  			<input message="tns:echoSimpleTypesAsStructRequest"/>
  			<output message="tns:echoSimpleTypesAsStructResponse"/>
  		</operation>
  		<operation name="echo2DStringArray" parameterOrder="input2DStringArray">
  			<input message="tns:echo2DStringArrayRequest"/>
  			<output message="tns:echo2DStringArrayResponse"/>
  		</operation>
  		<operation name="echoNestedStruct" parameterOrder="inputStruct">
  			<input message="tns:echoNestedStructRequest"/>
  			<output message="tns:echoNestedStructResponse"/>
  		</operation>
  		<operation name="echoNestedArray" parameterOrder="inputStruct">
  			<input message="tns:echoNestedArrayRequest"/>
  			<output message="tns:echoNestedArrayResponse"/>
  		</operation>
  	</portType>
  
  	<binding name="InteropTestSoapBindingB" type="tns:InteropTestPortTypeB">
  		<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
  		<operation name="echoStructAsSimpleTypes">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoSimpleTypesAsStruct">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echo2DStringArray">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoNestedStruct">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoNestedArray">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  	</binding>
   	<service name="InteropGroupB">
      		<port binding="tns:InteropTestSoapBindingB" name="InteropGroupBTest">
        		<soap:address location="http://localhost/axis/InteropGroupB"/>
      		</port>
    	</service>
  </definitions>
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/groupB/InteropTestPortTypeB.cpp
  
  Index: InteropTestPortTypeB.cpp
  ===================================================================
  ///////////////////////////////////////////////////////////////////////
  //This is the Service implementation CPP file genarated by theWSDL2Ws.
  //		InteropTestPortTypeB.cpp: implemtation for the InteropTestPortTypeB.
  //
  //////////////////////////////////////////////////////////////////////
  #include "InteropTestPortTypeB.h"
  
  
  InteropTestPortTypeB::InteropTestPortTypeB()
  {
  }
  
  InteropTestPortTypeB::~InteropTestPortTypeB()
  {
  }
  
  float InteropTestPortTypeB::echoStructAsSimpleTypes(SOAPStruct* Value0)
  {
  	return Value0->varFloat;
  }
  SOAPStruct* InteropTestPortTypeB::echoSimpleTypesAsStruct(float Value0, int Value1, string Value2)
  {
  	SOAPStruct* pRet = new SOAPStruct();
  	pRet->varFloat = Value0;
  	pRet->varInt = Value1;
  	pRet->varString = Value2;
  	return pRet;
  }
  ArrayOfString2D InteropTestPortTypeB::echo2DStringArray(ArrayOfString2D Value0)
  {
  	return Value0;
  }
  SOAPStructStruct* InteropTestPortTypeB::echoNestedStruct(SOAPStructStruct* Value0)
  {
  	return Value0;
  }
  SOAPArrayStruct* InteropTestPortTypeB::echoNestedArray(SOAPArrayStruct* Value0)
  {
  	return Value0;
  }
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/groupB/InteropTestPortTypeB.h
  
  Index: InteropTestPortTypeB.h
  ===================================================================
  /////////////////////////////////////////////////////////////////////////////
  // This is the Service Class genarated by the tool WSDL2Ws
  //		InteropTestPortTypeB.h: interface for the InteropTestPortTypeBclass.
  //
  //////////////////////////////////////////////////////////////////////
  #if !defined(__INTEROPTESTPORTTYPEB_SERVERSKELETON_H__INCLUDED_)
  #define __INTEROPTESTPORTTYPEB_SERVERSKELETON_H__INCLUDED_
  
  #include <axis/common/AxisUserAPI.h>
  
  #include "SOAPArrayStruct.h"
  #include "SOAPStruct.h"
  #include "ArrayOffloat.h"
  #include "ArrayOfSOAPStruct.h"
  #include "ArrayOfint.h"
  #include "ArrayOfString2D.h"
  #include "SOAPStructStruct.h"
  #include "ArrayOfstring.h"
  
  class InteropTestPortTypeB 
  {
  	public:
  		InteropTestPortTypeB();
  	public:
  		virtual ~InteropTestPortTypeB();
  	public: 
  		float echoStructAsSimpleTypes(SOAPStruct* Value0);
  		SOAPStruct* echoSimpleTypesAsStruct(float Value0,int Value1,string Value2);
  		ArrayOfString2D echo2DStringArray(ArrayOfString2D Value0);
  		SOAPStructStruct* echoNestedStruct(SOAPStructStruct* Value0);
  		SOAPArrayStruct* echoNestedArray(SOAPArrayStruct* Value0);
  };
  
  #endif // !defined(__INTEROPTESTPORTTYPEB_SERVERSKELETON_H__INCLUDED_)
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/groupB/InteropTestPortTypeBService.cpp
  
  Index: InteropTestPortTypeBService.cpp
  ===================================================================
  //		This file is automatically generated by the Axis C++ Wrapper Class Generator
  //		Service file containing the two export functions of the Web service Library
  #ifdef WIN32
  #define STORAGE_CLASS_INFO __declspec(dllexport)
  #else
  #define STORAGE_CLASS_INFO 
  #endif
  #include "InteropTestPortTypeBWrapper.h" 
  extern "C" {
  STORAGE_CLASS_INFO
  int GetClassInstance(BasicHandler **inst)
  {
  	WrapperClassHandler* pWCH = new InteropTestPortTypeBWrapper();
  	if (pWCH)
  	{
  		pWCH->Init();
  		*inst = pWCH;
  		return SUCCESS;
  	}
  	return FAIL;
  }
  STORAGE_CLASS_INFO 
  int DestroyInstance(BasicHandler *inst)
  {
  	if (inst)
  	{
  		WrapperClassHandler* pWCH = static_cast<WrapperClassHandler*>(inst);
  		pWCH->Fini();
  		delete pWCH;
  		return SUCCESS;
  	}
  	return FAIL;
  }
  }
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/groupB/InteropTestPortTypeBWrapper.cpp
  
  Index: InteropTestPortTypeBWrapper.cpp
  ===================================================================
  ///////////////////////////////////////////////////////////////////////
  //This is the Service implementation CPP file genarated by theWSDL2Ws.
  //		InteropTestPortTypeBWrapper.cpp: implemtation for the InteropTestPortTypeBWrapper.
  //
  //////////////////////////////////////////////////////////////////////
  
  #include "InteropTestPortTypeBWrapper.h"
  
  extern int Axis_DeSerialize_SOAPStruct(SOAPStruct* param, IWrapperSoapDeSerializer *pDZ);
  extern void* Axis_Create_SOAPStruct(bool bArray = false, int nSize=0);
  extern void Axis_Delete_SOAPStruct(SOAPStruct* param, bool bArray = false, int nSize=0);
  extern int Axis_Serialize_SOAPStruct(SOAPStruct* param, IWrapperSoapSerializer& pSZ, bool bArray = false);
  extern int Axis_GetSize_SOAPStruct();
  
  extern int Axis_DeSerialize_SOAPArrayStruct(SOAPArrayStruct* param, IWrapperSoapDeSerializer *pDZ);
  extern void* Axis_Create_SOAPArrayStruct(bool bArray = false, int nSize=0);
  extern void Axis_Delete_SOAPArrayStruct(SOAPArrayStruct* param, bool bArray = false, int nSize=0);
  extern int Axis_Serialize_SOAPArrayStruct(SOAPArrayStruct* param, IWrapperSoapSerializer& pSZ, bool bArray = false);
  extern int Axis_GetSize_SOAPArrayStruct();
  
  extern int Axis_DeSerialize_SOAPStructStruct(SOAPStructStruct* param, IWrapperSoapDeSerializer *pDZ);
  extern void* Axis_Create_SOAPStructStruct(bool bArray = false, int nSize=0);
  extern void Axis_Delete_SOAPStructStruct(SOAPStructStruct* param, bool bArray = false, int nSize=0);
  extern int Axis_Serialize_SOAPStructStruct(SOAPStructStruct* param, IWrapperSoapSerializer& pSZ, bool bArray = false);
  extern int Axis_GetSize_SOAPStructStruct();
  
  InteropTestPortTypeBWrapper::InteropTestPortTypeBWrapper()
  {
  	pWs = new InteropTestPortTypeB();
  }
  
  InteropTestPortTypeBWrapper::~InteropTestPortTypeBWrapper()
  {
  	delete pWs;
  }
  
  //implementation of WrapperClassHandler interface
  void InteropTestPortTypeBWrapper::OnFault(IMessageData *pMsg)
  {
  }
  
  int InteropTestPortTypeBWrapper::Init()
  {
  	return SUCCESS;
  }
  
  int InteropTestPortTypeBWrapper::Fini()
  {
  	return SUCCESS;
  }
  
  
  /////////////////////////////////////////////////////////////////
  // This method invokes the right service method 
  //////////////////////////////////////////////////////////////////
  int InteropTestPortTypeBWrapper::Invoke(IMessageData *mc)
  {
  	IWrapperSoapDeSerializer *pIWSDZ = NULL;
  	mc->getSoapDeSerializer(&pIWSDZ);
  	if (!pIWSDZ) return FAIL;
  	const AxisChar *method = pIWSDZ->GetMethodName();
  	if (0 == strcmp(method, "echoStructAsSimpleTypes"))
  		return echoStructAsSimpleTypes(mc);
  	else if (0 == strcmp(method, "echoSimpleTypesAsStruct"))
  		return echoSimpleTypesAsStruct(mc);
  	else if (0 == strcmp(method, "echo2DStringArray"))
  		return echo2DStringArray(mc);
  	else if (0 == strcmp(method, "echoNestedStruct"))
  		return echoNestedStruct(mc);
  	else if (0 == strcmp(method, "echoNestedArray"))
  		return echoNestedArray(mc);
  	else return FAIL;
  }
  
  
  //Methods corresponding to the web service methods
  
  /////////////////////////////////////////////////////////////////
  // This method wrap the service method 
  //////////////////////////////////////////////////////////////////
  int InteropTestPortTypeBWrapper::echoStructAsSimpleTypes(IMessageData* mc)
  {
  	IWrapperSoapSerializer *pIWSSZ = NULL;
  	mc->getSoapSerializer(&pIWSSZ);
  	if (!pIWSSZ) return FAIL;
  	IWrapperSoapDeSerializer *pIWSDZ = NULL;
  	mc->getSoapDeSerializer(&pIWSDZ);
  	if (!pIWSDZ) return FAIL;
  	pIWSSZ->createSoapMethod("echoStructAsSimpleTypesResponse", pIWSSZ->getNewNamespacePrefix(), "http://soapinterop.org/");
  	SOAPStruct *v0 = (SOAPStruct*)pIWSDZ->GetObject((AXIS_DESERIALIZE_FUNCT)Axis_DeSerialize_SOAPStruct
  		, (AXIS_OBJECT_CREATE_FUNCT)Axis_Create_SOAPStruct, (AXIS_OBJECT_DELETE_FUNCT)Axis_Delete_SOAPStruct
  		, Axis_TypeName_SOAPStruct, Axis_URI_SOAPStruct);
  	float ret = pWs->echoStructAsSimpleTypes(v0);
  	return pIWSSZ->AddOutputParam("echoStructAsSimpleTypesReturn", ret, XSD_FLOAT);
  }
  
  
  /////////////////////////////////////////////////////////////////
  // This method wrap the service method 
  //////////////////////////////////////////////////////////////////
  int InteropTestPortTypeBWrapper::echoSimpleTypesAsStruct(IMessageData* mc)
  {
  	IWrapperSoapSerializer *pIWSSZ = NULL;
  	mc->getSoapSerializer(&pIWSSZ);
  	if (!pIWSSZ) return FAIL;
  	IWrapperSoapDeSerializer *pIWSDZ = NULL;
  	mc->getSoapDeSerializer(&pIWSDZ);
  	if (!pIWSDZ) return FAIL;
  	pIWSSZ->createSoapMethod("echoSimpleTypesAsStructResponse", pIWSSZ->getNewNamespacePrefix(), "http://soapinterop.org/");
  	float v0 = pIWSDZ->GetFloat();
  	int v1 = pIWSDZ->GetInt();
  	string v2 = pIWSDZ->GetString();
  	SOAPStruct *ret = pWs->echoSimpleTypesAsStruct(v0,v1,v2);
  	return pIWSSZ->AddOutputParam("echoSimpleTypesAsStructReturn", ret, (void*)Axis_Serialize_SOAPStruct, (void*)Axis_Delete_SOAPStruct);
  }
  
  
  /////////////////////////////////////////////////////////////////
  // This method wrap the service method 
  //////////////////////////////////////////////////////////////////
  int InteropTestPortTypeBWrapper::echo2DStringArray(IMessageData* mc)
  {
  	IWrapperSoapSerializer *pIWSSZ = NULL;
  	mc->getSoapSerializer(&pIWSSZ);
  	if (!pIWSSZ) return FAIL;
  	IWrapperSoapDeSerializer *pIWSDZ = NULL;
  	mc->getSoapDeSerializer(&pIWSDZ);
  	if (!pIWSDZ) return FAIL;
  	pIWSSZ->createSoapMethod("echo2DStringArrayResponse", pIWSSZ->getNewNamespacePrefix(), "http://soapinterop.org/");
  	ArrayOfString2D v0;
  	v0.m_Size = pIWSDZ->GetArraySize();
  	if (v0.m_Size < 1) return FAIL;
  	v0.m_Array = new string[v0.m_Size];
  	if (SUCCESS != pIWSDZ->GetArray((Axis_Array*)(&v0), XSD_STRING)) return FAIL;
  	ArrayOfString2D ret = pWs->echo2DStringArray(v0);
  	return pIWSSZ->AddOutputParam("echo2DStringArrayReturn", (Axis_Array*)(&ret),XSD_STRING);
  }
  
  
  /////////////////////////////////////////////////////////////////
  // This method wrap the service method 
  //////////////////////////////////////////////////////////////////
  int InteropTestPortTypeBWrapper::echoNestedStruct(IMessageData* mc)
  {
  	IWrapperSoapSerializer *pIWSSZ = NULL;
  	mc->getSoapSerializer(&pIWSSZ);
  	if (!pIWSSZ) return FAIL;
  	IWrapperSoapDeSerializer *pIWSDZ = NULL;
  	mc->getSoapDeSerializer(&pIWSDZ);
  	if (!pIWSDZ) return FAIL;
  	pIWSSZ->createSoapMethod("echoNestedStructResponse", pIWSSZ->getNewNamespacePrefix(), "http://soapinterop.org/");
  	SOAPStructStruct *v0 = (SOAPStructStruct*)pIWSDZ->GetObject((AXIS_DESERIALIZE_FUNCT)Axis_DeSerialize_SOAPStructStruct
  		, (AXIS_OBJECT_CREATE_FUNCT)Axis_Create_SOAPStructStruct, (AXIS_OBJECT_DELETE_FUNCT)Axis_Delete_SOAPStructStruct
  		, Axis_TypeName_SOAPStructStruct, Axis_URI_SOAPStructStruct);
  	SOAPStructStruct *ret = pWs->echoNestedStruct(v0);
  	return pIWSSZ->AddOutputParam("echoNestedStructReturn", ret, (void*)Axis_Serialize_SOAPStructStruct, (void*)Axis_Delete_SOAPStructStruct);
  }
  
  
  /////////////////////////////////////////////////////////////////
  // This method wrap the service method 
  //////////////////////////////////////////////////////////////////
  int InteropTestPortTypeBWrapper::echoNestedArray(IMessageData* mc)
  {
  	IWrapperSoapSerializer *pIWSSZ = NULL;
  	mc->getSoapSerializer(&pIWSSZ);
  	if (!pIWSSZ) return FAIL;
  	IWrapperSoapDeSerializer *pIWSDZ = NULL;
  	mc->getSoapDeSerializer(&pIWSDZ);
  	if (!pIWSDZ) return FAIL;
  	pIWSSZ->createSoapMethod("echoNestedArrayResponse", pIWSSZ->getNewNamespacePrefix(), "http://soapinterop.org/");
  	SOAPArrayStruct *v0 = (SOAPArrayStruct*)pIWSDZ->GetObject((AXIS_DESERIALIZE_FUNCT)Axis_DeSerialize_SOAPArrayStruct
  		, (AXIS_OBJECT_CREATE_FUNCT)Axis_Create_SOAPArrayStruct, (AXIS_OBJECT_DELETE_FUNCT)Axis_Delete_SOAPArrayStruct
  		, Axis_TypeName_SOAPArrayStruct, Axis_URI_SOAPArrayStruct);
  	SOAPArrayStruct *ret = pWs->echoNestedArray(v0);
  	return pIWSSZ->AddOutputParam("echoNestedArrayReturn", ret, (void*)Axis_Serialize_SOAPArrayStruct, (void*)Axis_Delete_SOAPArrayStruct);
  }
  
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/groupB/InteropTestPortTypeBWrapper.h
  
  Index: InteropTestPortTypeBWrapper.h
  ===================================================================
  /////////////////////////////////////////////////////////////////////////////
  // This is the Service Class genarated by the tool WSDL2Ws
  //		InteropTestPortTypeBWrapper.h: interface for the InteropTestPortTypeBWrapperclass.
  //
  //////////////////////////////////////////////////////////////////////
  #if !defined(__INTEROPTESTPORTTYPEBWRAPPER_SERVERWRAPPER_H__INCLUDED_)
  #define __INTEROPTESTPORTTYPEBWRAPPER_SERVERWRAPPER_H__INCLUDED_
  
  #include "InteropTestPortTypeB.h"
  #include <axis/common/WrapperClassHandler.h>
  #include <axis/common/IMessageData.h>
  #include <axis/common/GDefine.h>
  #include <axis/common/IWrapperSoapDeSerializer.h>
  #include <axis/common/IWrapperSoapSerializer.h>
  #include <axis/common/ISoapMethod.h>
  #include <axis/common/IParam.h>
  
  class InteropTestPortTypeBWrapper : public WrapperClassHandler
  {
  private:// Actual web service object
  	InteropTestPortTypeB *pWs;
  public:
  	InteropTestPortTypeBWrapper();
  public:
  	virtual ~InteropTestPortTypeBWrapper();
  public://implementation of WrapperClassHandler interface
  	int Invoke(IMessageData* mc);
  	void OnFault(IMessageData* pMsg);
  	int Init();
  	int Fini();
  private://Methods corresponding to the web service methods
  	int echoStructAsSimpleTypes(IMessageData* mc);
  	int echoSimpleTypesAsStruct(IMessageData* mc);
  	int echo2DStringArray(IMessageData* mc);
  	int echoNestedStruct(IMessageData* mc);
  	int echoNestedArray(IMessageData* mc);
  };
  
  #endif // !defined(__INTEROPTESTPORTTYPEBWRAPPER_SERVERWRAPPER_H__INCLUDED_)
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/groupB/SOAPArrayStruct.cpp
  
  Index: SOAPArrayStruct.cpp
  ===================================================================
  ///////////////////////////////////////////////////////////////////////////////////
  //This file is automatically generated by the Axis C++ Wrapper Class Generator
  //Web service wrapper class's implementation generated by Axis WCG
  //Parameters and wrapper methos to manipulate SOAPArrayStruct
  ////////////////////////////////////////////////////////////////////////////////////
  
  #include "SOAPArrayStruct.h"
  #include <axis/common/IWrapperSoapDeSerializer.h>
  #include <axis/common/IWrapperSoapSerializer.h>
  #include <axis/common/IParam.h>
  
  /////////////////////////////////////////////////////////////////////////////
  // This static method serialize a SOAPArrayStruct type of object
  //////////////////////////////////////////////////////////////////////
  int Axis_Serialize_SOAPArrayStruct(SOAPArrayStruct* param, IWrapperSoapSerializer& pSZ, bool bArray = false)
  {
  	if (bArray)
  	{
  		pSZ << "<" << Axis_TypeName_SOAPArrayStruct << ">";
  	}
  	else
  	{
  		const AxisChar* sPrefix = pSZ.getNewNamespacePrefix();
  		pSZ << "<" << Axis_TypeName_SOAPArrayStruct << " xsi:type=\"" << sPrefix <<":"
  			<< Axis_TypeName_SOAPArrayStruct << "\" xmlns:" << sPrefix << "=\""
  			<< Axis_URI_SOAPArrayStruct << "\">";
  	}
  
  	pSZ << pSZ.SerializeBasicType("varString", param->varString, XSD_STRING);
  	pSZ << pSZ.SerializeBasicType("varInt", param->varInt, XSD_INT);
  	pSZ << pSZ.SerializeBasicType("varFloat", param->varFloat, XSD_FLOAT);
  	pSZ.SerializeArray((Axis_Array*)(&param->varArray),XSD_STRING, "varArray");
  
  	pSZ << "</" << Axis_TypeName_SOAPArrayStruct << ">";
  	return SUCCESS;
  }
  
  /////////////////////////////////////////////////////////////////////////////
  // This static method deserialize a SOAPArrayStruct type of object
  //////////////////////////////////////////////////////////////////////
  int Axis_DeSerialize_SOAPArrayStruct(SOAPArrayStruct* param, IWrapperSoapDeSerializer *pIWSDZ)
  {
  	param->varString = pIWSDZ->GetString();
  	param->varInt = pIWSDZ->GetInt();
  	param->varFloat = pIWSDZ->GetFloat();
  	param->varArray.m_Size = pIWSDZ->GetArraySize();
  	if (param->varArray.m_Size < 1) return FAIL;
  	param->varArray.m_Array = new string[param->varArray.m_Size];
  	if (SUCCESS != pIWSDZ->GetArray((Axis_Array*)(&param->varArray), XSD_STRING)) return FAIL;
  	return SUCCESS;
  }
  void* Axis_Create_SOAPArrayStruct(bool bArray = false, int nSize=0)
  {
  	if (bArray && (nSize > 0))
  		return new SOAPArrayStruct[nSize];
  	else
  		return new SOAPArrayStruct;
  }
  
  /////////////////////////////////////////////////////////////////////////////
  // This static method delete a SOAPArrayStruct type of object
  //////////////////////////////////////////////////////////////////////
  void Axis_Delete_SOAPArrayStruct(SOAPArrayStruct* param, bool bArray = false, int nSize=0)
  {
  	if (bArray)
  	{
  		//delete any pointer members or array members of this struct here
  		SOAPArrayStruct* pTemp = param;
  		for (int x=0; x<nSize; x++)
  		{
  			delete [] ((string*)pTemp->varArray.m_Array);
  			pTemp++;
  		}
  		delete [] param;
  	}
  	else
  	{
  		//delete any pointer members or array members of this struct here
  		delete [] ((string*)param->varArray.m_Array);
  		delete param;
  	}
  }
  /////////////////////////////////////////////////////////////////////////////
  // This static method gives the size of SOAPArrayStruct type of object
  //////////////////////////////////////////////////////////////////////
  int Axis_GetSize_SOAPArrayStruct()
  {
  	return sizeof(SOAPArrayStruct);
  }
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/groupB/SOAPArrayStruct.h
  
  Index: SOAPArrayStruct.h
  ===================================================================
  ///////////////////////////////////////////////////////////////////////////////////
  //This file is automatically generated by the Axis C++ Wrapper Class Generator
  //Web service wrapper class's implementation generated by Axis WCG
  //Parameters and wrapper methos to manipulate SOAPArrayStruct
  ////////////////////////////////////////////////////////////////////////////////////
  
  #if !defined(__SOAPARRAYSTRUCT_PARAM_H__INCLUDED_)
  #define __SOAPARRAYSTRUCT_PARAM_H__INCLUDED_
  
  #include <axis/common/AxisUserAPI.h>
  
  #include "ArrayOfstring.h"
  //Local name and the URI for the type
  static const char* Axis_URI_SOAPArrayStruct = "http://soapinterop.org/xsd";
  static const char* Axis_TypeName_SOAPArrayStruct = "SOAPArrayStruct";
  
  class SOAPArrayStruct
  {
  public:
  	string varString;
  	int varInt;
  	float varFloat;
  	ArrayOfstring varArray;
  };
  
  #endif // !defined(__SOAPARRAYSTRUCT_PARAM_H__INCLUDED_)
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/groupB/SOAPStruct.cpp
  
  Index: SOAPStruct.cpp
  ===================================================================
  ///////////////////////////////////////////////////////////////////////////////////
  //This file is automatically generated by the Axis C++ Wrapper Class Generator
  //Web service wrapper class's implementation generated by Axis WCG
  //Parameters and wrapper methos to manipulate SOAPStruct
  ////////////////////////////////////////////////////////////////////////////////////
  
  #include "SOAPStruct.h"
  #include <axis/common/IWrapperSoapDeSerializer.h>
  #include <axis/common/IWrapperSoapSerializer.h>
  #include <axis/common/IParam.h>
  
  /////////////////////////////////////////////////////////////////////////////
  // This static method serialize a SOAPStruct type of object
  //////////////////////////////////////////////////////////////////////
  int Axis_Serialize_SOAPStruct(SOAPStruct* param, IWrapperSoapSerializer& pSZ, bool bArray = false)
  {
  	if (bArray)
  	{
  		pSZ << "<" << Axis_TypeName_SOAPStruct << ">";
  	}
  	else
  	{
  		const AxisChar* sPrefix = pSZ.getNewNamespacePrefix();
  		pSZ << "<" << Axis_TypeName_SOAPStruct << " xsi:type=\"" << sPrefix <<":"
  			<< Axis_TypeName_SOAPStruct << "\" xmlns:" << sPrefix << "=\""
  			<< Axis_URI_SOAPStruct << "\">";
  	}
  
  	pSZ << pSZ.SerializeBasicType("varString", param->varString, XSD_STRING);
  	pSZ << pSZ.SerializeBasicType("varInt", param->varInt, XSD_INT);
  	pSZ << pSZ.SerializeBasicType("varFloat", param->varFloat, XSD_FLOAT);
  
  	pSZ << "</" << Axis_TypeName_SOAPStruct << ">";
  	return SUCCESS;
  }
  
  /////////////////////////////////////////////////////////////////////////////
  // This static method deserialize a SOAPStruct type of object
  //////////////////////////////////////////////////////////////////////
  int Axis_DeSerialize_SOAPStruct(SOAPStruct* param, IWrapperSoapDeSerializer *pIWSDZ)
  {
  	param->varString = pIWSDZ->GetString();
  	param->varInt = pIWSDZ->GetInt();
  	param->varFloat = pIWSDZ->GetFloat();
  	return SUCCESS;
  }
  void* Axis_Create_SOAPStruct(bool bArray = false, int nSize=0)
  {
  	if (bArray && (nSize > 0))
  		return new SOAPStruct[nSize];
  	else
  		return new SOAPStruct;
  }
  
  /////////////////////////////////////////////////////////////////////////////
  // This static method delete a SOAPStruct type of object
  //////////////////////////////////////////////////////////////////////
  void Axis_Delete_SOAPStruct(SOAPStruct* param, bool bArray = false, int nSize=0)
  {
  	if (bArray)
  	{
  		delete [] param;
  	}
  	else
  	{
  		//delete any pointer members or array members of this struct here
  		delete param;
  	}
  }
  /////////////////////////////////////////////////////////////////////////////
  // This static method gives the size of SOAPStruct type of object
  //////////////////////////////////////////////////////////////////////
  int Axis_GetSize_SOAPStruct()
  {
  	return sizeof(SOAPStruct);
  }
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/groupB/SOAPStruct.h
  
  Index: SOAPStruct.h
  ===================================================================
  ///////////////////////////////////////////////////////////////////////////////////
  //This file is automatically generated by the Axis C++ Wrapper Class Generator
  //Web service wrapper class's implementation generated by Axis WCG
  //Parameters and wrapper methos to manipulate SOAPStruct
  ////////////////////////////////////////////////////////////////////////////////////
  
  #if !defined(__SOAPSTRUCT_PARAM_H__INCLUDED_)
  #define __SOAPSTRUCT_PARAM_H__INCLUDED_
  
  #include <axis/common/AxisUserAPI.h>
  
  //Local name and the URI for the type
  static const char* Axis_URI_SOAPStruct = "http://soapinterop.org/xsd";
  static const char* Axis_TypeName_SOAPStruct = "SOAPStruct";
  
  class SOAPStruct
  {
  public:
  	string varString;
  	int varInt;
  	float varFloat;
  };
  
  #endif // !defined(__SOAPSTRUCT_PARAM_H__INCLUDED_)
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/groupB/SOAPStructStruct.cpp
  
  Index: SOAPStructStruct.cpp
  ===================================================================
  ///////////////////////////////////////////////////////////////////////////////////
  //This file is automatically generated by the Axis C++ Wrapper Class Generator
  //Web service wrapper class's implementation generated by Axis WCG
  //Parameters and wrapper methos to manipulate SOAPStructStruct
  ////////////////////////////////////////////////////////////////////////////////////
  
  #include "SOAPStructStruct.h"
  #include <axis/common/IWrapperSoapDeSerializer.h>
  #include <axis/common/IWrapperSoapSerializer.h>
  #include <axis/common/IParam.h>
  
  extern int Axis_DeSerialize_SOAPStruct(SOAPStruct* param, IWrapperSoapDeSerializer *pDZ);
  extern void* Axis_Create_SOAPStruct(bool bArray = false, int nSize=0);
  extern void Axis_Delete_SOAPStruct(SOAPStruct* param, bool bArray = false, int nSize=0);
  extern int Axis_Serialize_SOAPStruct(SOAPStruct* param, IWrapperSoapSerializer& pSZ, bool bArray = false);
  extern int Axis_GetSize_SOAPStruct();
  
  /////////////////////////////////////////////////////////////////////////////
  // This static method serialize a SOAPStructStruct type of object
  //////////////////////////////////////////////////////////////////////
  int Axis_Serialize_SOAPStructStruct(SOAPStructStruct* param, IWrapperSoapSerializer& pSZ, bool bArray = false)
  {
  	if (bArray)
  	{
  		pSZ << "<" << Axis_TypeName_SOAPStructStruct << ">";
  	}
  	else
  	{
  		const AxisChar* sPrefix = pSZ.getNewNamespacePrefix();
  		pSZ << "<" << Axis_TypeName_SOAPStructStruct << " xsi:type=\"" << sPrefix <<":"
  			<< Axis_TypeName_SOAPStructStruct << "\" xmlns:" << sPrefix << "=\""
  			<< Axis_URI_SOAPStructStruct << "\">";
  	}
  
  	pSZ << pSZ.SerializeBasicType("varString", param->varString, XSD_STRING);
  	pSZ << pSZ.SerializeBasicType("varInt", param->varInt, XSD_INT);
  	pSZ << pSZ.SerializeBasicType("varFloat", param->varFloat, XSD_FLOAT);
  	Axis_Serialize_SOAPStruct(param->varStruct, pSZ);
  
  	pSZ << "</" << Axis_TypeName_SOAPStructStruct << ">";
  	return SUCCESS;
  }
  
  /////////////////////////////////////////////////////////////////////////////
  // This static method deserialize a SOAPStructStruct type of object
  //////////////////////////////////////////////////////////////////////
  int Axis_DeSerialize_SOAPStructStruct(SOAPStructStruct* param, IWrapperSoapDeSerializer *pIWSDZ)
  {
  	param->varString = pIWSDZ->GetString();
  	param->varInt = pIWSDZ->GetInt();
  	param->varFloat = pIWSDZ->GetFloat();
  	param->varStruct = (SOAPStruct*)pIWSDZ->GetObject((AXIS_DESERIALIZE_FUNCT)Axis_DeSerialize_SOAPStruct
  		, (AXIS_OBJECT_CREATE_FUNCT)Axis_Create_SOAPStruct, (AXIS_OBJECT_DELETE_FUNCT)Axis_Delete_SOAPStruct
  		, Axis_TypeName_SOAPStruct, Axis_URI_SOAPStruct);
  	return SUCCESS;
  }
  void* Axis_Create_SOAPStructStruct(bool bArray = false, int nSize=0)
  {
  	if (bArray && (nSize > 0))
  		return new SOAPStructStruct[nSize];
  	else
  		return new SOAPStructStruct;
  }
  
  /////////////////////////////////////////////////////////////////////////////
  // This static method delete a SOAPStructStruct type of object
  //////////////////////////////////////////////////////////////////////
  void Axis_Delete_SOAPStructStruct(SOAPStructStruct* param, bool bArray = false, int nSize=0)
  {
  	if (bArray)
  	{
  		//delete any pointer members or array members of this struct here
  		SOAPStructStruct* pTemp = param;
  		for (int x=0; x<nSize; x++)
  		{
  			Axis_Delete_SOAPStruct(pTemp->varStruct);
  			pTemp++;
  		}
  		delete [] param;
  	}
  	else
  	{
  		//delete any pointer members or array members of this struct here
  		Axis_Delete_SOAPStruct(param->varStruct);
  		delete param;
  	}
  }
  /////////////////////////////////////////////////////////////////////////////
  // This static method gives the size of SOAPStructStruct type of object
  //////////////////////////////////////////////////////////////////////
  int Axis_GetSize_SOAPStructStruct()
  {
  	return sizeof(SOAPStructStruct);
  }
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/groupB/SOAPStructStruct.h
  
  Index: SOAPStructStruct.h
  ===================================================================
  ///////////////////////////////////////////////////////////////////////////////////
  //This file is automatically generated by the Axis C++ Wrapper Class Generator
  //Web service wrapper class's implementation generated by Axis WCG
  //Parameters and wrapper methos to manipulate SOAPStructStruct
  ////////////////////////////////////////////////////////////////////////////////////
  
  #if !defined(__SOAPSTRUCTSTRUCT_PARAM_H__INCLUDED_)
  #define __SOAPSTRUCTSTRUCT_PARAM_H__INCLUDED_
  
  #include <axis/common/AxisUserAPI.h>
  
  #include "SOAPStruct.h"
  //Local name and the URI for the type
  static const char* Axis_URI_SOAPStructStruct = "http://soapinterop.org/xsd";
  static const char* Axis_TypeName_SOAPStructStruct = "SOAPStructStruct";
  
  class SOAPStructStruct
  {
  public:
  	string varString;
  	int varInt;
  	float varFloat;
  	SOAPStruct* varStruct;
  };
  
  #endif // !defined(__SOAPSTRUCTSTRUCT_PARAM_H__INCLUDED_)
  
  
  
  1.1                  ws-axis/c/src/server/samples/interoptests/groupC/InteropGroupC.wsdl
  
  Index: InteropGroupC.wsdl
  ===================================================================
  <?xml version="1.0"?>
  <definitions name="InteropTest" targetNamespace="http://soapinterop.org/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  
  	<import location="http://www.whitemesa.com/interop/InteropTest.wsdl" namespace="http://soapinterop.org/"/>
  	<import location="http://www.whitemesa.com/interop/InteropTest.wsdl" namespace="http://soapinterop.org/xsd"/>	
  
  	<message name="echoHeaderString_Request">
  		<part name="echoMeStringRequest" type="xsd:string"/>
  	</message>
  	<message name="echoHeaderString_Response">
  		<part name="echoMeStringResponse" type="xsd:string"/>
  	</message>
  	<message name="echoHeaderStruct_Request">
  		<part name="echoMeStructRequest" type="s:SOAPStruct"/>
  	</message>
  	<message name="echoHeaderStruct_Response">
  		<part name="echoMeStructResponse" type="s:SOAPStruct"/>
  	</message>
  
  	<binding name="InteropEchoHeaderBinding" type="tns:InteropTestPortType">
  		<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
  
  		<operation name="echoString">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Request" part="echoMeStringRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Request" part="echoMeStructRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Response" part="echoMeStringResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Response" part="echoMeStructResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoStringArray">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Request" part="echoMeStringRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Request" part="echoMeStructRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Response" part="echoMeStringResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Response" part="echoMeStructResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoInteger">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Request" part="echoMeStringRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Request" part="echoMeStructRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Response" part="echoMeStringResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Response" part="echoMeStructResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoIntegerArray">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Request" part="echoMeStringRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Request" part="echoMeStructRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Response" part="echoMeStringResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Response" part="echoMeStructResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoFloat">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Request" part="echoMeStringRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Request" part="echoMeStructRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Response" part="echoMeStringResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Response" part="echoMeStructResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoFloatArray">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Request" part="echoMeStringRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Request" part="echoMeStructRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Response" part="echoMeStringResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Response" part="echoMeStructResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoStruct">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Request" part="echoMeStringRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Request" part="echoMeStructRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Response" part="echoMeStringResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Response" part="echoMeStructResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoStructArray">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Request" part="echoMeStringRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Request" part="echoMeStructRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Response" part="echoMeStringResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Response" part="echoMeStructResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoVoid">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Request" part="echoMeStringRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Request" part="echoMeStructRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Response" part="echoMeStringResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Response" part="echoMeStructResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoBase64">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Request" part="echoMeStringRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Request" part="echoMeStructRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Response" part="echoMeStringResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Response" part="echoMeStructResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoDate">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Request" part="echoMeStringRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Request" part="echoMeStructRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Response" part="echoMeStringResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Response" part="echoMeStructResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoHexBinary">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Request" part="echoMeStringRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Request" part="echoMeStructRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Response" part="echoMeStringResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Response" part="echoMeStructResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoDecimal">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Request" part="echoMeStringRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Request" part="echoMeStructRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Response" part="echoMeStringResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Response" part="echoMeStructResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoBoolean">
  			<soap:operation soapAction="http://soapinterop.org/"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Request" part="echoMeStringRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Request" part="echoMeStructRequest" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderString_Response" part="echoMeStringResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  				<soap:header use="encoded" message="tns:echoHeaderStruct_Response" part="echoMeStructResponse" namespace="http://soapinterop.org/echoheader/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  	</binding>
   	<service name="InteropGroupC">
      		<port binding="tns:InteropEchoHeaderBinding" name="InteropGroupCTest">
        		<soap:address location="http://localhost/axis/InteropGroupC"/>
      		</port>
    	</service>
  </definitions>