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");
             }