WSDL and imported schemas using the document/literal or document/literal wrapped pattern are not serialized properly
WSDL and imported schemas using the document/literal or document/literal wrapped style are not serialized properly.
The failure to serialize has been fixed, however some changes to code may be required to take advantabe of the fix.
Problem
The typical error message in this situation occurs during deployment with the message:
'The type an AbtXmlQName(requestheader:WachoviaRequestHeader) for WSDL part ''SomeWSDLPart'' could not be determined'
The problem occurred before VA Smalltalk version 8.0 when the "document/literal wrapped" patern of wsdl was used and the element was defined in an imported namespace, e.g.,
<wsdl:definitions
...
xmlns:importedNamespace="myNamespace2"
<wsdl:types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import namespace="myNamespace2" schemaLocation="C:\aSchemaLocation"/>
</xs:schema>
</wsdl:types>
<wsdl:message name="RequestMessage">
<wsdl:part element="importedNamespace:Request" name="Request"/>
</wsdl:message>
An instance of the SstWsdlDefinitions class contains the parsed artifacts of the web service including the schemas defined or imported in the types section. WsdlDefinitions has an instance variable "types" which contains an instance of the SstWsdlTypes class instance variable named namespacemappings. During parsing of the types section, schema namepsaces were added to a dictionary assigned to this variable. The schemas themselves were placed into the schemas instance variable. Only namespaces of schemas defined wtihin the section and schemas directly imported within the types section are included. However, these imported schemas often import other schemas. The imported schema's namespaces and prefixes are not assigned to the schemas dictionary; they appear in the WsdlDefinitons types instance variable in its imports dictionary. Since this dictionary is not searched during the deserialization/serialization process, or during the wsdl message parsing process, web services with this type of schema importation could not be deployed or serialized/deserialized.
Solution
Before VA Snmalltalk version 8.0, all necessary namespaces were not included in the Soap request envelope if imported namespaces and schemas were needed to fully define the request.
In Version 8.0, code was added to examine all schema elements included in the request and to add their namespaces to the Soap envelope.
Action:
In order to retain backward compatibility, the new processing has been made optional on a container--wide basis. To use it, create a container using:
SstWSContainer>>createContainerUsingDocLiteralWrappedNamed: aString
Last modified date: 07/05/2018