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 di...@apache.org on 2006/02/10 17:14:48 UTC
svn commit: r376753 -
/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java
Author: dicka
Date: Fri Feb 10 08:14:47 2006
New Revision: 376753
URL: http://svn.apache.org/viewcvs?rev=376753&view=rev
Log:
AXISCPP-149
Correct some memory issues in generated service wrapper for rpc/encoded.
Included some formatting tidy-up.
Modified:
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java?rev=376753&r1=376752&r2=376753&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java Fri Feb 10 08:14:47 2006
@@ -288,17 +288,26 @@
writer.write("\tint nStatus;\n");
writer.write("\tIWrapperSoapSerializer* pIWSSZ = NULL;\n");
writer.write("\tmc->getSoapSerializer(&pIWSSZ);\n");
- writer.write("\tif (!pIWSSZ) return AXIS_FAIL;\n");
+ writer.write("\tif (!pIWSSZ)\n");
+ writer.write("\t{\n");
+ writer.write("\t\treturn AXIS_FAIL;\n");
+ writer.write("\t}\n");
writer.write("\tIWrapperSoapDeSerializer* pIWSDZ = NULL;\n");
writer.write("\tmc->getSoapDeSerializer(&pIWSDZ);\n");
- writer.write("\tif (!pIWSDZ) return AXIS_FAIL;\n");
+ writer.write("\tif (!pIWSDZ)\n");
+ writer.write("\t{\n");
+ writer.write("\t\treturn AXIS_FAIL;\n");
+ writer.write("\t}\n");
writer.write("\t/* check whether we have got correct message */\n");
writer.write(
"\tif (AXIS_SUCCESS != pIWSDZ->checkMessageBody(\""
+ minfo.getMethodname()
+ "\", \""
+ wscontext.getWrapInfo().getTargetNameSpaceOfWSDL()
- + "\")) return AXIS_FAIL;\n");
+ + "\"))\n");
+ writer.write("\t{\n");
+ writer.write("\t\treturn AXIS_FAIL;\n");
+ writer.write("\t}\n");
writer.write(
"\tpIWSSZ->createSoapMethod(\""
//Chinthana:Fixed for AXISCPP-378
@@ -332,48 +341,83 @@
{
if (CUtils.isPointerType(param.getLangName()))
{
-
- writer.write("\t"
- + paraTypeName
- + " v"
- + i
- + " = pIWSDZ->"
- + CUtils.getParameterGetValueMethodName(paraTypeName, false)
- + "(\""
- + parameterName + "\",0);\n");
- }
+ writer.write("\n\t" + paraTypeName + " v" + i + " = NULL;\n");
+ writer.write("\t"
+ + paraTypeName
+ + " value"
+ + i
+ + " = pIWSDZ->"
+ + CUtils.getParameterGetValueMethodName(paraTypeName, false)
+ + "(\""
+ + parameterName + "\",0);\n");
+ writer.write("\tif (value" + i + ")\n");
+ writer.write("\t{\n");
+ writer.write("\t\tv" + i + " = new char[ strlen( value" + i + " ) + 1 ];\n");
+ writer.write("\t\tstrcpy( v" + i + ", value" + i + " );\n");
+ writer.write("\t\tAxis::AxisDelete( (void *) value" + i + ", " + CUtils.getXSDTypeForBasicType(paraTypeName) + ");\n");
+ writer.write("\t}\n");
+ }
else
{
+ writer.write("\n\t" + paraTypeName + " * v" + i + " = NULL;\n");
writer.write("\t"
+ paraTypeName
- + "* v"
+ + "* pValue"
+ i
+ " = pIWSDZ->"
+ CUtils.getParameterGetValueMethodName(paraTypeName, false)
+ "(\""
+ parameterName + "\",0);\n");
+ writer.write("\tif (pValue" + i + ")\n");
+ writer.write("\t{\n");
+ writer.write("\t\tv" + i + " = new " + paraTypeName + "();");
+ writer.write("\t\t*v" + i + " = *pValue" + i + ";\n");
+ writer.write("\t\tAxis::AxisDelete( (void *) pValue" + i + ", " + CUtils.getXSDTypeForBasicType(paraTypeName) + ");\n");
+ writer.write("\t}\n");
}
}
else
{
if (CUtils.isPointerType(param.getLangName()))
+ {
+ writer.write("\n\t" + paraTypeName + " v" + i + " = NULL;\n");
writer.write("\t"
+ paraTypeName
- + " v"
+ + " value"
+ i
+ " = pIWSDZ->"
+ CUtils.getParameterGetValueMethodName(paraTypeName, false)
+ "(\""
+ parameterName + "\",0);\n");
+ writer.write("\tif (value" + i + ")\n");
+ writer.write("\t{\n");
+ writer.write("\t\tv" + i + " = new char[ strlen( value" + i + " ) + 1 ];\n");
+ writer.write("\t\tstrcpy( v" + i + ", value" + i + " );\n");
+ writer.write("\t\tAxis::AxisDelete( (void *) value" + i + ", " + CUtils.getXSDTypeForBasicType(paraTypeName) + ");\n");
+ writer.write("\t}\n");
+ }
else
+ {
+ writer.write("\n\t" + paraTypeName + " v" + i);
+ if (!"xsd__base64Binary".equals(paraTypeName) && !"xsd__hexBinary".equals(paraTypeName) )
+ {
+ writer.write(" = " + CUtils.getInitValue(paraTypeName));
+ }
+ writer.write(";\n");
writer.write("\t"
+ paraTypeName
- + " v"
+ + " * pValue"
+ i
- + " = *(pIWSDZ->"
+ + " = pIWSDZ->"
+ CUtils.getParameterGetValueMethodName(paraTypeName, false)
+ "(\""
- + parameterName + "\",0));\n");
+ + parameterName + "\",0);\n");
+ writer.write("\tif (pValue" + i + ")\n");
+ writer.write("\t{\n");
+ writer.write("\t\tv" + i + " = *pValue" + i + ";\n");
+ writer.write("\t\tAxis::AxisDelete( (void *) pValue" + i + ", " + CUtils.getXSDTypeForBasicType(paraTypeName) + " );\n");
+ writer.write("\t}\n");
+ }
}
}
else
@@ -389,7 +433,7 @@
{
containedType = CUtils.getclass4qname(qname);
- writer.write("\t" + containedType + "_Array * v" + i +" = new " + containedType + "_Array();\n");
+ writer.write("\n\t" + containedType + "_Array * v" + i +" = new " + containedType + "_Array();\n");
writer.write(
"\t"
+ "Axis_Array * RetArray"
@@ -427,7 +471,7 @@
{
//for complex types
writer.write(
- "\t"
+ "\n\t"
+ paraTypeName
+ " *v"
+ i
@@ -446,8 +490,10 @@
+ ");\n");
}
}
- writer.write(
- "\tif (AXIS_SUCCESS != (nStatus = pIWSDZ->getStatus())) return nStatus;\n");
+ writer.write("\tif (AXIS_SUCCESS != (nStatus = pIWSDZ->getStatus()))\n");
+ writer.write("\t{\n");
+ writer.write("\t\treturn nStatus;\n");
+ writer.write("\t}\n");
// Multiples parameters so fill the methods prototype
if (isAllTreatedAsOutParams)
{
@@ -712,8 +758,10 @@
writeExceptions(faultType, faultInfoName, paramName, langName);
}
}
- writer.write("\tcatch(...){\n"); //nithya
- writer.write("\t}\n"); //nithya
+ writer.write("\tcatch(...)\n");
+ writer.write("\t{\n");
+ writer.write("\t\treturn AXIS_FAIL;\n");
+ writer.write("\t}\n");
//write end of method
writer.write("}\n");
}
@@ -755,6 +803,7 @@
+ ");\n");
writer.write("\t\tthrow AxisServiceException(AXISC_SERVICE_THROWN_EXCEPTION);\n");
writer.write("\t\t}\n");
+ writer.write("\t\treturn AXIS_FAIL;\n");
writer.write("\t}\n");
writer.write("\n");
}