in src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/BeanParamWriter.java [886:983]
private void writeDeleteGlobalMethod() throws IOException
{
CUtils.printMethodComment(c_writer, "Function used to delete objects of type "
+ c_classname + ".");
c_writer.write("void Axis_Delete_" + c_classname
+ "(" + c_classname + "* param, int nSize)\n");
c_writer.write("{\n");
c_writer.write("\t/* If NULL, just return */\n");
c_writer.write("\tif (param == NULL)\n");
c_writer.write("\t\treturn;\n");
c_writer.write("\n");
c_writer.write("\t/* Reclaim memory resources (recursion is used to reclaim arrays) */\n");
c_writer.write("\tif (nSize > 0)\n");
c_writer.write("\t{\n");
c_writer.write("\t\tint i;\n");
c_writer.write("\t\t" + c_classname + " **paramArray = (" + c_classname + " **)param;\n");
c_writer.write("\t\tfor (i = 0 ; i < nSize ; i++ )\n");
c_writer.write("\t\t\tif (paramArray[i])\n");
c_writer.write("\t\t\t\tAxis_Delete_" + c_classname + "(paramArray[i],0);\n");
c_writer.write("\t\taxiscAxisDeleteCArray((void **)param);\n");
c_writer.write("\t}\n");
c_writer.write("\telse\n");
c_writer.write("\t{\n");
int anyCounter = 0;
for (int i = 0; i < attribs.length; i++)
{
if (attribs[i].isSimpleType() || attribs[i].getType().isSimpleType())
{
String passedInBaseType;
String baseTypeName = null;
if (!attribs[i].isSimpleType() && attribs[i].getType().isSimpleType())
baseTypeName = CUtils.getSimpleType(attribs[i].getType().getBaseType());
else
baseTypeName = attribs[i].getTypeName();
if (CUtils.getXSDEnumeratorForType( baseTypeName).equals("XSDC_HEXBINARY")
|| CUtils.getXSDEnumeratorForType( baseTypeName).equals("XSDC_BASE64BINARY"))
{
// need to delete the pointer
String dot = ".";
if (isElementNillable(i) || isElementOptional(i)
|| attribs[i].getChoiceElement() || attribs[i].getAllElement())
dot = "->";
c_writer.write("\t\tif (param->" + attribs[i].getParamNameAsMember() + dot + "__ptr != NULL)\n");
c_writer.write("\t\t\taxiscAxisDelete(param->" + attribs[i].getParamNameAsMember()
+ dot + "__ptr, XSDC_UNSIGNEDBYTE);\n");
c_writer.write("\n");
}
else if (CUtils.isPointerType(attribs[i].getTypeName()) || attribs[i].isArray()
|| isElementNillable(i) || isElementOptional(i)
|| attribs[i].getChoiceElement() || attribs[i].getAllElement())
{
if (attribs[i].isArray())
passedInBaseType = "XSDC_ARRAY";
else
passedInBaseType = CUtils.getXSDEnumeratorForType(baseTypeName);
c_writer.write("\t\tif (param->" + attribs[i].getParamNameAsMember() + " != NULL)\n");
c_writer.write("\t\t\taxiscAxisDelete(param->" + attribs[i].getParamNameAsMember()
+ "," + passedInBaseType + ");\n");
c_writer.write("\n");
}
}
else if (attribs[i].isAnyElement())
{
anyCounter += 1;
String fieldName = "any" + Integer.toString(anyCounter);
c_writer.write("\t\tif (param->" + fieldName + " != NULL)\n");
c_writer.write("\t\t\taxiscAxisDelete(param->" + fieldName + ", XSDC_ANY);\n");
}
else
{
c_writer.write("\t\tif (param->" + attribs[i].getParamNameAsMember() + ")\n");
if (attribs[i].isArray())
c_writer.write("\t\t\tAxis_Delete_"
+ CUtils.sanitizeString(CUtils.getArrayNameForType(attribs[i].getTypeName()))
+ "(param->" + attribs[i].getParamNameAsMember() + ", 0);\n");
else
c_writer.write("\t\t\tAxis_Delete_" + CUtils.sanitizeString(attribs[i].getTypeName())
+ "(param->" + attribs[i].getParamNameAsMember() + ", 0);\n");
}
}
c_writer.write("\t\tfree(param);\n");
c_writer.write("\t}\n");
c_writer.write("}\n");
}