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/19 11:27:54 UTC
cvs commit: ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal ClientStubHeaderWriter.java ClientStubWriter.java
susantha 2004/02/19 02:27:54
Modified: c/src/wsdl/org/apache/axis/wsdl/wsdl2ws WSDL2Ws.java
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
c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp
ClientStubHeaderWriter.java ClientStubWriter.java
c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal
ClientStubHeaderWriter.java ClientStubWriter.java
Log:
improvement of WSDL2Ws tool for client side code generation when there are multiple return parameters in a web service method
Revision Changes Path
1.16 +4 -3 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java
Index: WSDL2Ws.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- WSDL2Ws.java 17 Feb 2004 12:47:44 -0000 1.15
+++ WSDL2Ws.java 19 Feb 2004 10:27:53 -0000 1.16
@@ -283,7 +283,7 @@
while (paramlist.hasNext()) {
Part p = (Part) paramlist.next();
pinfo = createParameterInfo(p);
- minfo.addInputParameter(pinfo);
+ if (null != pinfo) minfo.addInputParameter(pinfo);
}
}
//get the return type
@@ -327,9 +327,10 @@
}*/
}
else{
- if (returnlist.hasNext()) {
+ while (returnlist.hasNext()) {
Part p = ((Part) returnlist.next());
- minfo.addOutputParameter(createParameterInfo(p));
+ pinfo = createParameterInfo(p);
+ if (null != pinfo) minfo.addOutputParameter(pinfo);
}
}
}
1.8 +1 -1 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.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- ClientStubHeaderWriter.java 10 Feb 2004 15:04:21 -0000 1.7
+++ ClientStubHeaderWriter.java 19 Feb 2004 10:27:53 -0000 1.8
@@ -154,7 +154,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.12 +58 -4 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.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- ClientStubWriter.java 10 Feb 2004 15:04:22 -0000 1.11
+++ ClientStubWriter.java 19 Feb 2004 10:27:53 -0000 1.12
@@ -156,8 +156,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();
@@ -199,6 +197,18 @@
aretherearrayparams = true;
}
}
+ // Multiples parameters so fill the methods prototype
+ ArrayList paramsC = (ArrayList)minfo.getOutputParameterTypes();
+ if ( isAllTreatedAsOutParams ) {
+ String currentParaTypeName;
+ 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)+" *OutValue"+i);
+ if((type = wscontext.getTypemap().getType(((ParameterInfo)paramsC.get(i)).getSchemaName())) != null && type.isArray()){
+ aretherearrayparams = true;
+ }
+ }
+ }
writer.write(")\n{\n");
writer.write("\tCall* pCall = (Call*)pStub;\n");
if (returntype != null){
@@ -215,7 +225,7 @@
//TODO initialize return parameter appropriately.
}
}
- if (aretherearrayparams){
+ if (aretherearrayparams || returntypeisarray){
writer.write("\tAxis_Array array;\n");
}
writer.write("\t/* Following will establish the connections with the server too */\n");
@@ -267,7 +277,51 @@
}
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){
+ if ( isAllTreatedAsOutParams) {
+ String currentParamName;
+ String currentParaType;
+ for (int i = 0; i < paramsC.size(); i++) {
+ ParameterInfo currentType = (ParameterInfo)paramsC.get(i);
+ type = wscontext.getTypemap().getType(currentType.getSchemaName());
+ if (type != null){
+ currentParaType = type.getLanguageSpecificName();
+ typeisarray = type.isArray();
+ }
+ else {
+ currentParaType = ((ParameterInfo)paramsC.get(i)).getLangName();
+ typeisarray = false;
+ }
+ typeissimple = CUtils.isSimpleType(currentParaType);
+
+ currentParamName = "*OutValue"+i;
+ // Some code need to be merged as we have some duplicated in coding here.
+ if (typeisarray){
+ QName qname = WrapperUtils.getArrayType(type).getName();
+ String containedType = null;
+ if (CUtils.isSimpleType(qname)){
+ containedType = CUtils.getclass4qname(qname);
+ writer.write("\t\t\tarray = pCall->_functions->GetBasicArray(pCall->_object, "+CUtils.getXSDTypeForBasicType(containedType)+", \""+currentType.getParamName()+"\", 0);\n");
+ writer.write("\t\t\tmemcpy(OutValue"+ i +", &array, sizeof(Axis_Array));\n");
+
+ }
+ else{
+ containedType = qname.getLocalPart();
+ 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+", \""+currentType.getParamName()+"\", Axis_URI_"+containedType+");\n");
+ writer.write("\t\t\tmemcpy(OutValue"+ i +", &array, sizeof(Axis_Array));\n");
+ }
+ }
+ else if(typeissimple){
+ writer.write("\t\t\t" + currentParamName + " = pCall->_functions->"+ CUtils.getParameterGetValueMethodName(currentParaType, false)+"(pCall->_object, \""+currentType.getParamName()+"\", 0);\n");
+ }
+ else{
+ writer.write("\t\t\t" + currentParamName + " = ("+currentParaType+"*)pCall->_functions->GetCmplxObject(pCall->_object, (void*) Axis_DeSerialize_"+currentParaType+", (void*) Axis_Create_"+currentParaType+", (void*) Axis_Delete_"+currentParaType+",\""+currentType.getParamName()+"\", 0);\n");
+ }
+ }
+ writer.write("\t\t}\n");
+ writer.write("\t}\n\tpCall->_functions->UnInitialize(pCall->_object);\n");
+ }
+ else if (returntype == null){
writer.write("\t\t\t/*not successful*/\n\t\t}\n");
writer.write("\t}\n\tpCall->_functions->UnInitialize(pCall->_object);\n");
}
1.5 +1 -1 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.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ClientStubHeaderWriter.java 10 Feb 2004 15:04:22 -0000 1.4
+++ ClientStubHeaderWriter.java 19 Feb 2004 10:27:53 -0000 1.5
@@ -152,7 +152,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.11 +69 -41 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.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- ClientStubWriter.java 13 Feb 2004 07:00:29 -0000 1.10
+++ ClientStubWriter.java 19 Feb 2004 10:27:53 -0000 1.11
@@ -158,14 +158,13 @@
}
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;
boolean returntypeissimple = false;
boolean returntypeisarray = false;
+ boolean aretherearrayparams = false;
String outparamType = null;
if (returntype != null)
retType = wscontext.getTypemap().getType(returntype.getSchemaName());
@@ -182,7 +181,7 @@
writer.write(" * This method wrap the service method"+ methodName +"\n");
writer.write(" */\n");
//method signature
- String paraTypeName;
+ String paramTypeName;
boolean typeisarray = false;
boolean typeissimple = false;
Type type;
@@ -196,43 +195,28 @@
}
writer.write(" "+ methodName + "(void* pStub");
ArrayList paramsB = (ArrayList)params;
- if (0 < paramsB.size()){
- type = wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(0)).getSchemaName());
- if (type != null){
- paraTypeName = type.getLanguageSpecificName();
- typeisarray = type.isArray();
- }
- else {
- paraTypeName = ((ParameterInfo)paramsB.get(0)).getLangName();
- typeisarray = false;
- }
- typeissimple = CUtils.isSimpleType(paraTypeName);
- if(typeisarray || typeissimple){
- writer.write(", "+paraTypeName+" Value0");
- }else{
- writer.write(", "+paraTypeName+"* Value0");
+ for (int i = 0; i < paramsB.size(); i++) {
+ paramTypeName = WrapperUtils.getClassNameFromParamInfoConsideringArrays((ParameterInfo)paramsB.get(i), wscontext);
+ writer.write(", "+paramTypeName+" Value"+i);
+ if((type = wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(i)).getSchemaName())) != null && type.isArray()){
+ aretherearrayparams = true;
}
- for (int i = 1; i < paramsB.size(); i++) {
- type = wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(i)).getSchemaName());
- if (type != null){
- paraTypeName = type.getLanguageSpecificName();
- typeisarray = type.isArray();
- }
- else {
- paraTypeName = ((ParameterInfo)paramsB.get(i)).getLangName();
- typeisarray = false;
- }
- typeissimple = CUtils.isSimpleType(paraTypeName);
- if(typeisarray || typeissimple){
- writer.write(", "+paraTypeName+" Value"+i);
- }else{
- writer.write(", "+paraTypeName+"* Value"+i);
+ }
+ // Multiples parameters so fill the methods prototype
+ ArrayList paramsC = (ArrayList)minfo.getOutputParameterTypes();
+ if ( isAllTreatedAsOutParams ) {
+ String currentParaTypeName;
+ 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)+" *OutValue"+i);
+ if((type = wscontext.getTypemap().getType(((ParameterInfo)paramsC.get(i)).getSchemaName())) != null && type.isArray()){
+ aretherearrayparams = true;
}
}
}
writer.write(")\n{\n");
- if(returntypeisarray){
- writer.write("\tAxis_Array array;\n");
+ if (aretherearrayparams || returntypeisarray){
+ writer.write("\tAxis_Array array;\n");
}
writer.write("\tCall* pCall = (Call*)pStub;\n");
if (returntype != null){
@@ -263,14 +247,14 @@
for (int i = 0; i < paramsB.size(); i++) {
type = wscontext.getTypemap().getType(((ParameterInfo)paramsB.get(i)).getSchemaName());
if (type != null){
- paraTypeName = type.getLanguageSpecificName();
+ paramTypeName = type.getLanguageSpecificName();
typeisarray = type.isArray();
}
else {
- paraTypeName = ((ParameterInfo)paramsB.get(i)).getLangName();
+ paramTypeName = ((ParameterInfo)paramsB.get(i)).getLangName();
typeisarray = false;
}
- typeissimple = CUtils.isSimpleType(paraTypeName);
+ typeissimple = CUtils.isSimpleType(paramTypeName);
if(typeisarray){
//arrays
QName qname = WrapperUtils.getArrayType(type).getName();
@@ -288,17 +272,61 @@
}else if(typeissimple){
//for simple types
writer.write("\tpCall->_functions->AddParameter(pCall->_object, ");
- writer.write("(void*)&Value"+i+", \"" + ((ParameterInfo)paramsB.get(i)).getParamName()+"\", "+CUtils.getXSDTypeForBasicType(paraTypeName));
+ writer.write("(void*)&Value"+i+", \"" + ((ParameterInfo)paramsB.get(i)).getParamName()+"\", "+CUtils.getXSDTypeForBasicType(paramTypeName));
}else{
//for complex types
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("Value"+i+", (void*)Axis_Serialize_"+paramTypeName+", (void*)Axis_Delete_"+paramTypeName+", \"" + ((ParameterInfo)paramsB.get(i)).getParamName()+"\", Axis_URI_"+paramTypeName);
}
writer.write(");\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){
+ if ( isAllTreatedAsOutParams) {
+ String currentParamName;
+ String currentParaType;
+ for (int i = 0; i < paramsC.size(); i++) {
+ ParameterInfo currentType = (ParameterInfo)paramsC.get(i);
+ type = wscontext.getTypemap().getType(currentType.getSchemaName());
+ if (type != null){
+ currentParaType = type.getLanguageSpecificName();
+ typeisarray = type.isArray();
+ }
+ else {
+ currentParaType = ((ParameterInfo)paramsC.get(i)).getLangName();
+ typeisarray = false;
+ }
+ typeissimple = CUtils.isSimpleType(currentParaType);
+
+ currentParamName = "*OutValue"+i;
+ // Some code need to be merged as we have some duplicated in coding here.
+ if (typeisarray){
+ QName qname = WrapperUtils.getArrayType(type).getName();
+ String containedType = null;
+ if (CUtils.isSimpleType(qname)){
+ containedType = CUtils.getclass4qname(qname);
+ writer.write("\t\t\tarray = pCall->_functions->GetBasicArray(pCall->_object, "+CUtils.getXSDTypeForBasicType(containedType)+", \""+currentType.getElementName().getLocalPart()+"\", 0);\n");
+ writer.write("\t\t\tmemcpy(OutValue"+ i +", &array, sizeof(Axis_Array));\n");
+
+ }
+ else{
+ containedType = qname.getLocalPart();
+ 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+", \""+currentType.getElementName().getLocalPart()+"\", Axis_URI_"+containedType+");\n");
+ writer.write("\t\t\tmemcpy(OutValue"+ i +", &array, sizeof(Axis_Array));\n");
+ }
+ }
+ else if(typeissimple){
+ writer.write("\t\t\t" + currentParamName + " = pCall->_functions->"+ CUtils.getParameterGetValueMethodName(currentParaType, false)+"(pCall->_object, \""+currentType.getElementName().getLocalPart()+"\", 0);\n");
+ }
+ else{
+ writer.write("\t\t\t" + currentParamName + " = ("+currentParaType+"*)pCall->_functions->GetCmplxObject(pCall->_object, (void*) Axis_DeSerialize_"+currentParaType+", (void*) Axis_Create_"+currentParaType+", (void*) Axis_Delete_"+currentParaType+",\""+currentType.getElementName().getLocalPart()+"\", 0);\n");
+ }
+ }
+ writer.write("\t\t}\n");
+ writer.write("\t}\n\tpCall->_functions->UnInitialize(pCall->_object);\n");
+ }
+ else if (returntype == null){
writer.write("\t\t\t/*not successful*/\n\t\t}\n");
writer.write("\t}\n\tpCall->_functions->UnInitialize(pCall->_object);\n");
}
1.9 +1 -1 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubHeaderWriter.java
Index: ClientStubHeaderWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubHeaderWriter.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- ClientStubHeaderWriter.java 20 Jan 2004 14:05:18 -0000 1.8
+++ ClientStubHeaderWriter.java 19 Feb 2004 10:27:54 -0000 1.9
@@ -180,7 +180,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.24 +52 -3 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java
Index: ClientStubWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- ClientStubWriter.java 17 Feb 2004 12:47:44 -0000 1.23
+++ ClientStubWriter.java 19 Feb 2004 10:27:54 -0000 1.24
@@ -181,8 +181,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();
@@ -253,6 +251,16 @@
}
}
}
+ // Multiples parameters so fill the methods prototype
+ ArrayList paramsC = (ArrayList)minfo.getOutputParameterTypes();
+ if ( isAllTreatedAsOutParams ) {
+ String currentParaTypeName;
+ 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)+" *OutValue"+i);
+ }
+ }
+
writer.write(")\n{\n");
if (returntype != null){
writer.write("\t");
@@ -316,7 +324,48 @@
}
writer.write("\tif (AXIS_SUCCESS == m_pCall->Invoke())\n\t{\n");
writer.write("\t\tif(AXIS_SUCCESS == m_pCall->CheckMessage(\""+minfo.getMethodname()+"Response\", \"\"))\n\t\t{\n");
- if (returntype == null){
+ if ( isAllTreatedAsOutParams) {
+ String currentParamName;
+ String currentParaType;
+ for (int i = 0; i < paramsC.size(); i++) {
+ ParameterInfo currentType = (ParameterInfo)paramsC.get(i);
+ type = wscontext.getTypemap().getType(currentType.getSchemaName());
+ if (type != null){
+ currentParaType = type.getLanguageSpecificName();
+ typeisarray = type.isArray();
+ }
+ else {
+ currentParaType = ((ParameterInfo)paramsC.get(i)).getLangName();
+ typeisarray = false;
+ }
+ typeissimple = CUtils.isSimpleType(currentParaType);
+
+ currentParamName = "*OutValue"+i;
+ // Some code need to be merged as we have some duplicated in coding here.
+ if (typeisarray){
+ QName qname = WrapperUtils.getArrayType(type).getName();
+ String containedType = null;
+ if (CUtils.isSimpleType(qname)){
+ containedType = CUtils.getclass4qname(qname);
+ writer.write("\t\t\t" + currentParamName + " = ("+currentParaType+"&)m_pCall->GetBasicArray("+CUtils.getXSDTypeForBasicType(containedType)+", \""+currentType.getParamName()+"\", 0);\n");
+ }
+ else{
+ containedType = qname.getLocalPart();
+ writer.write("\t\t\t" + currentParamName + " = ("+currentParaType+"&)m_pCall->GetCmplxArray((void*) Axis_DeSerialize_"+containedType);
+ writer.write(", (void*) Axis_Create_"+containedType+", (void*) Axis_Delete_"+containedType+", (void*) Axis_GetSize_"+containedType+", \""+currentType.getParamName()+"\", Axis_URI_"+containedType+");\n");
+ }
+ }
+ else if(typeissimple){
+ writer.write("\t\t\t" + currentParamName + " = m_pCall->"+ CUtils.getParameterGetValueMethodName(currentParaType, false)+"(\""+currentType.getParamName()+"\", 0);\n");
+ }
+ else{
+ writer.write("\t\t\t" + currentParamName + " = ("+currentParaType+"*)m_pCall->GetCmplxObject((void*) Axis_DeSerialize_"+currentParaType+", (void*) Axis_Create_"+currentParaType+", (void*) Axis_Delete_"+currentParaType+",\""+currentType.getParamName()+"\", 0);\n");
+ }
+ }
+ writer.write("\t\t}\n");
+ writer.write("\t}\n\tm_pCall->UnInitialize();\n");
+ }
+ else if (returntype == null){
writer.write("\t\t\t/*not successful*/\n\t\t}\n");
writer.write("\t}\n\tm_pCall->UnInitialize();\n");
}
else if (returntypeisarray){
1.6 +1 -1 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubHeaderWriter.java
Index: ClientStubHeaderWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubHeaderWriter.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ClientStubHeaderWriter.java 20 Jan 2004 14:05:18 -0000 1.5
+++ ClientStubHeaderWriter.java 19 Feb 2004 10:27:54 -0000 1.6
@@ -180,7 +180,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.8 +56 -4 ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java
Index: ClientStubWriter.java
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- ClientStubWriter.java 13 Feb 2004 07:00:30 -0000 1.7
+++ ClientStubWriter.java 19 Feb 2004 10:27:54 -0000 1.8
@@ -181,8 +181,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();
@@ -253,6 +251,17 @@
}
}
}
+
+ // Multiples parameters so fill the methods prototype
+ ArrayList paramsC = (ArrayList)minfo.getOutputParameterTypes();
+ if ( isAllTreatedAsOutParams ) {
+ String currentParaTypeName;
+ 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)+" *OutValue"+i);
+ }
+ }
+
writer.write(")\n{\n");
if (returntype != null){
writer.write("\t");
@@ -316,8 +325,50 @@
}
writer.write("\tif (AXIS_SUCCESS == m_pCall->Invoke())\n\t{\n");
writer.write("\t\tif(AXIS_SUCCESS == m_pCall->CheckMessage(\""+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\tm_pCall->UnInitialize();\n");
+ if ( isAllTreatedAsOutParams) {
+ String currentParamName;
+ String currentParaType;
+ for (int i = 0; i < paramsC.size(); i++) {
+ ParameterInfo currentType = (ParameterInfo)paramsC.get(i);
+ type = wscontext.getTypemap().getType(currentType.getSchemaName());
+ if (type != null){
+ currentParaType = type.getLanguageSpecificName();
+ typeisarray = type.isArray();
+ }
+ else {
+ currentParaType = ((ParameterInfo)paramsC.get(i)).getLangName();
+ typeisarray = false;
+ }
+ typeissimple = CUtils.isSimpleType(currentParaType);
+
+ currentParamName = "*OutValue"+i;
+ // Some code need to be merged as we have some duplicated in coding here.
+ if (typeisarray){
+ QName qname = WrapperUtils.getArrayType(type).getName();
+ String containedType = null;
+ if (CUtils.isSimpleType(qname)){
+ containedType = CUtils.getclass4qname(qname);
+ writer.write("\t\t\t" + currentParamName + " = ("+currentParaType+"&)m_pCall->GetBasicArray("+CUtils.getXSDTypeForBasicType(containedType)+", \""+currentType.getElementName().getLocalPart()+"\", 0);\n");
+ }
+ else{
+ containedType = qname.getLocalPart();
+ writer.write("\t\t\t" + currentParamName + " = ("+currentParaType+"&)m_pCall->GetCmplxArray((void*) Axis_DeSerialize_"+containedType);
+ writer.write(", (void*) Axis_Create_"+containedType+", (void*) Axis_Delete_"+containedType+", (void*) Axis_GetSize_"+containedType+", \""+currentType.getElementName().getLocalPart()+"\", Axis_URI_"+containedType+");\n");
+ }
+ }
+ else if(typeissimple){
+ writer.write("\t\t\t" + currentParamName + " = m_pCall->"+ CUtils.getParameterGetValueMethodName(currentParaType, false)+"(\""+currentType.getElementName().getLocalPart()+"\", 0);\n");
+ }
+ else{
+ writer.write("\t\t\t" + currentParamName + " = ("+currentParaType+"*)m_pCall->GetCmplxObject((void*) Axis_DeSerialize_"+currentParaType+", (void*) Axis_Create_"+currentParaType+", (void*) Axis_Delete_"+currentParaType+",\""+currentType.getElementName().getLocalPart()+"\", 0);\n");
+ }
+ }
+ writer.write("\t\t}\n");
+ writer.write("\t}\n\tm_pCall->UnInitialize();\n");
+ }
+ else if (returntype == null){
+ writer.write("\t\t\t/*not successful*/\n\t\t}\n");
+ writer.write("\t}\n\tm_pCall->UnInitialize();\n");
}
else if (returntypeisarray){
QName qname = WrapperUtils.getArrayType(retType).getName();
@@ -347,6 +398,7 @@
//write end of method
writer.write("}\n");
}
+
/* (non-Javadoc)
* @see org.apache.axis.wsdl.wsdl2ws.cpp.CPPClassWriter#writeGlobalCodes()
*/