Return-Path: Delivered-To: apmail-ws-axis-dev-archive@www.apache.org Received: (qmail 76291 invoked from network); 26 Jan 2006 15:33:23 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 26 Jan 2006 15:33:22 -0000 Received: (qmail 14377 invoked by uid 500); 26 Jan 2006 15:33:16 -0000 Delivered-To: apmail-ws-axis-dev-archive@ws.apache.org Received: (qmail 14136 invoked by uid 500); 26 Jan 2006 15:33:15 -0000 Mailing-List: contact axis-cvs-help@ws.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list axis-cvs@ws.apache.org Received: (qmail 14120 invoked by uid 99); 26 Jan 2006 15:33:14 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 26 Jan 2006 07:33:14 -0800 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Thu, 26 Jan 2006 07:33:14 -0800 Received: (qmail 76093 invoked by uid 65534); 26 Jan 2006 15:32:53 -0000 Message-ID: <20060126153253.76092.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r372546 - /webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java Date: Thu, 26 Jan 2006 15:32:53 -0000 To: axis-cvs@ws.apache.org From: dicka@apache.org X-Mailer: svnmailer-1.0.5 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N 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