You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-commits@axis.apache.org by na...@apache.org on 2011/03/20 19:00:41 UTC

svn commit: r1083528 - in /axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws: c/BeanParamWriter.java c/literal/ClientStubWriter.java cpp/BeanParamWriter.java

Author: nadiramra
Date: Sun Mar 20 18:00:41 2011
New Revision: 1083528

URL: http://svn.apache.org/viewvc?rev=1083528&view=rev
Log:
AXISCPP-843 Serialiser is using namespaces without first assigning them in the XML

Modified:
    axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/BeanParamWriter.java
    axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubWriter.java
    axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/BeanParamWriter.java

Modified: axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/BeanParamWriter.java
URL: http://svn.apache.org/viewvc/axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/BeanParamWriter.java?rev=1083528&r1=1083527&r2=1083528&view=diff
==============================================================================
--- axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/BeanParamWriter.java (original)
+++ axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/BeanParamWriter.java Sun Mar 20 18:00:41 2011
@@ -24,6 +24,8 @@ package org.apache.axis.wsdl.wsdl2ws.c;
 
 import java.io.IOException;
 
+import javax.xml.namespace.QName;
+
 import org.apache.axis.wsdl.wsdl2ws.WSDL2Ws;
 import org.apache.axis.wsdl.wsdl2ws.CUtils;
 import org.apache.axis.wsdl.wsdl2ws.WrapperFault;
@@ -128,8 +130,10 @@ public class BeanParamWriter extends Par
         // it is used as a nillable parameter so this may not be the appropriate place
         // to put this, or we need to find a way to determine if nillable.
         //=============================================================================        
-        
-        c_writer.write("\tAxiscBool blnIsNewPrefix = xsdc_boolean_false;\n\n");
+
+        c_writer.write("\tAxiscBool blnIsNewPrefix = xsdc_boolean_false;\n");
+        c_writer.write("\tAxiscBool blnIsNewSubElemPrefix = xsdc_boolean_false;\n");
+        c_writer.write("\tconst AxiscChar* sPrefix;\n\n");
 
         CUtils.printBlockComment(c_writer, "If null input, serialize as nil element.");
         
