[ 
https://issues.apache.org/jira/browse/AXIS2C-1593?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Robert Lazarski resolved AXIS2C-1593.
-------------------------------------
    Fix Version/s: 2.0.0
                       (was: 1.7.0)
       Resolution: Duplicate

duplicate of AXIS2C-1579 

> Strange handling of xsi:type in requests
> ----------------------------------------
>
>                 Key: AXIS2C-1593
>                 URL: https://issues.apache.org/jira/browse/AXIS2C-1593
>             Project: Axis2-C
>          Issue Type: Bug
>          Components: xml/om
>    Affects Versions: 1.7.0
>            Reporter: Sebastian Brandt
>            Priority: Minor
>             Fix For: 2.0.0
>
>
> When creating the SOAP xml for a request, the xsi namespace tag is overridden 
> with the target type namespace, thus, giving "xsi:type" a different meaning.
> Interestingly, this code is accepted by a .Net WCF service.
> Request xml (excerpt):
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
>       <soapenv:Body>
>               <n:tellCurrentProcessValuesExn xsi:type="ExnProcessValuesDto" 
> xmlns:xsi="http://company/ISP/"; xmlns:n="http://company/ISP/";>
>                       <n:cpv xsi:type="ExnProcessValuesDto">
>                               <n:CustomerName>Kundenname</n:CustomerName>
> ...
>                       </n:cpv>
>               </n:tellCurrentProcessValuesExn>
>       </soapenv:Body>
> </soapenv:Envelope>
> It seems that the xsi namespace is first overridden from 
> http://www.w3.org/2001/XMLSchema-instance to the web service namespace; then, 
> xsi:type="NonQualName" is used.
> There, the corrent namespace is missing from the name; instead, the service 
> seems to take the namespace from the xsi, ignoring the fact that the xsi:type 
> attribute is not actually http://www.w3.org/2001/XMLSchema-instance#type, but 
> http://company/ISP/type.
> I found this problem when trying to reduce the memory leaks in #AXIS2C-1591; 
> there, the xsi om_element->namespaces hash entry is overwritten, from 
> http://www.w3.org/2001/XMLSchema-instance to http://company/ISP/. If this 
> overwriting is not done, the following SOAP results:
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
>       <soapenv:Body>
>               <n:tellCurrentProcessValuesExn xsi:type="ExnProcessValuesDto" 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
> xmlns:n="http://company/ISP/";>
>                       <n:cpv xsi:type="ExnProcessValuesDto">
>                               <n:CustomerName>Kundenname</n:CustomerName>
> ...
> which uses xsi:type correctly, but does not have a namespace for 
> ExnProcessValuesDto, thus, resulting in a server error. 
> ":ExnProcessValuesDto" is not known to the service.
> I am not sure in how far              
> <n:tellCurrentProcessValuesExn xsi:type="n:ExnProcessValuesDto" 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
> xmlns:n="http://company/ISP/";>
> would be the correct fragment.
> WSDL (excerpt):
> ... xmlns:tns="http://company/ISP/"; ...
> ...
> <xsd:element name="tellCurrentProcessValuesExn">
>       <xsd:complexType>
>               <xsd:sequence>
>                       <xsd:element minOccurs="0" name="cpv" nillable="true" 
> type="tns:ExnProcessValuesDto"/>
>               </xsd:sequence>
>       </xsd:complexType>
> </xsd:element>
> ...
> <xsd:complexType name="StdProcessValuesDto">
>       <xsd:sequence>
>               <xsd:element minOccurs="0" name="CustomerName" nillable="true" 
> type="xsd:string"/>
>               ...
>       </xsd:sequence>
> </xsd:complexType>
> <xsd:element name="StdProcessValuesDto" nillable="true" 
> type="tns:StdProcessValuesDto"/>
> ...                           
> <xsd:complexType name="ExnProcessValuesDto">
>       <xsd:complexContent mixed="false">
>               <xsd:extension base="tns:StdProcessValuesDto">
>                       <xsd:sequence>
>                               <xsd:element minOccurs="0" name="Components" 
> nillable="true" type="tns:ArrayOfExnComponentDto"/>
>                               ...
>                       </xsd:sequence>
>               </xsd:extension>
>       </xsd:complexContent>
> </xsd:complexType>
> <xsd:element name="ExnProcessValuesDto" nillable="true" 
> type="tns:ExnProcessValuesDto"/>



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to