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 du...@apache.org on 2005/12/20 08:29:34 UTC

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

Author: dushshantha
Date: Mon Dec 19 23:29:24 2005
New Revision: 357933

URL: http://svn.apache.org/viewcvs?rev=357933&view=rev
Log:
Fixed the problems in code generation for Choice elements. CombinedChoice test case is passing.

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

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=357933&r1=357932&r2=357933&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 Mon Dec 19 23:29:24 2005
@@ -196,11 +196,12 @@
 	                    	anyCounter += 1;
 	                    	parameterName = parameterName + Integer.toString(anyCounter);
 	                    }
-	                    if(attribs[i].getAllElement())
+	                    if(attribs[i].getAllElement() || attribs[i].getChoiceElement() )
 	                    {
 	                    	writer.write("\n" + properParamName + " " + classname
 		                            + "::get" + methodName + "()\n{\n");
 	                    }
+	                    
 	                    else
 	                    {
 		                    writer.write("\n" + properParamName + " * " + classname
@@ -209,7 +210,7 @@
 	                    
 	                    writer.write("\t" + "return " + parameterName + " ; \n}\n");
 	
-	                    if(attribs[i].getAllElement())
+	                    if(attribs[i].getAllElement() || attribs[i].getChoiceElement())
 	                    {
 	                    	writer.write("\n" + "void " + classname + "::set"
 		                            + methodName + "(" + properParamName
@@ -235,7 +236,7 @@
                         writer.write("\t{\n");
                         writer.write("\t\tif (deep)\n");
                         writer.write("\t\t{\n");
-                        if(attribs[i].getAllElement())
+                        if(attribs[i].getAllElement() || attribs[i].getChoiceElement())
                         {
                         	writer.write("\t\t\t" + parameterName + " = new " + type + "();\n");
                         }
@@ -658,12 +659,12 @@
             {
                 if (attribs[i].isOptional())
                 {
-                    writer.write("\tif (param->" + attribs[i].getParamNameWithoutSymbols() + " != NULL)\n\t{\n\t");
+                    writer.write("\tif (param->" + attribs[i].getParamNameWithoutSymbols() + " != NULL)\n\t\t{\n\t");
                 }
                 
                 if (CUtils.isPointerType(attribs[i].getTypeName()))
                 {
-                    writer.write("\tpSZ->serializeAsElement(\""
+                    writer.write("\t\tpSZ->serializeAsElement(\""
                             + attribs[i].getSOAPElementNameAsString()
                             + "\", "
                             + namespace
@@ -687,7 +688,7 @@
                 		
                 		if (((attribs[i].getChoiceElement())&&(isElementNillable(i)))&& !(attribs[i].getTypeName().equals("xsd__string")) )
                 		{
-                			writer.write("\tpSZ->serializeAsElement(\""
+                			writer.write("\t\tpSZ->serializeAsElement(\""
                                     + attribs[i].getSOAPElementNameAsString()
                                     + "\", "
                                     + namespace
@@ -698,7 +699,7 @@
                 		}
                 		else
                 		{
-                    		writer.write("\tpSZ->serializeAsElement(\""
+                    		writer.write("\t\tpSZ->serializeAsElement(\""
                                     + attribs[i].getSOAPElementNameAsString()
                                     + "\", "
                                     + namespace
@@ -723,7 +724,7 @@
                 
                 if (attribs[i].isOptional())
                 {
-                    writer.write("\t}\n");
+                    writer.write("\t\t}\n");
                 }
             }
             else
@@ -978,8 +979,8 @@
                 if (attribs[i].isOptional())
                 {
                     writer.write("\tconst char* elementName" + i + " = pIWSDZ->peekNextElementName();\n");
-                    writer.write("\tif(strcmp(elementName" + i + ", \"" + soapTagName + "\") == 0)\n");
-                    writer.write("\t{\n");
+                    writer.write("\t\tif(strcmp(elementName" + i + ", \"" + soapTagName + "\") == 0)\n");
+                    writer.write("\t\t{\n");
                 }
                 
                 if (attribs[i].isNillable() ||
@@ -987,7 +988,7 @@
                         isElementOptional(i) ||
                         CUtils.isPointerType(attribs[i].getTypeName()))
                 {
-                	if (attribs[i].getChoiceElement() && !attribs[i].getTypeName().equals("xsd__string"))
+                	if (attribs[i].getChoiceElement() && isElementNillable(i) && !attribs[i].getTypeName().equals("xsd__string"))
                 	{
                 		writer.write("\tparam->"
                 				+ attribs[i].getParamNameAsMember()
@@ -1019,32 +1020,32 @@
                 		}
                 		else
                 		{
-                    		writer.write("\t" + typeName + " *	pValue" + i + " = pIWSDZ->" +
+                    		writer.write("\t\t\t" + typeName + " *	pValue" + i + " = pIWSDZ->" +
                		        	 CUtils.getParameterGetValueMethodName(typeName, attribs[i].isAttribute()) +
                		        	 "( \"" + soapTagName + "\", 0);\n\n");
                 		}
                 		
-                		writer.write( "\tif( pValue" + i + " == NULL)\n");
-                		writer.write( "\t{\n");
-            		    writer.write("\t\tparam->" + elementName + " = NULL;\n");
-                		writer.write( "\t}\n");
-                		writer.write( "\telse\n");
-                		writer.write( "\t{\n");
+                		writer.write( "\t\t\tif( pValue" + i + " == NULL)\n");
+                		writer.write( "\t\t\t{\n");
+            		    writer.write("\t\t\t\tparam->" + elementName + " = NULL;\n");
+                		writer.write( "\t\t\t}\n");
+                		writer.write( "\t\t\telse\n");
+                		writer.write( "\t\t\t{\n");
                 		
                 		if( CUtils.isPointerType( typeName))
                 		{
-                		    writer.write("\t\tparam->" + elementName + " = new char[strlen( pValue" + i + ") + 1];\n");
-                    		writer.write("\t\tstrcpy( param->" + elementName + ", pValue" + i + ");\n\n");
+                		    writer.write("\t\t\t\tparam->" + elementName + " = new char[strlen( pValue" + i + ") + 1];\n");
+                    		writer.write("\t\t\t\tstrcpy( param->" + elementName + ", pValue" + i + ");\n\n");
                 		}
                 		else
                 		{
-                		    writer.write("\t\tparam->" + elementName + " = new " + typeName + "();\n");
-                    		writer.write("\t\t*param->" + elementName + " = *pValue" + i + ";\n\n");
+                		    writer.write("\t\t\t\tparam->" + elementName + " = new " + typeName + "();\n");
+                    		writer.write("\t\t\t\t*param->" + elementName + " = *pValue" + i + ";\n\n");
                 		}
                 		
-                		writer.write("\t\tAxis::AxisDelete( (void *) pValue" + i + ", " + CUtils.getXSDTypeForBasicType( typeName) + ");\n\n");
+                		writer.write("\t\t\t\tAxis::AxisDelete( (void *) pValue" + i + ", " + CUtils.getXSDTypeForBasicType( typeName) + ");\n\n");
 
-                		writer.write( "\t}\n");
+                		writer.write( "\t\t\t}\n");
                 	}
                 } 
                 else
@@ -1052,7 +1053,8 @@
                     /**
                      * Dushshantha: If the simple type is a choice it is handled
                      * as a pointer variable. These variables should be defined
-                     * as pointers in the header file. Chinthana: This is the
+                     * as pointers in the header file. 
+                     * Chinthana: This is the
                      * same in 'all' element
                      */
                     if (attribs[i].getChoiceElement()
@@ -1087,11 +1089,11 @@
                 }
                 if (attribs[i].isOptional())
                 {
-                    writer.write("\t}\n");
-                    writer.write("\telse\n");
-                    writer.write("\t{\n");
-                    writer.write("\t\tparam->" + attribs[i].getParamNameAsMember() + " = NULL;\n");
-                    writer.write("\t}\n\n");
+                    writer.write("\t\t\t}\n");
+                    writer.write("\t\telse\n");
+                    writer.write("\t\t{\n");
+                    writer.write("\t\t\tparam->" + attribs[i].getParamNameAsMember() + " = NULL;\n");
+                    writer.write("\t\t}\n\n");
                 }
             }
             else
@@ -1258,6 +1260,7 @@
 	                if (attribs[i].isSimpleType() && (CUtils.isPointerType(attribs[i].getTypeName()) || attribs[i].isOptional() || attribs[i].isNillable() || attribs[i].getChoiceElement() || attribs[i].getAllElement()))
 	                {
 	                    writer.write("\t" + attribs[i].getParamName() + " = NULL;\n");
+	                    writer.write("\t__axis_deepcopy_" + attribs[i].getParamName() + " = false;\n");
 	                    String methodName = attribs[i].getParamNameWithoutSymbols();
 	                    if( methodName.endsWith( "_"))
 	                    {
@@ -1337,6 +1340,7 @@
                 {
                     writer.write("\t" + attribs[i].getParamNameAsMember()
                             + " = NULL;\n");
+                    writer.write("\t__axis_deepcopy_" + attribs[i].getParamName() + " = false;\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=357933&r1=357932&r2=357933&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 Mon Dec 19 23:29:24 2005
@@ -303,6 +303,7 @@
 				// FJP Nillable vv
 				if (isElementNillable(i) || attribs[i].isArray() || isElementOptional(i) && !attribs[i].getAllElement())
 				{
+										
 					if(attribs[i].isAnyType()){
 						anyCounter += 1;
 						    writer
@@ -324,16 +325,22 @@
 					    }
 					    else
 					    {
-							writer.write("\t"
+					    	if(attribs[i].getChoiceElement()&& !isElementNillable(i))
+					    		writer.write("\t"
 									 + getCorrectParmNameConsideringArraysAndComplexTypes(attribs[i])
-									 + " * " + attribs[i].getParamName()
+									 + " " + attribs[i].getParamName()
 									 + ";\n");
+					    	else
+					    		writer.write("\t"
+										 + getCorrectParmNameConsideringArraysAndComplexTypes(attribs[i])
+										 + " * " + attribs[i].getParamName()
+										 + ";\n");
 					        
 					    }
 					}
 				} else 
 					{
-						if(attribs[i].getAllElement())
+						if(attribs[i].getAllElement() || attribs[i].getChoiceElement() )
 						{
 							writer.write("\t"
 									 + getCorrectParmNameConsideringArraysAndComplexTypes(attribs[i])
@@ -430,7 +437,7 @@
 					}
 					else 
 					{
-						if(attribs[i].getAllElement())
+						if(attribs[i].getAllElement() || attribs[i].getChoiceElement())
 						{
 							writer.write( "\n\t"
 	                                  + getCorrectParmNameConsideringArraysAndComplexTypes(attribs[i])