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/03 22:38:57 UTC
svn commit: r1076806 - in /axis/axis1/c/trunk/src: engine/client/ soap/
wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/
wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/
wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/
Author: nadiramra
Date: Thu Mar 3 21:38:56 2011
New Revision: 1076806
URL: http://svn.apache.org/viewvc?rev=1076806&view=rev
Log:
AXISCPP-843 Serialiser is using namespaces without first assigning them in the XML
Modified:
axis/axis1/c/trunk/src/engine/client/Call.cpp
axis/axis1/c/trunk/src/soap/Attribute.cpp
axis/axis1/c/trunk/src/soap/SoapSerializer.cpp
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/ClientStubWriter.java
axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java
Modified: axis/axis1/c/trunk/src/engine/client/Call.cpp
URL: http://svn.apache.org/viewvc/axis/axis1/c/trunk/src/engine/client/Call.cpp?rev=1076806&r1=1076805&r2=1076806&view=diff
==============================================================================
--- axis/axis1/c/trunk/src/engine/client/Call.cpp (original)
+++ axis/axis1/c/trunk/src/engine/client/Call.cpp Thu Mar 3 21:38:56 2011
@@ -1160,7 +1160,7 @@ void Call::setSOAPMethodAttribute( const
else
pAttribute = new Attribute( attributeList, pLocalname, pPrefix, pValue);
- m_pIWSSZ->setSOAPMethodAttribute( ((Attribute *) pAttribute)->clone());
+ m_pIWSSZ->setSOAPMethodAttribute((Attribute *) pAttribute);
}
void Call::clearSOAPMethodAttributes()
Modified: axis/axis1/c/trunk/src/soap/Attribute.cpp
URL: http://svn.apache.org/viewvc/axis/axis1/c/trunk/src/soap/Attribute.cpp?rev=1076806&r1=1076805&r2=1076806&view=diff
==============================================================================
--- axis/axis1/c/trunk/src/soap/Attribute.cpp (original)
+++ axis/axis1/c/trunk/src/soap/Attribute.cpp Thu Mar 3 21:38:56 2011
@@ -280,37 +280,45 @@ serialize(SoapSerializer& pSZ,
{
int intStatus= AXIS_FAIL;
- if (isSerializable()
- && (!pSZ.getNamespaceURL( m_prefix).empty() || NULL!=uri))
- {
+ if (isSerializable())
+ {
pSZ.serialize(" ", NULL);
- /*
- * If User has provided the prefix we just have to serialize. We will
- * not worry to declare the namespace at all. Because it is the users
- * responsibility to add namespace declaration separately.
- * However, if user hasn't provided the prefix. So we have to do the following.
- * - get the prefix from the Serializer
- * - if this is a new namespace, then also declare the namespace.
- */
- if(!m_prefix.empty() || NULL!=uri)
- pSZ.serialize(m_prefix.c_str(), ":", NULL);
- else if (!m_uri.empty())
+ if (m_prefix.compare("xmlns") == 0)
{
- bool blnIsNewNamespace = false;
- m_prefix = pSZ.getNamespacePrefix(m_uri.c_str(), blnIsNewNamespace);
- if (blnIsNewNamespace)
+ // Namespace declaration...
+ pSZ.serialize("xmlns:", m_localname.c_str(), "=", PLATFORM_DOUBLE_QUOTE_S, m_value.c_str(), PLATFORM_DOUBLE_QUOTE_S, NULL);
+ intStatus= AXIS_SUCCESS;
+ }
+ else if ((!pSZ.getNamespaceURL( m_prefix).empty() || NULL!=uri))
+ {
+ /*
+ * If User has provided the prefix we just have to serialize. We will
+ * not worry to declare the namespace at all. Because it is the users
+ * responsibility to add namespace declaration separately.
+ * However, if user hasn't provided the prefix. So we have to do the following.
+ * - get the prefix from the Serializer
+ * - if this is a new namespace, then also declare the namespace.
+ */
+ if(!m_prefix.empty() || NULL!=uri)
+ pSZ.serialize(m_prefix.c_str(), ":", NULL);
+ else if (!m_uri.empty())
{
- lstTmpNameSpaceStack.push_back((AxisChar*)m_uri.c_str());
- pSZ.serialize("xmlns:", m_prefix.c_str(), "=", PLATFORM_DOUBLE_QUOTE_S, m_uri.c_str(), PLATFORM_DOUBLE_QUOTE_S, " ", NULL);
- }
+ bool blnIsNewNamespace = false;
+ m_prefix = pSZ.getNamespacePrefix(m_uri.c_str(), blnIsNewNamespace);
+ if (blnIsNewNamespace)
+ {
+ lstTmpNameSpaceStack.push_back((AxisChar*)m_uri.c_str());
+ pSZ.serialize("xmlns:", m_prefix.c_str(), "=", PLATFORM_DOUBLE_QUOTE_S, m_uri.c_str(), PLATFORM_DOUBLE_QUOTE_S, " ", NULL);
+ }
- pSZ.serialize(m_prefix.c_str(), ":", NULL);
- }
+ pSZ.serialize(m_prefix.c_str(), ":", NULL);
+ }
- pSZ.serialize(m_localname.c_str(), "=", PLATFORM_DOUBLE_QUOTE_S, m_value.c_str(), PLATFORM_DOUBLE_QUOTE_S, NULL);
+ pSZ.serialize(m_localname.c_str(), "=", PLATFORM_DOUBLE_QUOTE_S, m_value.c_str(), PLATFORM_DOUBLE_QUOTE_S, NULL);
- intStatus= AXIS_SUCCESS;
+ intStatus= AXIS_SUCCESS;
+ }
}
return intStatus;
Modified: axis/axis1/c/trunk/src/soap/SoapSerializer.cpp
URL: http://svn.apache.org/viewvc/axis/axis1/c/trunk/src/soap/SoapSerializer.cpp?rev=1076806&r1=1076805&r2=1076806&view=diff
==============================================================================
--- axis/axis1/c/trunk/src/soap/SoapSerializer.cpp (original)
+++ axis/axis1/c/trunk/src/soap/SoapSerializer.cpp Thu Mar 3 21:38:56 2011
@@ -1590,7 +1590,9 @@ reset()
{
logEntryEngine("SoapSerializer::reset")
- m_nCounter = 0; // reset namespace prefix counter
+ // reset namespace prefix counter and stack
+ m_nCounter = 0;
+ m_NsStack.clear();
if( m_pSoapEnvelope )
m_pSoapEnvelope->reset();
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=1076806&r1=1076805&r2=1076806&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 Thu Mar 3 21:38:56 2011
@@ -278,7 +278,10 @@ public class ClientStubWriter
// Generate global variables
//=============================================================================
- c_writer.write("\tAXISCHANDLE call = axiscStubGetCall(stub);\n");
+ c_writer.write ("\tAxiscBool blnIsNewPrefix;\n");
+ c_writer.write ("\tconst AxiscChar *pcNSPrefix;\n");
+ c_writer.write ("\tAXISCHANDLE pSZ;\n");
+ c_writer.write ("\tAXISCHANDLE call = axiscStubGetCall(stub);\n");
if (returntype != null)
{
@@ -417,6 +420,7 @@ public class ClientStubWriter
{
commentIssued = true;
CUtils.printBlockComment(c_writer, "Process parameters.");
+ c_writer.write ("\tpSZ = axiscCallGetSOAPSerializer(call);\n\n");
}
else
c_writer.write ("\n");
@@ -467,9 +471,11 @@ public class ClientStubWriter
{
int stringLength = 8 + 1 + parameterName.length () + 1;
c_writer.write ("\t\tchar cPrefixAndParamName" + i + "[" + stringLength + "];\n");
- c_writer.write ("\t\tsprintf( cPrefixAndParamName" + i +
- ", \"%s:" + parameterName +
- "\", axiscCallGetNamespacePrefix(call,\"" + namespace + "\"));\n");
+
+ c_writer.write("\t\tpcNSPrefix = axiscSoapSerializerGetNamespacePrefix(pSZ, \"" + namespace + "\", &blnIsNewPrefix);\n");
+ c_writer.write("\t\tif (blnIsNewPrefix)\n");
+ c_writer.write("\t\t\taxiscCallSetSOAPMethodAttribute(call, pcNSPrefix, \"xmlns\", NULL, \"" + namespace + "\");\n");
+ c_writer.write("\t\tsprintf( cPrefixAndParamName" + i + ", \"%s:" + parameterName + "\", pcNSPrefix);\n");
}
if (param.getType().isAttachment())
Modified: axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java
URL: http://svn.apache.org/viewvc/axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java?rev=1076806&r1=1076805&r2=1076806&view=diff
==============================================================================
--- axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java (original)
+++ axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ClientStubWriter.java Thu Mar 3 21:38:56 2011
@@ -160,7 +160,8 @@ public class ClientStubWriter extends CP
c_writer.write("#include \"" + c_classname + CUtils.getHeaderFileExtension() + "\"\n\n");
c_writer.write("#include <axis/AxisWrapperAPI.hpp>\n");
- c_writer.write ("#include <axis/Axis.hpp>\n\n");
+ c_writer.write ("#include <axis/Axis.hpp>\n");
+ c_writer.write ("#include <axis/IWrapperSoapSerializer.hpp>\n\n");
}
catch (IOException e)
{
Modified: axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java
URL: http://svn.apache.org/viewvc/axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java?rev=1076806&r1=1076805&r2=1076806&view=diff
==============================================================================
--- axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java (original)
+++ axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/ClientStubWriter.java Thu Mar 3 21:38:56 2011
@@ -322,7 +322,10 @@ public class ClientStubWriter
}
}
- c_writer.write ("\tconst char* pcCmplxFaultName = NULL;\n\n");
+ c_writer.write ("\tconst char* pcCmplxFaultName = NULL;\n");
+ c_writer.write ("\tbool blnIsNewPrefix;\n");
+ c_writer.write ("\tconst AxisChar *pcNSPrefix;\n");
+ c_writer.write ("\tIWrapperSoapSerializer * pSZ;\n\n");
//=============================================================================
// Generate try block and method logic
@@ -412,6 +415,8 @@ public class ClientStubWriter
{
commentIssued = true;
CUtils.printBlockComment(c_writer, "Process parameters.");
+
+ c_writer.write ("\t\tpSZ = (IWrapperSoapSerializer *)m_pCall->getSOAPSerializer();\n\n");
}
else
c_writer.write ("\n");
@@ -462,11 +467,12 @@ public class ClientStubWriter
}
else
{
- int stringLength = 8 + 1 + parameterName.length () + 1;
- c_writer.write (tab2 + "\t\tchar cPrefixAndParamName" + i + "[" + stringLength + "];\n");
- c_writer.write (tab2 + "\t\tsprintf( cPrefixAndParamName" + i +
- ", \"%s:" + parameterName +
- "\", m_pCall->getNamespacePrefix(\"" + namespace + "\"));\n");
+ int stringLength = 8 + 1 + parameterName.length () + 1;
+ c_writer.write(tab2 + "\t\tchar cPrefixAndParamName" + i + "[" + stringLength + "];\n");
+ c_writer.write(tab2 + "\t\tpcNSPrefix = pSZ->getNamespacePrefix(\"" + namespace + "\", blnIsNewPrefix);\n");
+ c_writer.write(tab2 + "\t\tif (blnIsNewPrefix)\n");
+ c_writer.write(tab2 + "\t\t\tm_pCall->setSOAPMethodAttribute(pcNSPrefix, \"xmlns\",\"" + namespace + "\");\n");
+ c_writer.write(tab2 + "\t\tsprintf( cPrefixAndParamName" + i + ", \"%s:" + parameterName + "\", pcNSPrefix);\n");
}
if (param.getType().isAttachment())