Hi all, 

I don't know if it's a bug, but it seems that nested complex elements in
SOAP request are not deserialized by Axis2 ADB. Here is the schema which
defines a TradeFilterDTO contains other two filters:

<xs:complexType name="TradeFilterDTO">
                <xs:complexContent>
                    <xs:extension base="ax21:SoapDTO">
                        <xs:sequence>
                            <xs:element minOccurs="0"
name="auxiliariesAsSwaps" nillable="true" type="xs:boolean"/>
                            <xs:element minOccurs="0" name="batchID"
nillable="true" type="xs:long"/>
                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="businessUnits" nillable="true" type="xs:int"/>
                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="dealIDs" nillable="true" type="xs:string"/>
                            <xs:element minOccurs="0" name="fXFilter"
nillable="true" type="ax21:FXTradeFilterDTO"/>
                            <xs:element minOccurs="0"
name="fromModifyTime" nillable="true" type="xs:dateTime"/>
                            <xs:element minOccurs="0"
name="fromTradeTime" nillable="true" type="xs:dateTime"/>
                            <xs:element minOccurs="0"
name="includeModifications" nillable="true" type="xs:boolean"/>
                            <xs:element minOccurs="0" name="mMFilter"
nillable="true" type="ax21:MMTradeFilterDTO"/>
                            <xs:element minOccurs="0" name="maxTrades"
nillable="true" type="xs:int"/>
                            <xs:element minOccurs="0"
name="onlyBatchTrades" nillable="true" type="xs:boolean"/>
                            <xs:element minOccurs="0"
name="toModifyTime" nillable="true" type="xs:dateTime"/>
                            <xs:element minOccurs="0" name="toTradeTime"
nillable="true" type="xs:dateTime"/>
                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="tradeChannels" nillable="true" type="xs:string"/>
                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="tradeProducts" nillable="true" type="xs:string"/>
                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="tradeStatus" nillable="true" type="xs:string"/>
                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="userIDs" nillable="true" type="xs:string"/>
                        </xs:sequence>
                    </xs:extension>
                </xs:complexContent>
            </xs:complexType>
            <xs:complexType name="FXTradeFilterDTO">
                <xs:complexContent>
                    <xs:extension base="ax21:SoapDTO">
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="currencies" nillable="true" type="xs:string"/>
                            <xs:element minOccurs="0"
name="fromMaturityDate" nillable="true" type="xs:date"/>
                            <xs:element minOccurs="0"
name="fromValueDate" nillable="true" type="xs:date"/>
                            <xs:element minOccurs="0"
name="toMaturityDate" nillable="true" type="xs:date"/>
                            <xs:element minOccurs="0" name="toValueDate"
nillable="true" type="xs:date"/>
                        </xs:sequence>
                    </xs:extension>
                </xs:complexContent>
            </xs:complexType>
            <xs:complexType name="MMTradeFilterDTO">
                <xs:complexContent>
                    <xs:extension base="ax21:SoapDTO">
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded"
minOccurs="0" name="currencies" nillable="true" type="xs:string"/>
                            <xs:element minOccurs="0"
name="fromMaturityDate" nillable="true" type="xs:date"/>
                            <xs:element minOccurs="0"
name="fromValueDate" nillable="true" type="xs:date"/>
                            <xs:element minOccurs="0"
name="toMaturityDate" nillable="true" type="xs:date"/>
                            <xs:element minOccurs="0" name="toValueDate"
nillable="true" type="xs:date"/>
                        </xs:sequence>
                    </xs:extension>
                </xs:complexContent>
            </xs:complexType>

The request looks as follows:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope";
xmlns:ser="http://service.webservice.emarkets.nordea.com";
xmlns:xsd="http://dto.webservice.emarkets.nordea.com/xsd";>
   <soap:Header/>
   <soap:Body>
      <ser:getTrades>
      <ser:filter>
        <xsd:fXFilter>
                <xsd:currencies>EUR</xsd:currencies>
        </xsd:fXFilter>
        <xsd:mMFilter>
                <xsd:currencies>USD</xsd:currencies>
        </xsd:mMFilter>
        <xsd:maxTrades>2</xsd:maxTrades>
        </ser:filter>
      </ser:getTrades>
   </soap:Body>
</soap:Envelope>

ADB serialized the above request to the corresponding TradeFilterDTO
object with nested attributes fxFilter and mMfilter null (maxTrades is
set on TradeFilterDTO). 
Please let me know if I did something wrong, thanks a lot!

Regards,
Mai Sun

Reply via email to