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