Ticket Change Details
Not logged in

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

  1. Appended to comment:

    oehhar added on 2018-02-21 09:43:04 UTC:
    The convert2dict of FullExtend is now:

    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} 

    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:

          <xs:complexType name="EnvelopeN">
              <xs:documentation />
            <xs:complexContent mixed="false">
              <xs:extension base="Envelope">
                  <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" />

    So lets look what was found in the wsdl:

    % 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

    So, there is a wrong namespace, "tns1" instead "tns"...

    Stop here today. Maybe someone may comment...

    Thank you, Harald