Ticket Change Details
Not logged in
Overview

Artifact ID: 68efc9b2c532b7507586f4e2f6b88ca29d9ece8262b83f812d178841b3f1d9c6
Ticket: 584bfb772724c1a938f671b8a9ac1d57b2d70f58
WS::Client returns nonsense for abstract types
User & Date: oehhar 2018-02-21 09:43:04
Changes

  1. Appended to comment:
    
    
    <hr /><i>oehhar added on 2018-02-21 09:43:04 UTC:</i><br />
    The convert2dict of FullExtend is now:
    
    <verbatim>
    in ::WS::Utils::convertTypeToDict Client Latest_MapServer domNode054ED118 tns1:MapServerInfo domNode054ED640
    ...
    Trying #3 domNode054ED118 selectNodes FullExtent
    		 Found 1 FullExtent
    
    *** Line 1628 Non-simple non-array
    *** The abstract type FullExtend was replaced by tns:EnvelopeN
    *** Before the change, we got here:
    *** Type = {tns1:Envelope} typeInfoList = {0 0}
    
    Entering convertTypeToDict Client Latest_MapServer domNode054ED19C tns:EnvelopeN domNode054ED640 
    
    *** ::WS::Utils::convertTypeToDict
    *** type=tns:EnvelopeN
    *** isArray=0
    
    Type = {tns:EnvelopeN} typeInfoList = {1 0} 
    
    *** Apparently, tns:EnvelopeN is not present in the typeInfo.
    *** So, the base type is evaluated and the asText is called.
    
    Type = {tns1:Envelope} typeInfoList = {1 0} 
    </verbatim>
    
    So, apparently one step further.
    
    Now, tns:EnvelopeN is not found in dict:
    
       *   typeInfo Client Latest_MapServer tns:EnvelopeN
       *   typeInfo Client Latest_MapServer Latest_MapServer:tns:EnvelopeN
    
    Its wsdl snippet is:
    
    <verbatim>
          <xs:complexType name="EnvelopeN">
            <xs:annotation>
              <xs:documentation />
            </xs:annotation>
            <xs:complexContent mixed="false">
              <xs:extension base="Envelope">
                <xs:sequence>
                  <xs:element name="XMin" type="xs:double" />
                  <xs:element name="YMin" type="xs:double" />
                  <xs:element name="XMax" type="xs:double" />
                  <xs:element name="YMax" type="xs:double" />
                  <xs:element minOccurs="0" name="ZMin" type="xs:double" />
                  <xs:element minOccurs="0" name="ZMax" type="xs:double" />
                  <xs:element minOccurs="0" name="MMin" type="xs:double" />
                  <xs:element minOccurs="0" name="MMax" type="xs:double" />
                  <xs:element minOccurs="0" name="SpatialReference" type="SpatialReference" />
                </xs:sequence>
              </xs:extension>
            </xs:complexContent>
          </xs:complexType>
    </verbatim>
    
    So lets look what was found in the wsdl:
    
    <verbatim>
    % dict get $::WS::Utils::typeInfo Client Latest_MapServer tns:EnvelopeN
    key "tns:EnvelopeN" not known in dictionary
    % dict get $::WS::Utils::typeInfo Client Latest_MapServer tns1:EnvelopeN
    definition {
      XMin {type xs:double comment {}}
      YMin {type xs:double comment {}}
      XMax {type xs:double comment {}}
      YMax {type xs:double comment {}}
      ZMin {type xs:double comment {}}
      ZMax {type xs:double comment {}}
      MMin {type xs:double comment {}}
      MMax {type xs:double comment {}}
      SpatialReference {type tns1:SpatialReference comment {}}
    }
    xns tns1
    abstract false
    </verbatim>
    
    So, there is a wrong namespace, "tns1" instead "tns"...
    
    Stop here today. Maybe someone may comment...
    
    Thank you,
    Harald