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 2005/11/23 17:36:40 UTC
svn commit: r348481 -
/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/BeanParamWriter.java
Author: dicka
Date: Wed Nov 23 08:36:38 2005
New Revision: 348481
URL: http://svn.apache.org/viewcvs?rev=348481&view=rev
Log:
Further updates to resolve Jira issue AXISCPP-149.
Problems highlighted by the UDDI.wsdl
Generate compilable code for complex types containing more than one array.
Correct generated copy constructor when handling xsd:any objects within a complex type.
Correct missing start of comment block.
Modified:
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/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=348481&r1=348480&r2=348481&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 Nov 23 08:36:38 2005
@@ -623,6 +623,7 @@
private void writeDeSerializeGlobalMethod() throws IOException, WrapperFault
{
+ int arrayCount = 0;
writer.write("/*\n");
writer.write(" * This static method deserialize a " + classname
+ " type of object\n");
@@ -650,23 +651,23 @@
}
String arrayType = null;
- /* Needed for Aix xlc */
-
- for (int i = 0; i < attribs.length; i++)
- {
- if (attribs[i].isArray())
- {
- if (attribs[i].isSimpleType())
- {
- writer.write("\tAxis_Array * array;\n\n");
- }
- else
- {
- writer.write("\t" + attribs[i].getTypeName() + "_Array * array = new " + attribs[i].getTypeName() + "_Array();\n\n");
- }
- break;
- }
- }
+// /* Needed for Aix xlc */
+//
+// for (int i = 0; i < attribs.length; i++)
+// {
+// if (attribs[i].isArray())
+// {
+// if (attribs[i].isSimpleType())
+// {
+// writer.write("\tAxis_Array * array;\n\n");
+// }
+// else
+// {
+// writer.write("\t" + attribs[i].getTypeName() + "_Array * array = new " + attribs[i].getTypeName() + "_Array();\n\n");
+// }
+// break;
+// }
+// }
boolean peekCalled = false;
boolean firstIfWritten = false;
@@ -734,10 +735,11 @@
}
else if (attribs[i].isArray())
{
+ arrayCount++;
//if Array
if (attribs[i].isSimpleType())
{
- writer.write("\tarray = pIWSDZ->getBasicArray("
+ writer.write("\tAxis_Array * array" + arrayCount + " = pIWSDZ->getBasicArray("
+ CUtils.getXSDTypeForBasicType(attribs[i].getTypeName()) + ", \""
+ attribs[i].getParamNameAsSOAPElement()
+ "\",0);\n");
@@ -745,17 +747,14 @@
writer.write("\t{\n");
writer.write("\t\tparam->" + attribs[i].getParamNameAsMember() + " = new " + attribs[i].getTypeName() + "_Array();\n");
writer.write("\t}\n");
- writer.write("\tparam->" + attribs[i].getParamNameAsMember() + "->clone( *array);\n");
- writer.write("\tAxis::AxisDelete((void*) array, XSD_ARRAY);\n\n");
+ writer.write("\tparam->" + attribs[i].getParamNameAsMember() + "->clone( *array" + arrayCount + ");\n");
+ writer.write("\tAxis::AxisDelete((void*) array" + arrayCount + ", XSD_ARRAY);\n\n");
}
else
{
- Iterator itForTypes = wscontext.getTypemap().getTypes().iterator();
- boolean nillable = isNillable();
- boolean moreThanOne = isMoreThanOne();
-
arrayType = attribs[i].getTypeName();
- writer.write("\tarray = (" + arrayType + "_Array *) pIWSDZ->getCmplxArray(array, (void*)Axis_DeSerialize_"
+ writer.write("\t" + arrayType + "_Array * array" + arrayCount + " = new " + arrayType + "_Array();\n");
+ writer.write("\tarray" + arrayCount + " = (" + arrayType + "_Array *) pIWSDZ->getCmplxArray(array" + arrayCount + ", (void*)Axis_DeSerialize_"
+ arrayType
+ ",\n"
+ "\t\t\t\t\t\t\t\t (void*)Axis_Create_"
@@ -771,7 +770,7 @@
+ attribs[i].getElementNameAsString()
+ "\", Axis_URI_" + arrayType + ");\n\n");
- writer.write("\tparam->" + attribs[i].getParamNameAsMember() + " = array;\n\n");
+ writer.write("\tparam->" + attribs[i].getParamNameAsMember() + " = array" + arrayCount + ";\n\n");
}
}
else if (attribs[i].isSimpleType())
@@ -1026,12 +1025,25 @@
//write copy constructor
writer.write("\n" + classname + "::" + classname + "(" + classname + " & original)\n{\n");
+ int anyCounter = 0;
for (int i = 0 ; i < attribs.length ; i++)
{
if (attribs[i].isArray())
{
writer.write("\t" + attribs[i].getParamName() + " = new " + attribs[i].getTypeName() + "_Array(*original." + attribs[i].getParamName() + ");\n");
}
+ else if (attribs[i].isAnyType())
+ {
+ anyCounter++;
+ writer.write("\tif (original." + attribs[i].getParamName() + anyCounter + " != NULL)\n");
+ writer.write("\t{\n");
+ writer.write("\t\t" + attribs[i].getParamName() + anyCounter + " = new " + attribs[i].getTypeName() + "(*(original." + attribs[i].getParamName() + anyCounter + "));\n");
+ writer.write("\t}\n");
+ writer.write("\telse\n");
+ writer.write("\t{\n");
+ writer.write("\t\t" + attribs[i].getParamName() + anyCounter + " = NULL;\n");
+ writer.write("\t}\n");
+ }
else
{
if (attribs[i].isSimpleType() && CUtils.isPointerType(attribs[i].getTypeName()))
@@ -1240,7 +1252,7 @@
iIndex++;
}
- writer.write( ")\n//\t{\n");
+ writer.write( "//)\n//\t{\n");
writer.write( "//\t\treturn 1;\n");
writer.write( "//\t}\n");
}
@@ -1271,7 +1283,7 @@
iIndex++;
}
- writer.write( ")\n//\t{\n");
+ writer.write( "//)\n//\t{\n");
writer.write( "//\t\treturn 1;\n");
writer.write( "//\t}\n");
}