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 2006/01/19 15:23:35 UTC

svn commit: r370475 - in /webservices/axis/trunk/c: src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ tests/auto_build/testcases/client/cpp/

Author: dicka
Date: Thu Jan 19 06:23:27 2006
New Revision: 370475

URL: http://svn.apache.org/viewcvs?rev=370475&view=rev
Log:
Resolve problems with generated code for WSDLs containing xsd:choice with array (maxOccurs>1) elements.

Modified:
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/BeanParamWriter.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ParmHeaderFileWriter.java
    webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/UnboundedChoiceClient.cpp
    webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/UnboundedStringChoiceClient.cpp

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=370475&r1=370474&r2=370475&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 Thu Jan 19 06:23:27 2006
@@ -168,14 +168,19 @@
                 
                 if (attribs[i].isArray())
                 {
-                    writer.write("\n" + properParamName + " * " + classname
+                    String parameterTypeName = properParamName;
+                    if (!parameterTypeName.endsWith("*"))
+                    {
+                        parameterTypeName += " *";
+                    }
+                    writer.write("\n" + parameterTypeName + " " + classname
                             + "::get" + methodName + "()\n{\n");
 
                     writer.write("\t" + "return " + parameterName + " ; \n}\n");
 
                     writer.write("\n" + "void " + classname + "::set"
-                            + methodName + "(" + properParamName
-                            + " * pInValue)\n{\n");
+                            + methodName + "(" + parameterTypeName
+                            + " pInValue)\n{\n");
 
                     writer.write("\tif(" + parameterName + " == NULL)\n");
                     writer.write("\t{\n");
@@ -649,28 +654,16 @@
                 //if Array
                 if (attribs[i].isSimpleType())
                 {
-                	if (attribs[i].getChoiceElement()||attribs[i].getAllElement())
-                		writer.write("\tpSZ->serializeBasicArray(*(param->"
-                                + attribs[i].getParamName()
-                                + "), "
-                                + namespace
-                                + ","
-                                + CUtils.getXSDTypeForBasicType(attribs[i]
-                                                .getTypeName())
-                                + ", \""
-                                + attribs[i].getParamNameAsSOAPElement()
-                                + "\");\n");
-                	else
-                		writer.write("\tpSZ->serializeBasicArray(param->"
-                            + attribs[i].getParamName()
-                            + ", "
-                            + namespace
-                            + ","
-                            + CUtils.getXSDTypeForBasicType(attribs[i]
-                                            .getTypeName())
-                            + ", \""
-                            + attribs[i].getParamNameAsSOAPElement()
-                            + "\");\n");
+            		writer.write("\tpSZ->serializeBasicArray(param->"
+                        + attribs[i].getParamName()
+                        + ", "
+                        + namespace
+                        + ","
+                        + CUtils.getXSDTypeForBasicType(attribs[i]
+                                        .getTypeName())
+                        + ", \""
+                        + attribs[i].getParamNameAsSOAPElement()
+                        + "\");\n");
                 }
                 else
                 {
@@ -952,15 +945,9 @@
                             + "\",0);\n");
                     writer.write("\tif(param->" + attribs[i].getParamNameAsMember() + " == NULL)\n");
                     writer.write("\t{\n");
-                    if (attribs[i].getChoiceElement()||attribs[i].getAllElement())
-                    	writer.write("\t\tparam->" + attribs[i].getParamNameAsMember() + " = new " + attribs[i].getTypeName() + "_Array*();\n");
-                    else
-                    	writer.write("\t\tparam->" + attribs[i].getParamNameAsMember() + " = new " + attribs[i].getTypeName() + "_Array();\n");
+                	writer.write("\t\tparam->" + attribs[i].getParamNameAsMember() + " = new " + attribs[i].getTypeName() + "_Array();\n");
                     writer.write("\t}\n");
-                    if (attribs[i].getChoiceElement()||attribs[i].getAllElement())
-                    	writer.write("\t(*(param->" + attribs[i].getParamNameAsMember() + "))->clone(*array" + arrayCount + ");\n");
-                    else
-                    	writer.write("\tparam->" + attribs[i].getParamNameAsMember() + "->clone( *array" + arrayCount + ");\n");
+                	writer.write("\tparam->" + attribs[i].getParamNameAsMember() + "->clone( *array" + arrayCount + ");\n");
                     writer.write("\tAxis::AxisDelete((void*) array" + arrayCount + ", XSD_ARRAY);\n\n");
                 }
                 else

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ParmHeaderFileWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ParmHeaderFileWriter.java?rev=370475&r1=370474&r2=370475&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ParmHeaderFileWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ParmHeaderFileWriter.java Thu Jan 19 06:23:27 2006
@@ -317,9 +317,14 @@
 					{
 					    if( attribs[i].isArray())
 					    {
+					        String paramName = getCorrectParmNameConsideringArraysAndComplexTypes(attribs[i]);
+					        if (!paramName.endsWith("*"))
+					        {
+					            paramName += " *";
+					        }
 							writer.write("\tclass "
-									 + getCorrectParmNameConsideringArraysAndComplexTypes(attribs[i])
-									 + " * " + attribs[i].getParamName()
+									 + paramName
+									 + " " + attribs[i].getParamName()
 									 + ";\n");
 					        
 					    }
@@ -439,10 +444,15 @@
 					{
 						if(attribs[i].getAllElement() || attribs[i].getChoiceElement())
 						{
+						    String paramName = getCorrectParmNameConsideringArraysAndComplexTypes(attribs[i]);
+						    if (!paramName.endsWith("*"))
+						    {
+						        paramName += " *";
+						    }
 							if (attribs[i].isArray()){
 								writer.write( "\n\t"
-		                                  + getCorrectParmNameConsideringArraysAndComplexTypes(attribs[i])
-		                                  + " * get"
+		                                  + paramName
+		                                  + " get"
 		                                  + methodName
 		                                  + "();\n");
 
@@ -450,8 +460,8 @@
 		                                  + "void set"
 		                                  + methodName
 		                                  + "("
-		                                  + getCorrectParmNameConsideringArraysAndComplexTypes(attribs[i])
-		                                  + " * pInValue");
+		                                  + paramName
+		                                  + " pInValue");
 							}
 							else{
 								if (isElementNillable(i)){

Modified: webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/UnboundedChoiceClient.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/UnboundedChoiceClient.cpp?rev=370475&r1=370474&r2=370475&view=diff
==============================================================================
--- webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/UnboundedChoiceClient.cpp (original)
+++ webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/UnboundedChoiceClient.cpp Thu Jan 19 06:23:27 2006
@@ -25,7 +25,7 @@
             array[x] = new xsd__int(x+1);			
 		}
 		arrayIn->set(array,5);
-		Value0->setIntValue(&arrayIn);
+		Value0->setIntValue(arrayIn);
 		url = argv[1];
 		ChoiceTestSoap ws(url);
 
@@ -33,7 +33,7 @@
 		int outputSize=0;
 		
 		for(int i=0;i<5;i++)
-			cout<<"Value1->IntValue->m_Array["<<i<<"] = "<<*((*(Value1->IntValue))->get(outputSize)[i])<<endl;
+			cout << "Value1->IntValue->m_Array[" << i << "] = " << *(Value1->IntValue->get(outputSize)[i]) << endl;
 		  // Clear up input array        
         for (int deleteIndex = 0 ; deleteIndex < 5 ; deleteIndex++ )
         {

Modified: webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/UnboundedStringChoiceClient.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/UnboundedStringChoiceClient.cpp?rev=370475&r1=370474&r2=370475&view=diff
==============================================================================
--- webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/UnboundedStringChoiceClient.cpp (original)
+++ webservices/axis/trunk/c/tests/auto_build/testcases/client/cpp/UnboundedStringChoiceClient.cpp Thu Jan 19 06:23:27 2006
@@ -25,7 +25,7 @@
 		array[3] = "d";
 		array[4] = "e";		
 		arrayIn->set(array,5);
-		Value0->setStringValue(&arrayIn);
+		Value0->setStringValue(arrayIn);
 	
 		if ( argc > 1 )
             url = argv[1];
@@ -36,7 +36,7 @@
 		int outputSize =0;
 		
 		for (int i=0;i<5;i++)
-			cout<<"Value1->StringValue->m_Array["<<i<<"] = "<<*((*(Value1->StringValue))->get(outputSize)[i])<<endl;
+			cout << "Value1->StringValue->m_Array[" << i << "] = " << *(Value1->StringValue->get(outputSize)[i]) << endl;
 
 		  // Clear up input array        
         for (int deleteIndex = 0 ; deleteIndex < 5 ; deleteIndex++ )