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 pr...@apache.org on 2005/11/15 16:18:56 UTC

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

Author: prestonf
Date: Tue Nov 15 07:18:52 2005
New Revision: 344374

URL: http://svn.apache.org/viewcvs?rev=344374&view=rev
Log:
Part of the fix for AXISCPP-149.  This covers all of the complex types.

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=344374&r1=344373&r2=344374&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 Tue Nov 15 07:18:52 2005
@@ -492,36 +492,17 @@
 
                     if (nillable)
                     {
-                        writer.write("\tAxis_Array\tsAA" + i + ";\n\n");
-                        writer.write("\tsAA" + i + ".m_Size = 1;\n\n");
+                        String typeName = attribs[i].getTypeName();
+                        String countName = "iCount" + i;
+                        
+                        writer.write( "\tint\t\t\t\tiSize = 0;\n");
+                        writer.write( "\tconst " + typeName + " **	pp" + typeName + " = param->" + attribs[i].getParamName() + "->get( (int&) iSize);\n\n");
 
-                        if (moreThanOne)
-                        {
-                            writer.write("\tfor( int iCount" + i
-                                    + " = 0; iCount" + i
-                                    + " < param->count; iCount" + i + "++)\n");
-                        }
-                        else
-                        {
-                            writer.write("\tfor( int iCount" + i
-                                    + " = 0; iCount" + i + " < param->"
-                                    + attribs[i].getParamName()
-                                    + ".m_Size; iCount" + i + "++)\n");
-                        }
+                        writer.write("\tfor( int " + countName + " = 0; " + countName + " < iSize; " + countName + "++)\n");
 
                         writer.write("\t{\n");
 
-                        if (moreThanOne)
-                        {
-                            writer.write("\t\tif( param->infos.m_Array[iCount"
-                                    + i + "] == NULL)\n");
-                        }
-                        else
-                        {
-                            writer.write("\t\tif( param->"
-                                    + attribs[i].getParamName()
-                                    + ".m_Array[iCount" + i + "] == NULL)\n");
-                        }
+                        writer.write("\t\tif( pp" + typeName + "[" + countName + "] == NULL)\n");
 
                         writer.write("\t\t{\n");
                         writer.write("\t\t\tpSZ->serializeAsAttribute( \"<"
@@ -532,31 +513,11 @@
                         writer.write("\t\telse\n");
                         writer.write("\t\t{\n");
 
-                        if (moreThanOne)
-                        {
-                            writer.write("\t\t\tsAA"
-                                    + i
-                                    + ".m_Array = (void **)param->infos.m_Array[iCount"
-                                    + i + "];\n");
-                        }
-                        else
-                        {
-                            writer.write("\t\t\tsAA" + i + ".m_Array = param->"
-                                    + attribs[i].getParamName()
-                                    + ".m_Array[iCount" + i + "];\n\n");
-                        }
-
-                        writer.write("\t\t\tpSZ->serializeCmplxArray( &sAA" + i
-                                + ",\n");
-                        writer.write("\t\t\t\t\t\t\t\t\t (void*) Axis_Serialize_"
-                                        + arrayType + ",\n");
-                        writer.write("\t\t\t\t\t\t\t\t\t (void*) Axis_Delete_"
-                                + arrayType + ",\n");
-                        writer.write("\t\t\t\t\t\t\t\t\t (void*) Axis_GetSize_"
-                                + arrayType + ",\n");
-                        writer.write("\t\t\t\t\t\t\t\t\t \""
-                                + attribs[i].getParamName() + "\", Axis_URI_"
-                                + arrayType + ");\n");
+                        writer.write("\t\t\tpSZ->serializeCmplxArray( (Axis_Array *) &pp" + typeName + "[" + countName + "],\n");
+                        writer.write("\t\t\t\t\t\t\t\t\t (void*) Axis_Serialize_"+ arrayType + ",\n");
+                        writer.write("\t\t\t\t\t\t\t\t\t (void*) Axis_Delete_"+ arrayType + ",\n");
+                        writer.write("\t\t\t\t\t\t\t\t\t (void*) Axis_GetSize_"+ arrayType + ",\n");
+                        writer.write("\t\t\t\t\t\t\t\t\t \""+ attribs[i].getParamName() + "\", Axis_URI_" + arrayType + ");\n");
                         writer.write("\t\t}\n");
                         writer.write("\t}\n");
                     }
@@ -834,10 +795,16 @@
                                     + "\t\t\t\t\t\t\t\t  \""
                                     + attribs[i].getElementNameAsString()
                                     + "\", Axis_URI_" + arrayType + ");\n\n");
-                    writer.write("\tparam->" + attribs[i].getElementNameAsString() + " = new " + arrayType + "_Array();\n");
-                    writer.write("\tparam->" + attribs[i].getElementNameAsString() + "->clone(*(" + arrayType + "_Array *) array);\n");
-                	writer.write("\t((" + arrayType + "_Array*) array)->clear();\n");
-                	writer.write("\tAxis::AxisDelete((void *) array, XSD_ARRAY);\n");
+                    
+                    String typeName = attribs[i].getParamNameAsMember();
+                    String typeNamePointer = "p" + attribs[i].getElementNameAsString();
+                    String typeNameArray = arrayType + "_Array";
+                    
+                    writer.write("\t" + typeNameArray + " * " + typeNamePointer + " = new " + typeNameArray + "();\n");
+                    writer.write("\t" + typeNamePointer + "->clone(*(" + typeNameArray + " *) array);\n\n");
+                	writer.write("\t((" + typeNameArray + "*) array)->clear();\n\n");
+                	writer.write("\tparam->set" + typeName + "( " + typeNamePointer + ");\n\n");
+                	writer.write("\tAxis::AxisDelete((void *) array, XSD_ARRAY);\n\n");
                 }
             }
             else if (attribs[i].isSimpleType())
@@ -1036,7 +1003,7 @@
                 + "[nSize];\n");
 
         writer.write("\t\t\tsize_t i = nSize/2;\n");
-        writer.write("\t\t\tfor (int ii=0; ii<i; ++ii)\n"); 
+        writer.write("\t\t\tfor (int ii = 0; ii < (int) i; ++ii)\n"); 
         writer.write("\t\t\t{\n");
         writer.write("\t\t\t\tpNew[ii] = pObj[ii];\n");
         writer.write("\t\t\t\tpObj[ii].reset();\n");