wsdl-tsclient
wsdl-tsclient copied to clipboard
Sequences are not generating array types
I don't know WSDL but there is an ArrayOfstring fields that generates string
instead of string[]
. Isn't it wrong?
<xs:element minOccurs="0" name="Emails" nillable="true" type="q1:ArrayOfstring"/>
...
<xs:schema elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<xs:complexType name="ArrayOfstring">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="ArrayOfstring" nillable="true" type="tns:ArrayOfstring"/>
</xs:schema>
And this is the generated field:
/** q1:ArrayOfstring */
Emails?: string;
Version: 1.3.1
Hi @rostamiani ,
can you try it on 1.4.0
? Or could you please share wsdl with me?
I tried it with this kind of WSDL
<s:complexType name="ProductSearchParameters">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" default="-2147483648" name="Id" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" default="-2147483648" name="CategoryId" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" default="" name="No" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" default="" name="EAN1" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" default="" name="Name" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" default="-79228162514264337593543950335" name="Price" type="s:decimal" />
<s:element minOccurs="0" maxOccurs="1" default="0001-01-01T00:00:00" name="DateChanged" type="s:dateTime" />
<s:element minOccurs="0" maxOccurs="1" name="ProductIds" type="tns:ArrayOfInt" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfInt">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="int" type="s:int" />
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfString">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" />
</s:sequence>
</s:complexType>
and I'm getting
/** GetProducts */
export interface GetProducts {
/** searchParams */
searchParams?: SearchParams;
/** returnProperties */
returnProperties?: ReturnProperties;
}
export interface ReturnProperties {
/** s:string */
string?: Array<string>;
}
Compared to wsimport I'm getting correct output
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"searchParams",
"returnProperties"
})
@XmlRootElement(name = "GetProducts")
public class GetProducts {
protected ProductSearchParameters searchParams;
protected ArrayOfString returnProperties;
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ArrayOfString", propOrder = {
"string"
})
public class ArrayOfString {
@XmlElement(nillable = true)
protected List<String> string;
}