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/20 14:37:44 UTC
cvs commit: ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal ServiceHeaderWriter.java ServiceWriter.java WrapWriter.java
susantha 2004/02/20 05:37:44
Modified: c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c ServiceWriter.java
WrapWriter.java
c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal
ServiceWriter.java WrapWriter.java
c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp
ServiceHeaderWriter.java ServiceWriter.java
WrapWriter.java
c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal
ServiceHeaderWriter.java ServiceWriter.java
WrapWriter.java
Log:
improved WSDL2Ws tool to generate the server side code when
there are multiple return parameters
Revision Changes Path
1.8 +1 -1 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ServiceWriter.java
Index: ServiceWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ServiceWriter.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- ServiceWriter.java 28 Jan 2004 10:19:15 -0000 1.7
+++ ServiceWriter.java 20 Feb 2004 13:37:44 -0000 1.8
@@ -144,7 +144,7 @@
params = minfo.getOutputParameterTypes().iterator();
for(int j =0; params.hasNext();j++){
ParameterInfo nparam = (ParameterInfo)params.next();
- writer.write(", AXIS_OUT_PARAM"+WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)+" *OutValue"+j);
+ writer.write(", AXIS_OUT_PARAM "+WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)+" *OutValue"+j);
}
}
writer.write(")\n{\n}\n");
1.20 +63 -2 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/WrapWriter.java
Index: WrapWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/WrapWriter.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- WrapWriter.java 9 Feb 2004 14:57:07 -0000 1.19
+++ WrapWriter.java 20 Feb 2004 13:37:44 -0000 1.20
@@ -212,12 +212,11 @@
}
else{
isAllTreatedAsOutParams = true;
- //TODO make all outparams when there are more than one return params
- throw new WrapperFault("WSDL2Ws does not still handle more than one return parameters");
}
Collection params = minfo.getInputParameterTypes();
String methodName = minfo.getMethodname();
Type retType = null;
+ String outparamType = null;
String outparamTypeName = null;
boolean returntypeissimple = false;
boolean returntypeisarray = false;
@@ -233,6 +232,7 @@
}
}
String paramTypeName;
+ String returnParamName;
ArrayList paramsB = new ArrayList(params);
Type type;
@@ -253,6 +253,13 @@
aretherearrayparams = true;
}
}
+ if ( isAllTreatedAsOutParams ) {
+ ArrayList paramsC = (ArrayList)minfo.getOutputParameterTypes();
+ for (int i = 0; i < paramsC.size(); i++) {
+ type = wscontext.getTypemap().getType(((ParameterInfo)paramsC.get(i)).getSchemaName());
+ writer.write(", AXIS_OUT_PARAM "+WrapperUtils.getClassNameFromParamInfoConsideringArrays((ParameterInfo)paramsC.get(i),wscontext)+"*");
+ }
+ }
writer.write(");\n");
writer.write("\n/*\n");
writer.write(" * This method wrap the service method \n");
@@ -270,6 +277,14 @@
if (aretherearrayparams){
writer.write("\tAxis_Array array;\n");
}
+ // Multiples parameters so fill the methods prototype
+ if ( isAllTreatedAsOutParams ) {
+ ArrayList paramsC = (ArrayList)minfo.getOutputParameterTypes();
+ for (int i = 0; i < paramsC.size(); i++) {
+ type = wscontext.getTypemap().getType(((ParameterInfo)paramsC.get(i)).getSchemaName());
+ writer.write("\t"+WrapperUtils.getClassNameFromParamInfoConsideringArrays((ParameterInfo)paramsC.get(i),wscontext)+" out"+i+";\n");
+ }
+ }
writer.write("\tif (AXIS_SUCCESS != DZ._functions->CheckMessageBody(DZ._object, \""+methodName+"\", \""+wscontext.getWrapInfo().getTargetNameSpaceOfWSDL()+"\")) return AXIS_FAIL;\n");
writer.write("\tSZ._functions->CreateSoapMethod(SZ._object, \""+methodName+"Response\", \""+wscontext.getWrapInfo().getTargetNameSpaceOfWSDL()+"\");\n");
//create and populate variables for each parameter
@@ -332,6 +347,52 @@
outparamTypeName = returntype.getLangName();//need to have complex type name without *
writer.write("\treturn SZ._functions->AddOutputCmplxParam(SZ._object, ret, (void*)Axis_Serialize_"+outparamTypeName+", (void*)Axis_Delete_"+outparamTypeName+", \""+methodName+"Return\", 0);\n");
}
+ }else if (isAllTreatedAsOutParams){
+ writer.write("\t" + methodName + "(");
+ if (0<paramsB.size()){
+ for (int i = 0; i < paramsB.size(); i++) {
+ writer.write("v" + i + ",");
+ }
+ }
+ ArrayList paramsC = (ArrayList)minfo.getOutputParameterTypes();
+ for (int i = 0; i < paramsC.size()-1; i++) {
+ writer.write("&out" + i +",");
+ }
+ writer.write("&out" + ( paramsC.size()-1));
+ writer.write(");\n");
+ paramsC = (ArrayList)minfo.getOutputParameterTypes();
+ for (int i = 0; i < paramsC.size(); i++) {
+ retType = wscontext.getTypemap().getType(((ParameterInfo)paramsC.get(i)).getSchemaName());
+ if (retType != null){
+ outparamType = retType.getLanguageSpecificName();
+ returntypeisarray = retType.isArray();
+ }
+ else{
+ outparamType = returntype.getLangName();
+ }
+ returntypeissimple = CUtils.isSimpleType(outparamType);
+ returnParamName = ((ParameterInfo)paramsC.get(i)).getParamName();
+ if (returntypeissimple){
+ writer.write("\tSZ._functions->AddOutputParam(SZ._object, \""+returnParamName+"\", (void*)&out"+i+", "+CUtils.getXSDTypeForBasicType(outparamType)+");\n");
+ }else if(returntypeisarray){
+ QName qname = WrapperUtils.getArrayType(retType).getName();
+ String containedType = null;
+ if (CUtils.isSimpleType(qname)){
+ containedType = CUtils.getclass4qname(qname);
+ writer.write("\tSZ._functions->AddOutputBasicArrayParam(SZ._object, (Axis_Array*)(&out"+i+"), "+CUtils.getXSDTypeForBasicType(containedType)+ ", \""+returnParamName+"\");\n");
+ }
+ else{
+ containedType = qname.getLocalPart();
+ writer.write("\tSZ._functions->AddOutputCmplxArrayParam(SZ._object, (Axis_Array*)(&out"+i+"),"+
+ "(void*) Axis_Serialize_"+containedType+", (void*) Axis_Delete_"+containedType+", (void*) Axis_GetSize_"+containedType+", \""+returnParamName+"\", Axis_URI_"+containedType+");\n");
+ }
+ }
+ else{
+ //complex type
+ writer.write("\tSZ._functions->AddOutputCmplxParam(SZ._object, out"+i+", (void*)Axis_Serialize_"+outparamType+", (void*)Axis_Delete_"+outparamType+", \""+returnParamName+"\", Axis_URI_"+outparamType+");\n");
+ }
+ }
+ writer.write("\treturn AXIS_SUCCESS;\n");
}else{//method does not return anything
/* Invoke the service when return type is void */
writer.write("\t" + methodName + "(");
1.4 +1 -1 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ServiceWriter.java
Index: ServiceWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ServiceWriter.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ServiceWriter.java 12 Jan 2004 12:20:56 -0000 1.3
+++ ServiceWriter.java 20 Feb 2004 13:37:44 -0000 1.4
@@ -144,7 +144,7 @@
params = minfo.getOutputParameterTypes().iterator();
for(int j =0; params.hasNext();j++){
ParameterInfo nparam = (ParameterInfo)params.next();
- writer.write(", AXIS_OUT_PARAM"+WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)+" *OutValue"+j);
+ writer.write(", AXIS_OUT_PARAM "+WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)+" *OutValue"+j);
}
}
writer.write(")\n{\n}\n");
1.11 +63 -1 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/WrapWriter.java
Index: WrapWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/WrapWriter.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- WrapWriter.java 17 Feb 2004 12:47:44 -0000 1.10
+++ WrapWriter.java 20 Feb 2004 13:37:44 -0000 1.11
@@ -255,6 +255,13 @@
writer.write(paraTypeName+"*");
}
}
+ if ( isAllTreatedAsOutParams ) {
+ ArrayList paramsC = (ArrayList)minfo.getOutputParameterTypes();
+ for (int i = 0; i < paramsC.size(); i++) {
+ type = wscontext.getTypemap().getType(((ParameterInfo)paramsC.get(i)).getSchemaName());
+ writer.write(", AXIS_OUT_PARAM "+WrapperUtils.getClassNameFromParamInfoConsideringArrays((ParameterInfo)paramsC.get(i),wscontext)+"*");
+ }
+ }
writer.write(");\n");
writer.write("\n/*\n");
writer.write(" * This method wrap the service method \n");
@@ -265,6 +272,7 @@
boolean aretherearrayparams = false;
String parameterName;
String elementName;
+ String returnParamName;
for (int i = 0; i < paramsB.size(); i++) {
paraTypeName = ((ParameterInfo)paramsB.get(i)).getLangName();
if((CUtils.isSimpleType(((ParameterInfo)paramsB.get(i)).getLangName()))){
@@ -285,6 +293,14 @@
if (aretherearrayparams){
writer.write("\tAxis_Array array;\n");
}
+ // Multiples parameters so fill the methods prototype
+ if ( isAllTreatedAsOutParams ) {
+ ArrayList paramsC = (ArrayList)minfo.getOutputParameterTypes();
+ for (int i = 0; i < paramsC.size(); i++) {
+ type = wscontext.getTypemap().getType(((ParameterInfo)paramsC.get(i)).getSchemaName());
+ writer.write("\t"+WrapperUtils.getClassNameFromParamInfoConsideringArrays((ParameterInfo)paramsC.get(i),wscontext)+" out"+i+";\n");
+ }
+ }
writer.write("\tif (AXIS_SUCCESS != DZ._functions->CheckMessageBody(DZ._object, \""+minfo.getInputMessage().getLocalPart()+"\", \""+minfo.getInputMessage().getNamespaceURI()+"\")) return AXIS_FAIL;\n");
writer.write("\tpSZ->_functions->CreateSoapMethod(SZ._object, \""+minfo.getOutputMessage().getLocalPart()+"\", \""+minfo.getOutputMessage().getNamespaceURI()+"\");\n");
//create and populate variables for each parameter
@@ -319,7 +335,7 @@
}
writer.write("\tif (AXIS_SUCCESS != (nStatus = DZ._functions->GetStatus(DZ._object))) return nStatus;\n");
if(returntype != null){
- String returnParamName = returntype.getElementName().getLocalPart();
+ returnParamName = returntype.getElementName().getLocalPart();
/* Invoke the service when return type not void */
writer.write("\tret = "+methodName+"(");
if (0<paramsB.size()){
@@ -349,6 +365,52 @@
//complex type
writer.write("\treturn pSZ->_functions->AddOutputCmplxParam(SZ._object, ret, (void*)Axis_Serialize_"+outparamType+", (void*)Axis_Delete_"+outparamType+", \""+returnParamName+"\", Axis_URI_"+outparamType+");\n");
}
+ }else if (isAllTreatedAsOutParams){
+ writer.write("\t" + methodName + "(");
+ if (0<paramsB.size()){
+ for (int i = 0; i < paramsB.size(); i++) {
+ writer.write("v" + i + ",");
+ }
+ }
+ ArrayList paramsC = (ArrayList)minfo.getOutputParameterTypes();
+ for (int i = 0; i < paramsC.size()-1; i++) {
+ writer.write("&out" + i +",");
+ }
+ writer.write("&out" + ( paramsC.size()-1));
+ writer.write(");\n");
+ paramsC = (ArrayList)minfo.getOutputParameterTypes();
+ for (int i = 0; i < paramsC.size(); i++) {
+ retType = wscontext.getTypemap().getType(((ParameterInfo)paramsC.get(i)).getSchemaName());
+ if (retType != null){
+ outparamType = retType.getLanguageSpecificName();
+ returntypeisarray = retType.isArray();
+ }
+ else{
+ outparamType = returntype.getLangName();
+ }
+ returntypeissimple = CUtils.isSimpleType(outparamType);
+ returnParamName = ((ParameterInfo)paramsC.get(i)).getParamName();
+ if (returntypeissimple){
+ writer.write("\tSZ._functions->AddOutputParam(SZ._object, \""+returnParamName+"\", (void*)&out"+i+", "+CUtils.getXSDTypeForBasicType(outparamType)+");\n");
+ }else if(returntypeisarray){
+ QName qname = WrapperUtils.getArrayType(retType).getName();
+ String containedType = null;
+ if (CUtils.isSimpleType(qname)){
+ containedType = CUtils.getclass4qname(qname);
+ writer.write("\tSZ._functions->AddOutputBasicArrayParam(SZ._object, (Axis_Array*)(&out"+i+"), "+CUtils.getXSDTypeForBasicType(containedType)+ ", \""+returnParamName+"\");\n");
+ }
+ else{
+ containedType = qname.getLocalPart();
+ writer.write("\tSZ._functions->AddOutputCmplxArrayParam(SZ._object, (Axis_Array*)(&out"+i+"),"+
+ "(void*) Axis_Serialize_"+containedType+", (void*) Axis_Delete_"+containedType+", (void*) Axis_GetSize_"+containedType+", \""+returnParamName+"\", Axis_URI_"+containedType+");\n");
+ }
+ }
+ else{
+ //complex type
+ writer.write("\tSZ._functions->AddOutputCmplxParam(SZ._object, out"+i+", (void*)Axis_Serialize_"+outparamType+", (void*)Axis_Delete_"+outparamType+", \""+returnParamName+"\", Axis_URI_"+outparamType+");\n");
+ }
+ }
+ writer.write("\treturn AXIS_SUCCESS;\n");
}else{//method does not return anything
/* Invoke the service when return type is void */
writer.write("\t" + methodName + "(");
1.12 +1 -1 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceHeaderWriter.java
Index: ServiceHeaderWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceHeaderWriter.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- ServiceHeaderWriter.java 15 Jan 2004 13:45:24 -0000 1.11
+++ ServiceHeaderWriter.java 20 Feb 2004 13:37:44 -0000 1.12
@@ -178,7 +178,7 @@
params = minfo.getOutputParameterTypes().iterator();
for(int j =0; params.hasNext();j++){
ParameterInfo nparam = (ParameterInfo)params.next();
- writer.write(", AXIS_OUT_PARAM"+WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)+" *OutValue"+j);
+ writer.write(", AXIS_OUT_PARAM "+WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)+" *OutValue"+j);
}
}
writer.write(");\n");
1.9 +1 -1 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceWriter.java
Index: ServiceWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceWriter.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- ServiceWriter.java 15 Jan 2004 13:45:24 -0000 1.8
+++ ServiceWriter.java 20 Feb 2004 13:37:44 -0000 1.9
@@ -166,7 +166,7 @@
params = minfo.getOutputParameterTypes().iterator();
for(int j =0; params.hasNext();j++){
ParameterInfo nparam = (ParameterInfo)params.next();
- writer.write(", AXIS_OUT_PARAM"+WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)+" *OutValue"+j);
+ writer.write(", AXIS_OUT_PARAM "+WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)+" *OutValue"+j);
}
}
writer.write(")\n{\n}\n");
1.17 +61 -7 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java
Index: WrapWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- WrapWriter.java 21 Jan 2004 07:43:15 -0000 1.16
+++ WrapWriter.java 20 Feb 2004 13:37:44 -0000 1.17
@@ -219,12 +219,11 @@
}
else{
isAllTreatedAsOutParams = true;
- //TODO make all outparams when there are more than one return params
- throw new WrapperFault("WSDL2Ws does not still handle more than one return parameters");
}
Collection params = minfo.getInputParameterTypes();
String methodName = minfo.getMethodname();
Type retType = null;
+ Type type;
String outparamType = null;
boolean returntypeissimple = false;
boolean returntypeisarray = false;
@@ -257,11 +256,11 @@
//create and populate variables for each parameter
String paraTypeName;
String parameterName;
+ String returnParamName;
ArrayList paramsB = new ArrayList(params);
for (int i = 0; i < paramsB.size(); i++) {
paraTypeName = ((ParameterInfo)paramsB.get(i)).getLangName();
parameterName = ((ParameterInfo)paramsB.get(i)).getParamName();
- Type type;
if((CUtils.isSimpleType(((ParameterInfo)paramsB.get(i)).getLangName()))){
//for simple types
writer.write("\t"+paraTypeName+" v"+i+" = pIWSDZ->"+CUtils.getParameterGetValueMethodName(paraTypeName, false)+"(\""+parameterName+"\",0);\n");
@@ -286,6 +285,14 @@
}
}
writer.write("\tif (AXIS_SUCCESS != (nStatus = pIWSDZ->GetStatus())) return nStatus;\n");
+ // Multiples parameters so fill the methods prototype
+ if ( isAllTreatedAsOutParams ) {
+ ArrayList paramsC = (ArrayList)minfo.getOutputParameterTypes();
+ for (int i = 0; i < paramsC.size(); i++) {
+ type = wscontext.getTypemap().getType(((ParameterInfo)paramsC.get(i)).getSchemaName());
+ writer.write("\t"+WrapperUtils.getClassNameFromParamInfoConsideringArrays((ParameterInfo)paramsC.get(i),wscontext)+" out"+i+";\n");
+ }
+ }
if(returntype != null){
/* Invoke the service when return type not void */
writer.write("\t"+outparamType+((returntypeisarray || returntypeissimple)?" ":" *")+ "ret = "+"pWs->"+methodName+"(");
@@ -304,18 +311,65 @@
String containedType = null;
if (CUtils.isSimpleType(qname)){
containedType = CUtils.getclass4qname(qname);
- writer.write("\treturn pIWSSZ->AddOutputBasicArrayParam(\""+methodName+"Return\", (Axis_Array*)(&ret),"+CUtils.getXSDTypeForBasicType(containedType)+");\n");
+ writer.write("\treturn pIWSSZ->AddOutputBasicArrayParam((Axis_Array*)(&ret),"+CUtils.getXSDTypeForBasicType(containedType)+", \""+methodName+"Return\");\n");
}
else{
containedType = qname.getLocalPart();
- writer.write("\treturn pIWSSZ->AddOutputParam(\""+methodName+"Return\", (Axis_Array*)(&ret),"+
- "(void*) Axis_Serialize_"+containedType+", (void*) Axis_Delete_"+containedType+", (void*) Axis_GetSize_"+containedType+", Axis_TypeName_"+containedType+", Axis_URI_"+containedType+");\n");
+ writer.write("\treturn pIWSSZ->AddOutputCmplxArrayParam((Axis_Array*)(&ret),"+
+ "(void*) Axis_Serialize_"+containedType+", (void*) Axis_Delete_"+containedType+", (void*) Axis_GetSize_"+containedType+", \""+methodName+"Return\", 0);\n");
}
}
else{
//complex type
- writer.write("\treturn pIWSSZ->AddOutputParam(\""+methodName+"Return\", ret, (void*)Axis_Serialize_"+outparamType+", (void*)Axis_Delete_"+outparamType+");\n");
+ writer.write("\treturn pIWSSZ->AddOutputCmplxParam(ret, (void*)Axis_Serialize_"+outparamType+", (void*)Axis_Delete_"+outparamType+", \""+methodName+"Return\", 0);\n");
+ }
+ }else if (isAllTreatedAsOutParams){
+ writer.write("\tpWs->" + methodName + "(");
+ if (0<paramsB.size()){
+ for (int i = 0; i < paramsB.size(); i++) {
+ writer.write("v" + i + ",");
+ }
+ }
+ ArrayList paramsC = (ArrayList)minfo.getOutputParameterTypes();
+ for (int i = 0; i < paramsC.size()-1; i++) {
+ writer.write("&out" + i+",");
}
+ writer.write("&out" + (paramsC.size()-1));
+
+ writer.write(");\n");
+ paramsC = (ArrayList)minfo.getOutputParameterTypes();
+ for (int i = 0; i < paramsC.size(); i++) {
+ retType = wscontext.getTypemap().getType(((ParameterInfo)paramsC.get(i)).getSchemaName());
+ if (retType != null){
+ outparamType = retType.getLanguageSpecificName();
+ returntypeisarray = retType.isArray();
+ }
+ else{
+ outparamType = returntype.getLangName();
+ }
+ returntypeissimple = CUtils.isSimpleType(outparamType);
+ returnParamName = ((ParameterInfo)paramsC.get(i)).getParamName();
+ if (returntypeissimple){
+ writer.write("\tpIWSSZ->AddOutputParam(\""+returnParamName+"\", (void*)&out"+i+", "+CUtils.getXSDTypeForBasicType(outparamType)+");\n");
+ }else if(returntypeisarray){
+ QName qname = WrapperUtils.getArrayType(retType).getName();
+ String containedType = null;
+ if (CUtils.isSimpleType(qname)){
+ containedType = CUtils.getclass4qname(qname);
+ writer.write("\tpIWSSZ->AddOutputBasicArrayParam((Axis_Array*)(&out"+i+"),"+CUtils.getXSDTypeForBasicType(containedType)+", \""+returnParamName+"\");\n");
+ }
+ else{
+ containedType = qname.getLocalPart();
+ writer.write("\tpIWSSZ->AddOutputCmplxArrayParam((Axis_Array*)(&out"+i+"),"+
+ "(void*) Axis_Serialize_"+containedType+", (void*) Axis_Delete_"+containedType+", (void*) Axis_GetSize_"+containedType+", \""+returnParamName+"\", 0);\n");
+ }
+ }
+ else{
+ //complex type
+ writer.write("\tpIWSSZ->AddOutputCmplxParam(out"+i+", (void*)Axis_Serialize_"+outparamType+", (void*)Axis_Delete_"+outparamType+", \""+returnParamName+"\", 0);\n");
+ }
+ }
+ writer.write("\treturn AXIS_SUCCESS;\n");
}else{//method does not return anything
/* Invoke the service when return type is void */
writer.write("\tpWs->" + methodName + "(");
1.4 +1 -1 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ServiceHeaderWriter.java
Index: ServiceHeaderWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ServiceHeaderWriter.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ServiceHeaderWriter.java 12 Jan 2004 12:20:56 -0000 1.3
+++ ServiceHeaderWriter.java 20 Feb 2004 13:37:44 -0000 1.4
@@ -178,7 +178,7 @@
params = minfo.getOutputParameterTypes().iterator();
for(int j =0; params.hasNext();j++){
ParameterInfo nparam = (ParameterInfo)params.next();
- writer.write(", AXIS_OUT_PARAM"+WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)+" *OutValue"+j);
+ writer.write(", AXIS_OUT_PARAM "+WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)+" *OutValue"+j);
}
}
writer.write(");\n");
1.4 +1 -1 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ServiceWriter.java
Index: ServiceWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ServiceWriter.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ServiceWriter.java 12 Jan 2004 12:20:56 -0000 1.3
+++ ServiceWriter.java 20 Feb 2004 13:37:44 -0000 1.4
@@ -166,7 +166,7 @@
params = minfo.getOutputParameterTypes().iterator();
for(int j =0; params.hasNext();j++){
ParameterInfo nparam = (ParameterInfo)params.next();
- writer.write(", AXIS_OUT_PARAM"+WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)+" *OutValue"+j);
+ writer.write(", AXIS_OUT_PARAM "+WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)+" *OutValue"+j);
}
}
writer.write(")\n{\n}\n");
1.9 +61 -8 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/WrapWriter.java
Index: WrapWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/WrapWriter.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- WrapWriter.java 17 Feb 2004 12:47:44 -0000 1.8
+++ WrapWriter.java 20 Feb 2004 13:37:44 -0000 1.9
@@ -208,6 +208,7 @@
*/
public void writeMethodInWrapper(MethodInfo minfo) throws WrapperFault,IOException {
+ Type type;
boolean isAllTreatedAsOutParams = false;
ParameterInfo returntype = null;
int noOfOutParams = minfo.getOutputParameterTypes().size();
@@ -219,8 +220,6 @@
}
else{
isAllTreatedAsOutParams = true;
- //TODO make all outparams when there are more than one return params
- throw new WrapperFault("WSDL2Ws does not still handle more than one return parameters");
}
Collection params = minfo.getInputParameterTypes();
String methodName = minfo.getMethodname();
@@ -258,12 +257,12 @@
String paraTypeName;
String parameterName;
String elementName;
+ String returnParamName;
ArrayList paramsB = new ArrayList(params);
for (int i = 0; i < paramsB.size(); i++) {
paraTypeName = ((ParameterInfo)paramsB.get(i)).getLangName();
parameterName = ((ParameterInfo)paramsB.get(i)).getParamName();
elementName = ((ParameterInfo)paramsB.get(i)).getElementName().getLocalPart();
- Type type;
if((CUtils.isSimpleType(((ParameterInfo)paramsB.get(i)).getLangName()))){
//for simple types
writer.write("\t"+paraTypeName+" v"+i+" = pIWSDZ->"+CUtils.getParameterGetValueMethodName(paraTypeName, false)+"(\""+elementName+"\",0);\n");
@@ -288,8 +287,16 @@
}
}
writer.write("\tif (AXIS_SUCCESS != (nStatus = pIWSDZ->GetStatus())) return nStatus;\n");
+ // Multiples parameters so fill the methods prototype
+ if ( isAllTreatedAsOutParams ) {
+ ArrayList paramsC = (ArrayList)minfo.getOutputParameterTypes();
+ for (int i = 0; i < paramsC.size(); i++) {
+ type = wscontext.getTypemap().getType(((ParameterInfo)paramsC.get(i)).getSchemaName());
+ writer.write("\t"+WrapperUtils.getClassNameFromParamInfoConsideringArrays((ParameterInfo)paramsC.get(i),wscontext)+" out"+i+";\n");
+ }
+ }
if(returntype != null){ /* Invoke the service when return type not void */
- String returnParamName = returntype.getElementName().getLocalPart();
+ returnParamName = returntype.getElementName().getLocalPart();
writer.write("\t"+outparamType+((returntypeisarray || returntypeissimple)?" ":" *")+ "ret = "+"pWs->"+methodName+"(");
if (0<paramsB.size()){
for (int i = 0; i < paramsB.size() - 1; i++) {
@@ -306,18 +313,64 @@
String containedType = null;
if (CUtils.isSimpleType(qname)){
containedType = CUtils.getclass4qname(qname);
- writer.write("\treturn pIWSSZ->AddOutputBasicArrayParam(\""+returnParamName+"\", (Axis_Array*)(&ret),"+CUtils.getXSDTypeForBasicType(containedType)+");\n");
+ writer.write("\treturn pIWSSZ->AddOutputBasicArrayParam((Axis_Array*)(&ret),"+CUtils.getXSDTypeForBasicType(containedType)+", \""+returnParamName+"\");\n");
}
else{
containedType = qname.getLocalPart();
- writer.write("\treturn pIWSSZ->AddOutputParam(\""+returnParamName+"\", (Axis_Array*)(&ret),"+
- "(void*) Axis_Serialize_"+containedType+", (void*) Axis_Delete_"+containedType+", (void*) Axis_GetSize_"+containedType+", Axis_TypeName_"+containedType+", Axis_URI_"+containedType+");\n");
+ writer.write("\treturn pIWSSZ->AddOutputCmplxArrayParam((Axis_Array*)(&ret),"+
+ "(void*) Axis_Serialize_"+containedType+", (void*) Axis_Delete_"+containedType+", (void*) Axis_GetSize_"+containedType+", \""+returnParamName+"\", Axis_URI_"+containedType+");\n");
}
}
else{
//complex type
- writer.write("\treturn pIWSSZ->AddOutputParam(\""+returnParamName+"\", ret, (void*)Axis_Serialize_"+outparamType+", (void*)Axis_Delete_"+outparamType+");\n");
+ writer.write("\treturn pIWSSZ->AddOutputCmplxParam(ret, (void*)Axis_Serialize_"+outparamType+", (void*)Axis_Delete_"+outparamType+", \""+returnParamName+"\", Axis_URI_"+outparamType+");\n");
+ }
+ }else if (isAllTreatedAsOutParams){
+ writer.write("\tpWs->" + methodName + "(");
+ if (0<paramsB.size()){
+ for (int i = 0; i < paramsB.size(); i++) {
+ writer.write("v" + i + ",");
+ }
+ }
+ ArrayList paramsC = (ArrayList)minfo.getOutputParameterTypes();
+ for (int i = 0; i < paramsC.size()-1; i++) {
+ writer.write("&out" + i +",");
}
+ writer.write("&out" + ( paramsC.size()-1));
+ writer.write(");\n");
+ paramsC = (ArrayList)minfo.getOutputParameterTypes();
+ for (int i = 0; i < paramsC.size(); i++) {
+ retType = wscontext.getTypemap().getType(((ParameterInfo)paramsC.get(i)).getSchemaName());
+ if (retType != null){
+ outparamType = retType.getLanguageSpecificName();
+ returntypeisarray = retType.isArray();
+ }
+ else{
+ outparamType = returntype.getLangName();
+ }
+ returntypeissimple = CUtils.isSimpleType(outparamType);
+ returnParamName = ((ParameterInfo)paramsC.get(i)).getElementName().getLocalPart();
+ if (returntypeissimple){
+ writer.write("\tpIWSSZ->AddOutputParam(\""+returnParamName+"\", (void*)&out"+i+", "+CUtils.getXSDTypeForBasicType(outparamType)+");\n");
+ }else if(returntypeisarray){
+ QName qname = WrapperUtils.getArrayType(retType).getName();
+ String containedType = null;
+ if (CUtils.isSimpleType(qname)){
+ containedType = CUtils.getclass4qname(qname);
+ writer.write("\tpIWSSZ->AddOutputBasicArrayParam((Axis_Array*)(&out"+i+"),"+CUtils.getXSDTypeForBasicType(containedType)+", \""+returnParamName+"\");\n");
+ }
+ else{
+ containedType = qname.getLocalPart();
+ writer.write("\tpIWSSZ->AddOutputCmplxArrayParam((Axis_Array*)(&out"+i+"),"+
+ "(void*) Axis_Serialize_"+containedType+", (void*) Axis_Delete_"+containedType+", (void*) Axis_GetSize_"+containedType+", \""+returnParamName+"\", Axis_URI_"+containedType+");\n");
+ }
+ }
+ else{
+ //complex type
+ writer.write("\tpIWSSZ->AddOutputCmplxParam(out"+i+", (void*)Axis_Serialize_"+outparamType+", (void*)Axis_Delete_"+outparamType+", \""+returnParamName+"\", Axis_URI_"+outparamType+");\n");
+ }
+ }
+ writer.write("\treturn AXIS_SUCCESS;\n");
}else{//method does not return anything
/* Invoke the service when return type is void */
writer.write("\tpWs->" + methodName + "(");