Ticket Change Details
Not logged in
Overview

Artifact ID: a755147d6c14a716a2d9e5174271269330731fcbfeb828052dfd7c6a7e1ab206
Ticket: 584bfb772724c1a938f671b8a9ac1d57b2d70f58
WS::Client returns nonsense for abstract types
User & Date: oehhar 2018-05-11 17:49:22
Changes

  1. Appended to comment:
    
    
    <hr /><i>oehhar added on 2018-05-11 17:49:22 UTC:</i><br />
    A debug session I tried to find the code to find where the response namespace prefix is mapped to the auto-generated namespace prefix from the wsdl analysis.
    
    To resume:
    
       *   TCLWS namespace prefix for type "EnvelopeN": tns1
       *   Response XML namespace for same type: tns
    
    Both are not mapped together resulting in a miss-interpretation of the response.
    
    <hr />
    
    So, line 2170 of
    
    <verbatim>
    ::log::log debug "Using namespaces {$xns}"
    </verbatim>
    
    of function
    
    <verbatim>
    proc ::WS::Client::parseResults {serviceName operationName inXML} {
    </verbatim>
    
    outputs:
    
    <verbatim>
    Using namespaces {
      ENV http://schemas.xmlsoap.org/soap/envelope/
      xsi http://www.w3.org/2001/XMLSchema-instance
      xs http://www.w3.org/2001/XMLSchema
      tns1 http://www.esri.com/schemas/ArcGIS/10.3
      d http://schemas.xmlsoap.org/wsdl/soap/
      xs http://www.w3.org/2001/XMLSchema}
    </verbatim>
    
    So, here is "tns1 http://www.esri.com/schemas/ArcGIS/10.3" in "$serviceInfo targetNamespace".
    
    Then, this is called:
    
    <verbatim>
    ::WS::Utils::convertTypeToDict
    </verbatim>
    
    The response namespace prefix contained in the top "Envelope" tag is never looked up. It seams to be ignored. But the required information is in there:
    
    <verbatim>
    <soap:Envelope
      ...
      xmlns:tns="http://www.esri.com/schemas/ArcGIS/10.3">
    </verbatim>
    
    How may this work ?
    
    IMHO there should be a match done of the header namespace prefixes to the ones saved in the wsdl.
    
    Or is this an issue in tdom ?
    
    Should the command
    
    <verbatim>
    $doc selectNodesNamespaces $xns
    </verbatim>
    
    (Line 2171 ClientSide, directly follows the debug line mentioned here at the top)
    
    change the namespace prefixes ?
    
    Any idea appreciated.
    
    Thank you,
    Harald