HydraExpress handles the following features in SOAP encoding:
SOAP-Encoded arrays
SOAP-Encoded built-in types
SOAP references
HydraExpress represents SOAP-Encoded arrays as classes derived from a rwsf::ArrayHandle instantiated on the type of element contained in the array. Array body rwsf::ArrayBody contains an instance of rwsf::SoapArray to which it passes all its methods.
Array support includes support for arrays of arrays, dimensioned arrays (including multidimensional), recursive arrays, and arrays of types defined in the WSDL document. HydraExpress does not currently support sparse arrays. For more information on recursive arrays, see Section A.5.3
The generated class provides methods for working with the vector as an XML document. The generated class inherits methods for working with the collection.
For the array shown in the WSDL fragment below:
... <complexType name="ArrayOfdouble"> <complexContent> <restriction base="SOAP-ENC:Array"> <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd:double[]"/> </restriction> </complexContent> </complexType> ... |
HydraExpress generates a class named ArrayOfdouble that derives from rwsf::ArrayHandle<double>. Class ArrayOfdouble provides marshal methods for writing the array as XML and unmarshal methods for populating the array from XML. In addition, it reflects a typical container interface, providing iterators and other methods to access the array members.
HydraExpress maps SOAP-encoded built-in types to their equivalent xsd types. That is, SOAP-ENC:int maps to xsd:int and so on. HydraExpress clients and servers then produce messages using the xsd type, such as xsd:int.
HydraExpress supports recursive SOAP-encoded arrays, meaning that it can parse nested arrays containing elements of the same user-defined type as the parent element.
The following schema snippet illustrates how this might look. The user-defined type Struct contains an element of type ArrayofStruct:
<complexType name="Struct"> <xsd:all> <xsd:element name="name" type="xsd:string"/> <xsd:element name="array" type="xsd1:ArrayOfStruct"/> </xsd:all> </xsd:complexType> |
The complexType ArrayofStruct contains a type Struct:
<complexType name="ArrayOfStruct"> <complexContent> <restriction base="SOAP-ENC:Array"> <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd1:Struct[]"/> </restriction> </complexContent> </complexType> |
In this scenario, a user-defined array Struct contains type ArrayofStruct, which itself contains a type Struct.
Copyright © Rogue Wave Software, Inc. All Rights Reserved.
The Rogue Wave name and logo are registered trademarks of Rogue Wave Software, and HydraExpress is a trademark of Rogue Wave Software. All other trademarks are the property of their respective owners.
Contact Rogue Wave about documentation or support issues.