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 2004/02/10 16:04:22 UTC

cvs commit: ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal ClientStubHeaderWriter.java ClientStubWriter.java

susantha    2004/02/10 07:04:22

  Modified:    c/samples/client/interoptests/cbase InteropBaseClient.c
                        InteropTestPortType.c InteropTestPortType.h
               c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c
                        ClientStubHeaderWriter.java ClientStubWriter.java
               c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal
                        ClientStubHeaderWriter.java ClientStubWriter.java
  Log:
  WSDL2WS tool changes to generate C stubs to suite multi-threaded client applicartions
  
  Revision  Changes    Path
  1.5       +2 -2      ws-axis/c/samples/client/interoptests/cbase/InteropBaseClient.c
  
  Index: InteropBaseClient.c
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/samples/client/interoptests/cbase/InteropBaseClient.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- InteropBaseClient.c	10 Feb 2004 12:19:58 -0000	1.4
  +++ InteropBaseClient.c	10 Feb 2004 15:04:21 -0000	1.5
  @@ -19,7 +19,7 @@
   	SOAPStruct stct;
   	time_t tim;
   	struct tm* lt;
  -	void* pstub = get_InteropBase_stub();
  +	void* pstub = get_InteropTestPortType_stub();
   	printf("invoking echoString...\n");
   	/*testing echoString */
   	if (0 == strcmp(echoString(pstub, "hello world"), "hello world"))
  @@ -147,5 +147,5 @@
   	getchar();
   	return 0;
   */	
  -	destroy_InteropBase_stub(pstub);
  +	destroy_InteropTestPortType_stub(pstub);
   }
  
  
  
  1.7       +4 -19     ws-axis/c/samples/client/interoptests/cbase/InteropTestPortType.c
  
  Index: InteropTestPortType.c
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/samples/client/interoptests/cbase/InteropTestPortType.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- InteropTestPortType.c	10 Feb 2004 12:19:58 -0000	1.6
  +++ InteropTestPortType.c	10 Feb 2004 15:04:21 -0000	1.7
  @@ -12,22 +12,20 @@
   extern int Axis_Serialize_SOAPStruct(SOAPStruct* param, IWrapperSoapSerializer* pSZ, bool bArray);
   extern int Axis_GetSize_SOAPStruct();
   
  -
  -void* get_InteropBase_stub(){
  -	return GetStubObject(APTHTTP, "http://localhost/axis/InteropBase");
  +void* get_InteropTestPortType_stub(){
  +	return GetStubObject(APTHTTP, "http://localhost:5555/axis/InteropBase");
   }
  -
  -void destroy_InteropBase_stub(void* p){
  +void destroy_InteropTestPortType_stub(void* p){
   	DestroyStubObject(p);
   }
   
   /*Methods corresponding to the web service methods*/
  +
   /*
    * This method wrap the service methodechoString
    */
   xsd__string echoString(void* pStub, xsd__string Value0)
   {
  -	int nStatus;
   	Call* pCall = (Call*)pStub;
   	xsd__string Ret;
   	/* Following will establish the connections with the server too */
  @@ -53,7 +51,6 @@
    */
   xsd__string_Array echoStringArray(void* pStub, xsd__string_Array Value0)
   {
  -	int nStatus;
   	Call* pCall = (Call*)pStub;
   	xsd__string_Array RetArray = {NULL, 0};
   	Axis_Array array;
  @@ -81,7 +78,6 @@
    */
   int echoInteger(void* pStub, int Value0)
   {
  -	int nStatus;
   	Call* pCall = (Call*)pStub;
   	int Ret;
   	/* Following will establish the connections with the server too */
  @@ -107,7 +103,6 @@
    */
   xsd__int_Array echoIntegerArray(void* pStub, xsd__int_Array Value0)
   {
  -	int nStatus;
   	Call* pCall = (Call*)pStub;
   	xsd__int_Array RetArray = {NULL, 0};
   	Axis_Array array;
  @@ -135,7 +130,6 @@
    */
   float echoFloat(void* pStub, float Value0)
   {
  -	int nStatus;
   	Call* pCall = (Call*)pStub;
   	float Ret;
   	/* Following will establish the connections with the server too */
  @@ -161,7 +155,6 @@
    */
   xsd__float_Array echoFloatArray(void* pStub, xsd__float_Array Value0)
   {
  -	int nStatus;
   	Call* pCall = (Call*)pStub;
   	xsd__float_Array RetArray = {NULL, 0};
   	Axis_Array array;
  @@ -189,7 +182,6 @@
    */
   SOAPStruct* echoStruct(void* pStub, SOAPStruct* Value0)
   {
  -	int nStatus;
   	Call* pCall = (Call*)pStub;
   	SOAPStruct* pReturn = NULL;
   	/* Following will establish the connections with the server too */
  @@ -215,7 +207,6 @@
    */
   SOAPStruct_Array echoStructArray(void* pStub, SOAPStruct_Array Value0)
   {
  -	int nStatus;
   	Call* pCall = (Call*)pStub;
   	SOAPStruct_Array RetArray = {NULL, 0};
   	Axis_Array array;
  @@ -243,7 +234,6 @@
    */
   void echoVoid(void* pStub)
   {
  -	int nStatus;
   	Call* pCall = (Call*)pStub;
   	/* Following will establish the connections with the server too */
   	if (AXIS_SUCCESS != pCall->_functions->Initialize(pCall->_object, C_RPC_PROVIDER)) return ;
  @@ -266,7 +256,6 @@
    */
   xsd__base64Binary echoBase64(void* pStub, xsd__base64Binary Value0)
   {
  -	int nStatus;
   	Call* pCall = (Call*)pStub;
   	xsd__base64Binary Ret;
   	/* Following will establish the connections with the server too */
  @@ -292,7 +281,6 @@
    */
   xsd__dateTime echoDate(void* pStub, xsd__dateTime Value0)
   {
  -	int nStatus;
   	Call* pCall = (Call*)pStub;
   	xsd__dateTime Ret;
   	/* Following will establish the connections with the server too */
  @@ -318,7 +306,6 @@
    */
   xsd__hexBinary echoHexBinary(void* pStub, xsd__hexBinary Value0)
   {
  -	int nStatus;
   	Call* pCall = (Call*)pStub;
   	xsd__hexBinary Ret;
   	/* Following will establish the connections with the server too */
  @@ -344,7 +331,6 @@
    */
   xsd__decimal echoDecimal(void* pStub, xsd__decimal Value0)
   {
  -	int nStatus;
   	Call* pCall = (Call*)pStub;
   	xsd__decimal Ret;
   	/* Following will establish the connections with the server too */
  @@ -370,7 +356,6 @@
    */
   xsd__boolean echoBoolean(void* pStub, xsd__boolean Value0)
   {
  -	int nStatus;
   	Call* pCall = (Call*)pStub;
   	xsd__boolean Ret;
   	/* Following will establish the connections with the server too */
  
  
  
  1.4       +2 -3      ws-axis/c/samples/client/interoptests/cbase/InteropTestPortType.h
  
  Index: InteropTestPortType.h
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/samples/client/interoptests/cbase/InteropTestPortType.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- InteropTestPortType.h	10 Feb 2004 12:19:58 -0000	1.3
  +++ InteropTestPortType.h	10 Feb 2004 15:04:21 -0000	1.4
  @@ -11,9 +11,8 @@
   #include "SOAPStruct_Array.h"
   #include "SOAPStruct.h"
   
  -extern void* get_InteropBase_stub();
  -extern void destroy_InteropBase_stub(void* p);
  -
  +extern void* get_InteropTestPortType_stub();
  +extern void destroy_InteropTestPortType_stub(void* p);
   extern xsd__string echoString(void* pStub, xsd__string Value0);
   extern xsd__string_Array echoStringArray(void* pStub, xsd__string_Array Value0);
   extern int echoInteger(void* pStub, int Value0);
  
  
  
  1.7       +6 -10     ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubHeaderWriter.java
  
  Index: ClientStubHeaderWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubHeaderWriter.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ClientStubHeaderWriter.java	28 Jan 2004 10:19:13 -0000	1.6
  +++ ClientStubHeaderWriter.java	10 Feb 2004 15:04:21 -0000	1.7
  @@ -94,13 +94,7 @@
   	/* (non-Javadoc)
   	 * @see org.apache.axis.wsdl.wsdl2ws.cpp.HeaderFileWriter#writeAttributes()
   	 */
  -	protected void writeAttributes() throws WrapperFault {
  -		try {
  -			writer.write("\nCall* g_p"+classname+";\n");
  -		}catch(IOException e){
  -			throw new WrapperFault(e);
  -		}
  -	}
  +	protected void writeAttributes() throws WrapperFault {}
   
   	/* (non-Javadoc)
   	 * @see org.apache.axis.wsdl.wsdl2ws.cpp.HeaderFileWriter#writeClassComment()
  @@ -124,6 +118,8 @@
   		MethodInfo minfo;
   		boolean isSimpleType;
   		try{
  +			writer.write("extern void* get_"+classname+"_stub();\n");
  +			writer.write("extern void destroy_"+classname+"_stub(void* p);\n");			
   		  	for(int i = 0; i < methods.size(); i++){
   			  	minfo = (MethodInfo)this.methods.get(i);
   				boolean isAllTreatedAsOutParams = false;
  @@ -142,17 +138,17 @@
   					isAllTreatedAsOutParams = true;
   					writer.write("extern void ");
   				}
  -			  	writer.write(minfo.getMethodname()+"(");
  +			  	writer.write(minfo.getMethodname()+"(void* pStub");
               
   			  	//write parameter names 
   			  	Iterator params = minfo.getInputParameterTypes().iterator();
   			  	if(params.hasNext()){
   			  	  	ParameterInfo fparam = (ParameterInfo)params.next();
  -				  	writer.write(WrapperUtils.getClassNameFromParamInfoConsideringArrays(fparam,wscontext)+" Value"+0);
  +				  	writer.write(", "+WrapperUtils.getClassNameFromParamInfoConsideringArrays(fparam,wscontext)+" Value"+0);
   			  	}
   			  	for(int j =1; params.hasNext();j++){
   				  	ParameterInfo nparam = (ParameterInfo)params.next();
  -				  	writer.write(","+WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)+" Value"+j);
  +				  	writer.write(", "+WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)+" Value"+j);
   			  	}
   			  	if(isAllTreatedAsOutParams){
   					params = minfo.getOutputParameterTypes().iterator();
  
  
  
  1.11      +25 -33    ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubWriter.java
  
  Index: ClientStubWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubWriter.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- ClientStubWriter.java	9 Feb 2004 14:57:06 -0000	1.10
  +++ ClientStubWriter.java	10 Feb 2004 15:04:22 -0000	1.11
  @@ -108,6 +108,10 @@
   	 */
   	protected void writeMethods() throws WrapperFault {
   		try{
  +			writer.write("void* get_"+classname+"_stub(){\n");
  +			writer.write("\treturn GetStubObject(APTHTTP, \""+wscontext.getWrapInfo().getTargetEndpointURI()+"\");\n}\n");
  +			writer.write("void destroy_"+classname+"_stub(void* p){\n");
  +			writer.write("\tDestroyStubObject(p);\n}\n");
   			writer.write("\n/*Methods corresponding to the web service methods*/\n");
   			MethodInfo minfo;
   			for (int i = 0; i < methods.size(); i++) {
  @@ -186,19 +190,17 @@
   		else {
   			writer.write(outparamTypeName);	
   		}
  -		writer.write(" "+ methodName + "(");
  +		writer.write(" "+ methodName + "(void* pStub");
   		ArrayList paramsB = (ArrayList)params;
   		for (int i = 0; i < paramsB.size(); i++) {
  -			if (i>0) writer.write(",");
   			paramTypeName = WrapperUtils.getClassNameFromParamInfoConsideringArrays((ParameterInfo)paramsB.get(i), wscontext);
  -			writer.write(paramTypeName+" Value"+i);
  +			writer.write(", "+paramTypeName+" Value"+i);
   			if((type = wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(i)).getSchemaName())) != null && type.isArray()){
   				aretherearrayparams = true;
   			}
   		}
   		writer.write(")\n{\n");
  -		writer.write("\tint nStatus;\n");
  -		writer.write("\tCallFunctions* pCall;\n");
  +		writer.write("\tCall* pCall = (Call*)pStub;\n");
   		if (returntype != null){
   			writer.write("\t");
   			if(returntypeisarray){
  @@ -216,27 +218,17 @@
   		if (aretherearrayparams){
   			writer.write("\tAxis_Array array;\n");
   		}
  -		String globalobjectname = "g_p"+classname;
  -		writer.write("\tif (!"+globalobjectname+") "+globalobjectname+" = GetCallObject(APTHTTP, \""+wscontext.getWrapInfo().getTargetEndpointURI()+"\");\n");
  -		writer.write("\tif (!"+globalobjectname+" || !"+globalobjectname+"->__vfptr) return ");
  -		if (returntype != null){
  -			writer.write((returntypeisarray?"RetArray":returntypeissimple?"Ret":"pReturn")+";\n");
  -		}
  -		else{
  -			writer.write(";\n");
  -		}
  -		writer.write("\tpCall = "+globalobjectname+"->__vfptr;\n");
   		writer.write("\t/* Following will establish the connections with the server too */\n");
  -		writer.write("\tif (AXIS_SUCCESS != pCall->Initialize("+globalobjectname+", C_RPC_PROVIDER)) return ");
  +		writer.write("\tif (AXIS_SUCCESS != pCall->_functions->Initialize(pCall->_object, C_RPC_PROVIDER)) return ");
   		if (returntype != null){
   			writer.write((returntypeisarray?"RetArray":returntypeissimple?"Ret":"pReturn")+";\n");
   		}
   		else{
   			writer.write(";\n");
   		}
  -		writer.write("\tpCall->SetTransportProperty("+globalobjectname+",SOAPACTION_HEADER , \""+minfo.getSoapAction()+"\");\n");		
  -		writer.write("\tpCall->SetSOAPVersion("+globalobjectname+", SOAP_VER_1_1);\n"); //TODO check which version is it really.
  -		writer.write("\tpCall->SetOperation("+globalobjectname+", \""+methodName+"\", \""+ wscontext.getWrapInfo().getTargetNameSpaceOfWSDL() +"\");\n");
  +		writer.write("\tpCall->_functions->SetTransportProperty(pCall->_object,SOAPACTION_HEADER , \""+minfo.getSoapAction()+"\");\n");		
  +		writer.write("\tpCall->_functions->SetSOAPVersion(pCall->_object, SOAP_VER_1_1);\n"); //TODO check which version is it really.
  +		writer.write("\tpCall->_functions->SetOperation(pCall->_object, \""+methodName+"\", \""+ wscontext.getWrapInfo().getTargetNameSpaceOfWSDL() +"\");\n");
   		for (int i = 0; i < paramsB.size(); i++) {
   			type = wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(i)).getSchemaName());
   			if (type != null){
  @@ -254,60 +246,60 @@
   				String containedType = null;
   				if (CUtils.isSimpleType(qname)){
   					containedType = CUtils.getclass4qname(qname);
  -					writer.write("\tpCall->AddBasicArrayParameter("+globalobjectname+", ");			
  +					writer.write("\tpCall->_functions->AddBasicArrayParameter(pCall->_object, ");			
   					writer.write("(Axis_Array*)(&Value"+i+"), "+CUtils.getXSDTypeForBasicType(containedType)+", \""+((ParameterInfo)paramsB.get(i)).getParamName()+"\"");
   				}
   				else{
   					containedType = qname.getLocalPart();
  -					writer.write("\tpCall->AddCmplxArrayParameter("+globalobjectname+", ");
  +					writer.write("\tpCall->_functions->AddCmplxArrayParameter(pCall->_object, ");
   					writer.write("(Axis_Array*)(&Value"+i+"), (void*)Axis_Serialize_"+containedType+", (void*)Axis_Delete_"+containedType+", (void*) Axis_GetSize_"+containedType+", Axis_TypeName_"+containedType+", Axis_URI_"+containedType);
   				}
   			}else if(typeissimple){
   				//for simple types	
  -				writer.write("\tpCall->AddParameter("+globalobjectname+", ");			
  +				writer.write("\tpCall->_functions->AddParameter(pCall->_object, ");			
   				writer.write("(void*)&Value"+i+", \"" + ((ParameterInfo)paramsB.get(i)).getParamName()+"\", "+CUtils.getXSDTypeForBasicType(paramTypeName));
   			}else{
   				//for complex types 
  -				writer.write("\tpCall->AddCmplxParameter("+globalobjectname+", ");			
  +				writer.write("\tpCall->_functions->AddCmplxParameter(pCall->_object, ");			
   				writer.write("Value"+i+", (void*)Axis_Serialize_"+paramTypeName+", (void*)Axis_Delete_"+paramTypeName+", \"" + ((ParameterInfo)paramsB.get(i)).getParamName()+"\", 0");
   			}
   			writer.write(");\n");
   		}
  -		writer.write("\tif (AXIS_SUCCESS == pCall->Invoke("+globalobjectname+"))\n\t{\n");
  -		writer.write("\t\tif(AXIS_SUCCESS == pCall->CheckMessage("+globalobjectname+", \""+methodName+"Response\", \"\"))\n\t\t{\n");
  +		writer.write("\tif (AXIS_SUCCESS == pCall->_functions->Invoke(pCall->_object))\n\t{\n");
  +		writer.write("\t\tif(AXIS_SUCCESS == pCall->_functions->CheckMessage(pCall->_object, \""+methodName+"Response\", \"\"))\n\t\t{\n");
   		if (returntype == null){
   			writer.write("\t\t\t/*not successful*/\n\t\t}\n");
  -			writer.write("\t}\n\tpCall->UnInitialize("+globalobjectname+");\n");
  +			writer.write("\t}\n\tpCall->_functions->UnInitialize(pCall->_object);\n");
   		}
   		else if (returntypeisarray){
   			QName qname = WrapperUtils.getArrayType(retType).getName();
   			String containedType = null;
   			if (CUtils.isSimpleType(qname)){
   				containedType = CUtils.getclass4qname(qname);
  -				writer.write("\t\t\tarray = pCall->GetBasicArray("+globalobjectname+", "+CUtils.getXSDTypeForBasicType(containedType)+", 0, 0);\n");
  +				writer.write("\t\t\tarray = pCall->_functions->GetBasicArray(pCall->_object, "+CUtils.getXSDTypeForBasicType(containedType)+", 0, 0);\n");
   				writer.write("\t\t\tmemcpy(&RetArray, &array, sizeof(Axis_Array));\n");
   			}
   			else{
   				containedType = qname.getLocalPart();
  -				writer.write("\t\t\tarray = pCall->GetCmplxArray("+globalobjectname+", (void*) Axis_DeSerialize_"+containedType);
  +				writer.write("\t\t\tarray = pCall->_functions->GetCmplxArray(pCall->_object, (void*) Axis_DeSerialize_"+containedType);
   				writer.write(", (void*) Axis_Create_"+containedType+", (void*) Axis_Delete_"+containedType+", (void*) Axis_GetSize_"+containedType+", 0, 0);\n");
   				writer.write("\t\t\tmemcpy(&RetArray, &array, sizeof(Axis_Array));\n");
   			}
   			writer.write("\t\t}\n");
  -			writer.write("\t}\n\tpCall->UnInitialize("+globalobjectname+");\n");
  +			writer.write("\t}\n\tpCall->_functions->UnInitialize(pCall->_object);\n");
   			writer.write("\treturn RetArray;\n");
   		}
   		else if(returntypeissimple){
  -			writer.write("\t\t\tRet = pCall->"+ CUtils.getParameterGetValueMethodName(outparamTypeName, false)+"("+globalobjectname+", 0, 0);\n");
  +			writer.write("\t\t\tRet = pCall->_functions->"+ CUtils.getParameterGetValueMethodName(outparamTypeName, false)+"(pCall->_object, 0, 0);\n");
   			writer.write("\t\t}\n");
  -			writer.write("\t}\n\tpCall->UnInitialize("+globalobjectname+");\n");
  +			writer.write("\t}\n\tpCall->_functions->UnInitialize(pCall->_object);\n");
   			writer.write("\treturn Ret;\n");
   		}
   		else{
   			outparamTypeName = returntype.getLangName();//need to have complex type name without *
  -			writer.write("\t\t\tpReturn = ("+outparamTypeName+"*)pCall->GetCmplxObject("+globalobjectname+", (void*) Axis_DeSerialize_"+outparamTypeName+", (void*) Axis_Create_"+outparamTypeName+", (void*) Axis_Delete_"+outparamTypeName+", 0, 0);\n"); 
  +			writer.write("\t\t\tpReturn = ("+outparamTypeName+"*)pCall->_functions->GetCmplxObject(pCall->_object, (void*) Axis_DeSerialize_"+outparamTypeName+", (void*) Axis_Create_"+outparamTypeName+", (void*) Axis_Delete_"+outparamTypeName+", 0, 0);\n"); 
   			writer.write("\t\t}\n");
  -			writer.write("\t}\n\tpCall->UnInitialize("+globalobjectname+");\n");
  +			writer.write("\t}\n\tpCall->_functions->UnInitialize(pCall->_object);\n");
   			writer.write("\treturn pReturn;\n");						
   		}
   		//write end of method
  
  
  
  1.4       +6 -10     ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubHeaderWriter.java
  
  Index: ClientStubHeaderWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubHeaderWriter.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ClientStubHeaderWriter.java	12 Jan 2004 12:20:56 -0000	1.3
  +++ ClientStubHeaderWriter.java	10 Feb 2004 15:04:22 -0000	1.4
  @@ -94,13 +94,7 @@
   	/* (non-Javadoc)
   	 * @see org.apache.axis.wsdl.wsdl2ws.cpp.HeaderFileWriter#writeAttributes()
   	 */
  -	protected void writeAttributes() throws WrapperFault {
  -		try {
  -			writer.write("\nCall* g_p"+classname+";\n");
  -		}catch(IOException e){
  -			throw new WrapperFault(e);
  -		}
  -	}
  +	protected void writeAttributes() throws WrapperFault {}
   
   	/* (non-Javadoc)
   	 * @see org.apache.axis.wsdl.wsdl2ws.cpp.HeaderFileWriter#writeClassComment()
  @@ -124,6 +118,8 @@
   		MethodInfo minfo;
   		boolean isSimpleType;
   		try{
  +			writer.write("extern void* get_"+classname+"_stub();\n");
  +			writer.write("extern void destroy_"+classname+"_stub(void* p);\n");			
   		  	for(int i = 0; i < methods.size(); i++){
   			  	minfo = (MethodInfo)this.methods.get(i);
   				boolean isAllTreatedAsOutParams = false;
  @@ -140,17 +136,17 @@
   					isAllTreatedAsOutParams = true;
   					writer.write("extern void ");
   			  	}
  -			  	writer.write(minfo.getMethodname()+"(");
  +			  	writer.write(minfo.getMethodname()+"(void* pStub");
               
   			  	//write parameter names 
   			  	Iterator params = minfo.getInputParameterTypes().iterator();
   			  	if(params.hasNext()){
   			  	  	ParameterInfo fparam = (ParameterInfo)params.next();
  -				  	writer.write(WrapperUtils.getClassNameFromParamInfoConsideringArrays(fparam,wscontext)+" Value"+0);
  +				  	writer.write(", "+WrapperUtils.getClassNameFromParamInfoConsideringArrays(fparam,wscontext)+" Value"+0);
   			  	}
   			  	for(int j =1; params.hasNext();j++){
   				  	ParameterInfo nparam = (ParameterInfo)params.next();
  -				  	writer.write(","+WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)+" Value"+j);
  +				  	writer.write(", "+WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)+" Value"+j);
   			  	}
   			  	if (isAllTreatedAsOutParams){
   					params = minfo.getOutputParameterTypes().iterator();
  
  
  
  1.9       +26 -29    ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubWriter.java
  
  Index: ClientStubWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubWriter.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ClientStubWriter.java	9 Feb 2004 14:57:07 -0000	1.8
  +++ ClientStubWriter.java	10 Feb 2004 15:04:22 -0000	1.9
  @@ -110,6 +110,10 @@
   	 */
   	protected void writeMethods() throws WrapperFault {
   		try{
  +			writer.write("void* get_"+classname+"_stub(){\n");
  +			writer.write("\treturn GetStubObject(APTHTTP, \""+wscontext.getWrapInfo().getTargetEndpointURI()+"\");\n}\n");
  +			writer.write("void destroy_"+classname+"_stub(void* p){\n");
  +			writer.write("\tDestroyStubObject(p);\n}\n");
   			writer.write("\n/*Methods corresponding to the web service methods*/\n");
   			MethodInfo minfo;
   			for (int i = 0; i < methods.size(); i++) {
  @@ -190,7 +194,7 @@
   		}else{
   			writer.write(outparamType+"*");
   		}
  -		writer.write(" "+ methodName + "(");
  +		writer.write(" "+ methodName + "(void* pStub");
   		ArrayList paramsB = (ArrayList)params;
   		if (0 < paramsB.size()){
   			type = wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(0)).getSchemaName());
  @@ -204,9 +208,9 @@
   			}
   			typeissimple = CUtils.isSimpleType(paraTypeName);
   			if(typeisarray || typeissimple){
  -				writer.write(paraTypeName+" Value0");
  +				writer.write(", "+paraTypeName+" Value0");
   			}else{
  -				writer.write(paraTypeName+"* Value0");
  +				writer.write(", "+paraTypeName+"* Value0");
   			}
   			for (int i = 1; i < paramsB.size(); i++) {
   				type = wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(i)).getSchemaName());
  @@ -230,7 +234,7 @@
   		if(returntypeisarray){
   			writer.write("\tAxis_Array array;\n");				
   		}
  -		writer.write("\tCallFunctions* pCall;\n");
  +		writer.write("\tCall* pCall = (Call*)pStub;\n");
   		if (returntype != null){
   			writer.write("\t");
   			if(returntypeisarray){
  @@ -245,24 +249,17 @@
   				//TODO initialize return parameter appropriately.
   			}
   		}
  -		String globalobjectname = "g_p"+classname;
  -		writer.write("\tif (!"+globalobjectname+") "+globalobjectname+" = GetCallObject(APTHTTP, \""+wscontext.getWrapInfo().getTargetEndpointURI()+"\");\n");
  -		writer.write("\tif (!"+globalobjectname+" || !"+globalobjectname+"->__vfptr) return ");
  -		if (returntype != null){
  -			writer.write((returntypeisarray?"RetArray":returntypeissimple?"Ret":"pReturn")+";\n");
  -		}
  -		writer.write("\tpCall = "+globalobjectname+"->__vfptr;\n");
   		writer.write("\t/* Following will establish the connections with the server too */\n");
  -		writer.write("\tif (AXIS_SUCCESS != pCall->Initialize("+globalobjectname+", C_DOC_PROVIDER)) return ");
  +		writer.write("\tif (AXIS_SUCCESS != pCall->_functions->Initialize(pCall->_object, C_DOC_PROVIDER)) return ");
   		if (returntype != null){
   			writer.write((returntypeisarray?"RetArray":returntypeissimple?"Ret":"pReturn")+";\n");
   		}
   		else{
   			writer.write(";\n");
   		}
  -		writer.write("\tpCall->SetTransportProperty("+globalobjectname+",SOAPACTION_HEADER , \""+minfo.getSoapAction()+"\");\n");
  -		writer.write("\tpCall->SetSOAPVersion("+globalobjectname+", SOAP_VER_1_1);\n"); //TODO check which version is it really.
  -		writer.write("\tpCall->SetOperation("+globalobjectname+", \""+minfo.getInputMessage().getLocalPart()+"\", \""+ minfo.getInputMessage().getNamespaceURI()+"\");\n");
  +		writer.write("\tpCall->_functions->SetTransportProperty(pCall->_object,SOAPACTION_HEADER , \""+minfo.getSoapAction()+"\");\n");
  +		writer.write("\tpCall->_functions->SetSOAPVersion(pCall->_object, SOAP_VER_1_1);\n"); //TODO check which version is it really.
  +		writer.write("\tpCall->_functions->SetOperation(pCall->_object, \""+minfo.getInputMessage().getLocalPart()+"\", \""+ minfo.getInputMessage().getNamespaceURI()+"\");\n");
   		for (int i = 0; i < paramsB.size(); i++) {
   			type = wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(i)).getSchemaName());
   			if (type != null){
  @@ -280,59 +277,59 @@
   				String containedType = null;
   				if (CUtils.isSimpleType(qname)){
   					containedType = CUtils.getclass4qname(qname);
  -					writer.write("\tpCall->AddBasicArrayParameter("+globalobjectname+", ");			
  +					writer.write("\tpCall->_functions->AddBasicArrayParameter(pCall->_object, ");			
   					writer.write("(Axis_Array*)(&Value"+i+"), "+CUtils.getXSDTypeForBasicType(containedType)+", \""+((ParameterInfo)paramsB.get(i)).getParamName()+"\"");
   				}
   				else{
   					containedType = qname.getLocalPart();
  -					writer.write("\tpCall->AddCmplxArrayParameter("+globalobjectname+", ");
  +					writer.write("\tpCall->_functions->AddCmplxArrayParameter(pCall->_object, ");
   					writer.write("(Axis_Array*)(&Value"+i+"), (void*)Axis_Serialize_"+containedType+", (void*)Axis_Delete_"+containedType+", (void*) Axis_GetSize_"+containedType+", \""+((ParameterInfo)paramsB.get(i)).getParamName()+"\", Axis_URI_"+containedType);
   				}
   			}else if(typeissimple){
   				//for simple types	
  -				writer.write("\tpCall->AddParameter("+globalobjectname+", ");			
  +				writer.write("\tpCall->_functions->AddParameter(pCall->_object, ");			
   				writer.write("(void*)&Value"+i+", \"" + ((ParameterInfo)paramsB.get(i)).getParamName()+"\", "+CUtils.getXSDTypeForBasicType(paraTypeName));
   			}else{
   				//for complex types 
  -				writer.write("\tpCall->AddCmplxParameter("+globalobjectname+", ");			
  +				writer.write("\tpCall->_functions->AddCmplxParameter(pCall->_object, ");			
   				writer.write("Value"+i+", (void*)Axis_Serialize_"+paraTypeName+", (void*)Axis_Delete_"+paraTypeName+", \"" + ((ParameterInfo)paramsB.get(i)).getParamName()+"\", Axis_URI_"+paraTypeName);
   			}
   			writer.write(");\n");
   		}
  -		writer.write("\tif (AXIS_SUCCESS == pCall->Invoke("+globalobjectname+"))\n\t{\n");
  -		writer.write("\t\tif(AXIS_SUCCESS == pCall->CheckMessage("+globalobjectname+", \""+minfo.getOutputMessage().getLocalPart()+"\", \""+minfo.getOutputMessage().getNamespaceURI()+"\"))\n\t\t{\n");
  +		writer.write("\tif (AXIS_SUCCESS == pCall->_functions->Invoke(pCall->_object))\n\t{\n");
  +		writer.write("\t\tif(AXIS_SUCCESS == pCall->_functions->CheckMessage(pCall->_object, \""+minfo.getOutputMessage().getLocalPart()+"\", \""+minfo.getOutputMessage().getNamespaceURI()+"\"))\n\t\t{\n");
   		if (returntype == null){
   			writer.write("\t\t\t/*not successful*/\n\t\t}\n");
  -			writer.write("\t}\n\tpCall->UnInitialize("+globalobjectname+");\n");
  +			writer.write("\t}\n\tpCall->_functions->UnInitialize(pCall->_object);\n");
   		}
   		else if (returntypeisarray){
   			QName qname = WrapperUtils.getArrayType(retType).getName();
   			String containedType = null;
   			if (CUtils.isSimpleType(qname)){
   				containedType = CUtils.getclass4qname(qname);
  -				writer.write("\tarray = pCall->GetBasicArray("+globalobjectname+", "+CUtils.getXSDTypeForBasicType(containedType)+", \""+returntype.getParamName()+"\", 0);\n");
  +				writer.write("\tarray = pCall->_functions->GetBasicArray(pCall->_object, "+CUtils.getXSDTypeForBasicType(containedType)+", \""+returntype.getParamName()+"\", 0);\n");
   				writer.write("\tmemcpy(&RetArray, &array, sizeof(Axis_Array));\n");
   			}
   			else{
   				containedType = qname.getLocalPart();
  -				writer.write("\tarray = pCall->GetCmplxArray("+globalobjectname+", (void*) Axis_DeSerialize_"+containedType);
  +				writer.write("\tarray = pCall->_functions->GetCmplxArray(pCall->_object, (void*) Axis_DeSerialize_"+containedType);
   				writer.write(", (void*) Axis_Create_"+containedType+", (void*) Axis_Delete_"+containedType+", (void*) Axis_GetSize_"+containedType+", \""+returntype.getParamName()+"\", Axis_URI_"+containedType+");\n");
   				writer.write("\tmemcpy(&RetArray, &array, sizeof(Axis_Array));\n");
   			}
   			writer.write("\t\t}\n");
  -			writer.write("\t}\n\tpCall->UnInitialize("+globalobjectname+");\n");
  +			writer.write("\t}\n\tpCall->_functions->UnInitialize(pCall->_object);\n");
   			writer.write("\treturn RetArray;\n");
   		}
   		else if(returntypeissimple){
  -			writer.write("\t\t\tRet = pCall->"+ CUtils.getParameterGetValueMethodName(outparamType, false)+"("+globalobjectname+", \""+ returntype.getParamName()+"\", 0);\n");
  +			writer.write("\t\t\tRet = pCall->_functions->"+ CUtils.getParameterGetValueMethodName(outparamType, false)+"(pCall->_object, \""+ returntype.getParamName()+"\", 0);\n");
   			writer.write("\t\t}\n");
  -			writer.write("\t}\n\tpCall->UnInitialize("+globalobjectname+");\n");
  +			writer.write("\t}\n\tpCall->_functions->UnInitialize(pCall->_object);\n");
   			writer.write("\treturn Ret;\n");
   		}
   		else{
  -			writer.write("\t\t\tpReturn = ("+outparamType+"*)pCall->GetCmplxObject("+globalobjectname+", (void*) Axis_DeSerialize_"+outparamType+", (void*) Axis_Create_"+outparamType+", (void*) Axis_Delete_"+outparamType+",\""+returntype.getParamName()+"\", 0);\n"); 
  +			writer.write("\t\t\tpReturn = ("+outparamType+"*)pCall->_functions->GetCmplxObject(pCall->_object, (void*) Axis_DeSerialize_"+outparamType+", (void*) Axis_Create_"+outparamType+", (void*) Axis_Delete_"+outparamType+",\""+returntype.getParamName()+"\", 0);\n"); 
   			writer.write("\t\t}\n");
  -			writer.write("\t}\n\tpCall->UnInitialize("+globalobjectname+");\n");
  +			writer.write("\t}\n\tpCall->_functions->UnInitialize(pCall->_object);\n");
   			writer.write("\treturn pReturn;\n");						
   		}