CLONE -Unnecessary empty-valued attribute "xmlns" in Envelope parameter values
------------------------------------------------------------------------------
Key: AXIS-1904
URL: http://issues.apache.org/jira/browse/AXIS-1904
Project: Axis
Type: Bug
Components: Serialization/Deserialization
Versions: 1.2
Environment: Windows 2000 Pro SP4 JDK 1.4.2-05
Reporter: Konstantin Kasatkin
Priority: Blocker
There is a problem of interaction Axis WebService Client (as console
application) with Microsoft WebService Server (as .Net application)
Here WEBService method description is from MS side:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<SetParameterValues xmlns="http://tempuri.org/">
<strUser>string</strUser>
<strBusinessSystem>string</strBusinessSystem>
<strParameter>string</strParameter>
<strValues>
<string>string</string>
<string>string</string>
</strValues>
</SetParameterValues>
</soap:Body>
</soap:Envelope>
Here real Axis SOAP envelope is from Java applicaton:
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<SetParameterValues xmlns="http://tempuri.org/">
<strUser>test</strUser>
<strBusinessSystem>SYS</strBusinessSystem>
<strParameter>100</strParameter>
<strValues>
<string xmlns="">123</string>
<string xmlns="">234</string>
</strValues>
</SetParameterValues>
</soapenv:Body>
</soapenv:Envelope>
As you can see in section <strValues> all of inner elements contain attribute
xmlns="".
This notation does not work in MS (It is very strange, but I don't know why).
MS ignores all such lines and returns empty collection.
If I'm removing empty "xmlns" attributes all works fine.
I've already found the point where you can place fix code.
CLASS: org.apache.axis.encoding.SerializationContext
CODE:
if (!(map.getNamespaceURI().equals(Constants.NS_URI_XMLNS) &&
map.getPrefix().equals("xmlns")) &&
!(map.getNamespaceURI().equals(Constants.NS_URI_XML) &&
map.getPrefix().equals("xml")))
It need to be added one more check in the condition. Here modified condition
if (!(map.getNamespaceURI().equals(Constants.NS_URI_XMLNS) &&
map.getPrefix().equals("xmlns")) &&
!(map.getNamespaceURI().equals(Constants.NS_URI_XML) &&
map.getPrefix().equals("xml")) &&
!map.getNamespaceURI().equals(""))
Maybe I didn't take into account something, but after this change all have
worked fine.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
http://www.atlassian.com/software/jira