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/12/14 18:18:59 UTC

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

Author: dicka
Date: Wed Dec 14 09:18:54 2005
New Revision: 356811

URL: http://svn.apache.org/viewcvs?rev=356811&view=rev
Log:
Complete fix to handle deep/shallow copying of simple types within choice or all as part of a complex type.

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=356811&r1=356810&r2=356811&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 Dec 14 09:18:54 2005
@@ -323,7 +323,7 @@
 	                            + "("
 	                            + properParamName
 	                            + " InValue");
-	                    if(CUtils.isPointerType(properParamName))
+	                    if(attribs[i].isSimpleType() && (CUtils.isPointerType(properParamName) || attribs[i].getAllElement() || attribs[i].getChoiceElement()))
 	                    {
 	                        writer.write(", bool deep");
 	                    }
@@ -357,6 +357,34 @@
 	                        writer.write("\t}\n");
 	                        writer.write("\t__axis_deepcopy_" + parameterName + " = deep;\n");
 	                    }
+	                    else if (attribs[i].isSimpleType() && (attribs[i].getAllElement() || attribs[i].getChoiceElement()))
+	                    {
+                            writer.write("\tif (" + parameterName + " != NULL)\n");
+                            writer.write("\t{\n");
+                            writer.write("\t\tif (__axis_deepcopy_" + parameterName + ")\n");
+                            writer.write("\t\t{\n");
+                            writer.write("\t\t\tdelete " + parameterName + ";\n");
+                            writer.write("\t\t}\n");
+                            writer.write("\t\t" + parameterName + " = NULL;\n");
+                            writer.write("\t}\n");
+                            writer.write("\tif (InValue != NULL)\n");
+                            writer.write("\t{\n");
+                            writer.write("\t\tif (deep)\n");
+                            writer.write("\t\t{\n");
+                        	writer.write("\t\t\t" + parameterName + " = new " + type + "();\n");
+                            writer.write("\t\t\t*" + parameterName + " = *InValue;\n");
+                            writer.write("\t\t}\n");
+                            writer.write("\t\telse\n");
+                            writer.write("\t\t{\n");
+                            writer.write("\t\t\t" + parameterName + " = InValue;\n");
+                            writer.write("\t\t}\n");
+                            writer.write("\t}\n");
+                            writer.write("\telse\n");
+                            writer.write("\t{\n");
+                            writer.write("\t\t" + parameterName + " = NULL;\n");
+                            writer.write("\t}\n");
+                            writer.write("\t__axis_deepcopy_" + parameterName + " = deep;\n");
+	                    }
 	                    else
 	                    {
 			                writer.write("\t" + parameterName
@@ -367,6 +395,9 @@
 	                    {
 	                        for (int j = 0; j < attribs.length; j++)
 	                        {
+
+	                            
+	                            
 	                            if ((attribs[j].getChoiceElement()) && (j != i))
 	                            {
 	                                writer.write("\t"

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=356811&r1=356810&r2=356811&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 Wed Dec 14 09:18:54 2005
@@ -123,7 +123,7 @@
             boolean foundDeepCopyType = false;
         	for (int i = 0 ; i < attribs.length ; i++)
         	{
-        	    if (CUtils.isSimpleType(getCorrectParmNameConsideringArraysAndComplexTypes(attribs[i])) || attribs[i].getChoiceElement() || attribs[i].getAllElement() && !attribs[i].isArray() &&(isElementNillable(i) || isElementOptional(i) || CUtils.isPointerType(getCorrectParmNameConsideringArraysAndComplexTypes(attribs[i]))))
+        	    if (attribs[i].isSimpleType() && !attribs[i].isArray() &&(isElementNillable(i) || isElementOptional(i) || CUtils.isPointerType(getCorrectParmNameConsideringArraysAndComplexTypes(attribs[i])) || attribs[i].getChoiceElement() || attribs[i].getAllElement()))
         	    {
         	        if (!foundDeepCopyType)
         	        {
@@ -460,7 +460,7 @@
 	                                  + getCorrectParmNameConsideringArraysAndComplexTypes(attribs[i])
 	                                  + " * pInValue");
 						}
-						if (isElementNillable(i) || isElementOptional(i))
+						if ((isElementNillable(i) || isElementOptional(i) || attribs[i].getAllElement() || attribs[i].getChoiceElement() ) && !attribs[i].isArray())
 						{
 						    writer.write(", bool deep = true");
 						}
@@ -513,7 +513,7 @@
                                     + "("
                                     + getCorrectParmNameConsideringArraysAndComplexTypes(attribs[i])
                                     + " InValue");
-						if (CUtils.isPointerType(getCorrectParmNameConsideringArraysAndComplexTypes(attribs[i])))
+						if ( (attribs[i].getAllElement() || attribs[i].getChoiceElement() || CUtils.isPointerType(getCorrectParmNameConsideringArraysAndComplexTypes(attribs[i]))) && attribs[i].isSimpleType())
 						{
 						    writer.write(", bool deep = true");
 						}