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 di...@apache.org on 2006/01/26 16:32:53 UTC
svn commit: r372546 -
/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java
Author: dicka
Date: Thu Jan 26 07:32:49 2006
New Revision: 372546
URL: http://svn.apache.org/viewcvs?rev=372546&view=rev
Log:
Apply recent memory management changes to stubs generated for rpc/encoded stubs.
Modified:
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java?rev=372546&r1=372545&r2=372546&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java Thu Jan 26 07:32:49 2006
@@ -333,48 +333,26 @@
else
{
//for simple types
- if (returntype.isNillable()
- && !(CUtils.isPointerType(outparamTypeName)))
+ if (returntype.isNillable() || returntype.isOptional()
+ || CUtils.isPointerType(outparamTypeName))
{
- writer.write(outparamTypeName + "* Ret = NULL;\n");
- }
- else if (outparamTypeName.equals("xsd__string"))
- {
- writer.write(outparamTypeName + " Ret;\n");
- writer.write("\tRet = 0;\n");
+ writer.write(outparamTypeName);
+ if (!CUtils.isPointerType(outparamTypeName))
+ {
+ writer.write(" *");
+ }
+ writer.write(" Ret = NULL;\n");
}
else
{
- String initValue = CUtils
- .getInitValue(outparamTypeName);
- if (initValue != null)
+ if ("xsd__base64Binary".equals(outparamTypeName) || "xsd__hexBinary".equals(outparamTypeName))
{
- writer.write(outparamTypeName + "* Ret = NULL;\n");//" +
- // initValue
- // +
- // ";\n");
+ writer.write(outparamTypeName + " Ret;\n");
}
else
{
- if (outparamTypeName.equals("xsd__base64Binary")
- || outparamTypeName
- .equals("xsd__hexBinary"))
- {
- writer
- .write(outparamTypeName
- + "* Ret=NULL;\n");
- //writer.write("\tRet->__ptr = NULL;\n");
- //writer.write("\tRet->__size = 0;\n");
- }
-
- else
- {
- writer
- .write(outparamTypeName
- + "* Ret=NULL;\n");
- }
+ writer.write(outparamTypeName + " Ret = " + CUtils.getInitValue(outparamTypeName) + ";\n");
}
- //TODO initialize return parameter appropriately.
}
}
}
@@ -383,7 +361,7 @@
//writer.write("\tchar* cFaultcode;\n");
//writer.write("\tchar* cFaultstring;\n");
//writer.write("\tchar* cFaultactor;\n");
- writer.write("\tconst char* pcCmplxFaultName;\n");
+ writer.write("\tconst char* pcCmplxFaultName = NULL;\n");
writer.write("\ttry\n\t{");
writer
.write("\n\t\tif (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER"
@@ -391,12 +369,24 @@
//damitha
if (returntype != null)
{
- if (outparamTypeName.equals("xsd__string") && returntypeissimple)
- writer.write("Ret;\n");
+ if (returntypeisarray)
+ {
+ writer.write("RetArray;\n");
+ }
else
- writer.write((returntypeisarray ? "RetArray"
- : returntypeissimple ? "*Ret" : "pReturn")
- + ";\n");
+ if (CUtils.isPointerType(outparamTypeName) || (returntypeissimple && !(returntype.isNillable() || returntype.isOptional())))
+ {
+ writer.write("Ret;\n");
+ }
+ else
+ if (returntypeissimple)
+ {
+ writer.write("*Ret;\n");
+ }
+ else
+ {
+ writer.write("pReturn;\n");
+ }
}
else
{
@@ -710,48 +700,60 @@
+ CUtils.getXSDTypeForBasicType(containedType) + ", \""
+ returntype.getParamName() + "\", 0);\n");
writer.write ("\t\t\t\tRetArray->clone(*RetAxisArray);\n");
+ writer.write ("\t\t\t\tAxis::AxisDelete( (void *)RetAxisArray, XSD_ARRAY);\n");
}
else
{
containedType = qname.getLocalPart();
- writer.write("\t\t\t\tAxis_Array * RetAxisArray = "
- + "m_pCall->getCmplxArray(RetArray, (void*) Axis_DeSerialize_"
+ writer.write("\t\t\t\tRetArray = (" + containedType
+ + "_Array *) m_pCall->getCmplxArray(RetArray, (void*) Axis_DeSerialize_"
+ containedType);
//damitha
writer.write(", (void*) Axis_Create_" + containedType
+ ", (void*) Axis_Delete_" + containedType
+ ", (void*) Axis_GetSize_" + containedType + ", \""
+ returntype.getParamName() + "\", Axis_URI_"
- + containedType + ");\n");
- writer.write("\t\t\tRetArray->clone(*(" + containedType + "_Array *)RetAxisArray);\n");
-
+ + containedType + ");\n");
}
-
- writer.write ("\t\t\t\tAxis::AxisDelete( (void *)RetAxisArray, XSD_ARRAY);\n\t\t\t}\n");
- writer.write("\t\t}\n");
+ writer.write("\t\t\t}\n\t\t}\n");
writer.write("\tm_pCall->unInitialize();\n");
// writer.write("\t\t}\n\t\tm_pCall->unInitialize();\n");
- writer.write("\t\treturn RetArray;\n");
+ writer.write("\treturn RetArray;\n");
}
else if (returntypeissimple)
{
- writer.write("\t\t\t\tRet = m_pCall->"
+ writer.write("\t\t\t\t" + outparamTypeName);
+ if (!CUtils.isPointerType(outparamTypeName))
+ {
+ writer.write(" *");
+ }
+
+ writer.write(" pReturn = m_pCall->"
+ CUtils.getParameterGetValueMethodName(outparamTypeName,
false) + "(\"" + returntype.getParamName()
- + "\", 0);\n\t\t\t}\n");
- writer.write("\t\t}\n");
- writer.write("\tm_pCall->unInitialize();\n");
- // writer.write("\t\t}\n\t\tm_pCall->unInitialize();\n");
- if (outparamTypeName.equals("xsd__string"))
- writer.write("\t\treturn Ret;\n");
- else
+ + "\", 0);\n");
+ writer.write("\t\t\t\tif (pReturn)\n");
+ writer.write("\t\t\t\t{\n");
+ if (CUtils.isPointerType(outparamTypeName))
{
- writer.write("\t\t" + outparamTypeName + " r = *Ret;\n"); // make // This does not do a deep
- // deep // copy! This will only copy
- // copy // pointers not content!
- writer.write("\t\tdelete Ret;\n"); // delete pointer
- writer.write("\t\treturn r;\n");
+ writer.write("\t\t\t\t\tRet = new char[strlen( pReturn) + 1];\n");
+ writer.write("\t\t\t\t\tstrcpy( Ret, pReturn);\n");
}
+ else
+ if (returntype.isOptional() || returntype.isNillable())
+ {
+ writer.write("\t\t\t\t\tRet = new " + outparamTypeName + "(*pReturn);\n");
+ }
+ else
+ {
+ writer.write("\t\t\t\t\tRet = *pReturn;\n");
+ }
+ writer.write("\t\t\t\t\tAxis::AxisDelete( (void *) pReturn, " + CUtils.getXSDTypeForBasicType(outparamTypeName) + ");\n");
+ writer.write("\t\t\t\t}\n");
+ writer.write("\t\t\t}\n");
+ writer.write("\t\t}\n");
+ writer.write("\tm_pCall->unInitialize();\n");
+ writer.write("\treturn Ret;\n");
}
else
{
@@ -766,7 +768,7 @@
writer.write("\t\t}\n");
writer.write("\tm_pCall->unInitialize();\n");
// writer.write("\t\t}\n\t\tm_pCall->unInitialize();\n");
- writer.write("\t\treturn pReturn;\n");
+ writer.write("\treturn pReturn;\n");
}
//added by nithya