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/22 16:34:00 UTC

svn commit: r379795 - in /webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp: BeanParamWriter.java literal/BeanParamWriter.java

Author: dicka
Date: Wed Feb 22 07:33:58 2006
New Revision: 379795

URL: http://svn.apache.org/viewcvs?rev=379795&view=rev
Log:
AXISCPP-935

Produce correct code in generated bean delete methods to handle arrays.

Modified:
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/BeanParamWriter.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/BeanParamWriter.java

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/BeanParamWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/BeanParamWriter.java?rev=379795&r1=379794&r2=379795&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/BeanParamWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/BeanParamWriter.java Wed Feb 22 07:33:58 2006
@@ -786,23 +786,35 @@
 
 	private void writeDeleteGlobalMethod() throws IOException 
     {
-		writer.write("/*\n");
-		writer.write(" * This static method delete a " + classname
-				+ " type of object\n");
-		writer.write(" */\n");
-		writer.write("void Axis_Delete_" + classname + "(" + classname
-				+ "* param, bool bArray = false, int nSize=0)\n");
-		writer.write("{\n");
-		writer.write("\tif (bArray)\n");
-		writer.write("\t{\n");
-		writer.write("\t\tdelete [] param;\n");
-		writer.write("\t}\n");
-		writer.write("\telse\n");
-		writer.write("\t{\n");
-		writer.write("\t\tdelete param;\n");
-		writer.write("\t}\n");
-		writer.write("}\n");
-	}
+        writer.write("/*\n");
+        writer.write(" * This static method delete a " + classname
+                + " type of object\n");
+        writer.write(" */\n");
+        writer.write("void Axis_Delete_" + classname + "(" + classname
+                + "* param, bool bArray = false, int nSize=0)\n");
+        writer.write("{\n");
+        writer.write("\tif (bArray)\n");
+        writer.write("\t{\n");
+        writer.write("\t\tif (nSize > 0)\n");
+        writer.write("\t\t{\n");
+        writer.write("\t\t\tfor (int count = 0 ; count < nSize ; count++ )\n");
+        writer.write("\t\t\t{\n");
+        writer.write("\t\t\t\tif ( (( " + classname + " ** ) param)[count])\n");
+        writer.write("\t\t\t\t{\n");
+        writer.write("\t\t\t\t\tdelete (( " + classname + " ** ) param)[count];\n");
+        writer.write("\t\t\t\t\t(( " + classname + " ** ) param)[count] = NULL;\n");
+        writer.write("\t\t\t\t}\n");
+        writer.write("\t\t\t}\n");
+        writer.write("\t\t\tdelete [] ( " + classname + " ** ) param;\n");
+        writer.write("\t\t}\n");
+        writer.write("\t}\n");
+        writer.write("\telse\n");
+        writer.write("\t{\n");
+        writer.write("\t\tdelete param;\n");
+        writer.write("\t}\n");
+        writer.write("\tparam = NULL;\n");
+        writer.write("}\n");
+    }
 
 	/*
 	 * (non-Javadoc)

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/BeanParamWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/BeanParamWriter.java?rev=379795&r1=379794&r2=379795&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/BeanParamWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/BeanParamWriter.java Wed Feb 22 07:33:58 2006
@@ -1307,12 +1307,24 @@
         writer.write("{\n");
         writer.write("\tif (bArray)\n");
         writer.write("\t{\n");
-        writer.write("\t\tdelete [] param;\n");
+        writer.write("\t\tif (nSize > 0)\n");
+        writer.write("\t\t{\n");
+        writer.write("\t\t\tfor (int count = 0 ; count < nSize ; count++ )\n");
+        writer.write("\t\t\t{\n");
+        writer.write("\t\t\t\tif ( (( " + classname + " ** ) param)[count])\n");
+        writer.write("\t\t\t\t{\n");
+        writer.write("\t\t\t\t\tdelete (( " + classname + " ** ) param)[count];\n");
+        writer.write("\t\t\t\t\t(( " + classname + " ** ) param)[count] = NULL;\n");
+        writer.write("\t\t\t\t}\n");
+        writer.write("\t\t\t}\n");
+        writer.write("\t\t\tdelete [] ( " + classname + " ** ) param;\n");
+        writer.write("\t\t}\n");
         writer.write("\t}\n");
         writer.write("\telse\n");
         writer.write("\t{\n");
         writer.write("\t\tdelete param;\n");
         writer.write("\t}\n");
+        writer.write("\tparam = NULL;\n");
         writer.write("}\n");
     }