You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by pr...@apache.org on 2005/11/30 15:40:23 UTC
svn commit: r349958 - in /webservices/axis/trunk/c:
src/wsdl/org/apache/axis/wsdl/wsdl2ws/
src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/
tests/auto_build/testcases/client/cpp/
Author: prestonf
Date: Wed Nov 30 06:40:14 2005
New Revision: 349958
URL: http://svn.apache.org/viewcvs?rev=349958&view=rev
Log:
Fix for AXIS_OUT_PARAM simple type parameters.
Modified:
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/CUtils.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubHeaderWriter.java
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java
webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/InOutClient.cpp
webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/MultiOutClient.cpp
webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/SimpleChoiceNillableClient.cpp
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/CUtils.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/CUtils.java?rev=349958&r1=349957&r2=349958&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/CUtils.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/CUtils.java Wed Nov 30 06:40:14 2005
@@ -804,9 +804,17 @@
}
public static boolean isPointerType(String name)
{
- return ((Boolean) isPointerBasedType.get(name)).booleanValue();
- }
+ Object o = isPointerBasedType.get(name);
+ boolean b = false;
+
+ if( o != null)
+ {
+ b = ((Boolean) isPointerBasedType.get(name)).booleanValue();
+ }
+ return b;
+ }
+
public static boolean isAnyType(QName name){
return name.equals(anyTypeQname);
}
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubHeaderWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubHeaderWriter.java?rev=349958&r1=349957&r2=349958&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubHeaderWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubHeaderWriter.java Wed Nov 30 06:40:14 2005
@@ -138,15 +138,30 @@
{
ParameterInfo nparam = (ParameterInfo) params.next();
String comma = ", ";
- if (!hasInputParms && 0==j) comma = "";
+ String paramType = WrapperUtils.getClassNameFromParamInfoConsideringArrays( nparam, wscontext);
+ boolean bTypeHasStar = paramType.endsWith( "*");
+
+ if (!hasInputParms && 0==j)
+ {
+ comma = "";
+ }
+
+ if( CUtils.isPointerType( paramType) || bTypeHasStar)
+ {
writer.write(comma
+ "AXIS_OUT_PARAM "
- + WrapperUtils
- .getClassNameFromParamInfoConsideringArrays(
- nparam,
- wscontext)
- + " *OutValue"
+ + paramType
+ + " * OutValue"
+ j);
+ }
+ else
+ {
+ writer.write(comma
+ + "AXIS_OUT_PARAM "
+ + paramType
+ + " ** OutValue"
+ + j);
+ }
}
}
writer.write(");\n");
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java?rev=349958&r1=349957&r2=349958&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java Wed Nov 30 06:40:14 2005
@@ -359,22 +359,36 @@
{
for (int i = 0; i < paramsC.size (); i++)
{
- type =
+ type =
wscontext.getTypemap ().getType (((ParameterInfo) paramsC.
get (i)).
getSchemaName ());
String comma = ", ";
- if (paramsB.size()==0 && 0==i) comma = "";
- writer.write (comma + "AXIS_OUT_PARAM " +
- WrapperUtils.
- getClassNameFromParamInfoConsideringArrays ((ParameterInfo) paramsC.get (i), wscontext) + "* OutValue" + i);
+ if (paramsB.size()==0 && 0==i)
+ {
+ comma = "";
+ }
+
+ String xsdType = WrapperUtils.getClassNameFromParamInfoConsideringArrays ((ParameterInfo) paramsC.get (i), wscontext);
+
+ if( CUtils.isPointerType( xsdType) || xsdType.endsWith( "*"))
+ {
+ writer.write (comma + "AXIS_OUT_PARAM " + xsdType + " * OutValue" + i);
+ }
+ else
+ {
+ writer.write (comma + "AXIS_OUT_PARAM " + xsdType + " ** OutValue" + i);
+ }
+
}
}
writer.write (")\n{\n");
+
if (returntype != null)
{
writer.write ("\t");
+
if (returntypeisarray)
{
//for arrays
@@ -382,7 +396,6 @@
}
else
{
-
if (!returntypeissimple)
{ //for AnyType too
if (outparamType.lastIndexOf ("*") > 0)
@@ -825,24 +838,78 @@
if (typeissimple)
{
- if (CUtils.isPointerType(currentParaType))
- {
- writer.write ("\t\t\t"
- + currentParamName
- + " = m_pCall->"
- + CUtils.getParameterGetValueMethodName(currentParaType,false)
- + "(\"" + currentType.getParamName ()
- + "\", 0);\n");
- }
- else
- {
- writer.write ("\t\t\t"
- + currentParamName
- + " = *(m_pCall->"
- + CUtils.getParameterGetValueMethodName(currentParaType,false)
- + "(\"" + currentType.getParamName ()
- + "\", 0));\n");
- }
+ if( i > 0)
+ {
+ writer.write( "\n");
+ }
+
+ if (CUtils.isPointerType(currentParaType))
+ {
+/* writer.write ("\t\t\t"
+ + currentParamName
+ + " = m_pCall->"
+ + CUtils.getParameterGetValueMethodName(currentParaType,false)
+ + "(\"" + currentType.getParamName ()
+ + "\", 0);\n");
+*/
+ String xsdType = WrapperUtils.getClassNameFromParamInfoConsideringArrays ((ParameterInfo) paramsC.get (i), wscontext);
+
+ if( !CUtils.isPointerType(xsdType))
+ {
+ xsdType += " *";
+ }
+
+ writer.write( "\t\t\t" + currentParaType + " pReturn" + i + " = m_pCall->" + CUtils.getParameterGetValueMethodName( currentParaType, false) + "( \"" + currentType.getParamName() + "\", 0);\n");
+ writer.write( "\n");
+ writer.write( "\t\t\tif( OutValue" + i + " != NULL)\n");
+ writer.write( "\t\t\t\t{\n");
+ writer.write( "\t\t\t\tif( *OutValue" + i + " != NULL)\n");
+ writer.write( "\t\t\t\t{\n");
+ writer.write( "\t\t\t\t\tint\tiStringSize" + i + " = strlen( (char *) *OutValue" + i + ");\n");
+ writer.write( "\t\t\t\t\tint\tiStrLenValue" + i + " = strlen( pReturn" + i + ");\n");
+ writer.write( "\n");
+ writer.write( "\t\t\t\t\tif( iStrLenValue" + i + " > iStringSize" + i + ")\n");
+ writer.write( "\t\t\t\t\t{\n");
+ writer.write( "\t\t\t\t\t\t*OutValue" + i + " =(" + xsdType + ") new char[iStrLenValue" + i + " + 1];\n");
+ writer.write( "\t\t\t\t\t\tstrcpy( (char *) *OutValue" + i + ", pReturn" + i + ");\n");
+ writer.write( "\t\t\t\t\t}\n");
+ writer.write( "\t\t\t\t\telse\n");
+ writer.write( "\t\t\t\t\t{\n");
+ writer.write( "\t\t\t\t\t\tstrcpy( (char *) *OutValue" + i + ", pReturn" + i + ");\n");
+ writer.write( "\t\t\t\t\t}\n");
+ writer.write( "\t\t\t\t}\n");
+ writer.write( "\t\t\t\telse\n");
+ writer.write( "\t\t\t\t{\n");
+ writer.write( "\t\t\t\t\t*OutValue" + i + " = (" + xsdType + ") new char[strlen( pReturn" + i + ") + 1];\n");
+ writer.write( "\t\t\t\t\tstrcpy( (char *) *OutValue" + i + ", pReturn" + i + ");\n");
+ writer.write( "\t\t\t\t}\n");
+ writer.write( "\t\t\t}\n");
+ writer.write( "\n");
+ writer.write( "\t\t\tAxis::AxisDelete( (void *) pReturn" + i + ", " + CUtils.getXSDTypeForBasicType( currentParaType) + ");\n");
+ }
+ else
+ {
+/* writer.write ("\t\t\t"
+ + currentParamName
+ + " = *(m_pCall->"
+ + CUtils.getParameterGetValueMethodName(currentParaType,false)
+ + "(\"" + currentType.getParamName ()
+ + "\", 0));\n");
+*/
+ writer.write( "\t\t\t" + currentParaType + " * pReturn" + i + " = m_pCall->" + CUtils.getParameterGetValueMethodName( currentParaType, false) + "( \"" + currentType.getParamName() + "\", 0);\n");
+ writer.write( "\n");
+ writer.write( "\t\t\tif( OutValue" + i + " != NULL)\n");
+ writer.write( "\t\t\t{\n");
+ writer.write( "\t\t\t\tif( *OutValue" + i + " == NULL)\n");
+ writer.write( "\t\t\t\t{\n");
+ writer.write( "\t\t\t\t\t*OutValue" + i + " = new " + currentParaType + "();\n");
+ writer.write( "\t\t\t\t}\n");
+ writer.write( "\n");
+ writer.write( "\t\t\t**OutValue" + i + " = *pReturn" + i + ";\n");
+ writer.write( "\t\t\t}\n");
+ writer.write( "\n");
+ writer.write( "\t\t\tAxis::AxisDelete( (void *) pReturn" + i + ", " + CUtils.getXSDTypeForBasicType( currentParaType) + ");\n");
+ }
}
else
{
Modified: webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/InOutClient.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/InOutClient.cpp?rev=349958&r1=349957&r2=349958&view=diff
==============================================================================
--- webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/InOutClient.cpp (original)
+++ webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/InOutClient.cpp Wed Nov 30 06:40:14 2005
@@ -73,12 +73,16 @@
// test multiParametersMultiReturn
xsd__string outValue0 = "";
- xsd__int outValue1 = 0;
- xsd__double outValue2 = 0;
+ xsd__int * pOutValue1 = 0;
+ xsd__double * pOutValue2 = 0;
cout << "multiParametersMultiReturn" << endl;
- ws.multiParametersMultiReturn("Hey dude", 69, (xsd__double)17.19, &outValue0, &outValue1, &outValue2);
- cout << "multiParametersMultiReturn returned " << outValue0 << " , " << outValue1 << " , " << outValue2 <<endl;
+ ws.multiParametersMultiReturn("Hey dude", 69, (xsd__double)17.19, &outValue0, &pOutValue1, &pOutValue2);
+ cout << "multiParametersMultiReturn returned " << outValue0 << " , " << *pOutValue1 << " , " << *pOutValue2 <<endl;
+
+ delete pOutValue1;
+ delete pOutValue2;
+
//...........................................................
xsd__int ** arrayOfInt = new xsd__int*[3];
@@ -108,13 +112,16 @@
xsd__string OutValue0 = "";
ComplexType1* OutValue1;
- xsd__int OutValue2 = 0;
- xsd__double OutValue3 = 0;
+ xsd__int * pOutValue22 = 0;
+ xsd__double * pOutValue33 = 0;
cout << "multiComplexParametersMultiComplexReturn" << endl;
- ws.multiComplexParametersMultiComplexReturn("Hello", &ct, 27, 13.31, &stringArray, &OutValue0, &OutValue1, &OutValue2, &OutValue3);
+ ws.multiComplexParametersMultiComplexReturn("Hello", &ct, 27, 13.31, &stringArray, &OutValue0, &OutValue1, &pOutValue22, &pOutValue33);
cout << "multiComplexParametersMultiComplexReturn returned " << OutValue0 << " , " << OutValue1->ctString << endl;
+ delete pOutValue22;
+ delete pOutValue33;
+
//..............................................................................
@@ -190,7 +197,8 @@
ctr = ws.complexParameterComplexReturn(&ct2);
cout << "complexParameterComplexReturn with nil parameters returned " << ctr->ctLong << endl;
-
+ delete pOutValue1;
+ delete pOutValue2;
}
catch(AxisException& e)
{
@@ -198,7 +206,7 @@
}
catch(exception& e)
{
- cout << "Unknown exception has occured" << endl;
+ cout << "Unknown exception has occured : " << e.what() << endl;
}
catch(...)
{
Modified: webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/MultiOutClient.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/MultiOutClient.cpp?rev=349958&r1=349957&r2=349958&view=diff
==============================================================================
--- webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/MultiOutClient.cpp (original)
+++ webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/MultiOutClient.cpp Wed Nov 30 06:40:14 2005
@@ -40,15 +40,15 @@
xsd__byte OutValue9 = 0;
ws.get(&OutValue0,
- &OutValue1,
- &OutValue2,
- &OutValue3,
- &OutValue4,
- &OutValue5,
- &OutValue6,
- &OutValue7,
- &OutValue8,
- &OutValue9);
+ (xsd__integer**)&OutValue1,
+ (xsd__int**)&OutValue2,
+ (xsd__long**)&OutValue3,
+ (xsd__short**)&OutValue4,
+ (xsd__decimal**)&OutValue5,
+ (xsd__float**)&OutValue6,
+ (xsd__double**)&OutValue7,
+ (xsd__boolean**)&OutValue8,
+ (xsd__byte**)&OutValue9);
char sInteger[128], sLong[128];
#ifdef WIN32
Modified: webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/SimpleChoiceNillableClient.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/SimpleChoiceNillableClient.cpp?rev=349958&r1=349957&r2=349958&view=diff
==============================================================================
--- webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/SimpleChoiceNillableClient.cpp (original)
+++ webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/SimpleChoiceNillableClient.cpp Wed Nov 30 06:40:14 2005
@@ -1,4 +1,4 @@
-#include <iostream.h>
+#include <iostream>
#include "ChoiceTestSoap.hpp"
using namespace std;