@@ -326,7 +330,13 @@ public class BeanParamWriter extends Par
             else
             {
                 //if complex type
-                String elm = attribs[i].getParamNameAsSOAPString();
+                namespace = type.getName().getNamespaceURI();
+                
+                String elm        = attribs[i].getParamNameAsSOAPString();
+                QName elementName = attribs[i].getElementName();
+                if (elementName != null)
+                   namespace = elementName.getNamespaceURI();
+                
                 if (attribs[i].isReference())
                     elm = attribs[i].getTypeName();
                 
@@ -341,20 +351,19 @@ public class BeanParamWriter extends Par
                 
                 if (attribs[i].getNsQualified())
                 {
-                    c_writer.write("\taxiscSoapSerializerSerialize(pSZ, \"<\", axiscSoapSerializerGetNamespacePrefix(pSZ, \""
-                                    + type.getName().getNamespaceURI()
-                                    + "\", NULL), \":\", \"" + elm + "\", 0);\n");
-                    c_writer.write(tab + "\tAxis_Serialize_" + attribs[i].getTypeName()
-                            + "(param->" + attribs[i].getParamNameAsMember() + ", pSZ, 0);\n");
-                    c_writer.write(tab + "\taxiscSoapSerializerSerialize(pSZ, \"</\", axiscSoapSerializerGetNamespacePrefix(pSZ, \""
-                                    + type.getName().getNamespaceURI()
-                                    + "\", NULL), \":\", \"" + elm + "\", \">\", 0);\n");
+                    c_writer.write("\tsPrefix = axiscSoapSerializerGetNamespacePrefix(pSZ, \"" + namespace + "\", &blnIsNewSubElemPrefix);\n");
+                    c_writer.write(tab + "\taxiscSoapSerializerSerialize(pSZ, \"<\", sPrefix, \":\", \"" + elm + "\", 0);\n");
+                    c_writer.write(tab + "\tif (blnIsNewSubElemPrefix)\n");
+                    c_writer.write(tab + "\t\taxiscSoapSerializerSerialize(pSZ,\" xmlns:\", sPrefix, \"=\\\"\", \"" + namespace + "\", \"\\\"\", 0);\n");
+                    c_writer.write(tab + "\tAxis_Serialize_" + attribs[i].getTypeName() + "(param->" + attribs[i].getParamNameAsMember() + ", pSZ, 0);\n");
+                    c_writer.write(tab + "\taxiscSoapSerializerSerialize(pSZ, \"</\", sPrefix, \":\", \"" + elm + "\", \">\", 0);\n");
+                    c_writer.write(tab + "\tif (blnIsNewSubElemPrefix)\n");
+                    c_writer.write(tab + "\t\taxiscSoapSerializerRemoveNamespacePrefix(pSZ, \""  + namespace + "\");\n");
                 }
                 else
                 {
                     c_writer.write("\taxiscSoapSerializerSerialize(pSZ, \"<" + elm + "\", 0);\n");
-                    c_writer.write(tab + "\tAxis_Serialize_" + attribs[i].getTypeName()
-                            + "(param->" + attribs[i].getParamNameAsMember() + ", pSZ, 0);\n");
+                    c_writer.write(tab + "\tAxis_Serialize_" + attribs[i].getTypeName() + "(param->" + attribs[i].getParamNameAsMember() + ", pSZ, 0);\n");
                     c_writer.write(tab + "\taxiscSoapSerializerSerialize(pSZ, \"</" + elm + "\", \">\", 0);\n");
                 }
                 
@@ -397,7 +406,7 @@ public class BeanParamWriter extends Par
         
         // For doc/literal objects
         c_writer.write("\tif (!bArray)\n\t{\n");
-        c_writer.write("\t\tconst AxiscChar* sPrefix = axiscSoapSerializerGetNamespacePrefix(pSZ,Axis_URI_" + c_classname + ", &blnIsNewPrefix);\n");
+        c_writer.write("\t\tsPrefix = axiscSoapSerializerGetNamespacePrefix(pSZ,Axis_URI_" + c_classname + ", &blnIsNewPrefix);\n");
         c_writer.write("\t\tif (blnIsNewPrefix)\n");
         c_writer.write("\t\t\taxiscSoapSerializerSerialize(pSZ,\" xmlns:\", sPrefix, \"=\\\"\", " 
                         + "Axis_URI_" + c_classname + ", \"\\\"\", NULL);\n");
@@ -414,7 +423,7 @@ public class BeanParamWriter extends Par
         c_writer.write( "\t\taxiscSoapSerializerSerialize(pSZ, \"<\", Axis_TypeName_" + c_classname + ", \">\", NULL);\n");
         c_writer.write( "\telse\n");
         c_writer.write( "\t{\n");
-        c_writer.write( "\t\tconst AxiscChar * sPrefix = axiscSoapSerializerGetNamespacePrefix(pSZ, Axis_URI_" 
+        c_writer.write( "\t\tsPrefix = axiscSoapSerializerGetNamespacePrefix(pSZ, Axis_URI_" 
                 + c_classname + ", &blnIsNewPrefix);\n\n");
         c_writer.write( "\t\t// If there are objects that require a local namespace, then define it here.\n");
         c_writer.write( "\t\t// NB: This namespace will go out of scope when the closing tag is reached.\n");

Modified: axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubWriter.java
URL: http://svn.apache.org/viewvc/axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubWriter.java?rev=1083528&r1=1083527&r2=1083528&view=diff
==============================================================================
--- axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubWriter.java (original)
+++ axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubWriter.java Sun Mar 20 18:00:41 2011
@@ -688,10 +688,10 @@ public class ClientStubWriter
                         containedTypeArrayName = CUtils.getArrayNameForComplexType(qname);
                         
                         c_writer.write("\n\t\t\tif (OutValue" + i + " != NULL)\n" );
-                        c_writer.write("\t\t{\n");
+                        c_writer.write("\t\t\t{\n");
                         
                         c_writer.write("\t\t\t\tif (" + currentParamName + " != NULL)\n");
-                        c_writer.write("\t\t\t\t\t" + currentParamName + " = Axis_Delete_" + containedTypeArrayName + "(" + currentParamName + ",0);\n");
+                        c_writer.write("\t\t\t\t\t" + "Axis_Delete_" + containedTypeArrayName + "(" + currentParamName + ",0);\n");
                         c_writer.write("\t\t\t\t" + currentParamName + " = Axis_Create_" + containedTypeArrayName + "(0);\n");
                         
                         c_writer.write("\t\t\t\taxiscCallGetCmplxArray(call, (Axisc_Array *)" + currentParamName 

Modified: axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/BeanParamWriter.java
URL: http://svn.apache.org/viewvc/axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/BeanParamWriter.java?rev=1083528&r1=1083527&r2=1083528&view=diff
==============================================================================
--- axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/BeanParamWriter.java (original)
+++ axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/BeanParamWriter.java Sun Mar 20 18:00:41 2011
@@ -542,7 +542,13 @@ public class BeanParamWriter extends Par
             else
             {
                 //if complex type
+                namespace = type.getName().getNamespaceURI();
+                
                 String elm = attribs[i].getParamNameAsSOAPString();
+                QName elementName = attribs[i].getElementName();
+                if (elementName != null)
+                   namespace = elementName.getNamespaceURI();
+
                 if (attribs[i].isReference())
                     elm = attribs[i].getTypeName();
                 
@@ -557,14 +563,14 @@ public class BeanParamWriter extends Par
                 
                 if (attribs[i].getNsQualified())
                 {
-                    c_writer.write("\tpSZ->serialize(\"<\", pSZ->getNamespacePrefix(\""
-                                    + type.getName().getNamespaceURI()
-                                    + "\"), \":\", \"" + elm + "\", 0);\n");
-                    c_writer.write(tab + "\tAxis_Serialize_" + attribs[i].getTypeName()
-                            + "(param->" + attribs[i].getParamNameAsMember() + ", pSZ);\n");
-                    c_writer.write(tab + "\tpSZ->serialize(\"</\", pSZ->getNamespacePrefix(\""
-                                    + type.getName().getNamespaceURI()
-                                    + "\"), \":\", \"" + elm + "\", \">\", 0);\n");
+                    c_writer.write("\tsPrefix = pSZ->getNamespacePrefix(\"" + namespace + "\", blnIsNewSubElemPrefix);\n");
+                    c_writer.write(tab + "\tpSZ->serialize(\"<\", sPrefix, \":\", \"" + elm + "\", 0);\n");
+                    c_writer.write(tab + "\tif (blnIsNewSubElemPrefix)\n");
+                    c_writer.write(tab + "\t\tpSZ->serialize(\" xmlns:\", sPrefix, \"=\\\"\", \"" + namespace + "\", \"\\\"\", 0);\n");
+                    c_writer.write(tab + "\tAxis_Serialize_" + attribs[i].getTypeName() + "(param->" + attribs[i].getParamNameAsMember() + ", pSZ);\n");
+                    c_writer.write(tab + "\tpSZ->serialize(\"</\", sPrefix, \":\", \"" + elm + "\", \">\", 0);\n");
+                    c_writer.write(tab + "\tif (blnIsNewSubElemPrefix)\n");
+                    c_writer.write(tab + "\t\tpSZ->removeNamespacePrefix(\""  + namespace + "\");\n");
                 }
                 else
                 {
@@ -612,9 +618,11 @@ public class BeanParamWriter extends Par
         CUtils.printBlockComment(c_writer, "Serialize top-most element, possibly defining new namespace.");        
         
         // For doc/literal objects
+        c_writer.write("\tbool blnIsNewSubElemPrefix = false;\n");
         c_writer.write("\tbool blnIsNewPrefix = false;\n");
+        c_writer.write("\tconst AxisChar* sPrefix;\n");
         c_writer.write("\tif (!bArray)\n\t{\n");
-        c_writer.write("\t\tconst AxisChar* sPrefix = pSZ->getNamespacePrefix(Axis_URI_" + c_classname + ", blnIsNewPrefix);\n");
+        c_writer.write("\t\tsPrefix = pSZ->getNamespacePrefix(Axis_URI_" + c_classname + ", blnIsNewPrefix);\n");
         c_writer.write("\t\tif (blnIsNewPrefix)\n");
         c_writer.write("\t\t\tpSZ->serialize(\" xmlns:\", sPrefix, \"=\\\"\", "
                         + "Axis_URI_" + c_classname + ", \"\\\"\", NULL);\n");
@@ -627,12 +635,14 @@ public class BeanParamWriter extends Par
     private void writeRPCArrayPortionOfSerializeGlobalMethod() throws IOException
     {
         // For rpc/encoded objects
+        c_writer.write("\tbool blnIsNewSubElemPrefix = false;\n");
         c_writer.write("\tbool blnIsNewPrefix = false;\n");
+        c_writer.write("\tconst AxisChar* sPrefix;\n");
         c_writer.write( "\tif( bArray)\n");
         c_writer.write( "\t\tpSZ->serialize( \"<\", Axis_TypeName_" + c_classname + ", \">\", NULL);\n");
         c_writer.write( "\telse\n");
         c_writer.write( "\t{\n");
-        c_writer.write( "\t\tconst AxisChar * sPrefix = pSZ->getNamespacePrefix( Axis_URI_" 
+        c_writer.write( "\t\tsPrefix = pSZ->getNamespacePrefix( Axis_URI_" 
                 + c_classname + ", blnIsNewPrefix);\n\n");
         c_writer.write( "\t\t// If there are objects that require a local namespace, then define it here.\n");
         c_writer.write( "\t\t// NB: This namespace will go out of scope when the closing tag is reached.\n");